Contexto de Negócio (Introdução)

Com a crescente necessidade de uma otimização nos processos logísticos de distribuição buscando um melhor aproveitamento dos veículos tanto na questão de carregamento quanto a roteirização das entregas, era necessário proporcionar aos cliente do OMS Protheus uma solução para estas necessidades.

Visando esta solução foi realizada a integração entre o módulo Gestão de Distribuição (SIGAOMS) da linha Microsiga Protheus  com a funcionalidade Programação de Transportes do Cockpit Logístico da Neolog, por intermédio de arquivos no formato XML utilizando os Web Services existentes do Cockpit Logístico, sem transformação de mensagens e sem a utilização de sistemas intermediários (TOTVS EAI, TOTVS ESB, entre outros).

Com esta integração o OMS passou a utilizar os recursos do Cockpit Logístico, o qual efetuará a roteirização e o arranjo das cargas com base na demanda de transportes enviados pelo OMS, devolvendo para este as cargas já montadas e roteirizadas. Para esta montagem de carga são consideradas as configurações das restrições logísticas e as funções-objetivos de otimização registradas no Cockpit Logístico.

São exemplos de funções-objetivo:

  • Máxima ocupação dos veículos;
  • Diminuição dos prazos de entrega;
  • Redução da quantidade de viagens.

Sistemas Envolvidos

Descrição dos sistemas envolvidos no contexto de negócio (e que serão envolvidos na integração).

  • TOTVS Gestão de Distribuição (SIGAOMS)
    A sigla OMS significa Order Management System, ou seja, gerenciamento de pedidos e serviços e 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 OMS TOTVS, acesse o link: https://www.totvs.com/mktfiles/tdiportais/helponlineprotheus/portuguese/sigaoms.htm
  • Cockpit Logístico Neolog
    O Cockpit Logístico é 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.
    Para obter mais detalhes sobre o Cockpit Logístico Neolog, acesse o link: http://www.neolog.com.br/neolog-site/index.php/cockpit-logistico/
Índice

Escopo

O escopo desta integração permitirá o envio dos pedidos de venda liberados (crédito / estoque) no OMS para a formação das viagens no Cockpit Logístico e o recebimento dessas viagens geradas no Cockpit Logístico por meio de um XML no OMS para a geração das cargas.

Para complementar o escopo do envio dos pedidos será necessário enviar os cadastros envolvidos com as informações dos pedidos, como produtos, clientes, fornecedores, filiais, transportadoras e tipos de veículos.

Faz parte do processo de integração o recebimento das mensagens de publicação de viagens, reprogramação e cancelamento de viagens.

Desenho do fluxo de integração entre o OMS e o Cockipt Logístico:

¹ Para o cadastro de fornecedores existem particularidades que serão detalhadas adiante.

Para as entidades envolvidas na integração estes são os pontos de integração que farão parte do escopo dessa integração: 

EntidadePontos de Integração
Empresas/Filiais
  • Cadastro de Empresas/Filiais.
  • Edição de Empresas/Filiais.
Cliente
  • Cadastro de Cliente.
  • Edição de Cliente.
Fornecedor
  • Cadastro de Fornecedores.
  • Edição de Fornecedor.
Produto
  • Cadastro de Produto.
  • Edição de Produto.
Transportadora
  • Cadastro de Transportadoras.
  • Edição Transportadoras.
Tipo de Veículo
  • Cadastro de Tipo Veículo.
  • Edição de Tipo Veículo.
Pedidos de Venda
  • Envio dos Pedidos de Vendas ao Cockpit Logístico.
  • Cancelamento dos Pedidos de Vendas.
Viagens
  • Geração da Viagem no Cockpit Logístico.
  • Liberação da Viagem no Cockpit Logístico.
  • Liberar Viagem no OMS.
  • Cancelamento da Viagem no Cockpit Logístico
  • Reprogramação da Viagem no Cockpit Logístico

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

Cockpit Logístico

  • Cockpit Logístico na versão\release 5.6.1.
  • Parâmetros de aquisição ativos (Acesso pelo menu em Administração > Cockpit Logístico).
  • Web Services ativos.

Protheus

  • Protheus versão  12.1.17 ou superior.
  • Parâmetros de integração com Cockpit Logístico configurados (Acesso pelo menu em Atualizações > CockPit Logístico > Parâmetros Integração).
  • Web Service Server para recebimento de mensagens do Cockpit Logístico.
  • Para utilização da integração entre o módulo SIGAOMS e o Cockpit Logístico na versão 12.1.17 (ou superior) do Protheus é necessário estar com o ambiente atualizado com a última versão de RPO e o dicionário disponível na Central de Donwloads TOTVS.
  • Para obter mais informações sobre como atualizar o dicionário de dados do Protheus 12, clique aqui.
  • Não é escopo desse documento descrever a instalação do ERP Protheus e do Cockpit Logístico Neolog, nem suas configurações básicas. 

