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
VDP0815Alteração Manutenção do cadastro de cliente/fornecedor
VDP0834Alteração Manutenção dos endereços de entrega do cliente
VDP10000Alteração Manutenção do cadastro de cliente/fornecedor
VDP90079Alteração Manutenção dos endereços de entrega do cliente
VDP0831Alteração Manutenção da distribuição geográfica do cliente
VDP0833Alteração Manutenção dos endereços de cobrança do cliente
VDP90065Alteração Carga inicial de clientes
VDP90078Alteração Manutenção dos endereços de cobrança do cliente
WMSR62Alteração Cadastra automático de cliente
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


 VDPR248 - Preparação de informações para integração de locais de entrega

  • Criar a função vdpr248_EAI_CustomerShippingAddress_envia().
    • Parâmetros:
      • Operação: "IN" para inclusão; "MO" para modificação; "EX" para exclusão.
      • Cliente: Código do cliente.
      • Sequência: Sequência do endereço de entrega.
      • Modo de exibição: "0" (zero) para ONLINE ou "1" (um) para BATCH.
    • Retorno:
      • Status do processamento: TRUE caso tenha ocorrido com sucesso ou FALSE em caso de erro.
    • Regras:
      • Validar se o tipo de operação enviado por parâmetro é válido. Caso negativo gerar a mensagem "Tipo de operação inválida" e retornar FALSE.
      • Validar se foram enviados os parâmetros de cliente e sequência. Se um destes parâmetros estiver nulo gerar a mensagem "Informe o cliente e a sequência do endereço de entrega." e retornar FALSE.
      • Verificar se existe a função EAIHelperCustomerShippingAddress1_esta_configurado_para_envio() no repositório. Se não existir deverá retornar TRUE neste ponto, não efetuando os procedimentos seguintes.
      • Se existir esta função a mesma deverá ser invocada, caso retorne FALSE significa que a integração da mensagem CustomerShippingAddress não está habilitada e neste caso deverá retornar TRUE neste ponto, não efetuando os procedimentos seguintes.
      • A partir deste ponto serão executadas as lógicas para acionar a função de integração da mensagem.
      • Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S"deverá ser lida a tabela cli_end_det_cobranca_entregautilizando o código do cliente e sequência recebidos por parâmetro e onde o campo tip_endereco seja igual a "E".
      • Ler também a tabela cli_end_entutilizando o código do cliente e sequência recebidos por parâmetro.
      • Chamar a função EAIMapper_clear().
      • Chamar a função EAIHelperCustomerVendor2_set_MessageType()passando como parâmetro "upsert" caso o parâmetro de tipo de operação seja igual a "IN" ou "MO", ou passando "delete" caso o tipo de operação seja "EX".
      • Chamar a função EAIMapper_set() para cada uma das informações abaixo:

Campo

Conteúdo a utilizar
cli_end_det_cobranca_entrega.empresap_cod_empresa
cli_end_det_cobranca_entrega.clienteCódigo do cliente recebido por parâmetro
cli_end_det_cobranca_entrega.num_cgc_cpfCampo clientes.num_cgc_cpf
cli_end_det_cobranca_entrega.ins_estadualCampo clientes.estadual
cli_end_det_cobranca_entrega.sequenciaSequência do local de entrega recebido por parâmetro
cli_end_det_cobranca_entrega.tip_logradouro

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo cli_end_det_cobranca_entrega.tip_logradouro.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar NULO.

cli_end_det_cobranca_entrega.logradouro

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo cli_end_det_cobranca_entrega.logradouro.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar o campo cli_end_ent.end_entrega.

cli_end_det_cobranca_entrega.num_iden_lograd

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo cli_end_det_cobranca_entrega.num_iden_lograd.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar NULO.

cli_end_det_cobranca_entrega.complemento_endereco

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo cli_end_det_cobranca_entrega.complemento_endereco.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar NULO. 

cli_end_det_cobranca_entrega.endereco_completo

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo cli_end_det_cobranca_entrega.endereco_completo.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar o campo cli_end_ent.end_entrega

cli_end_det_cobranca_entrega.bairro_cobr_entga

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo cli_end_det_cobranca_entrega.bairro_cobr_entga.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar o campo cli_end_ent.den_bairro.

cli_end_det_cobranca_entrega.cidade

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo clientes.cod_cidade.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar o campo cli_end_ent.cod_cidade.


Nos dois casos, após definir a origem do código da cidade, utilizar a tabela obf_cidade_ibge para buscar o código IBGE a ser considerado (campo cidade_ibge).

cli_end_det_cobranca_entrega.den_cidadeCampo cidades.den_cidade
cli_end_det_cobranca_entrega.cod_uni_feder

