Sistemas Envolvidos

TOTVS OMS

A sigla OMS significa Order Management System, ou seja, gerenciamento de pedidos e serviços que compreende as fases de captação, validação, avaliação, formação de carga e geração de mapa de separação ou, como é também conhecido, lista de separação.

Para obter mais detalhes sobre o TOTVS Logística OMS, acesse a página no TDN: TOTVS OMS.

TOTVS Otimização Logística

O TOL é um sistema vertical desenvolvido pela Neolog, empresa do ecossistema TOTVS, que dispõe de módulos para Planejamento da Malha de Distribuição, Programação de Transportes e Monitoramento de Cargas.

O monitoramento das cargas possibilita o controle e rastreamento dos produtos e notas fiscais em transporte de forma automática, desde a saída da origem até a entrega de todas as mercadorias.

Para obter mais detalhes sobre o TOTVS Otimização Logística, acesse o link: http://www.neolog.com.br/neolog-site/index.php/cockpit-logistico/.


Escopo

O escopo desta integração permitirá o envio de cargas faturadas para o monitoramento dentro do TOTVS Otimização Logística.

Além das informações dos pontos de parada da carga, com as respectivas informações de data e hora prevista de chegada, descarregamento e saída, também são enviadas as notas fiscais para serem monitoradas, o que possibilita a visualização dos produtos, lotes e quantidades que pertencem a carga.


Pré-requisitos Instalação / Implantação / Utilização

TOTVS Otimização Logística

  • TOL na versão/release 6.3.0 ou superior.
  • TOL configurado para permitir a utilização do Módulo de Execução.

Protheus

  • Protheus versão  12.1.27 ou superior (versões inferiores precisarão de aplicação de pacote de forma manual para o funcionamento).
  • Parâmetros de integração com TOTVS Otimização Logística configurados (acesso pelo menu em Atualizações > TOTVS Otimização Logística > Parâmetros Integração).
  • Não é escopo deste documento descrever a instalação do ERP Protheus e do TOTVS Otimização Logística, nem suas configurações básicas. 
  • Para utilização da integração entre o módulo TOTVS OMS e o TOTVS Otimização Logística, na versão 12.1.27 (ou superior) do Protheus é recomendado estar com o ambiente atualizado com a última versão de RPO e o dicionário disponível na Central de Downloads TOTVS.
  • Para obter mais informações sobre como atualizar o dicionário de dados do Protheus 12, clique aqui.


Instalação/Configuração

Configuração Web Service AppServer Protheus

Os passos descritos abaixo, referentes as configurações no Appserver.ini, apenas são necessários quando o ambiente não está configurado para integrar com o Módulo de Planejamento do TOTVS Otimização Logística.

Para que seja possível receber mensagens do TOTVS Otimização Logística é necessário configurar um Web Service no servidor de aplicação Protheus.

  • A configuração do JOB do Web Service para ser utilizado nesta integração não utiliza os métodos padrões do Framework Protheus.
  • Sendo assim, as rotinas ONSTART e ONCONNECT são específicas do módulo, portanto, os métodos disponíveis neste WS não são listados no WS do Protheus.

É recomendado criar um Web Service com as seguintes configurações (modificando o arquivo Appserver.ini):

;Serviço webserver HTTP
[HTTP]
ENABLE=1
PATH=<Caminho_Cache_imagens>;C:\TOTVS\Prottheus\data\web
PORT=<porta>;8080
INSTANCES=<nInicio>,<nMaximo>;1,10
SESSIONTIMEOUT=60
INSTANCENAME=WS_HTTP
 
;URL de resposta
 [<ip ou nome>:<porta>/neolog]
ENABLE=1
PATH=<Caminho_Cache_imagens>;C:\TOTVS\Prottheus\data\web
ENVIRONMENT=<ambiente>
INSTANCENAME=WS_NEOLOG
RESPONSEJOB=JOB_WS_NEOLOG
DEFAULTPAGE=wsindex.apw
 
;JOB de resposta
[JOB_WS_NEOLOG]
TYPE=WEBEX
ENVIRONMENT=<ambiente>
INSTANCES=<nInicio>,<nMaximo>;1,10
INSTANCENAME=JOB_WS_NEOLOG
ONSTART=OMSXStart
ONCONNECT=OMSXConnect

Para testar o serviço, inicie um navegador e digite: http://<ip ou nome>:<porta>/neolog/PublishReleasedTrip.APW?WSDL. 

Um WSDL (descrição do serviço em XML) deve ser exibido no navegador.