Instalação/Configuração

Configuração WebService AppServer Protheus

Para que seja possível receber as viagens do Cockpit Logístico, é necessário configurar um WebService no servidor de aplicação Protheus.

É recomendado criar um WebService 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, basta iniciar um navegador e digitar: http://<ip ou nome>:<porta>/neolog/PublishReleasedTrip.APW?WSDL

Um WSDL (descrição do serviço em xml) deve exibir no navegador.

Parametrização Cockpit Logístico

Para configurar o envio de viagens do cockpit ao WebService Protheus, entre no Cockpit Logístico e acesse:

  1. Administração > Integração, selecione a pasta 'Fontes de Dados' e clique em 'Inserir'.
  2. Digite o Código, Descrição e Código da base.
    Sugestão: PROTHEUS
  3. Seção "Cancelamento de Viagem Liberada"
    • No campo "URL" da seção, digite: http://<ip ou nome>:<porta>/neolog/CancelService.APW 
    • No campo "Tempo Máximo de Espera por Resposta", coloque o timeout do serviço.
      Recomendado 30000.

4. Seção "Execução da Viagem"

    • No campo "URL", digite: NA (Não Atribuído)
    • No campo "Tempo Máximo de Espera por Resposta", coloque o timeout do serviço.
      Recomendado 1000.

5. Seção "Solicitação de liberação de Viagem"

    • No campo "URL", digite: http://<ip ou nome>:<porta>/neolog/PublishReleasedTrip.APW
    • No campo "Tempo Máximo de Espera por Resposta", coloque o timeout do serviço.
      Recomendado 30000.

6. Seção "Solicitação de Reprogramação de Viagem"

    • No campo "URL", digite: http://<ip ou nome>:<porta>/neolog/ReprogramService.APW
    • No campo "Tempo Máximo de Espera por Resposta", coloque o timeout do serviço.
      Recomendado 30000.

7. Selecione a opção "Salvar".

Parametrização SIGAOMS

Por meio do menu Atualizações > CockPit Logístico > Parâmetros Integração (OMSXCPL1), o Protheus deve ser parametrizado para o correto funcionamento da integração conforme abaixo:

TituloDescriçãoParâmetroOpçõesValor para IntegraçãoValidação
Integração Cockpit Logístico?Indica se a integração com o Cockpit Logístico está ativa.MV_CPLINT1-Sim / 2-NãoSim / 1

Integração Suspensa?

Identifica se a integração com o Cockpit Logístico está temporariamente suspensa.MV_CPLSTP1-Sim / 2-NãoNão / 2
Integrar Clientes On line?Indica se ao incluir ou alterar um cliente no Protheus, deverá efetuar a replicação automaticamente no Cockpit Logístico (Localidades).MV_CPLCLI1-Sim / 2-NãoSim / 1
Integrar Fornecedores On line?Indica se ao incluir ou alterar um fornecedor no Protheus, deverá efetuar a replicação automaticamente no Cockpit Logístico (Localidades).MV_CPLFOR1-Sim / 2-NãoSim / 1
Integrar Transportadora On line?Indica se ao incluir ou alterar um transportador no Protheus, deverá efetuar a replicação automaticamente no Cockpit Logístico.MV_CPLTRA1-Sim / 2-NãoSim / 1
Integrar Produtos On Line?Indica se ao incluir ou alterar um produto no Protheus, deverá efetuar a replicação automaticamente no Cockpit Logístico.MV_CPLPRO1-Sim / 2-NãoSim / 1
Integrar Tipos de Veículos On line?Indica se ao incluir ou alterar um tipo de veículo no Protheus, deverá efetuar a replicação automaticamente no Cockpit Logístico.MV_CPLTPV1-Sim / 2-NãoSim / 1
Endereço WebServiceEndereço do WebService do Cockpit Logístico.MV_CPLURL
Conforme clienteDeve ser obrigatoriamente preenchido quando MV_CPLINT == "1"
Endereço WebService de AutenticaçãoEndereço do WebService de Autenticação do Cockpit Logístico.
Este endereço fornecerá um token de autenticação que deverá ser utilizado nas requisições feita as Cockpit Logístico, quando este estiver parametrizado para solicitar autenticação.
MV_CPLUAUT
Conforme cliente
Usuário de Autenticação do WebServiceUsuário utilizado para efetuar login no Cockipt Logístico para obtenção do token.

MV_USRCPL


Conforme clienteDeve ser obrigatoriamente preenchido quando Possuir URL de autenticação.
Senha de Autenticação do WebServiceSenha do usuário utilizado para efetuar login no Cockipt Logístico para obtenção do token.

MV_PSWCPL


Conforme clienteDeve ser obrigatoriamente preenchido quando Possuir URL de autenticação.
Quantidade de Horas para Considerar que o Token ExpirouIndica 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 Cockpit Logístico.MV_CPLREG
Conforme clienteDeve ser obrigatoriamente preenchido quando MV_CPLINT == "1"
Embarcador

