Histórico da Página
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 |
LOGWMS01-545 |
Requisito1 |
LOGWMS01-884 | Subtarefa1 |
Chamado2 | Não se aplica. | ||
País | ( X ) Brasil ( ) Argentina ( ) |
México ( ) Chile ( ) Paraguai ( ) |
Equador ( ) USA ( ) |
Colômbia ( ) 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á , sendo que está previsto o envio e o recebimento destas informações.
Definição da Regra de Negócio
Aviso | ||
---|---|---|
| ||
|
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
EAIAdapterCustomerShippingAddress1 | Criação |
Adapter da mensagem CustomerShippingAddress | |
EAIHelperCustomerShippingAddress1 | Criação |
Helper da mensagem CustomerShippingAddress | ||
VDPR248 | Criação |
Preparação de informações para integração |
de locais de entrega | |||
VDP0815 | Alteração | Manutenção do cadastro de cliente/fornecedor | |
VDP0834 | Alteração | Manutenção dos endereços de entrega do cliente | |
VDP10000 | Alteração | Manutenção do cadastro de cliente/fornecedor | |
VDP90079 | Alteração | Manutenção dos endereços de entrega do cliente | |
VDP0831 | Alteração | Manutenção da distribuição geográfica do cliente | |
VDP0833 | Alteração | Manutenção dos endereços de cobrança do cliente | |
VDP90065 | Alteração | Carga inicial de clientes | |
VDP90078 | Alteração | Manutenção dos endereços de cobrança do cliente | |
WMSR62 | Alteração | Cadastramento automático de cliente |
Aviso | ||
---|---|---|
| ||
Após gerar os fontes os mesmos devem ser ajustados para implementação das regras de negócio, descritas mais abaixo. Verificar no link 3. Construção do Adapter, em cada página filha as informações pertinentes às implementações e regras. |
1 - EAIAdapterCustomerShippingAddress1 - Adapter da mensagem CustomerShippingAddress
XXXXXXXXXXXXXXX
2 - EAIHelperCustomerShippingAddress1 - Helper da mensagem CustomerShippingAddress
XXXXXXXXXXXXXXX
3 - VDPR248 - Preparação de informações para integração de Locais de Entrega
XXXXXXXXXXXXXXX
Fluxo do Processo
Cenários de Teste
|
Dica | ||
---|---|---|
| ||
Verificar as informações de cada página deste link: 3. Construção do Adapter |
VDPR248 - Preparação das 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.empresa | p_cod_empresa |
cli_end_det_cobranca_entrega.cliente | Código do cliente recebido por parâmetro |
cli_end_det_cobranca_entrega.num_cgc_cpf | Campo clientes.num_cgc_cpf |
cli_end_det_cobranca_entrega.ins_estadual | Campo clientes.estadual |
cli_end_det_cobranca_entrega.sequencia | Sequê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.
|
cli_end_det_cobranca_entrega.den_cidade | Campo 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_feder | Campo 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_pais | Campo 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_EAI_CustomerShippingAddress_processa_cliente().
- Parâmetros:
- Operação: "IN" para inclusão; "MO" para modificação; "EX" para exclusão.
- Cliente: Código do cliente.
- 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:
Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "S" efetuar a leitura da tabela cli_end_det_cobranca_entrega filtrando pelo código do cliente e onde o campo tip_endereco seja igual a "E". Ordenar os registros pelo campo sequencia.
Se o parâmetro "vdp_utiliza_tela_endereco" for igual a "N" efetuar a leitura da tabela cli_end_ent filtrando pelo código do cliente. Ordenar os registros pelo campo num_sequencia.
- Para cada registro encontrado em cada uma destas tabelas deverá ser chamada a função vdpr248_EAI_CustomerShippingAddress_envia(), passando como parâmetros:
- Operação: Tipo de operação recebido por parâmetro
- Cliente: Código do cliente recebido por parâmetro
- Sequência: cli_end_det_cobranca_entrega.sequencia ou cli_end_ent.num_sequencia
- Modo de exibição: Modo de exibição recebido por parâmetro
- O retorno desta função vdpr248_EAI_CustomerShippingAddress_envia() será o status a ser retornado para a rotina que acionou a função vdpr248_EAI_CustomerShippingAddress_processa_cliente().
- Parâmetros:
- 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>().
- Parâmetros:
- 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 title Buscando o InternalId collapse true LET l_internalValue = EAI_depara_get_value("CustomerShippingAddress", _advpl_eai_get_message_info(g_eai_msg_negocio, 'MessageInformation.SourceApplication'), _BusinessContent._InternalId)
- Parâmetros:
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 title Identificando o cliente e o sequência do local de entrega collapse true 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.
- Verificar se o cliente existe na tabela clientes. Se não existir deverá gerar mensagem de erro.
- 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:
Campo Conteúdo a ser gravado cliente Variável l_cliente tip_endereco 'E' sequencia Variável l_sequencia tip_logradouro Verificar 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.logradouro Variá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_lograd Variável _BusinessContent._ShippingAddress._Number complemento_endereco Variável _BusinessContent._ShippingAddress._Complement endereco_completo Concatenar 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._Districtbairro_cobr_entga Variável _BusinessContent._ShippingAddress._District Independente do valor do parâmetro "vdp_utiliza_tela_endereco", sempre deverá ser gravada a tabela cli_end_ent:
Campo Conteúdo a ser gravado cod_cliente Variável l_cliente end_entrega Se 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_bairro Variá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 title Buscar o código da cidade Logix collapse true 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_cep Variável _BusinessContent._ShippingAddress._ZIPCode num_cgc Campo num_cgc_cpf da tabela clientes ins_estadual Campo ins_estadual da tabela clientes num_sequencia Variável l_sequencia cod_rota Campo cod_rota da tabela clientes cod_local Campo cod_local da tabela clientes cod_praca Campo cod_praca da tabela clientes - 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 title Instalação do adapter collapse true 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:
Tag | Descrição | Regra a ser aplicada |
---|---|---|
CompanyId | Código da empresa | EAIMapper_getString("cli_end_det_cobranca_entrega.empresa") |
BranchId | Código da filial | NULO |
CompanyInternalId | Chave interna da empresa | EAIMapper_getString("cli_end_det_cobranca_entrega.empresa") |
BranchInternalId | Chave interna da filial | NULO |
CustomerCode | Código do cliente | EAIMapper_getString("cli_end_det_cobranca_entrega.cliente") |
(¹)GovernmentalInformation.Id.Id | Identificaçã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.scope | Escopo | Para CNPJ/CPF considerar o texto "Federal". Para Inscrição Estadual considerar o texto "State". |
(¹)GovernmentalInformation.Id.Attributes.name | Nome 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.issueOn | Data em que a identificação foi emitida | NULO para CNPJ, CPF e Inscrição Estadual. |
(¹)GovernmentalInformation.Id.Attributes.expiresOn | Data de expiração da identificação | NULO para CNPJ, CPF e Inscrição Estadual. |
InternalId | Chave 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" |
Code | Código do local de entrega | EAIMapper_getInt("cli_end_det_cobranca_entrega.sequencia") |
ExternalId | Chave externa do local de entrega | NULO |
ShippingAddress.Address | Endereç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.Number | Número do endereço | EAIMapper_getString("cli_end_det_cobranca_entrega.num_iden_lograd") |
ShippingAddress.Complement | Complemento do endereço | EAIMapper_getString("cli_end_det_cobranca_entrega.complemento_endereco") |
ShippingAddress.City.CityCode | Código da cidade | EAIMapper_getString("cli_end_det_cobranca_entrega.cidade") |
ShippingAddress.City.CityInternalId | Chave interna da cidade | EAIMapper_getString("cli_end_det_cobranca_entrega.cidade") |
ShippingAddress.City.CityDescription | Descrição da cidade | EAIMapper_getString("cli_end_det_cobranca_entrega.den_cidade") |
ShippingAddress.District | Bairro | EAIMapper_getString("cli_end_det_cobranca_entrega.bairro_cobr_entga") |
ShippingAddress.State.StateCode | Código do estado (UF) | EAIMapper_getString("cli_end_det_cobranca_entrega.cod_uni_feder") |
ShippingAddress.State.StateInternalId | Chave interna do estado (UF) | EAIMapper_getString("cli_end_det_cobranca_entrega.cod_uni_feder") |
ShippingAddress.State.StateDescription | Descrição do estado (UF) | EAIMapper_getString("cli_end_det_cobranca_entrega.den_uni_feder") |
ShippingAddress.Country.CountryCode | Código do país | EAIMapper_getString("cli_end_det_cobranca_entrega.cod_pais") |
ShippingAddress.Country.CountryInternalId | Chave interna do país | EAIMapper_getString("cli_end_det_cobranca_entrega.cod_pais") |
ShippingAddress.Country.CountryDescription | Descrição do país | EAIMapper_getString("cli_end_det_cobranca_entrega.den_pais") |
ShippingAddress.ZIPCode | CEP | Utilizar 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.Region | Região | NULO |
ShippingAddress.POBox | Caixa postal | NULO |
(¹)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 title Exemplo de código collapse true 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
- Na função vdp0815_incluir(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente() caso o tipo do cadastro seja "C" (Cliente) ou "A" (Ambos). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
- Operação: "IN"
- Cliente: Código do cliente
- Modo de exibição: "0" (zero)
- Na função vdp0815_modificar(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente() caso o tipo do cadastro seja "C" (Cliente) ou "A" (Ambos). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
- Operação: "MO"
- Cliente: Código do cliente indicado na tela
- Modo de exibição: "0" (zero)
VDP0834 - Manutenção dos Endereços de Entrega do Cliente
Na função vdp0834_incluir(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_envia(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
Operação: "IN"
Cliente: Código do cliente indicado na tela
Sequência: Sequência do endereço de entrega indicado na tela
Modo de exibição: "0" (zero)
Na função vdp0834_modificar(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_envia(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
Operação: "MO"
Cliente: Código do cliente indicado na tela
Sequência: Sequência do endereço de entrega indicado na tela
Modo de exibição: "0" (zero)
Na função vdp0834_excluir(), antes de realizar a exclusão do registro da tabela deverá chamar a função vdpr248_EAI_CustomerShippingAddress_envia(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
Operação: "EX"
Cliente: Código do cliente indicado na tela
Sequência: Sequência do endereço de entrega a ser excluído
Modo de exibição: "0" (zero)
VDP1000 - Manutenção do Cadastro de Cliente/Fornecedor
Na função vdp10000_processa_atualizacao_eai(), depois das lógicas existentes deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(), caso o tipo do cadastro seja "C" (Cliente) ou "A" (Ambos). Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
Operação: Variável l_operacao_eai
Cliente: Variável mr_tela.virtual_codigo
Modo de exibição: "0" (zero)
VDP90079 - Manutenção dos Endereços de Entrega do Cliente
- Na função vdp90079_confirm_create() alterar para que ao chamar a função vdp90079_prepara_envio_eai() seja passado como parâmetro o valor "IN".
- Na função vdp90079_confirm_update() alterar para que ao chamar a função vdp90079_prepara_envio_eai() seja passado como parâmetro o valor "MO".
- Na função vdp90079_confirm_delete() alterar para que ao chamar a função vdp90079_prepara_envio_eai() seja passado como parâmetro o valor "EX".
- Na função vdp90079_prepara_envio_eai() prever o recebimento de um parâmetro, que será o tipo da operação ("IN", "MO" ou "EX").
- Ainda na função vdp90079_prepara_envio_eai(), depois das lógicas existentes deverá chamar a função vdpr248_EAI_CustomerShippingAddress_envia(), conforme regras abaixo:
- Se o tipo da operação for "IN" (Inclusão):
- Chamar a função para cada linha existente na grid. Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Operação: "IN"
- Cliente: Variável mr_tela.cod_cliente
- Sequência: Variável ma_tela[].num_sequencia referente a cada linha da grid
- Modo de exibição: "0" (zero)
- Chamar a função para cada linha existente na grid. Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Se o tipo da operação for "MO" (Modificação):
- Chamar a função para cada linha existente na grid. Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Operação: "MO"
- Cliente: Variável mr_tela.cod_cliente
- Sequência: Variável ma_tela[].num_sequencia referente a cada linha da grid
- Modo de exibição: "0" (zero)
- Efetuar uma leitura da tabela cli_end_det_cobranca_entregafiltrando pelo código do cliente e tip_endereco igual a "E". Para cada sequência encontrada deverá verificar se a mesma permanece na grid, se não existir significa que o endereço de entrega foi excluído e neste caso deverá chamar a função. Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Operação: "EX"
- Cliente: Variável mr_tela.cod_cliente
- Sequência: Sequência do endereço de entrega lido na tabela e que não existe na grid
- Modo de exibição: "0" (zero)
- Chamar a função para cada linha existente na grid. Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Se o tipo da operação for "EX" (Exclusão):
- Efetuar uma leitura da tabela cli_end_det_cobranca_entregafiltrando pelo código do cliente e tip_endereco igual a "E". Para cada sequência encontrada deverá chamar a função. Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Operação: "EX"
- Cliente: Variável mr_tela.cod_cliente
- Sequência: Sequência do endereço de entrega lido na tabela
- Modo de exibição: "0" (zero)
- Efetuar uma leitura da tabela cli_end_det_cobranca_entregafiltrando pelo código do cliente e tip_endereco igual a "E". Para cada sequência encontrada deverá chamar a função. Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Se o tipo da operação for "IN" (Inclusão):
VDP0831 - Manutenção da Distribuição Geográfica do Cliente
Informações | ||
---|---|---|
| ||
Apesar desta rotina não ser de atualização de endereços de entrega foi prevista a integração, pois como será realizada a integração do cadastro do cliente é recomendável que os endereços de entrega deste cliente também estejam atualizados. |
- Na função vdp0831_incluir(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
- Operação: "MO"
- Cliente: Código do cliente
- Modo de exibição: "0" (zero)
VDP0833 - Manutenção dos Endereços de Cobrança do Cliente
Informações | ||
---|---|---|
| ||
Apesar desta rotina não ser de atualização de endereços de entrega foi prevista a integração, pois como será realizada a integração do cadastro do cliente é recomendável que os endereços de entrega deste cliente também estejam atualizados. |
- Na função vdp0833_incluir(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
- Operação: "MO"
- Cliente: Código do cliente
- Modo de exibição: "0" (zero)
- Na função vdp0833_modificar(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
- Operação: "MO"
- Cliente: Código do cliente
- Modo de exibição: "0" (zero)
- Na função vdp0833_excluir(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
- Operação: "MO"
- Cliente: Código do cliente
- Modo de exibição: "0" (zero)
VDP90065 - Carga Inicial de Clientes
- Na função vdp90065_processamento(), antes de fazer o COMMIT deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(). Se o retorno desta função for FALSE deverá fazer ROLLBACK do processamento. Passar como parâmetros:
- Operação: "IN"
- Cliente: Código do cliente
- Modo de exibição: "0" (zero)
VDP90078 - Manutenção dos Endereços de Cobrança do Cliente
Informações | ||
---|---|---|
| ||
Apesar desta rotina não ser de atualização de endereços de entrega foi prevista a integração, pois como será realizada a integração do cadastro do cliente é recomendável que os endereços de entrega deste cliente também estejam atualizados. |
- Na função vdp90079_prepara_envio_eai(), depois das lógicas existentes deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(). Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Operação: "MO"
- Cliente: Variável mr_tela.cod_cliente
- Modo de exibição: "0" (zero)
WMSR62 - Cadastramento Automático de Cliente
- No final da função wmsr62_cadastra_cliente_automatico(), depois das lógicas existentes deverá chamar a função vdpr248_EAI_CustomerShippingAddress_processa_cliente(). Se o retorno desta função for FALSE deverá retornar FALSE para a rotina que acionou esta função. Passar como parâmetros:
- Operação: "IN"
- Cliente: Variável mr_clientes.cod_cliente
- Modo de exibição: Variável l_modo_exibicao_msg
- Deverá ser ajustado o final da função wmsr62_cadastra_cliente_automatico() onde é chamada a função vdpr239_prepara_envio_mensagem_eai(), pois atualmente retorna TRUE ou FALSE a partir do processamento desta função. Como agora existirá mais um processamento, o retorno não poderá ser feito neste momento.
Cenários de Teste
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|