Deverá utilizar o campo cidades.cod_uni_feder como base, aplicando lógica semelhante a existente na função vdpr239_retorna_endereco_cliente() para clientes do exterior.

cli_end_det_cobranca_entrega.den_uni_federCampo uni_feder.den_uni_feder
cli_end_det_cobranca_entrega.cod_pais

Deverá utilizar o campo uni_feder.cod_pais como base, aplicando lógica semelhante a existente na função vdpr239_retorna_endereco_cliente() para clientes do exterior.

Além disso também deverá aplicar lógica semelhante à existente na função vdpr239_trata_cod_pais_bacen() para buscar o código do país BACEN, caso o mesmo exista no cadastro de países.

cli_end_det_cobranca_entrega.den_paisCampo uni_feder.den_pais
cli_end_det_cobranca_entrega.cep

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" considerar o campo clientes.cod_cep.

Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" considerar o campo cli_end_ent.cod_cep.

      • Chamar a função EAIAdapterCustomerVendor2_SendBusinessMessage() enviando como parâmetro "upsert" ou "delete", conforme o tipo de operação recebido por parâmetro.
      • O status de retorno da função vdpr248_EAI_CustomerShippingAddress_envia() deverá ser conforme o processamento da integração, retornado a partir da chamada da função EAIAdapterCustomerVendor2_SendBusinessMessage().

 

  • Criar a função vdpr248_alimenta_business_content().
    • Parâmetros:
      • Não há.
    • Retorno:
      • Não há.
    • Regras:
      • Deverá existir no fonte a definição da variável modular _BusinessContent de forma idêntica à existente no fonte EAIHelperCustomerShippingAddress1.

      • Alimentar os campos desta variável conforme o retorno das funções EAIHelperCustomerShippingAddress1_get_BusinessContent_<campo>().

  • Criar a função vdpr248_EAI_CustomerShippingAddress_recebe().
    • Parâmetros:
      • Não há.
    • Retorno:
      • Status do processamento: TRUE caso tenha ocorrido com sucesso ou FALSE em caso de erro.
    • Regras:
      • Inicialmente deverá ser identificado o tipo de mensagem, que será obtido através da função EAIHelperCustomerShippingAddress1_get_MessageType(). Esta função retornará os valores upsert ou delete, indicando que trata-se de uma atualização (inclusão/alteração) ou exclusão.
      • Em seguida 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 (OBS: no fonte VDPR248 deverá estar definida a variável global g_eai_msg_negocio, VARCHAR(10). Esta variável é alimentada pelo fonte EAIHelperCustomerShippingAddress1).

        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'),
                                                   _BusinessContent._InternalId)
  • Inicialmente deverá ser utilizada a função EAI_depara_get_value() para verificar se existe o local de entrega 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
      • 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 variável _BusinessContent._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 pelo conteúdo da variável _Business._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 _Business._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 o tipo da mensagem for upsert e 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 variável _BusinessContent._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.
        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.
        logradouroVariável _BusinessContent._ShippingAddress._Address.
        Se foi possível identificar o tipo do logradouro (campo anterior), desconsiderar esta informação da variável _BusinessContent._ShippingAddress._Address.
        Exemplo: Se o conteúdo de _BusinessContent._ShippingAddress._Address for "RUA ANTONIO CARLOS", gravar apenas "ANTONIO CARLOS"
        num_iden_logradVariável _BusinessContent._ShippingAddress._Number
        complemento_enderecoVariável _BusinessContent._ShippingAddress._Complement
        endereco_completoConcatenar os conteúdos abaixo, separando cada um com um espaço em branco:
        * Variável _BusinessContent._ShippingAddress._Address
        * Variável _BusinessContent._ShippingAddress._Number
        * Variável _BusinessContent._ShippingAddress._Complement
        * Variável _BusinessContent._ShippingAddress._District
        bairro_cobr_entgaVariável _BusinessContent._ShippingAddress._District
      • Independente do valor do parâmetro "vdp_utiliza_tela_endereco", sempre deverá ser gravada a tabela cli_end_ent:

        CampoConteúdo a ser gravado
        cod_clienteVariável l_cliente
        end_entregaSe a variável _BusinessContent._ShippingAddress._Number não estiver nula considerar _BusinessContent._ShippingAddress._Address + _BusinessContent._ShippingAddress._Number (separando as duas variáveis com um espaço em branco), caso contrário considerar somente _BusinessContent._ShippingAddress._Address
        den_bairroVariável _BusinessContent._ShippingAddress._District
        cod_cidade

        Primeiramente deverá ser verificado se existe relacionamento de/para para o código interno da cidade, caso a variável _BusinessContent._ShippingAddress._City._CityInternalId esteja preenchida. Se existir deverá utilizar a função para EAI_depara_InternalId_get_value() para identificar o código da cidade do Logix. Se não encontrar a cidade seguindo as regras acima deverá tentar localizar a cidade utilizando a variável _BusinessContent._ShippingAddress._City._CityCode, buscando pelo código IBGE. Se não existir deverá gerar mensagem de erro de que não foi possível identificar a cidade.

        Bloco de código
        titleBuscar o código da cidade Logix
        collapsetrue
        LET l_cidade_logix = NULL
        IF _BusinessContent._ShippingAddress._City._CityInternalId IS NOT NULL AND
           _BusinessContent._ShippingAddress._City._CityInternalId <> ' ' THEN
           LET l_InternalId = EAI_depara_get_value('City',
                                                   _advpl_eai_get_message_info(g_eai_msg_negocio, 'MessageInformation.SourceApplication'),
                                                   _BusinessContent._ShippingAddress._City._CityInternalId)
           IF l_InternalId IS NOT NULL AND
              l_InternalId <> ' ' THEN
              LET l_cidade_logix = EAI_depara_InternalId_get_value('City',
                                                                   l_InternalId,
                                                                   NULL,
                                                                   'cod_cidade')
           END IF
        END IF
           
        IF l_cidade_logix IS NULL OR
           l_cidade_logix = ' ' THEN
           WHENEVER ERROR CONTINUE
             SELECT cidade_logix
               INTO l_cidade_logix
               FROM cidades, obf_cidade_ibge
              WHERE cidade_ibge = _BusinessContent._ShippingAddress._City._CityCode
                AND cod_cidade = cidade_logix
           WHENEVER ERROR STOP
           IF sqlca.sqlcode <> 0 THEN
              CALL log0030_processa_mensagem('Código da cidade informado na integração inexistente.','excl',1)
              RETURN FALSE
           END IF
        END IF
        
        IF l_cidade_logix IS NULL OR
           l_cidade_logix = ' ' THEN
           CALL log0030_processa_mensagem('Não foi possível identificar a cidade na integração.','excl',1)
           RETURN FALSE
        ELSE
           WHENEVER ERROR CONTINUE
             SELECT cod_cidade
               FROM cidades
              WHERE cod_cidade = l_cidade_logix
           WHENEVER ERROR STOP
           IF sqlca.sqlcode <> 0 THEN
              CALL log0030_processa_mensagem('Código da cidade informado na integração inexistente.','excl',1)
              RETURN FALSE
           END IF
        END IF
        cod_cepVariável _BusinessContent._ShippingAddress._ZIPCode
        num_cgcCampo num_cgc_cpf da tabela clientes
        ins_estadualCampo ins_estadual da tabela clientes
        num_sequenciaVariável l_sequencia
        cod_rotaCampo cod_rota da tabela clientes
        cod_localCampo cod_local da tabela clientes
        cod_pracaCampo cod_praca da tabela clientes

 