Código de um Embarcador do Cockpit Logístico.

Todos os Produtos integrados do OMS para o Cockpit Logístico, serão relacionados a um mesmo Embarcador no Cockpit Logístico, pois no OMS a relação variável de produto x cliente é utilizada (opcionalmente), apenas na importação de Notas Fiscais de Cliente pelo EDI.

MV_CPLEMB
Conforme clienteDeve ser obrigatoriamente preenchido quando MV_CPLINT == "1"
Categoria de Produto?Para o Cockpit Logístico, categorias de produto são agrupamentos relevantes de produtos com características logística semelhantes. Com esse parâmetro, pode-se determinar se a categoria dos produtos integrados do OMS para o Cockpit Logístico (1=Grupo Produto), será o código do grupo do produto do OMS ou (2=Padrão Cockpit) será informada por alteração manual em cada produto no Cockpit Logístico. Com a opção, deve-se cadastrar as Categorias de Produtos no Cockpit Logístico com os mesmos códigos dos Grupos de Produtos do OMS, pois não há WebService de integração para essa tabela.MV_CPLCAT

1-Grupo Produto
2-Padrão Cockpit

2=Padrao Cockpit.


Invólucro PadrãoCódigo de um Invólucro (~ embalagem) do Cockpit Logístico. Todos os itens de Pedidos de Transporte recebidos do OMS no Cockpit Logístico, serão associados a esse invólucro pois não há uma entidade no OMS que corresponda exata e obrigatoriamente a esse dado do Cockpit Logístico. Recomenda-se informar um invólucro cujas medidas sejam obtidas do item do pedido (essa característica é parametrizada no Cockpit Logístico).MV_CPLINV
Conforme cliente
Origem dos DadosDefine o nome do ERP que da origem aos dados enviados ao Cockpit Logístico.MV_CPLIDS

Deve ser informada a fonte de dados criada dentro do Cockpit Logístico.

Ex: Protheus

Deve ser obrigatoriamente preenchido quando MV_CPLINT == "1"
E-mail do AdministradorE-mail do administrador para notificações de falha de conexão.MV_CPLMAL
Conforme cliente
Liberação automática da viagem?

O uso deste parâmetro ocorre somente para o OMS, quando habilitado, ao realizar a integração da viagem vinda do Cockipt Logístico, o sistema irá realizar o envio da liberação de viagens de forma automática.

MV_CPLLVA1-Sim / 2-Não2 / Não
Tipo Veículo Otimização?

Quando for 1 = Impedir: No vinculo do veículo na carga se o usuário informar um tipo de veículo diferente do que consta na viagem do Cockpit Logístico, não permitimos apresentando um Help. 

Se for 2 = Alertar: O sistema avisa que o tipo informado é diferente do tipo da viagem no Cockpit Logístico e o usuário define se permite o vinculo ou não.

MV_CPLTVO1-Impedir
2-Alterar
2 / Alertar
Geração das CargasQuando for 1 = Automático: Para as viagens vindas do Cockpit Logístico o OMS gera a carga automaticamente.
Quando for 2 = Manual: Para as viagens deve ser gerada manualmente a carga.
Nota: Este parâmetro implica na necessidade da liberação ser automática (MV_CPLLVA), pois somente é permitido a montagem de cargas de viagens liberadas.
MV_CPLAUT1-Automático
2-Manual
2 / Manual
Unidade de Medida a ser Considerada na Integração

Este parâmetro permite indicar a unidade de medida a ser considerada na integração dos Itens dos Pedidos de Venda com o Cockpit Logístico. Onde: 1 - 1ª UM e 2 - 2ª UM dos produtos.


MV_CPLUMIT1 - 1ª UM
2 - 2ª UM
1 / 1ª UM (padrão)

Parametrização do Processo de Debug

É possível parametrizar para salvar todas as mensagens trocadas entre o OMS e o Cockpit Logístico, permitindo assim analisar os detalhes das mensagens trocadas. Esta parametrização deverá ser feita no arquivo de configuração do servidor Protheus (appserver.ini). As configurações abaixo devem ser incluídas no arquivo na seção [NEOLOG]:

;Configuração integração com o Cockipt Logístico
[NEOLOG]
DefaultCompany=<empresa>
Debug=1
DebugPath=<caminho relativo> ;logs\neolog

Onde:

  • DefaultCompany: Empresa padrão para integração entre o OMS e o Cockpit Logístico. Caso não informado não será considerado, sempre sendo enviado nas mensagens nas 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á enviado apenas a concatenação do código com campo filial do respectivo cadastro/processo.
  • Debug: Indicador de que o processo de gravação dos arquivos xml das mensagens está ativado. 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 onde 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, irá 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 fazer a primeira análise e, quando necessário, repassar para a equipe mais adequada em cada caso.

