Páginas filhas
  • ER LOGWMS01-884 IN-11.5 Integração Cadastro Locais Entrega

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

Informações Gerais

Especificação

Produto

LOGIX

Módulo

WMS

Segmento Executor

Supply Chain

Projeto1

LOGWMS01

IRM1

Jira
serverJIRA Produção
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-545

Requisito1

Jira
serverJIRA Produção
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-884

Subtarefa1

 

Chamado2

Não se aplica.

País

( X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

Não se aplica.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

Realizar a integração dos endereços de entrega dos clientes. Será previsto o envio e o recebimento destas informações.


Definição da Regra de Negócio

Aviso
titleImportante!

  1. As informações referentes aos locais de entrega do cliente já são tratadas na mensagem CustomerVendor e continuarão da mesma forma, não sendo afetadas pelas alterações previstas nesta especificação.

  2. A criação da mensagem exclusiva para integração dos locais de entrega (CustomerShippingAddress) visa atender à integração do WMS Logix com o TMS Protheus, onde estas informações não fazem parte do cadastro principal do cliente.

  3. As duas mensagens (CustomerVendor e CustomerShippingAddress) poderão estar ativas no ambiente da integração, porém sempre que houver atualização de locais de entrega serão disparadas as duas mensagens, a primeira visando atualizar o cadastro de clientes do ERP Protheus e a segunda o TMS Protheus.

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

EAIAdapterCustomerShippingAddress1Criação Adapter da mensagem CustomerShippingAddress
EAIHelperCustomerShippingAddress1Criação Helper da mensagem CustomerShippingAddress
VDPR248Criação Preparação de informações para integração de Locais de Entrega
Aviso
titleAtenção!

Os fontes EAIAdapterCustomerShippingAddress1 e EAIHelperCustomerShippingAddress1 devem ser gerados utilizando o programa EAI0032, conforme orientações para construção de adapters disponível no TDN (ver link 2. Geração Automática de Adapters). Ao gerar deixar desmarcada a opção "Gerar arquivo Master?".

Para que os fontes possam ser gerados será necessário utilizar o XSD da mensagem CustomerShippingAddress:

View file
nameCustomerShippingAddress_1_001.xsd
height150

Dica
titleDicas de como construir um adapter
Verificar as informações de cada página deste link: 3. Construção do Adapter

Na função EAIAdapterCustomerShippingAddress1_Install() deverá ser realizado o registro do InternalId referente ao local de entrega, utilizando como base a tabela cli_end_det_cobranca_entrega:

Bloco de código
titleInstalação do adapter
collapsetrue
IF NOT EAI_depara_existe("CustomerShippingAddress", "cli_end_det_cobranca_entrega") THEN
   CALL EAI_depara_register("CustomerShippingAddress", "cli_end_det_cobranca_entrega", "cliente|sequencia")
END IF


Para desenvolver o fonte VDPR248 considerar as regras abaixo:

  • ########################### VER ###############################

 

Segue abaixo o detalhamento de cada tag existente na mensagem CustomerShippingAddress e como o sistema deverá tratar.


ENVIO:

TagDescriçãoRegra a ser aplicada
CompanyIdCódigo da empresaCódigo da empresa corrente (p_cod_empresa)
BranchIdCódigo da filialNULO
CompanyInternalIdChave interna da empresaCódigo da empresa corrente (p_cod_empresa)
BranchInternalIdChave interna da filialNULO
CustomerCodeCódigo do clienteCódigo do cliente ao qual pertence o local de entrega, recebido por parâmetro na função vdpr248_EAI_CustomerShippingAddress_envia().
(¹)GovernmentalInformation.Id.IdIdentificação da informação

Deverá ser o número do CNPJ/CPF ou Inscrição Estadual (somente números).

Utilizar como base as lógicas existentes na função vdpr239_atualiza_business_content_Customer().

(¹)GovernmentalInformation.Id.Attributes.scopeEscopo

Para CNPJ/CPF considerar o texto "Federal".

Para Inscrição Estadual considerar o texto "State".

(¹)GovernmentalInformation.Id.Attributes.nameNome da identificação

Para CNPJ considerar o texto "CNPJ".

Para CPF considerar o texto "CPF".

Para Inscrição Estadual considerar o texto "Inscricao Estadual".

(¹)GovernmentalInformation.Id.Attributes.issueOnData em que a identificação foi emitidaNULO para CNPJ, CPF e Inscrição Estadual.
(¹)GovernmentalInformation.Id.Attributes.expiresOn  Data de expiração da identificaçãoNULO para CNPJ, CPF e Inscrição Estadual.
InternalIdChave interna do local de entrega

Concatenar o código do cliente e a sequência do local de entrega recebidos por parâmetro, separados por "|".

Exemplo: Cliente 1234, sequência local de entrega 3 => "1234|3"

CodeCódigo do local de entregaSequência do local de entrega recebido por parâmetro na função vdpr248_EAI_CustomerShippingAddress_envia().
ExternalIdChave externa do local de entregaNULO
(²)ShippingAddress.AddressEndereço

cli_end_det_cobranca_entrega.logradouroendereco_completo / cli_end_ent.end_entrega

(²)ShippingAddress.NumberNúmero do endereço

cli_end_det_cobranca_entrega.num_iden_lograd / NULO

(²)ShippingAddress.ComplementComplemento do endereço

cli_end_det_cobranca_entrega.complemento_endereco / NULO

(³)ShippingAddress.City.CityCodeCódigo da cidade

clientes.cod_cidade / cli_ent_ent.cod_cidade

Nota
titleNota

Verificar lógica existente na função vdpr239_retorna_endereco_cliente().

(³)ShippingAddress.City.CityInternalIdChave interna da cidade

clientes.cod_cidade / cli_ent_ent.cod_cidade

(³)ShippingAddress.City.CityDescriptionDescrição da cidadecidades.den_cidade
(²)ShippingAddress.DistrictBairro

cli_end_det_cobranca_entrega.bairro_cobr_entga / cli_end_ent.den_bairro

(³)ShippingAddress.State.StateCodeCódigo do estado (UF)

cidades.cod_uni_feder

Nota
titleNota

Verificar lógica existente na função vdpr239_retorna_endereco_cliente().


(³)ShippingAddress.State.StateInternalIdChave interna do estado (UF)

cidades.cod_uni_feder

(³)ShippingAddress.State.StateDescriptionDescrição do estado (UF)uni_feder.den_uni_feder
(³)ShippingAddress.Country.CountryCodeCódigo do país

uni_feder.cod_pais

Nota
titleNota

Verificar lógica existente na função vdpr239_retorna_endereco_cliente().


(³)ShippingAddress.Country.CountryInternalIdChave interna do país

uni_feder.cod_pais

(³)ShippingAddress.Country.CountryDescriptionDescrição do paíspaises.den_pais
(³)ShippingAddress.ZIPCodeCEPclientes.cod_cep / cli_end_ent.cod_cep
ShippingAddress.RegionRegiãoNULO
ShippingAddress.POBoxCaixa postalNULO

(¹)Deverá gerar dois registros no record GovernmentalInformation: O primeiro para o CNPJ/CPF e o segundo para a Inscrição Estadual.

(²)Deverá ser analisado o parâmetro "vdp_utiliza_tela_endereco" (LOG00087):

  • Se estiver "S" deverá ser lida a tabela cli_end_det_cobranca_entrega. Filtrar onde o tip_endereco seja igual a "E". Ordenar os registros pelo campo sequencia.
  • Se estiver "N" deverá ser lida a tabela cli_end_ent. Ordenar os registros pelo campo num_sequencia.

(³)Para estas tags não há correspondência na tabela cli_end_det_cobranca_entrega. Neste caso deverá ser utilizada a informação padrão da tabela clientes.

 

RECEBIMENTO - Upsert:

  • Inicialmente deverá ser utilizada a função EAI_depara_get_value() para verificar se existe o local de entrega já cadastrado no Logix para a chave interna enviada na mensagem.

    Bloco de código
    titleBuscando o InternalId
    collapsetrue
    LET l_internalValue = EAI_depara_get_value("CustomerShippingAddress",
                                               _advpl_eai_get_message_info(g_eai_msg_negocio, 'MessageInformation.SourceApplication'),
                                               EAIHelperCustomerShippingAddress1_get_BusinessContent_InternalId())
  • Se o conteúdo da variável l_internalValue for diferente de nulo deverá ser chamada a função EAI_depara_InternalId_get_value() para obter o código do cliente e a sequência do local de entrega.

    Bloco de código
    titleIdentificando o cliente e o sequência do local de entrega
    collapsetrue
    IF l_internalValue CLIPPED IS NOT NULL THEN
        LET l_cliente = EAI_depara_internalid_get_value('CustomerShippingAddress'    ,  #depara_id
                                                        l_internalValue ,               #valor interno
                                                        'cli_end_det_cobranca_entrega', #tabela interna
                                                        'cliente' )                     #Campo interno 
        LET l_sequencia = EAI_depara_internalid_get_value('CustomerShippingAddress'    ,  #depara_id
                                                          l_internalValue ,               #valor interno
                                                          'cli_end_det_cobranca_entrega', #tabela interna
                                                          'sequencia')                    #Campo interno 
    END IF 

     

  • Se o conteúdo da variável l_internalValue for igual a nulo deverá considerar o conteúdo da tag Code para a variável l_sequencia.

  • Se o conteúdo da variável l_internalValue for igual a nulo deverá tentar localizar o cliente pela conteúdo da tag GovernmentalInformation, buscando pelo CNPJ e Inscrição Estadual (campos num_cgc_cpf e ins_estadual, respectivamente). Caso encontre deverá armazenar o código do cliente na variável l_cliente.

  • Se depois da lógica acima o cliente ainda não puder ser identificado, considerar o conteúdo da tag CustomerCode para a variável l_cliente.

     
  • Se as variáveis referentes ao cliente (l_cliente) e sequência do local entrega (l_sequencia) não estiverem nulos, verificar se existe o registro correspondente na tabela de locais de entrega (considerar o parâmetro "vdp_utiliza_tela_endereco" para pesquisar na tabela cli_end_det_cobranca_entrega caso seja "S" ou na cli_end_ent caso seja "N").

  • Se encontrar o registro correspondente deverá ser considerado como alteração deste local de entrega, caso contrário deverá ser considerada inclusão de um novo local de entrega.

  • Para incluir/alterar o local de entrega deverá ser analisado o parâmetro "vdp_utiliza_tela_endereco" (LOG00087). Se estiver "S" deverá ser gravada a tabela cli_end_det_cobranca_entrega:

    CampoConteúdo a ser gravado
    clienteVariável l_cliente
    tip_endereco'E'
    sequenciaVariável l_sequencia
    tip_logradouroVerificar se no início da tag ShippingAddress.Address existe a palavra "RUA ", "R " ou "R: ".
    Se existir, pesquisar na tabela vdp_tip_logradouro por esta descrição de logradouro (campo des_logradouro).
    Se encontrar o registro, considerar o conteúdo do campo tip_logradouro########AQUI##########.
    Se o início da tag não estiver conforme indicado inicialmente ou não encontrar o registro na vdp_tip_logradouro este campo deverá ficar nulo.
    logradouro Tag ShippingAddress.Address
    num_iden_lograd Tag ShippingAddress.Number
    complemento_endereco Tag ShippingAddress.Complement
    endereco_completo Concatenar os conteúdos abaixo, separando cada um com um espaço em branco:
    * Tipo de logradouro determinado para o campo tip_logradouro (se for diferente de nulo)
    * Tag ShippingAddress.Address
    * Tag ShippingAddress.Number
    * Tag ShippingAddress.Complement
    * Tag ShippingAddress.District
    bairro_cobr_entga Tag ShippingAddress.District
  • Se o parâmetro "vdp_utiliza_tela_endereco" estiver "N" deverá ser gravada a tabela cli_end_ent:

    CampoConteúdo a ser gravado
    cod_cliente 
    end_entrega 
    den_bairro 
    cod_cidade 
    cod_cep 
    num_cgc 
    ins_estadual 
    num_sequencia 
    cod_rota 
    cod_local 
    cod_praca 

 

 

RECEBIMENTO - Delete:

 

Fluxo do Processo

 

 

Cenários de Teste


 

 

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.