RECEBIMENTO - Delete:

      • Em caso de exclusão (tipo de mensagem delete), 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 não encontrar o registro correspondente deverá apenas retornar TRUE como se a exclusão tivesse ocorrido normalmente, apenas para evitar erro no aplicativo de origem.

      • Se encontrar o registro deverá realizar a exclusão dos registros nas tabelas cli_end_det_cobranca_entrega e cli_end_ent, pesquisando pelo código do cliente e sequência do local de entrega.

 

 

EAIAdapterCustomerShippingAddress1 - Adapter da mensagem CustomerShippingAddress

  • 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

     

  • Na função EAIAdapterCustomerShippingAddress1_LoadUsualContent() setar as informações da variável utilizada para a integração, conforme abaixo:

TagDescriçãoRegra a ser aplicada
CompanyIdCódigo da empresaEAIMapper_getString("cli_end_det_cobranca_entrega.empresa")
BranchIdCódigo da filialNULO
CompanyInternalIdChave interna da empresaEAIMapper_getString("cli_end_det_cobranca_entrega.empresa")
BranchInternalIdChave interna da filialNULO
CustomerCodeCódigo do clienteEAIMapper_getString("cli_end_det_cobranca_entrega.cliente")
(¹)GovernmentalInformation.Id.IdIdentificação da informação

EAIMapper_getString("cli_end_det_cobranca_entrega.num_cgc_cpf")

Deverá ser aplicado um tratamento para extrair apenas os números do CNPJ/CPF ou Inscrição Estadual retornados pela função acima.

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 retorno das funções EAIMapper_getString("cli_end_det_cobranca_entrega.cliente") e EAIMapper_getInt("cli_end_det_cobranca_entrega.sequencia"), separando-os com "|" (pipe) e considerando a sequência com cinco dígitos, com zeros à esquerda.

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