Este modelo de suporte está sendo revisado pela TOTVS. 

Transações / Entidades / Mensagens Únicas

MétodoIDDescriçãoOrigemDestinoXSD (versões podem variar)

Cadastros

01

Empresas/FiliaisProtheusCockpit LogísticoLocalityAcquisitionService
02ClienteProtheusCockpit LogísticoLocalityAcquisitionService
03FornecedorProtheusCockpit LogísticoLocalityAcquisitionService ou CarrierAcquisitionService
04ProdutosProtheusCockpit LogísticoProductAcquisitionService
05TransportadoraProtheusCockpit LogísticoCarrierAcquisitionService
06Tipo de Veículo SIGAOMSCockpit LogísticoVehicleAcquisitionService

Processos

07

Pedido de Vendas

SIGAOMS

Cockpit Logístico

OrderAcquisitionService

08Cancelar Pedido de VendasSIGAOMSCockpit LogísticoOrderAcquisitionService
09Publicar ViagensCockpit LogísticoSIGAOMSPublishReleasedTrip
10Liberar ViagensSIGAOMSCockpit LogísticoUnblockReleasedTripAcquisitionService
11Cancelar ViagensCockpit LogísticoSIGAOMS

CancelService

12Reprogramar ViagensCockpit LogísticoSIGAOMSReprogramService

Fluxo das Informações

Os cadastros devem ser realizados no OMS Protheus e integrados para o Cockpit Logístico. A ativação da integração, no entanto, não impede a inclusão, alteração e exclusão de registros no Cockpit Logístico, mas esse procedimento não é recomendado, pois as operações realizadas sobre os cadastros no Cockpit Logístico não são replicadas para os respectivos cadastros no Protheus.

Apenas as operações de inclusão e alteração são consideradas na integração e são efetuadas sempre que ocorrerem, desde que parametrizadas para serem on-line. A operação de eliminação sobre os registros de cadastros não é integrada, pois não é possível verificar a integridade referencial no sistema de destino para considerá-la como restrição de eliminação dos registros no Protheus.

O sucesso das operações de inclusão e alteração de registros pode ser verificado acessando o programa de consulta no menu do Cockpit Logístico em: Interface - Log. O sistema de origem dos dados não recebe o status do processamento dos registros enviados, por isso considera integrado com base apenas na confirmação de recepção da mensagem de integração.

Entidade (s) ProtheusCódigo (Alías)Web ServiceMétodoEntidade CockpitObservações
FilialSM0LocalityAcquisitionServiceupdateLocalitiesLocalidadeAs filiais assumem o papel de localidade quando são locais de carga ou descarga. Quando MV_CPLEX == "2" não integrar filial, cuja unidade de federação não faça parte da lista de unidades de federação do Brasil.
ClienteSA1LocalityAcquisitionServiceupdateLocalitiesLocalidadeQuando MV_CPLEX == "2" não integrar cliente com país informado diferente de 105 (Brasil).
FornecedorSA2

LocalityAcquisitionService ou CarrierAcquisitionService

updateLocalities ou updateCarriers

Localidade 

Os fornecedores serão integrados como localidade quando atender os seguintes requisitos:

  1. Campo A2_TRANSP (Cód. Transportadora) em branco;
  2. Campo A2_RNTRC (Reg. Nac. Tr. Rod. Cargas) em branco;
  3. Campo A2_PAGGFE (Pagamento pelo SIGAGFE) igual a '2-Não'.

Caso contrário, o fornecedor será integrado como transportadora.

ProdutoSB1 e SB5ProductAcquisitionServiceupdateProductsProduto
TransportadoraSA4CarrierAcquisitionServiceupdateCarriersTransportador
Tipo de VeículoDUTVehicleAcquisitionServiceupdateVehiclesVeículo
Pedido de VendaSC5 / SC6 / SC9 / SB1 / SB5OrderAcquisitionService

createOrders

Pedidos de TransporteO pedido de venda deve possuir, obrigatoriamente, montagem de carga.

Filiais

Tipo de Fluxo: Protheus > Cockpit Logístico

Mensagem: LocalityAcquisitionService

Versão: 1.000

O envio de empresas/filiais não é automático, ou seja, ao cadastrar no Protheus uma nova empresa/filial, para que essas informações sejam replicadas para o Cockpit Logístico, é necessário executar a carga de dados disponível em: SIGAOMS > Atualizações > Cockpit Logístico > Carga de dados, marcando a opção SM0 - Cadastro de Filiais. Os dados serão enviados ao Cockpit Logístico por meio do método updateLocalities, esses dados por sua vez serão salvos como localidade, e poderão ser visualizados no CPL em: CADASTRO > Localidades.

Clientes

Tipo de Fluxo: Protheus > Cockpit Logístico

