Sistemas Envolvidos
INTEGRAÇÃO DESCONTINUADA
Prezado cliente, esta integração encontra-se descontinuada em Abril 2024.
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.
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).
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.
É recomendado criar um Web Service com as seguintes configurações (modificando o arquivo Appserver.ini):
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:
Para evitar inconsistências do tipo Failed Handshake SSL recomenda-se incluir a seguinte configuração no Appserver.ini:
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:
Campo | Descrição | Parâmetro | Opções | Valor para Integração | Validação |
---|---|---|---|---|---|
Integração Monitoramento? | Indica se a integração com o monitoramento do TOL está ativa. | MV_CPLMON | 1 - Sim 2 - Não | 1 - Sim | - |
Integração Suspensa? | Indica se a integração com o TOL está temporariamente suspensa. | MV_CPLSTP | 1 - Sim 2 - Não | 2 - Não | - |
Endereço Web Service Monitoramento | Endereço do Web Service de Monitoramento do TOL. | MV_CPLURL | Conforme cliente. Exemplo: | 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: | Preenchimento obrigatório. | |
Usuário de Autenticação do Web Service | Usuário utilizado para efetuar login no TOL para obtenção do token. | MV_USRCPL | Conforme cliente | Preenchimento obrigatório. | |
Senha de Autenticação do Web Service | Senha do usuário utilizado para efetuar login no TOL para obtenção do token. | MV_PSWCPL | Conforme cliente | Preenchimento 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 | - | |
Regional | Regional enviada para o TOL. | MV_CPLREG | Conforme cliente | Preenchimento obrigatório. | |
E-mail do Administrador | E-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]:
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.
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.
Fluxo TOTVS OMS → TOTVS Otimização Logística
Estrutura do XML de Envio
Mensagem Integração de Envio de Monitorável | ||||
---|---|---|---|---|
Tag XML Agrupadora | Tag XML | Campo no Protheus | Campo no TOL | Observações |
driver | sourceId | Filial² + DA4_COD | Motorista | - |
driver | name | DA4_NOME | Motorista | - |
driver | identifier | DA4_CGC ou DA4_MAT ou DA4_COD | Motorista | Utilizará a primeira informação não vazia. |
monitorables / monitorable | sourceId | 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 / monitorable | type | TRIP / INVOICE | - | A carga é enviada com o monitorável do tipo TRIP. |
monitorables / monitorable | value | Se tipo igual a TRIP, então: Se tipo igual a INVOICE, então: | Valor | - |
monitorables / monitorable | volume | Se tipo igual a TRIP, então: Se tipo igual a INVOICE, então: | Volume | - |
monitorables / monitorable | weight | Se tipo igual a TRIP, então: Se tipo igual a INVOICE, então: | Peso | O peso varia conforme o parâmetro MV_PESOCAR:
|
monitorables / monitorable | temperatureType | DB0_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 / vehicle | vehicle | DA3_COD | Veículo | - |
monitorables / monitorable / vehicle | name | DA3_DESC | Veículo | - |
monitorables / monitorable / truck | truck | DA3_PLACA | Caminhão | - |
monitorables / monitorable / carrier | sourceId | A4_COD | Caminhão | - |
monitorables / monitorable / carrier | name | A4_NOME | Transportadora | - |
monitorables / monitorable/ carrier | description | DA4_NREDUZ | Transportadora | - |
monitorables / monitorable / transitions / transition | name | A integração possuí quatro transições:
| 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 / transition | sourceId | Sequencial de três dígitos gerado no momento de execução | Transição | - |
monitorables / monitorable / transitions / transition | expectedTimestamp | Definida conforme o tipo da transição.
DK1_CHEGAD ou DAI_DTCHEG + DAI_CHEGAD
DK1_INIDES
DK1_FIMDES
DK1_TSAIDA ou DAI_DTSAID + DAI_HRSAID | Data Estimada | - |
monitorables / monitorable / transitions / transition | limitTimestamp | Definida conforme o tipo da transição.
DK1_CHEGAD ou DAI_DTCHEG + DAI_CHEGAD
DK1_INIDES
DK1_FIMDES
DK1_TSAIDA ou DAI_DTSAID + DAI_HRSAID | Data Esperada | - |
monitorables / monitorable / transitions / transition / location / locality | sourceId | Filial + A1_COD | Localidade | - |
monitorables / monitorable / transitions / transition / location / locality | name | A1_NOME | Localidade | - |
monitorables / monitorable / transitions / transition / location / locality | description | A1_NREDUZ | Localidade | - |
monitorables / monitorable / transitions / transition / location / address | street | A1_ENDENT ou A1_END | Endereço | Prioriza o preenchimento com base no endereço de entrega. |
monitorables / monitorable / transitions / transition / location / address | number | A1_ENDENT ou A1_END | Endereço | Prioriza o preenchimento com base no endereço de entrega. |
monitorables / monitorable / transitions / transition / location / address | district | A1_BAIRROE ou A1_BAIRRO | Endereç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 / address | city | CC2_MUNE ou A1_MUNE / CC2_MUN ou A1_MUN | Endereç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 / address | state | A1_ESTE / A1_EST | Endereç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 / address | zipCode | A1_CEPE / A1_CEP | Endereç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 / address | country | A1_PAIS | Endereço | - |
monitorables / monitorable / items / item | sourceId | F2_DOC + F2_SERIE + D2_ITEM | Item | - |
monitorables / monitorable / items / item | quantity | D2_QUANT | Quantidade | - |
monitorables / monitorable / items / item | value | D2_TOTAL | Valor | - |
monitorables / monitorable / items / item | weight | D2_PESO | Peso | - |
monitorables / monitorable / items / item | volume | D2_QUANT * (B5_COMPRLC * B5_LARGLC * B5_ALTURLC) | Volume | - |
monitorables / monitorable / items / item / product | sourceId | B1_COD | Produto | - |
monitorables / monitorable / items / item / product | name | B1_DESC | Produto | - |
monitorables / monitorable / items / item / extensions / extension | key | Lote | Lote | - |
monitorables / monitorable / items / item / extensions / extension | textValue | D2_LOTECTL | Lote | - |
relationships / relationship | parentSourceId | Filial + DAK_COD + DAK_SEQCAR | - | - |
relationships / relationship / children | childSourceIds | F2_DOC + F2_SERIE | - | - |
Estrutura do XML de Cancelamento
Mensagem Integração de Cancelamento de Monitorável | ||||
---|---|---|---|---|
Tag XML Agrupadora | Tag XML | Campo no Protheus | Campo no TOTVS Otimização Logística | Observações |
sourceId | sourceId | 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
Exemplo de XML de Cancelamento de Monitorável
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 | - |
finishingSet | monitorableType | Tipo de objeto monitorado (Viagem) | Não utilizado | - |
finishingSet | finished | Indicador 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
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.