CodeCódigo do local de entregaEAIMapper_getInt("cli_end_det_cobranca_entrega.sequencia")
ExternalIdChave externa do local de entregaNULO
ShippingAddress.AddressEndereço

Se o retorno de EAIMapper_getString("cli_end_det_cobranca_entrega.tip_logradouro") for diferente de nulo e diferente de branco considerar:

EAIMapper_getString("cli_end_det_cobranca_entrega.tip_logradouro") + " " + EAIMapper_getString("cli_end_det_cobranca_entrega.logradouro")

caso contrário, apenas:

EAIMapper_getString("cli_end_det_cobranca_entrega.logradouro")

ShippingAddress.NumberNúmero do endereço

EAIMapper_getString("cli_end_det_cobranca_entrega.num_iden_lograd")

ShippingAddress.ComplementComplemento do endereço

EAIMapper_getString("cli_end_det_cobranca_entrega.complemento_endereco")

ShippingAddress.City.CityCodeCódigo da cidade

EAIMapper_getString("cli_end_det_cobranca_entrega.cidade")

ShippingAddress.City.CityInternalIdChave interna da cidadeEAIMapper_getString("cli_end_det_cobranca_entrega.cidade")
ShippingAddress.City.CityDescriptionDescrição da cidadeEAIMapper_getString("cli_end_det_cobranca_entrega.den_cidade")
ShippingAddress.DistrictBairro

EAIMapper_getString("cli_end_det_cobranca_entrega.bairro_cobr_entga")

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

EAIMapper_getString("cli_end_det_cobranca_entrega.cod_uni_feder")

ShippingAddress.State.StateInternalIdChave interna do estado (UF)

EAIMapper_getString("cli_end_det_cobranca_entrega.cod_uni_feder")

ShippingAddress.State.StateDescriptionDescrição do estado (UF)EAIMapper_getString("cli_end_det_cobranca_entrega.den_uni_feder")
ShippingAddress.Country.CountryCodeCódigo do paísEAIMapper_getString("cli_end_det_cobranca_entrega.cod_pais")
ShippingAddress.Country.CountryInternalIdChave interna do país

EAIMapper_getString("cli_end_det_cobranca_entrega.cod_pais")

ShippingAddress.Country.CountryDescriptionDescrição do paísEAIMapper_getString("cli_end_det_cobranca_entrega.den_pais")
ShippingAddress.ZIPCodeCEPUtilizar o EAIMapper_getString("cli_end_det_cobranca_entrega.cep"), efetuando tratamento para utilizar apenas os números (ver como exemplo a função vdpr239_retorna_valor_valido()).
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.

 

  • Na função EAIAdapterCustomerShippingAddress1_ReceiveBusinessMessage() preparar as informações para recebimento da mensagem:
    • Inicialmente deverá chamar a função vdpr248_alimenta_business_content(), sem passagem de parâmetros e sem recebimento de retorno.
    • Em seguida deverá chamar a função vdpr248_EAI_CustomerShippingAddress_recebe(), sem passagem de parâmetros e recebendo o status do processamento (TRUE ou FALSE).
    • Se o retorno for FALSE deverá chamar a função EAIMapper_loadFromMessage() passando como primeiro parâmetro a variável global g_eai_msg_resposta e como segundo parâmetro o valor "Retorno".
    • Em seguida deverá chamar a função EAIHelperCustomerShippingAddress1_add_error_message() passando como primeiro parâmetro o texto "Erro de regra de negócio: " concatenado com o retorno da função log0030_mensagem_get_texto(), e como segundo parâmetro passar o valor "0001".
    • Depois disso deverá retornar status FALSE para a rotina chamadora.

      Bloco de código
      titleExemplo de código
      collapsetrue
      CALL vdpr248_alimenta_business_content()
      IF NOT vdpr248_EAI_CustomerShippingAddress_recebe() THEN
         CALL EAIMapper_loadFromMessage(g_eai_msg_resposta,"Retorno")
         CALL EAIHelperCustomerShippingAddress1_add_error_message("Erro de regra de negócio: " || log0030_mensagem_get_texto(),"0001")
         RETURN FALSE
      END IF

 

VDP0815 - Manutenção do cadastro de cliente/fornecedor

 

 

VDP0834 - Manutenção dos endereços de entrega do cliente

 

 

VDP10000 - Manutenção do cadastro de cliente/fornecedor

 

 

VDP90079 - Manutenção dos endereços de entrega do cliente

 

 

VDP0831 - Manutenção da distribuição geográfica do cliente

 

 

VDP0833 - Manutenção dos endereços de cobrança do cliente

 

 

VDP90065 - Carga inicial de clientes

 

 

VDP90078 - Manutenção dos endereços de cobrança do cliente

 

 

WMSR62 - Cadastra automático de cliente

 

 


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.