Mensagem: LocalityAcquisitionService

Versão: 1.000

Ao cadastrar um cliente no Protheus, quando a integração estiver ativa, os dados serão enviados ao Cockpit Logístico por meio do método updateLocalities, esses dados por sua vez serão salvos como localidade, e poderão ser visualizados no CPL em: Cadastro > Localidades.

Fornecedores

Tipo de Fluxo: Protheus > Cockpit Logístico

Mensagem: LocalityAcquisitionService ou CarrierAcquisitionService

Versão: 1.000

Ao cadastrar um Fornecedor no Protheus, quando a integração estiver ativa, os dados serão enviados ao Cockpit Logístico por meio do método updateLocalities (conforme parametrização do cadastro SA2, conforme comentado acima), esses dados por sua vez serão salvos como localidade, e poderão ser visualizados no CPL em: Cadastro > Localidades.

Produtos

Tipo de Fluxo: Protheus > Cockpit Logístico

Mensagem: ProductAcquisitionService

Versão: 1.000

Ao cadastrar um Produto no Protheus, quando a integração estiver ativa, os dados serão enviados ao Cockpit Logístico por meio do método ProductAcquisitionServiceesses dados por sua vez serão salvos como Produtos Simples e poderão ser visualizados no CPL em: Cadastro > Produtos Simples.

Transportadores

Tipo de Fluxo: Protheus > Cockpit Logístico

Mensagem: CarrierAcquisitionService

Versão: 1.000

Ao cadastrar um Transportador no Protheus, quando a integração estiver ativa, os dados serão enviados ao Cockpit Logístico por meio do método CarrierAcquisitionServiceesses dados por sua vez serão salvos como Transportadoras e poderão ser visualizados no CPL em: Cadastro > Transportadoras.

Tipos de Veículo

Tipo de Fluxo: Protheus > Cockpit Logístico

Mensagem: VehicleAcquisitionService

Versão: 1.000

Ao cadastrar um Tipo de veículo no Protheus, quando a integração estiver ativa, os dados serão enviados ao Cockpit Logístico por meio do método VehicleAcquisitionService, esses dados por sua vez serão salvos como Veículos e poderão ser visualizados no CPL em: Cadastro > Veículos.

Pedidos de Venda

Tipo de Fluxo: Protheus > Cockpit Logístico

Mensagem: OrderAcquisitionService

Versão: 1.000

Ao cadastrar um Pedido de venda no Protheus, quando a integração estiver ativa, os dados são enviados ao Cockpit Logístico por meio do método OrderAcquisitionServiceesses dados por sua vez geram no Cockpit Logístico pedidos de transporte e poderão ser visualizados emProgramação > Analise, deve-se filtrar os dados da cesta geral.

No OMS, foi disponibilizado um programa (OMSXCPL6) que permite selecionar uma lista com os pedidos de venda para envio ao Cockpit Logístico. Os pedidos deverão estar liberados por crédito e estoque e com o campo "Carga" igual a 1 = Utiliza.

O cancelamento do pedido no Cockpit Logístico, pode ser efetuado por meio de duas rotinas:

1) Cancelamento via rotina Preparação dos Documentos de Saída (MATA460A):

    • Quando houver o cancelamento de uma liberação do pedido de venda por meio da rotina "Preparação dos Documentos de Saída", opção "Ações Relacionadas" / "Estor. Docs" na confirmação da exclusão do registro, é realizado o envio do cancelamento ao Cockpit Logístico.

2) Cancelamento via rotina Pedido de Venda (MATA410):

    • Alteração de um pedido de venda já liberado na rotina "Pedido de Venda" (MATA410):
      Ao confirmar a alteração, o sistema realiza a exclusão do registro liberado, assim é realizado o envio do cancelamento ao Cockpit Logístico.

    • Alteração de pedido de venda já liberado e com nova liberação na própria rotina (MATA410):
      Ao confirmar a alteração com nova liberação, o sistema exclui o registro anterior e recria um novo registro com as informações da alteração. Assim, é realizado o envio do cancelamento para o Cockpit Logístico e o envio de um novo pedido liberado.

Viagens

Tipo de Fluxo: Cockpit Logístico > Protheus

Mensagem: ReleaseTripPublishRequestService

Versão: 1.000

O Cockpit Logístico envia as viagens geradas para o OMS para a formação das cargas. O envio é realizado pela chamada do WebService ReleaseTripPublishRequestService, para isso foi disponibilizado um programa monitor para receber estas viagens (OMSXCPL7). 

Ao receber uma viagem com o campo placa (DK0_PLACA) preenchido, é realizada uma busca pela placa no cadastro de veículos (DA3), caso encontrado algum registro, o veículo será associado à carga. Para que isso ocorra é essencial que a placa recebida do CPL seja idêntica a placa cadastrada no Protheus.

A rotina oferece a opção de marcação dos registros e um botão "Gera Carga", para geração das Cargas no OMS.  

