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 ajustes na integração do cadastro de clientes produtos para que seja possível enviar ou receber um cadastro a partir de outro sistema.
Definição da Regra de Negócio
Nota | ||
---|---|---|
| ||
A integração do cadastro de clientes produtos será realizada considerando a versão 1.000 da mensagem CustomerVendor, que é a versão já utilizada atualmente pelo WMS Logix para integração com o ERP Protheus. | ||
Aviso | ||
| ||
a versão 3.001 da mensagem Item. |
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio | WMSR96||||||
Alteração | RNL Integração Backoffice | VDP0815 | Alteração | Cadastro de Clientes/Fornecedores | VDP10000 | Alteração | Cadastro de Clientes/Fornecedores | ||
VDPR239 | Alteração | RNL Integração Cadastro de Clientes/Fornecedores |
1 - WMSR96 - RNL Integração Backoffice
- Criar a função wmsr96_get_m_sistema_backoffice(), que não receberá parâmetros e apenas deverá retornar o conteúdo da variável modular m_sistema_backoffice.
2 - VDP0815 - Cadastro de Clientes/Fornecedores
Na função vdp0815_controle() antes de efetuar o OPEN WINDOW incluir uma chamada da função wmsr96_get_sistema_backoffice()passando como parâmetros o código da empresa corrente e o modo de exibição "0" (zero).Na função vdp0815_entrada() alterar paraque sejam realizadas as consistências abaixo ao passar pela razão social reduzida (campo reduzido):Caso o retorno da função wmsr96_get_m_sistema_backoffice() seja igual a "DATASUL" não poderá permitir prosseguir se a razão social reduzida tiver mais de 15 (quinze) caracteres. Apresentar a mensagem "Quando a integração com ERP Datasul está ativa é permitido no máximo 15 caracteres.".
Se o tipo de cadastro escolhido for Cliente e se o retorno da função wmsr96_get_m_sistema_backoffice() for igual a "DATASUL" verificar se existe algum outro cliente que possua esta mesma razão social reduzida (validar contra a tabela VDP_CLI_FORNEC_CPL filtrando onde o tipo_cadastro seja igual a "C"). Caso exista não permitir prosseguir e apresentar a mensagem "Já existe outro cliente cadastrado com esta razão social reduzida.".
Se o tipo de cadastro escolhido for Ambos e se o retorno da função wmsr96_get_m_sistema_backoffice() for igual a "DATASUL" verificar se existe algum outro cliente ou fornecedor que possua esta mesma razão social reduzida (validar contra a tabela VDP_CLI_FORNEC_CPL independente do tipo_cadastro). Caso exista não permitir prosseguir e apresentar a mensagem "Já existe outro cliente/fornecedor cadastrado com esta razão social reduzida.".
Aviso | ||
---|---|---|
| ||
Nesta especificação serão realizados apenas os tratamentos que tenham alguma relação com o cadastro de Clientes. Os tratamentos exclusivos relacionados ao cadastro de Fornecedores serão tratados em outra especificação deste mesmo projeto: ER_LOGWMS01-881_IN-11.2_Integração_Cadastro_Fornecedores |
2 - VDP10000 - Cadastro de Clientes/Fornecedores
Na função vdp10000_carrega_parametros() incluir uma chamada da função wmsr96_get_sistema_backoffice()passando como parâmetros o código da empresa corrente e o modo de exibição "0" (zero).Criar a função vdp10000_valid_virtual_nome_reduzido() onde deverão ser realizadas as consistências abaixo:
Se o tipo de cadastro escolhido for Cliente e se o retorno da função wmsr96_get_m_sistema_backoffice() for igual a "DATASUL" verificar se existe algum outro cliente que possua esta mesma razão social reduzida (validar contra a tabela VDP_CLI_FORNEC_CPL filtrando onde o tipo_cadastro seja igual a "C"). Caso exista não permitir prosseguir e apresentar a mensagem "Já existe outro cliente cadastrado com esta razão social reduzida.".
Se o tipo de cadastro escolhido for Ambos e se o retorno da função wmsr96_get_m_sistema_backoffice() for igual a "DATASUL" verificar se existe algum outro cliente ou fornecedor que possua esta mesma razão social reduzida (validar contra a tabela VDP_CLI_FORNEC_CPL independente do tipo_cadastro). Caso exista não permitir prosseguir e apresentar a mensagem "Já existe outro cliente/fornecedor cadastrado com esta razão social reduzida.".
Aviso | ||
---|---|---|
| ||
Nesta especificação serão realizados apenas os tratamentos que tenham alguma relação com o cadastro de Clientes. Os tratamentos exclusivos relacionados ao cadastro de Fornecedores serão tratados em outra especificação deste mesmo projeto: ER_LOGWMS01-881_IN-11.2_Integração_Cadastro_Fornecedores |
3 - VDPR239 - RNL Integração Cadastro de Clientes/Fornecedores
No início da função vdpr239_prepara_envio_mensagem_eai() incluir uma chamada da função wmsr96_get_sistema_backoffice()passando como parâmetros o código da empresa corrente e o modo de exibição conforme a variável l_modo_exibicao_msg.
Na função vdpr239_atualiza_business_content_Customer(), na linha onde está chamando a função adp10000_set_BusinessContent_Address_Country_Code()deverá alterar para passar o retorno da função vdpr239_trata_cod_pais_bacen(), enviando para esta função a variável já utlizada.
Bloco de código | ||
---|---|---|
| ||
#Alterar de:
CALL adp10000_set_BusinessContent_Address_Country_Code(l_cod_pais)
#Para:
CALL adp10000_set_BusinessContent_Address_Country_Code(vdpr239_trata_cod_pais_bacen(l_cod_pais)) |
Bloco de código | ||
---|---|---|
| ||
#Alterar de:
CALL adp10000_set_BusinessContent_ShippingAddress_Country_Code(l_cod_pais)
#Para:
CALL adp10000_set_BusinessContent_ShippingAddress_Country_Code(vdpr239_trata_cod_pais_bacen(l_cod_pais)) |
Ainda na função vdpr239_atualiza_business_content_Customer(), há duas linhas onde está chamando a função adp10000_set_BusinessContent_BillingInformation_Address_Country_Code(), alterar para passar o retorno da função vdpr239_trata_cod_pais_bacen(), enviando para esta função a variável já utlizada.
Bloco de código | ||
---|---|---|
| ||
#Alterar de:
CALL adp10000_set_BusinessContent_BillingInformation_Address_Country_Code(l_cod_pais)
#Para:
CALL adp10000_set_BusinessContent_BillingInformation_Address_Country_Code(vdpr239_trata_cod_pais_bacen(l_cod_pais)) |
Ainda na função vdpr239_valida_BusinessContent(), alterar o ponto onde a função vdpr239_verifica_cnpj_duplicado() é chamada para que seja enviado mais um parâmetro após o CNPJ/CPF, que será a Inscrição Estadual, utilizando a variável m_ins_estadual.
Alterar a função vdpr239_verifica_cnpj_duplicado() para receber mais um parâmetro após o CNPJ/CPF, que será a Inscrição Estadual. Definir a variável conforme o campo ins_estadual da tabela CLIENTES.
Na função vdpr239_verifica_cnpj_duplicado(), antes de buscar o código do cliente pelo código externo deverá verificar se o retorno da função wmsr96_get_m_sistema_backoffice() é igual a "DATASUL", caso afirmativo deverá buscar o código do cliente na tabela CLIENTES filtrando pelo CNPJ/CPF e Inscrição Estadual recebidos por parâmetro, ao invés de executar a lógica com base na tabela VDP_CLI_PARAMETRO.
Nota | ||
---|---|---|
| ||
A Inscrição Estadual é um campo opcional no cadastro, desta forma o mesmo pode estar com conteúdo NULO. Assim sendo, considerar esta condição no momento de efetuar a validação referente a este campo. |
Bloco de código | ||
---|---|---|
| ||
LET l_cod_cliente = NULL
IF wmsr96_get_m_sistema_backoffice() = 'DATASUL' THEN
IF l_ins_estadual IS NOT NULL THEN
WHENEVER ERROR CONTINUE
SELECT MAX(cod_cliente)
INTO l_cod_cliente
FROM clientes
WHERE num_cgc_cpf = l_cnpj_cpf
AND ins_estadual = l_ins_estadual
WHENEVER ERROR STOP
ELSE
WHENEVER ERROR CONTINUE
SELECT MAX(cod_cliente)
INTO l_cod_cliente
FROM clientes
WHERE num_cgc_cpf = l_cnpj_cpf
AND ins_estadual IS NULL
WHENEVER ERROR STOP
END IF
IF sqlca.sqlcode < 0 THEN
CALL log0030_processa_err_sql("SELECT","CLIENTES",1)
RETURN FALSE
ELSE
IF sqlca.sqlcode = NOTFOUND OR
l_cod_cliente IS NULL THEN
LET l_cod_cliente = "?"
END IF
END IF
ELSE
WHENEVER ERROR CONTINUE
SELECT MAX(vdp_cli_parametro.cliente)
INTO l_cod_cliente
FROM vdp_cli_parametro
WHERE vdp_cli_parametro.parametro = 'cod_externo_intg_eai'
AND vdp_cli_parametro.texto_parametro = l_cod_externo
WHENEVER ERROR STOP
IF sqlca.sqlcode < 0 THEN
CALL log0030_processa_err_sql("SELECT","VDP_CLI_PARAMETRO",1)
RETURN FALSE
ELSE
IF sqlca.sqlcode = NOTFOUND OR
l_cod_cliente IS NULL THEN
LET l_cod_cliente = "?"
END IF
END IF
END IF |
Na função vdpr239_atualiza_clientes(), quando for para efetuar o de/para de códigos, antes de buscar o código do cliente pelo código externo deverá verificar se o retorno da função wmsr96_get_m_sistema_backoffice() é igual a "DATASUL", caso afirmativo deverá buscar o código do cliente na tabela CLIENTES filtrando pelo CNPJ/CPF e Inscrição Estadual recebidos por parâmetro, ao invés de executar a lógica com base na tabela VDP_CLI_PARAMETRO.
Nota | ||
---|---|---|
| ||
A Inscrição Estadual é um campo opcional no cadastro, desta forma o mesmo pode estar com conteúdo NULO. Assim sendo, considerar esta condição no momento de efetuar a validação referente a este campo. |
Bloco de código | ||
---|---|---|
| ||
IF l_busca_de_para THEN
INITIALIZE m_cod_cliente TO NULL
IF wmsr96_get_m_sistema_backoffice() = 'DATASUL' THEN
IF m_ins_estadual IS NOT NULL THEN
WHENEVER ERROR CONTINUE
SELECT MAX(cod_cliente)
INTO m_cod_cliente
FROM clientes
WHERE num_cgc_cpf = m_cnpj_cpf
AND ins_estadual = m_ins_estadual
WHENEVER ERROR STOP
ELSE
WHENEVER ERROR CONTINUE
SELECT MAX(cod_cliente)
INTO m_cod_cliente
FROM clientes
WHERE num_cgc_cpf = m_cnpj_cpf
AND ins_estadual IS NULL
WHENEVER ERROR STOP
END IF
IF sqlca.sqlcode < 0 THEN
CALL log0030_processa_err_sql("SELECT","CLIENTES",1)
RETURN FALSE
END IF
ELSE
WHENEVER ERROR CONTINUE
SELECT MAX(cliente)
INTO m_cod_cliente
FROM vdp_cli_parametro
WHERE parametro = 'cod_externo_intg_eai'
AND texto_parametro = _BusinessContent._Code
WHENEVER ERROR STOP
IF sqlca.sqlcode < 0 THEN
CALL log0030_processa_err_sql("SELECT","VDP_CLI_PARAMETRO",1)
RETURN FALSE
END IF
END IF
IF sqlca.sqlcode = NOTFOUND OR
m_cod_cliente IS NULL THEN
...
...
|
Criar uma função chamada vdpr239_valida_BusinessContent_exclusao(), que deverá ter as validações abaixo (utilizar como base a função vdpr239_valida_BusinessContent(), que já possui estas lógicas):
Na função vdpr239_recebe_mensagem_eai() há uma verificação do tipo da mensagem, caso seja UPSERTé chamada a função vdpr239_valida_BusinessContent()e em seguida são realizadas as lógicas para atualização do cadastro de cliente/fornecedor. No ELSE desta verificação são aplicadas as lógicas para exclusão do cliente/fornecedor, alterar para que antes de entrar nestas lógicas seja chamada a função vdpr239_valida_BusinessContent_exclusao().
Na função vdpr239_exclui_cliente(), antes de buscar o código do cliente pelo código externo deverá verificar se o retorno da função wmsr96_get_m_sistema_backoffice() é igual a "DATASUL", caso afirmativo deverá buscar o código do cliente na tabela CLIENTES filtrando pelo CNPJ/CPF e Inscrição Estadual recebidos por parâmetro, ao invés de executar a lógica com base na tabela VDP_CLI_PARAMETRO.
Nota | ||
---|---|---|
| ||
Inscrição Estadual é um campo opcional no cadastro, desta forma o mesmo pode estar com conteúdo NULO. Assim sendo, considerar esta condição no momento de efetuar a validação referente a este campo. |
Bloco de código | ||
---|---|---|
| ||
IF wmsr96_get_m_sistema_backoffice() = 'DATASUL' THEN
IF m_ins_estadual IS NOT NULL THEN
WHENEVER ERROR CONTINUE
SELECT MAX(cod_cliente)
INTO m_cod_cliente
FROM clientes
WHERE num_cgc_cpf = m_cnpj_cpf
AND ins_estadual = m_ins_estadual
WHENEVER ERROR STOP
ELSE
WHENEVER ERROR CONTINUE
SELECT MAX(cod_cliente)
INTO m_cod_cliente
FROM clientes
WHERE num_cgc_cpf = m_cnpj_cpf
AND ins_estadual IS NULL
WHENEVER ERROR STOP
END IF
IF sqlca.sqlcode <> 0 AND sqlca.sqlcode <> NOTFOUND THEN
CALL log0030_processa_err_sql("SELECT","clientes",1)
RETURN FALSE
END IF
ELSE
LET m_cod_cliente = NULL
WHENEVER ERROR CONTINUE
SELECT cliente
INTO m_cod_cliente
FROM vdp_cli_parametro
WHERE parametro = 'cod_externo_intg_eai'
AND texto_parametro = _BusinessContent._Code
WHENEVER ERROR STOP
IF sqlca.sqlcode <> 0 AND sqlca.sqlcode <> NOTFOUND THEN
CALL log0030_processa_err_sql("SELECT","vdp_cli_parametro",1)
RETURN FALSE
END IF
END IF |
Alterar a função vdpr239_atualiza_vdp_cli_parametro() para que logo no início verifique, caso o código do parâmetro enviado seja igual a "cod_externo_intg_eai", se o retorno da função wmsr96_get_m_sistema_backoffice() é igual a "DATASUL". Caso afirmativo a função já deverá retornar TRUE sem efetuar os procedimentos seguintes, pois quando esta integração está ativa não deve ser atualizado o De/Para de códigos.
Bloco de código | ||
---|---|---|
| ||
IF l_parametro = 'cod_externo_intg_eai' AND
wmsr96_get_m_sistema_backoffice() = 'DATASUL' THEN
RETURN TRUE
END IF |
Fluxo do Processo
1 - XXXXXXXXXXXXXX
Fluxo do Processo
Cenários de Teste
Cenários de Teste
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|