Para que seja possível reprogramar/cancelar as viagens do TOTVS Otimização Logística é necessário configurar as informações de conexão com o DBAccess diretamente na seção [Environment] (modificando o arquivo Appserver.ini), conforme exemplo abaixo:

;Nome do Ambiente acessado pelo Web Service
[Environment]
SourcePath=C:\Totvs\Protheus\Apo
RootPath=C:\Totvs\Protheus\Data
StartPath=\system\
. . . ; outras chaves
DBDatabase=MSSQL
DBAlias=PLS101
DBServer=192.168.1.20
DBPort=7890

Para evitar  inconsistências do tipo Failed Handshake SSL recomenda-se incluir a seguinte configuração no Appserver.ini:

[SSLConfigure]
TryProtocols=1
Verbose=1

Parametrização TOTVS OMS

  • Acesse o menu Atualizações > TOTVS Otimização Logística Parâmetros Integração (OMSXCPL1).
  • Para o correto funcionamento da integração com o monitoramento, parametrize o Protheus da seguinte forma:
CampoDescriçãoParâmetroOpçõesValor para IntegraçãoValidação
Integração Monitoramento?Indica se a integração com o monitoramento do TOL  está ativa.MV_CPLMON1 - Sim
2 - Não
1 - Sim-

Integração Suspensa?

Indica se a integração com o TOL está temporariamente suspensa.MV_CPLSTP1 - Sim
2 - Não
2 - Não-
Endereço Web Service MonitoramentoEndereço do Web Service de Monitoramento do TOL.MV_CPLURL

Conforme cliente.

Exemplo:
http://<ip ou nome>:<porta>/cockpit-gateway/integration/services

Preenchimento obrigatório quando MV_CPLMON == "1"
Endereço Web Service de Autenticação

Endereço do Web Service de Autenticação do TOTVS Otimização Logística.

Este endereço fornecerá um token de autenticação que deverá ser utilizado nas requisições efetuadas ao TOL, quando este estiver parametrizado para solicitar autenticação.

MV_WSMONI

Conforme cliente.

Exemplo:
http://<ip ou nome>:<porta>/cockpit-gateway/monitoring-integration-soap/ws/

Preenchimento obrigatório.
Usuário de Autenticação do Web ServiceUsuário utilizado para efetuar login no TOL para obtenção do token.

MV_USRCPL


Conforme clientePreenchimento obrigatório.
Senha de Autenticação do Web ServiceSenha do usuário utilizado para efetuar login no TOL para obtenção do token.

MV_PSWCPL


Conforme clientePreenchimento obrigatório.
Quantidade de Horas para Considerar que o Token Expirou

Indica a quantidade de horas que devem ser consideradas para que um token esteja expirado.

Enquanto este limite não for atingido, o mesmo token recebido na primeira solicitação será reutilizado para envio das próximas mensagens.

MV_EXPTOK


Conforme cliente-
RegionalRegional enviada para o TOL.MV_CPLREG
Conforme clientePreenchimento obrigatório.
E-mail do AdministradorE-mail do administrador para notificações de falha de conexão.MV_CPLMAL
Conforme cliente-
Tempo máximo (em segundos) de inatividade permitida para a recepção da resposta (Timeout).

Indica o tempo máximo que o TOTVS OMS aguardará por uma resposta do TOTVS Otimização Logística.

É válido para todas as mensagens.

MV_CPLTIME
30 (padrão)-

Parametrização Adicional Integração

  • Algumas parametrizações da integração devem ser realizadas no arquivo de configuração do servidor Protheus (Appserver.ini), pois são utilizadas antes de iniciar qualquer processo de conexão com o SGDB.
  • As configurações abaixo devem ser incluídas no arquivo na seção [NEOLOG]:
;Configuração integração com o TOTVS Otimização Logística.
[NEOLOG]
DefaultCompany=<empresa>
Debug=1
DebugPath=<caminho relativo> ;logs\neolog

Onde:

  • DefaultCompany
    Empresa padrão para integração entre o TOTVS OMS e o TOTVS Otimização Logística. Se não for informado não será considerado, sendo sempre enviada nas mensagens nos campos que identificam os códigos, além do próprio código, a concatenação da empresa e do campo Filial do respectivo cadastro/processo. Caso esteja parametrizada, será enviada apenas a concatenação do código com o campo Filial do respectivo cadastro/processo. 
  • Debug
    Indicador de que o processo de gravação dos arquivos XML das mensagens trocadas entre o TOTVS OMS e o TOTVS Otimização Logística está ativo. Caso esteja com o valor 1, será considerado ativo, caso contrário será considerado inativo. Caso não exista esta configuração será assumido que o Debug está ativo por padrão.
  • DebugPath
    Caminho no qual deverão ser gravados os arquivos de log do XML. Este caminho deve ser sempre relativo a pasta RootPath, pois o processo de integração pode rodar em modo JOB e desta forma, não tem acesso a diretórios locais da máquina. Caso não esteja parametrizado será considerado o caminho padrão system / neolog.