Uma vez recebida a viagem do Cockpit e gerada a carga no OMS, após a geração do documento fiscal da carga (NF de Saída) é enviada novamente ao Cockpit uma mensagem de retorno com a confirmação da gravação da Carga e documento de saída, assim o Cockpit confirma a viagem gerada, este retorno é realizado pelo WebService publishReleasedTripResponse, mensagem UnblockReleasedTripAcquisition. Esta chamada ocorre por meio da opção "Liberar Viagem". 

No próximo tópico são listadas as correspondências entre os campos de cada entidade e a respectiva tag XML da mensagem de integração.

Detalhamento das Mensagens

Mensagem de integração dos registros do cadastro de Filiais

Campo ProtheusTag XMLCampo Cockpit LogísticoObservações
MV_CPLREGregionSourceIdRegional

"FIL-" + FWCodFil()
ou
"FIL-" + FWGrpCompany() + "-" + FWCodFil()

identifier Código 

O envio da concatenação de empresa + filial, fica condicionado ao fato de não existir uma empresa padrão para integração do OMS com o Cockipt Logístico.

Esta empresa padrão deve ser informada no arquivo de configuração do servidor Protheus (appserver.ini) na seção [NEOLOG] na chave DefaultCompany.

Nota: Para a localidade de filial não existe influência sobre o fato de estar usando a configuração de empresas na concatenação das informações.

M0_FILIAL name Nome 
M0_NOMECOM description Descrição 
M0_ENDENT addressStreet Endereço Obter o conteúdo usando a função LjFiGetEnd sobre o campo M0_ENDENT

addressNumber Nº Obter o conteúdo usando a função LjFiGetEnd sobre o campo M0_ENDENT
M0_COMPENT addressComplement Complemento 
M0_BAIRENT addressDistrict Bairro 
M0_CEPENT addressZipCode CEP 
M0_CIDENT addressCityCidade 
M0_ESTENTaddressStateAcronym UF Quando a UF pertencer a lista das UFs brasileiras, será considerado a mesma, caso contrário "EX". 
"BR" ou "EX" addressCountryAcronym País Quando a UF pertencer a lista das UFs brasileiras, será considerado "BR", caso contrário "EX". 
"1" logisticRoleId Tipo 1=Ambos


Mensagem de integração dos registros do cadastro de Clientes

Campo ProtheusTag XMLCampo Cockpit LogísticoObservações
MV_CPLREG regionSourceId Regional
"CLI-" + RTrim(SA1->A1_COD) + "-" + RTrim(SA1->A1_LOJA) + OMSGETFIL("SA1") ²identifier Código
A1_NREDUZ name Nome 
A1_NOME description Descrição 
A1_END addressStreet Endereço Obter o conteúdo usando a função LjFiGetEnd sobre o campo A1_END 

addressNumber Nº Obter o conteúdo usando a função LjFiGetEnd sobre o campo A1_END 
A1_COMPLEM addressComplement Complemento 
A1_BAIRRO addressDistrict Bairro 
A1_CEP addressZipCode CEP 
A1_MUN addressCity Cidade 
A1_ESTaddressStateAcronym UF Quando a UF pertencer a lista das UFs brasileiras, será considerado a mesma, caso contrário "EX". 
"BR" ou YA_SIGLA addressCountryAcronym País Acessar a tabela SYA pelo campo A1_PAIS. Quando A1_PAIS estiver em branco ou igual a 105, atribuir "BR". 
"2"logisticRoleId Tipo 2=Destino (por orientação da Neolog para gerar menos combinações de rota).


Mensagem de integração dos registros do cadastro de Fornecedor como Localidade

Campo ProtheusTag XMLCampo Cockpit LogísticoObservações
MV_CPLREGregionSourceId Regional
"FOR-" + RTrim(SA2->A2_COD) + "-" + RTrim(SA2->A2_LOJA) + OMSGETFIL("SA2") ²identifierCódigoSerá adicionada a sigla "FOR" para composição do código para identificação que se trata de um fornecedor para uso como uma localidade, devido aos pedidos de beneficiamento do OMS.
A2_NREDUZnameNome
A2_NOMEdescriptionDescrição
A2_ENDaddressStreetEndereçoObter o conteúdo usando a função LjFiGetEnd sobre o campo A2_END

addressNumberObter o conteúdo usando a função LjFiGetEnd sobre o campo A2_END
A2_COMPLEMaddressComplement Complemento
A2_BAIRROaddressDistrict Bairro 
A2_CEPaddressZipCodeCEP 

CC2_MUN

