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 |
| ||||||||||
Requisito1 |
| 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 | ||
---|---|---|
| ||
|
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 | Cadastra automático de cliente |
Aviso | ||||||
---|---|---|---|---|---|---|
| ||||||
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:
|
Dica | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
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:
- Criar a função vdpr248
########################### VER ###############################
Segue abaixo o detalhamento de cada tag existente na mensagem CustomerShippingAddress e como o sistema deverá tratar.
ENVIO:
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().
Para CNPJ/CPF considerar o texto "Federal".
Para Inscrição Estadual considerar o texto "State".
Para CNPJ considerar o texto "CNPJ".
Para CPF considerar o texto "CPF".
Para Inscrição Estadual considerar o texto "Inscricao Estadual".
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"
cli_end_det_cobranca_entrega.endereco_completo / cli_end_ent.end_entrega
cli_end_det_cobranca_entrega.num_iden_lograd / NULO
cli_end_det_cobranca_entrega.complemento_endereco / NULO
clientes.cod_cidade / cli_ent_ent.cod_cidade
Nota | ||
---|---|---|
| ||
Verificar lógica existente na função vdpr239_retorna_endereco_cliente(). |
clientes.cod_cidade / cli_ent_ent.cod_cidade
cli_end_det_cobranca_entrega.bairro_cobr_entga / cli_end_ent.den_bairro
cidades.cod_uni_feder
Nota | ||
---|---|---|
| ||
Verificar lógica existente na função vdpr239_retorna_endereco_cliente(). |
cidades.cod_uni_feder
uni_feder.cod_pais
Nota | ||
---|---|---|
| ||
Verificar lógica existente na função vdpr239_retorna_endereco_cliente(). |
uni_feder.cod_pais
(¹)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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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á 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:
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 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. 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: * Tag ShippingAddress.Address * Tag ShippingAddress.Number * Tag ShippingAddress.Complement * Tag ShippingAddress.District |
bairro_cobr_entga | Tag 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 tag ShippingAddress.Number não estiver nula considerar ShippingAddress.Address + ShippingAddress.Number (separando as duas tags com um espaço em branco), caso contrário considerar somente ShippingAddress.Address | |||||||
den_bairro | Tag ShippingAddress.District | |||||||
cod_cidade | Primeiramente deverá ser verificado se existe relacionamento de/para para o código interno da cidade, caso a tag 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 tag 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.
| |||||||
cod_cep | Tag 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 |
RECEBIMENTO - Delete:
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 | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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á 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.
VDPR248 - Preparação de informações para integração de Locais de Entrega
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.
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
- Criar a função vdpr239_prepara_envio_mensagem_eai().
- Parâmetros:
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. |
---|