Deve ser parametrizada, via algum processo do sistema operacional do servidor, uma rotina que efetue exclusão programada dos arquivos log da pasta definida no DebugPath, deixando apenas os mais atuais.


Controle de Versão

O Grupo TOTVS, representado por suas marcas, administrará as demandas de evolução dos layouts e demais ajustes, acordando junto aos solicitantes o prazo de liberação de release.

Todas as evoluções programadas deverão ser discutidas e aprovadas pelas marcas antes do início do desenvolvimento e somente serão desenvolvidas em caso de concordância das marcas e alinhamento com as diretivas definidas pelo Comitê de Integração TOTVS.


Suporte

O suporte aos recursos da Integração será de responsabilidade de todas as linhas, sendo assim, as equipes de suporte dos produtos BackOffice  Protheus estarão aptas a efetuar a primeira análise e, quando necessário, repassar para a equipe mais adequada em cada caso.


Fluxo TOTVS OMS → TOTVS Otimização Logística

Estrutura do XML de Envio

Mensagem Integração de Envio de Monitorável

Tag XML AgrupadoraTag XMLCampo no ProtheusCampo no TOLObservações
driversourceId

Filial² + DA4_COD

Motorista

-
drivernameDA4_NOMEMotorista-
driveridentifierDA4_CGC ou DA4_MAT ou DA4_CODMotoristaUtilizará a primeira informação não vazia.
monitorables / monitorablesourceId

Se tipo igual a TRIP, então:

Filial² + DAK_COD + DAK_SEQCAR

Se tipo igual a INVOICE, então:

F2_DOC + F2_SERIE

Se tipo igual a TRIP a nomenclatura utilizada no TOL será Viagem.


Se tipo igual a TRIP a nomenclatura utilizada no TOL será Nota.

-
monitorables / monitorabletypeTRIP / INVOICE-

A carga é enviada com o monitorável do tipo TRIP.
Já as Notas Fiscais são enviadas como monitoráveis do tipo INVOICE.

monitorables / monitorablevalue

Se tipo igual a TRIP, então:
DAK_VALOR

Se tipo igual a INVOICE, então:
F2_VALFAT

Valor-
monitorables / monitorablevolume

Se tipo igual a TRIP, então:
DAK_CAPVOL

Se tipo igual a INVOICE, então:
D2_QUANT * (SB5.B5_COMPRLC * SB5.B5_LARGLC * SB5.B5_ALTURLC)

Volume-
monitorables / monitorableweight

Se tipo igual a TRIP, então:
DAK_PESO

Se tipo igual a INVOICE, então:
F2_PLIQUI ou F2_PBRUTO

Peso

O peso varia conforme o parâmetro MV_PESOCAR:
Se igual a :

  • "L" envia o peso líquido.
  • "B" envia o peso bruto.
monitorables / monitorabletemperatureTypeDB0_TIPCAR-

Envia carga como Congelada desde que todos os produtos existentes na carga possuam no tipo da carga (B1_TIPCAR) um modelo da carga cujo tipo (DB0_TIPCAR) possua descrição igual a Congelada.

Envia carga como Resfriada desde que todos os produtos existentes na carga possuam no tipo da carga (B1_TIPCAR) um modelo da carga cujo tipo (DB0_TIPCAR) possua descrição igual a Resfriada.

Envia a carga com o tipo de temperatura Default, caso a carga não se encaixe nas duas regras acima.

monitorables / monitorable / vehiclevehicleDA3_CODVeículo-
monitorables / monitorable / vehiclenameDA3_DESCVeículo-
monitorables / monitorable / trucktruckDA3_PLACACaminhão-
monitorables / monitorable / carriersourceIdA4_CODCaminhão-
monitorables / monitorable / carriernameA4_NOMETransportadora-
monitorables / monitorable/ carrierdescriptionDA4_NREDUZTransportadora-
monitorables / monitorable / transitions / transitionname

