Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Aviso
titleIMPORTANTE
  • A integração TOTVS OMS x TOTVS Planejamento de Rotas (TPR) será descontinuada no próximo release (Outubro/2023).



Introdução

draw.io Diagram
borderfalse
viewerToolbartrue
fitWindowfalse
diagramDisplayName
lboxtrue
revision2
diagramNameTPR_visualizacao_rotas
simpleViewerfalse
width
linksauto
tbstylehidden
diagramWidth342


Sistemas Envolvidos

  • TPR: TOTVS: Planejamento  TOTVS Planejamento de Rotas

  • Sistema Externo: Todos os ERPs que se conectam ou pretendem se conectar com os produtos de planejamento logístico TOTVS.

Integração

  • Formato de entrada/saída: Javascript

Escopo

  • API Javascript para ser importada no sistema externo a partir dela deve ser possível implementar e manipular mapas tanto para a tela de localidade quanto para a tela de rotas;

Pré-requisitos instalação/implantação/utilização

  • Para clientes Protheus versão xxxxxx;
  • Para clientes Datasul versão xxxxxx;
  • Para clientes externos contratação do trial via TOTVS Store;

Layout de RequisiçãoRequisição 

Bloco de código
languagejava
titleTPR
linenumberstruejs
class TPR {
   get(token:   get(tokenstring, systemInfo: StringSystemInfo): Promise<TPRServices>
}

class TPRServices{
Bloco de código
languagejava
titleSystemInfo
linenumberstrue
interface SystemInfo {
    readonly createMap(elementsystem: HTMLElement, mapOptions: TPRMapOptions): Promise<TPRMap>;
}

class TPRMapOptions{
string;
    readonly version: string;
    readonly public heightqualifiers: numberstring;
    publicreadonly widthcallbackURL?: numberstring;
}

Âncora
TRPServices
TRPServices

Bloco de código
languagejava
titleTPRServices
linenumberstrue
class TPRServices {
   createMap(element: HTMLElement): Promise<TPRMap>;
}


Âncora
TPRMap
TPRMap

Bloco de código
languagejava
titleTPRMap
linenumberstrue
class TPRMap {
     addMarker addMarker(point: TPRPoint, markerOptions?: MarkerOptions): void;

    viewRoute   viewRoute(route: TPRRoute, routeOptions?: TPRRouteOptions): Promise<TPRMapRoute>;

    zoomIn   zoomIn(): void;

    zoomOut   zoomOut(): void;

    centerOn   centerOn(point: TPRPoint);

    centerRoutes   centerRoutes(): void;

    clear   clear(): void;

    close   close(): void;
}

Âncora
TPRPoint
TPRPoint

Bloco de código
languagejava
titleTPRPoint
linenumberstrue
class TPRPoint {
     public readonly latitude;
     readonly public longitude;
}

Âncora
MarkerOptions
MarkerOptions

Bloco de código
languagejava
titleMarkerOptions
linenumberstrue
interface MarkerOptions {
     color color?: String;
     draggable draggable?: boolean;
     onDrag onDrag?: (latitude: number, longitude: number) => void
}

Âncora
TPRRoute
TPRRoute

Bloco de código
languagejava
titleTPRRoute
linenumberstrue
class TPRRoute {
   constructor(readonly trip: TPRTrip, readonly identifier?: string) {
   }
}

Âncora
TPRrouteOptions
TPRrouteOptions

Bloco de código
languagejava
titleTPRRouteOptions
linenumberstrue
class TPRRouteOptions {
     constructor(public constructor(readonly tooglePopup: boolean) {}
}

Âncora
TPRMapRoute
TPRMapRoute

Bloco de código
languagejava
titleTPRMapRoute
linenumberstrue
class TPRMapRoute {
	hide(): void;
	show(): void;
	color(color?: String);
}

Âncora
TPRTrip
TPRTrip

Bloco de código
languagejava
titleTPRTrip
linenumberstrue
class TPRTrip {
    // Campos do TPRTrip (https://tdn.totvs.com/pages/viewpage.action?pageId=604507369)
	readonly sequential:Integer
	readonly distance:Double
	readonly tollValue:Double
	readonly numberOfStops:Integer
	readonly volume:Double
	readonly weight:Double
	readonly duration:Integer
	readonly extraTrip:boolean
	readonly considerReturnDistance: boolean
	readonly vehicle:TPRVehicle
	readonly stops:TPRTripStop[]

}


Âncora
TPRVehicle
TPRVehicle

Bloco de código
languagejava
title TPRVehicle
linenumberstrue
class TPRVehicle {
	readonly identifier: string,
	readonly weightCapacity: number,
	readonly volumeCapacity: number,
	readonly quantity: number,
	readonly speed: number,
	readonly vehicleType: string,
	readonly tollAxes: number,
	readonly tollReturnAxes: number
}

Âncora
TPRTripStop
TPRTripStop

Bloco de código
languagejava
titleTPRTripStop
linenumberstrue
class TPRTripStop TPRRoute{