addressCity CidadeAcessar a tabela CC2 pelo campo A2_MUN.
A2_ESTaddressStateAcronym UFQuando a UF pertencer a lista das UFs brasileiras, será considerado a mesma, caso contrário "EX". 
"BR" ou YA_SIGLAaddressCountryAcronymPaísAcessar a tabela SYA pelo campo A2_PAIS. Quando A2_PAIS estiver em branco ou igual a 105, atribuir "BR". 
"2"logisticRoleId  Tipo 2=Destino (por orientação da Neolog para gerar menos combinações de rota).


Mensagem de integração dos registros do cadastro de Produto

Campo ProtheusTag XMLCampo Cockpit LogísticoObservações
MV_CPLREG regionSourceId Regional 
MV_CPLEMB shipperId Embarcador 
B1_COD + OMSGETFIL("SB1") ²identifier Código 
B1_DESC description Descrição 
B1_GRUPO productCategoryId Categoria 
B5_ALTURLCheight Altura Pasta Logística
B5_LARGLClength Comprimento Pasta Logística
B5_COMPRLCwidth Largura Pasta Logística
B1_PESO ou B1_PESBRUweight Peso 

1. Quando o parâmetro MV_PESOCAR estiver como "L" será enviado o campo B1_PESO, caso contrário B1_PESBRU.

2. Caso o parâmetro MV_CPLUMIT estiver informado para enviar a primeira unidade de medida o peso enviado será:

Peso → Campo de Peso Protheus * Fator de Conversão para KG.

3. Caso o parâmetro MV_CPLUMIT estiver informado para enviar a segunda unidade de medida o peso enviado será:

Se o tipo de conversão (B1_TIPCONV) for Divisor:

Peso → (Campo de Peso Protheus * Fator de Conversão para KG) * Fator de Conversão (B1_CONV)

Se o tipo de conversão (B1_TIPCONV) for Multiplicador:

Peso → (Campo de Peso Protheus * Fator de Conversão para KG) / Fator de Conversão (B1_CONV)

"1"shape Forma 1=Caixa


Mensagem de integração dos registros do cadastro de Transportadora

Campo ProtheusTag XMLCampo Cockpit LogísticoObservações
MV_CPLREGregionSourceIdRegional
A4_COD + OMSGETFIL("SA4") ²identifierCódigo
A4_NREDUZnameNome da Transportadora
A4_NOMEdescriptionDescrição da Transportadora

A4_EMAIL

emailE-mail da Transportadora


Mensagem de integração dos registros do cadastro de Fornecedor como Transportadora

Campo ProtheusTag XMLCampo Cockpit LogísticoObservações
MV_CPLREGregionSourceIdRegional
A2_COD + OMSGETFIL("SA2") ²identifierCódigo
A2_NREDUZnameNome da Transportadora
A2_NOMEdescriptionDescrição da Transportadora

A2_EMAIL

emailE-mail da Transportadora


Mensagem de integração dos registros do cadastro de Pedido de Venda

Campo ProtheusTag XMLCampo Cockpit LogísticoObservações
MV_CPLREGregionSourceId Regional
MV_CPLIDS integrationDataSource Integração
NilorderTypeSourceId Tipo do PedidoTAG não enviada