A integração possuí quatro transições:

  • Chegada no Cliente;
  • Início Descarregamento (quando existir viagem (DK0 para a carga);
  • Fim Descarregamento (quando existir viagem (DK0 para a carga);
  • Saída do Cliente.
Nome

As quatro transições apenas se aplicam para a transição do monitorável de tipo TRIP. 

Já para o monitorável do tipo INVOICE, apenas existirá a transição Chegada no Cliente.

monitorables / monitorable / transitions / transitionsourceIdSequencial de três dígitos gerado no momento de execuçãoTransição-
monitorables / monitorable / transitions / transitionexpectedTimestamp

Definida conforme o tipo da transição.

  • Chegada no Cliente:

DK1_CHEGAD ou DAI_DTCHEG + DAI_CHEGAD

  • Início Descarregamento:

DK1_INIDES

  • Fim Descarregamento

DK1_FIMDES

  • Saída do Cliente:

DK1_TSAIDA ou DAI_DTSAID + DAI_HRSAID

Data Estimada-
monitorables / monitorable / transitions / transitionlimitTimestamp

Definida conforme o tipo da transição.

  • Chegada no Cliente:

DK1_CHEGAD ou DAI_DTCHEG + DAI_CHEGAD

  • Início Descarregamento:

DK1_INIDES

  • Fim Descarregamento

DK1_FIMDES

  • Saída do Cliente:

DK1_TSAIDA ou DAI_DTSAID + DAI_HRSAID

Data Esperada-
monitorables / monitorable / transitions / transition / location / localitysourceIdFilial + A1_CODLocalidade-
monitorables / monitorable / transitions / transition / location / localitynameA1_NOMELocalidade-
monitorables / monitorable / transitions / transition / location / localitydescriptionA1_NREDUZLocalidade-
monitorables / monitorable / transitions / transition / location / addressstreetA1_ENDENT ou A1_ENDEndereço

Prioriza o preenchimento com base no endereço de entrega.
Se estiver vazio, utiliza o endereço do próprio cliente.

monitorables / monitorable / transitions / transition / location / addressnumberA1_ENDENT ou A1_ENDEndereço

Prioriza o preenchimento com base no endereço de entrega.
Se estiver vazio, utiliza o endereço do próprio cliente.

monitorables / monitorable / transitions / transition / location / addressdistrictA1_BAIRROE ou A1_BAIRROEndereçoPrioriza o preenchimento com base no endereço de entrega.
Se estiver vazio, utiliza o endereço do próprio cliente.
monitorables / monitorable / transitions / transition / location / addresscityCC2_MUNE ou A1_MUNE / CC2_MUN ou A1_MUNEndereçoPrioriza o preenchimento com base no endereço de entrega.
Se estiver vazio, utiliza o endereço do próprio cliente.
monitorables / monitorable / transitions / transition / location / addressstateA1_ESTE / A1_ESTEndereçoPrioriza o preenchimento com base no endereço de entrega.
Se estiver vazio, utiliza o endereço do próprio cliente.
monitorables / monitorable / transitions / transition / location / addresszipCodeA1_CEPE / A1_CEPEndereçoPrioriza o preenchimento com base no endereço de entrega.
Se estiver vazio, utiliza o endereço do próprio cliente.
monitorables / monitorable / transitions / transition / location / addresscountryA1_PAISEndereço-
monitorables / monitorable / items / itemsourceIdF2_DOC + F2_SERIE + D2_ITEMItem-
monitorables / monitorable / items / itemquantityD2_QUANTQuantidade-
monitorables / monitorable / items / itemvalueD2_TOTALValor-
monitorables / monitorable / items / itemweightD2_PESOPeso-
monitorables / monitorable / items / itemvolumeD2_QUANT * (B5_COMPRLC * B5_LARGLC * B5_ALTURLC)Volume-
monitorables / monitorable / items / item / productsourceIdB1_CODProduto-
monitorables / monitorable / items / item / productnameB1_DESCProduto-
monitorables / monitorable / items / item / extensions / extensionkeyLoteLote-
monitorables / monitorable / items / item / extensions / extensiontextValueD2_LOTECTLLote-
relationships / relationshipparentSourceIdFilial + DAK_COD + DAK_SEQCAR--
relationships / relationship / childrenchildSourceIdsF2_DOC + F2_SERIE--

Estrutura do XML de Cancelamento

Mensagem Integração de Cancelamento de Monitorável

Tag XML AgrupadoraTag XMLCampo no ProtheusCampo no TOTVS Otimização LogísticaObservações
sourceIdsourceId

Filial² + DAK_COD + DAK_SEQCAR

-

-


² Para o combinação da Filial para os cadastros serão aplicadas as seguintes regras:

  • Utilizando a configuração de gestão de empresas e se esta possuir em sua máscara a empresa:
    • Será enviado apenas o retorno da função xFilial( <TAB> ), onde TAB representa a tabela do Protheus.
  • Utilizando a  configuração de gestão de empresas, sem possuir a empresa na máscara, ou não utilizando a configuração de gestão de empresas:
    • Caso exista uma empresa padrão (DefaultCompany) configurada na seção [NEOLOG] do INI do servidor de aplicação será enviado apenas o retorno da funçãoxFilial( <TAB> ), onde TAB representa a tabela do Protheus.
    • Não existindo a empresa padrão será enviada a concatenação da função FWGrpCompany() + xFilial( <TAB> ), onde TAB representa a tabela do Protheus.
  • Sempre que o retorno não for branco, o retorno será precedido por um "-" (hífen), desde que a função não receba o valor .F. no segundo parâmetro.
    • Poderá ocorrer deste valor permanecer em branco, em função de algumas parametrizações e configuração da tabela ser compartilhada.


Exemplo de XML de Envio de Monitorável

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header/>
	<soapenv:Body>
		<mon:request xmlns:mon="http://www.neolog.com.br/cpl/acquisition/monitoring/monitorable/">
			<mon:monitorableSet>
				<mon:driver>
					<mon:driver>
						<mon:sourceId>01-M00008</mon:sourceId>
						<mon:name>ANGELO DA SILVA</mon:name>
					</mon:driver>
					<mon:identifier>61385388625</mon:identifier>
				</mon:driver>
				<mon:monitorables>
					<mon:monitorable>
						<mon:sourceId>0101-000679-01</mon:sourceId>
						<mon:type>TRIP</mon:type>
						<mon:vehicle>
							<mon:vehicle>EFS7890 </mon:vehicle>
							<mon:name>MERCEDEZ TRUCADO</mon:name>
						</mon:vehicle>
						<mon:truck>
							<mon:sourceId>EFS7890 </mon:sourceId>
						</mon:truck>
						<mon:carrier>
							<mon:sourceId>000001</mon:sourceId>
							<mon:name>TRANSPORTE PROPRIO TESTE</mon:name>
							<mon:description>ANGELO</mon:description>
						</mon:carrier>
						<mon:value>795.00000000</mon:value>
						<mon:volume>388.00000000</mon:volume>
						<mon:weight>194.00000000</mon:weight>
						<mon:transitions>
							<mon:transition>
								<mon:name>Chegada no Cliente</mon:name>
								<mon:sourceId>001</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:16:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:16:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-02</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA CD</mon:name>
										<mon:description>ANTHONY E LORENZO CD</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>AVENIDA PAULO S.</mon:street>
										<mon:number>1400</mon:number>
										<mon:district>Petropolis</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89232301</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
							<mon:transition>
								<mon:name>Início Descarregamento</mon:name>
								<mon:sourceId>002</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:16:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:16:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-02</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA CD</mon:name>
										<mon:description>ANTHONY E LORENZO CD</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>AVENIDA PAULO S.</mon:street>
										<mon:number>1500</mon:number>
										<mon:district>Petropolis</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89232301</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
							<mon:transition>
								<mon:name>Fim Descarregamento</mon:name>
								<mon:sourceId>003</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:31:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:31:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-02</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA CD          </mon:name>
										<mon:description>ANTHONY E LORENZO CD</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>AVENIDA PAULO SCHROEDER</mon:street>
										<mon:number>1500</mon:number>
										<mon:district>Petropolis</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89232301</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
							<mon:transition>
								<mon:name>Saída do Cliente</mon:name>
								<mon:sourceId>004</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:31:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:31:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-02</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA CD</mon:name>
										<mon:description>ANTHONY E LORENZO CD</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>AVENIDA PAULO S.</mon:street>
										<mon:number>1500</mon:number>
										<mon:district>Petropolis</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89232301</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
							<mon:transition>
								<mon:name>Chegada no Cliente</mon:name>
								<mon:sourceId>005</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:31:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:31:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-01</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA</mon:name>
										<mon:description>ANTHONY E LORENZO   </mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>RUA PAULINO M ALVES</mon:street>
										<mon:number>2</mon:number>
										<mon:district>AMERICA</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89204550</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
							<mon:transition>
								<mon:name>Início Descarregamento</mon:name>
								<mon:sourceId>006</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:31:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:31:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-01</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA</mon:name>
										<mon:description>ANTHONY E LORENZO   </mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>RUA PAULINO M ALVES</mon:street>
										<mon:number>2</mon:number>
										<mon:district>AMERICA</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89204550</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
							<mon:transition>
								<mon:name>Fim Descarregamento</mon:name>
								<mon:sourceId>007</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:46:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:46:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-01</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA</mon:name>
										<mon:description>ANTHONY E LORENZO</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>RUA PAULINO M ALVES</mon:street>
										<mon:number>2</mon:number>
										<mon:district>AMERICA</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89204550</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
							<mon:transition>
								<mon:name>Saída do Cliente</mon:name>
								<mon:sourceId>008</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:46:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:46:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-01</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA</mon:name>
										<mon:description>ANTHONY E LORENZO</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>RUA PAULINO M ALVES</mon:street>
										<mon:number>2</mon:number>
										<mon:district>AMERICA</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89204550</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
						</mon:transitions>
					</mon:monitorable>
					<mon:monitorable>
						<mon:sourceId>000000146-1</mon:sourceId>
						<mon:type>INVOICE</mon:type>
						<mon:vehicle>
							<mon:vehicle>EFS7890 </mon:vehicle>
							<mon:name>MERCEDEZ TRUCADO</mon:name>
						</mon:vehicle>
						<mon:truck>
							<mon:sourceId>EFS7890</mon:sourceId>
						</mon:truck>
						<mon:carrier>
							<mon:sourceId>000001</mon:sourceId>
							<mon:name>TRANSPORTE PROPRIO TESTE</mon:name>
							<mon:description>ANGELO</mon:description>
						</mon:carrier>
						<mon:value>370.00000000</mon:value>
						<mon:weight>74.00000000</mon:weight>
						<mon:transitions>
							<mon:transition>
								<mon:name>Início</mon:name>
								<mon:sourceId>000000146-1-001</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:31:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:31:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-01</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA</mon:name>
										<mon:description>ANTHONY E LORENZO</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>RUA PAULINO M ALVES</mon:street>
										<mon:number>2</mon:number>
										<mon:district>AMERICA</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89204550</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
						</mon:transitions>
						<mon:items>
							<mon:item>
								<mon:sourceId>000000146-1-01</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON01</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 01</mon:name>
								</mon:product>
								<mon:quantity>8</mon:quantity>
								<mon:value>40.00000000</mon:value>
								<mon:weight>8.00000000</mon:weight>
								<mon:volume>16.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000035</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000146-1-02</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON01</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 01</mon:name>
								</mon:product>
								<mon:quantity>3</mon:quantity>
								<mon:value>15.00000000</mon:value>
								<mon:weight>3.00000000</mon:weight>
								<mon:volume>6.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000036</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000146-1-03</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON02</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 02</mon:name>
								</mon:product>
								<mon:quantity>2</mon:quantity>
								<mon:value>20.00000000</mon:value>
								<mon:weight>4.00000000</mon:weight>
								<mon:volume>8.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000045</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000146-1-04</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON02</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 02</mon:name>
								</mon:product>
								<mon:quantity>10</mon:quantity>
								<mon:value>100.00000000</mon:value>
								<mon:weight>20.00000000</mon:weight>
								<mon:volume>40.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000046</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000146-1-05</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON03</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 03</mon:name>
								</mon:product>
								<mon:quantity>13</mon:quantity>
								<mon:value>195.00000000</mon:value>
								<mon:weight>39.00000000</mon:weight>
								<mon:volume>78.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue> </mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
						</mon:items>
					</mon:monitorable>
					<mon:monitorable>
						<mon:sourceId>000000147-1</mon:sourceId>
						<mon:type>INVOICE</mon:type>
						<mon:vehicle>
							<mon:vehicle>EFS7890 </mon:vehicle>
							<mon:name>MERCEDEZ TRUCADO</mon:name>
						</mon:vehicle>
						<mon:truck>
							<mon:sourceId>EFS7890</mon:sourceId>
						</mon:truck>
						<mon:carrier>
							<mon:sourceId>000001</mon:sourceId>
							<mon:name>TRANSPORTE PROPRIO TESTE</mon:name>
							<mon:description>ANGELO</mon:description>
						</mon:carrier>
						<mon:value>200.00000000</mon:value>
						<mon:weight>20.00000000</mon:weight>
						<mon:transitions>
							<mon:transition>
								<mon:name>Início</mon:name>
								<mon:sourceId>000000147-1-001</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:31:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:31:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-01</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA</mon:name>
										<mon:description>ANTHONY E LORENZO</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>RUA PAULINO M ALVES</mon:street>
										<mon:number>2</mon:number>
										<mon:district>AMERICA</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89204550</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
						</mon:transitions>
						<mon:items>
							<mon:item>
								<mon:sourceId>000000147-1-01</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON01</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 01</mon:name>
								</mon:product>
								<mon:quantity>2</mon:quantity>
								<mon:value>20.00000000</mon:value>
								<mon:weight>2.00000000</mon:weight>
								<mon:volume>4.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000035</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000147-1-02</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON02</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 02</mon:name>
								</mon:product>
								<mon:quantity>3</mon:quantity>
								<mon:value>60.00000000</mon:value>
								<mon:weight>6.00000000</mon:weight>
								<mon:volume>12.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000045</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000147-1-03</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON03</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 03</mon:name>
								</mon:product>
								<mon:quantity>4</mon:quantity>
								<mon:value>120.00000000</mon:value>
								<mon:weight>12.00000000</mon:weight>
								<mon:volume>24.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>    </mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
						</mon:items>
					</mon:monitorable>
					<mon:monitorable>
						<mon:sourceId>000000148-1</mon:sourceId>
						<mon:type>INVOICE</mon:type>
						<mon:vehicle>
							<mon:vehicle>EFS7890 </mon:vehicle>
							<mon:name>MERCEDEZ TRUCADO</mon:name>
						</mon:vehicle>
						<mon:truck>
							<mon:sourceId>EFS7890</mon:sourceId>
						</mon:truck>
						<mon:carrier>
							<mon:sourceId>000001</mon:sourceId>
							<mon:name>TRANSPORTE PROPRIO TESTE                </mon:name>
							<mon:description>ANGELO</mon:description>
						</mon:carrier>
						<mon:value>225.00000000</mon:value>
						<mon:weight>100.00000000</mon:weight>
						<mon:transitions>
							<mon:transition>
								<mon:name>Início</mon:name>
								<mon:sourceId>000000148-1-001</mon:sourceId>
								<mon:expectedTimestamp>2019-09-18T00:16:00.000-03:00</mon:expectedTimestamp>
								<mon:limitTimestamp>2019-09-18T00:16:00.000-03:00</mon:limitTimestamp>
								<mon:location>
									<mon:locality>
										<mon:sourceId>01-000054-02</mon:sourceId>
										<mon:name>ANTHONY E LORENZO LOGISTICA CD</mon:name>
										<mon:description>ANTHONY E LORENZO CD</mon:description>
									</mon:locality>
									<mon:address>
										<mon:street>AVENIDA PAULO S.</mon:street>
										<mon:number>1500</mon:number>
										<mon:district>Petropolis</mon:district>
										<mon:city>JOINVILLE</mon:city>
										<mon:state>SC</mon:state>
										<mon:zipCode>89232301</mon:zipCode>
										<mon:country>BR</mon:country>
									</mon:address>
								</mon:location>
							</mon:transition>
						</mon:transitions>
						<mon:items>
							<mon:item>
								<mon:sourceId>000000148-1-01</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON01</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 01</mon:name>
								</mon:product>
								<mon:quantity>10</mon:quantity>
								<mon:value>50.00000000</mon:value>
								<mon:weight>10.00000000</mon:weight>
								<mon:volume>20.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000034</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000148-1-02</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON02</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 02</mon:name>
								</mon:product>
								<mon:quantity>10</mon:quantity>
								<mon:value>50.00000000</mon:value>
								<mon:weight>20.00000000</mon:weight>
								<mon:volume>40.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000044</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000148-1-03</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON02</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 02</mon:name>
								</mon:product>
								<mon:quantity>5</mon:quantity>
								<mon:value>25.00000000</mon:value>
								<mon:weight>10.00000000</mon:weight>
								<mon:volume>20.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue>AUTO000045</mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
							<mon:item>
								<mon:sourceId>000000148-1-04</mon:sourceId>
								<mon:product>
									<mon:sourceId>MON03</mon:sourceId>
									<mon:name>PRODUTO MONITORAVEL 03</mon:name>
								</mon:product>
								<mon:quantity>20</mon:quantity>
								<mon:value>100.00000000</mon:value>
								<mon:weight>60.00000000</mon:weight>
								<mon:volume>120.00000000</mon:volume>
								<mon:extensions>
									<mon:extension>
										<mon:key>Lote</mon:key>
										<mon:textValue></mon:textValue>
									</mon:extension>
								</mon:extensions>
							</mon:item>
						</mon:items>
					</mon:monitorable>
					<mon:extensions>
						<mon:extension>
							<mon:key>Viagem</mon:key>
							<mon:textValue>50700</mon:textValue>
						</mon:extension>
					</mon:extensions>
				</mon:monitorables>
				<mon:relationships>
					<mon:relationship>
						<mon:parentSourceId>0101-000679-01</mon:parentSourceId>
						<mon:children>
							<mon:childSourceIds>000000146-1</mon:childSourceIds>
						</mon:children>
					</mon:relationship>
					<mon:relationship>
						<mon:parentSourceId>0101-000679-01</mon:parentSourceId>
						<mon:children>
							<mon:childSourceIds>000000147-1</mon:childSourceIds>
						</mon:children>
					</mon:relationship>
					<mon:relationship>
						<mon:parentSourceId>0101-000679-01</mon:parentSourceId>
						<mon:children>
							<mon:childSourceIds>000000148-1</mon:childSourceIds>
						</mon:children>
					</mon:relationship>
				</mon:relationships>
			</mon:monitorableSet>
		</mon:request>
	</soapenv:Body>
</soapenv:Envelope>

Exemplo de XML de Cancelamento de Monitorável

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
	<soapenv:Header/>
	<soapenv:Body>
		<upd:requestUpdate                     
                        xmlns:upd="http://www.neolog.com.br/cpl/acquisition/monitoring/update/" 
                        xmlns:mon="http://www.neolog.com.br/cpl/acquisition/monitoring/monitorable/">
			<mon:key>Viagem</mon:key>
			<upd:monitorableUpdateSet>
				<upd:operation>CANCEL</upd:operation>
				<upd:monitorableSet>
					<mon:monitorables>
						<mon:monitorable>
							<mon:sourceId>0101-000692-01</mon:sourceId>
							<mon:type>TRIP</mon:type>
						</mon:monitorable>
					</mon:monitorables>
				</upd:monitorableSet>
			</upd:monitorableUpdateSet>
		</upd:requestUpdate>
	</soapenv:Body>
</soapenv:Envelope>


Fluxo TOTVS Otimização Logística → TOTVS OMS

Estrutura do XML de Finalização de Monitorável

Mensagem Integração de Finalização de Monitorável

Tag XML Agrupadora

Tag XML

Campo no TOTVS Otimização Logística.

Campo no Protheus

Observações

finishingSet

monitorableSourceId

Viagem Monitorada

(Empresa e Filial)² + DAK_COD + DAK_SEQCAR

-
finishingSetmonitorableTypeTipo de objeto monitorado (Viagem)Não utilizado-
finishingSetfinishedIndicador lógico (true/false)Não utilizado-

² O desmembramento dos códigos da Empresa e Filial será feito baseado no tamanho padrão de Filiais.

Ao receber um XML de Finalização de Monitoramento será efetuada a abertura de um ambiente para as atualizações no TOTVS OMS, conforme mencionadas abaixo:

  • Processo de retorno da Carga (ver processo padrão efetuado pela rotina OMSA320 (Retorno de Cargas).
    • Processos de Devolução e Beneficiamento não serão efetuados a partir do XML de Finalização de Monitorável.
  • Atualização da data de entrega na(s) Nota(s) Fiscal(is) geradas a partir dos Pedidos relacionados a Carga.
  • Finalização do monitoramento da Carga.

Exemplo de XML de Finalização de Monitorável

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header/>
	<SOAP-ENV:Body>
		<ns2:request xmlns:ns2="http://www.neolog.com.br/cpl/publish/monitoring/finishing/" xmlns:ns3="http://www.neolog.com.br/cpl/publish/monitoring/occurrence/" xmlns:ns4="http://www.neolog.com.br/cpl/publish/monitoring/transition/">
			<ns2:finishingSet>
				<ns2:monitorableSourceId>0101-001011-01</ns2:monitorableSourceId>
				<ns2:monitorableType>TRIP</ns2:monitorableType>
				<ns2:finished>true</ns2:finished>
			</ns2:finishingSet>
		</ns2:request>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Configurações Complementares

Configuração Para Envio Automático das Cargas Para o Monitoramento

  • As cargas podem ser enviadas automaticamente para o monitoramento no TOTVS Otimização Logística.

  • Para isso, deve ser configurada a execução automática (Schedule) da rotina OMSXCPL7 (Monitor de Cargas)..

  • Esta configuração pode ser executada conforme descrito em Schedule Protheus.


Funcionamento

O envio e o cancelamento de monitoráveis (cargas) para o TOTVS Otimização Logística são realizados pela rotina OMSXCPL7 (Monitor de Cargas), por intermédio das opções Enviar Cargas p/ Monitoramento ou Cancelar Monitoramento Cargas.

As cargas aptas a serem enviadas para o monitoramento são aquelas que estão com todos os pedidos da cargas faturados.

As cargas enviadas para o monitoramento podem ou não ter sido originadas de viagens geradas pelo módulo Planejamento do TOTVS Otimização Logística.


Funcionalidades Não Contempladas

A integração entre o TOTVS OMS e o TOTVS Otimização Logística apresenta a seguinte restrição:

  • O TOTVS OMS não controlará as ocorrências geradas durante o monitoramento da carga.