    constructor(public trip: TPRTrip) {
    }
}

class TPRTrip{
    // Campos do TPRTripTPRTripStop (https://tdn.totvs.com/pages/releaseviewviewpage.action?pageId=604507369)
}

class TripStop
	readonly sequence:Integer
	readonly type:String
	readonly distance:Double,
    readonly tollValue:Double,
	readonly locality:TPRRoutingLocality
	readonly arrivalTime:DateTime
	readonly departureTime:DateTime
	readonly loadedOrders:TPRRoutedOrder[]
	readonly unloadedOrders:TPRRoutedOrder[]
}

Âncora
TPRRoutingLocality
TPRRoutingLocality

Bloco de código
languagejava
titleTPRRoutingLocality
linenumberstrue
class TPRRoutingLocality {
    // Campos do TPRStop TPRRoutingLocality(https://tdn.totvs.com/pages/releaseviewviewpage.action?pageId=604507369)
	readonly identifier:String
    readonly name: String
	readonly country:String
	readonly latitude:Double
	readonly longitude:Double
	readonly operation:String
	readonly customizedOperation: TPRCustomizedOperation[]
}

Âncora
TPRCustomizedOperation
TPRCustomizedOperation

Bloco de código
languagejava
titleTPRCustomizedOperation
linenumberstrue
class TPRCustomizedOperation {   
		readonly weekDay: string,
        readonly startTime: string,
        readonly endTime: string 
}

Âncora
TPRRoutedOrder
TPRRoutedOrder

Bloco de código
languagejava
titleTPRRoutedOrder
linenumberstrue
class TPRRoutedOrder {
	readonly identifier:String
	readonly weight:Double
	readonly volume:Double
}

Âncora
usageCases
usageCases

Casos de uso

Bloco de código
languagejava
titleCasos de uso
linenumberstrue

}

interface TPRMapRoute{
    hide(): void;
    show(): void;
    color(color?: String);
}

(function() {
//require ou import TPR
    
	const tpr: TPR;
    	let tprServices: TPRServices;
    	tpr.get("alksdjlaksdjal")
        algum-token-aqui", {"system": "system-1.0.0", "version": "1.0.0", "qualifiers": ""})
		.then((services) => {
            			tprServices = services;
        		});

    	let tprMap: TPRMap;
// Caso de uso 1: visualizar uma localidade no mapa
    	tprServices.createMap(document.getElementById("mapDiv"), {
        		height: 300,
        		width: 650
    	}).then((map) => {
        		tprMap = map;
        map.addMarker({latitude: -23, longitude: -46	});
    });

// Caso de uso 2: zoomIn
    	tprMap.zoomIn();

// Caso de uso 3: zoomOut
    	tprMap.zoomOut();

// Caso de uso 4: centralizar sobre um ponto específico
    	tprMap.centerOn({latitude:new TPRPoint(-23, longitude: -46}));

// Caso de uso 5: Centralizar considerando todos os pontos plotados
    	tprMap.centerRoutes();

// Caso de uso 6: Ver rota
    let tprMapRoute: TPRMapRoute;
	tprMap.viewRoute(new TPRRoute([{latitude: -23, longitude: -46}, {latitude: -22, longitude: -45}])new TPRTrip(...)))
		.then((mapRoute) => tprMapRoute = mapRoute);

// Caso de uso 7: Limpa o conteúdo (pontos e rota)
    	tprMap.clear();

// Caso de uso 8: Remover mapa
    	tprMap.close();

// Caso de uso 9: Esconder roda
    let tprMapRoute: TPRMapRoute;
    tprMap.viewRoute(new TPRRoute([{latitude: -23, longitude: -46}, {latitude: -22, longitude: -45}]))
        .then((mapRoute) => tprMapRoute = mapRoute);
    tprMapRoute.	tprMapRoute.hide();

// Caso de uso 10: Reexibir rota
    	tprMapRoute.show();

// Caso de uso 11: Trocar cor de rota
    	tprMapRoute.color("AABBCC#AABBCC");

// Caso de uso 12: Exibir popup nas paradas
    	tprMap.viewRoute(new TPRRoute([{latitude: -23, longitude: -46}, {latitude: -22, longitude: -45}]),
       (new TPRTrip(...)), new TPRRouteOptions(true));

// Caso de uso 12.1: Permitir alteração de rotas (Fluxo ocorre apenas quando há uma rota no mapa e a rota possui identificador. 
    OBS: é necessário ter uma callbackURL no modelo de SystemInfo ex: {"system": "system-1.0.0", "version": "1.0.0", "qualifiers": "", callbackURL:"https://abc.com.br"} )
	tprMap.viewRoute(new TPRRoute(new TPRTrip(...), "someRouteIdentifierToRouteAlteration"), new TPRRouteOptions(true));

// Caso de uso 13: Receber evento de drag dos marcadores
    	tprMap.addMarker({latitude: -23, longitude: -46}, {
        		draggable: true,
        		onDrag: (lat, long) => console.log("Arrastei o marcador")
    	});
})();

Anexos

Anexos