RTrim( OMSXGETFIL("SC5",.F.) + "-" +RTrim(SC5->C5_NUM)

identifier

RTrim( OMSXGETFIL("SC5",.F.) + "-" +RTrim(SC5->C5_NUM)codeCódigo do Ped. Transp.
"0"priority Prioridade
Date()erpCreationDt Data CorrenteData de criação do pedido.
Date() ou C6_DATAEMBpickupStartJanela Embarque
Date() ou C5_FECENTdeliveryStartJanela EntregaData corrente ou data informada no pedido de venda.
Date() ou C6_ENTREGdeliveryEnd Janela Entrega
RTrim( OMSXGETFIL("SC5",.F.) + "-" +RTrim(SC5->C5_NUM)orderId ID do Pedido de Transporte

orderId + "-" + C6_ITEM

sourceIdCódigo do Item Ped. Transp.Concatenação do campo anterior com o item de sequencia do pedido.
C6_PRODUTO + OMSGETFIL("SB1") ²productId ProdutoConforme o código enviado na mensagem de produtos.
C9_QTDLIB ou C9_QTDLIB2quantityQuantidade total de unid.

Depende do parâmetro MV_CPLUMIT

Quando estiver parametrizado para enviar na 2ª UM e o produto possui um fator de conversão (B1_CONV) maior que zero, será enviado o valor do campo C9_QTDLIB2, caso contrário será enviado sempre o campo C9_QTDLIB .

C6_VALOR

priceValor Total de unid. De prod.
"FIL-" + FWCodFil()
ou
"FIL-" + FWGrpCompany() + "-" + FWCodFil()
originIdOrigem InicialConforme o código enviado na mensagem de localidades para os registros de filiais.

"FOR-" + RTrim(SC5->C5_CLIENT)+ "-" + RTrim(SC5->C5_LOJAENT) + OMSGETFIL("SA2") ²
ou
"CLI-" + RTrim(SC5->C5_CLIENT)+ "-" + RTrim(SC5->C5_LOJAENT) + OMSGETFIL("SA1") ²

destinationIdID da Localidade de destino do Pedido

Pode ser enviado o código do cliente ou do fornecedor conforme enviado na mensagem de localidades.

Para pedidos do tipo B ou D (C5_TIPO) será enviado o código do fornecedor, para os demais será enviado o código do cliente.

C9_QTDLIB ou C9_QTDLIB2quantityInShipmentUnits 

Depende do parâmetro MV_CPLUMIT

Quando estiver parametrizado para enviar na 2ª UM e o produto possui um fator de conversão (B1_CONV) maior que zero, será enviado o valor do campo C9_QTDLIB2, caso contrário será enviado sempre o campo C9_QTDLIB .

B5_ALTURLCheight

Quando houver relacionamento com o B1_PRODUTO, quando vazio será enviado por default o contéudo = 0.001

B5_LARGLCwidth
Quando vazio, por default o contéudo enviado será = 0.001
B5_COMPRLClength
Quando vazio, por default o contéudo enviado será = 0.001
B1_PESO ou B1_PESBRUweight 

1. Caso o parâmetro MV_CPLUMIT estiver informado para enviar a primeira unidade de medida o peso enviado será:

Peso → Campo de Peso Protheus * Fator de Conversão para KG.

2. Caso o parâmetro MV_CPLUMIT estiver informado para enviar a segunda unidade de medida o peso enviado será:

Se o tipo de conversão (B1_TIPCONV) for Divisor:

Peso → (Campo de Peso Protheus * Fator de Conversão para KG) * Fator de Conversão (B1_CONV)

Se o tipo de conversão (B1_TIPCONV) for Multiplicador:

Peso → (Campo de Peso Protheus * Fator de Conversão para KG) / Fator de Conversão (B1_CONV)


MV_CPLEMBshipperIdID do Embarcador
"1"modalID do modal do pedido de transporteEnviar valor fixo 1 - Rodoviário.
C5_TPFRETEincoterm
Sendo o conteúdo C = 1 e F = 0 para o CPL, quando o campo for vazio iremos passar sempre 1.
MV_CPLINVshipmentUnitWrapperCodeInvólucro de embarque

² 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 esta possua 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ção xFilial( <TAB> ), onde TAB representa a tabela do Protheus;
    • Não existindo a empresa padrão, será enviado a concatenação da função FWGrpCompany() + xFilial( <TAB> ), onde TAB representa a tabela do Protheus;

Sempre o retorno não for branco, o retorno será precedido por um "-" (hífen), caso a função não receba o valor .F. no segundo parâmetro. 

* Poderá ocorrer deste valor ficar em branco, em função de algumas parametrizações e configuração da tabela ser compartilhada.

Configurações Complementares

Configuração Para Envio Automático de Pedidos de Venda (Schedule)

Os pedidos de venda gerados no módulo SIGAOMS podem ser enviados automaticamente ao Cockpit Logístico, para isso, deve ser configurada a execução automática (Schedule) da rotina Envio de Pedidos de Venda (OMSXCPL6). Esta configuração pode ser executada conforme descrito no link: http://tdn.totvs.com/display/framework/Schedule+Protheus.

No arquivo appserver.ini é necessário inserir a configuração abaixo:

[OnStart]
jobs=FWSCHDMANAG,FWSCHDQUEUE
RefreshRate=60

[FWSCHDMANAG]
Main=FWSCHDMANAG
Environment=<ambiente>

[FWSCHDQUEUE]
Main=FWSCHDQUEUE
Environment=<ambiente>

Cadastro de Fator de Conversão para KG (OMSA140)

O Cockpit Logístico possuí como característica o tratamento de peso apenas em KG, portanto para que o OMS envie o valor convertido é necessário cadastrar as unidades de medidas utilizadas e associar seu valor em KG. Para realizar esse cadastro é necessário ir em SIGAOMS > Atualizações > Cockpit Logístico > Fator de Conversão. Será necessário realizar esse cadastro para todas as unidades de medidas dos produtos que irão ser utilizadas na integração, cuja relação de peso não seja em KG.

Exemplo de cadastro: Unidade de Medida (DK2_CODUM) → TL (tonelada), Peso em KG (DK2_PESOKG) → 1000. Isso significa que a cada uma tonelada são 1000 kg. 


Funcionalidades Não Contempladas

A integração entre o OMS e o Cockpit Logísitico possuí as seguintes restrições:

  • Não é possível realizar quebra da quantidade do pedido, tanto no Cockpit Logísitico quanto no OMS.
  • Não é possível integrar pedidos faturados (restrição já existente na geração da carga).
  • É possível selecionar vários registros para a integração de uma só vez, seja de cliente, produto ou fornecedor, porém o envio das mensagens XML são realizados uma por vez (e não em lote).