Situação/Requisito: | Ao integrar o recebimento de uma processar a integração EAI de recebimento da mensagem CUSTOMERVENDOR do tipo Upsert na versão 2.00 ou superior e , caso o campo de do código do Cliente cliente (A1_COD) possuí inicializador padrão, o sistema apresenta comportamento de não liberar corretamente a fila de numeração, gerando esteja configurado com um inicializador padrão para a geração da numeração automática (GetSX8Num) no dicionário de dados (SX3), a pilha da numeração automática do Cadastro de Clientes não é liberada corretamente, podendo causar mensagens de código inválido / duplicado e / ou pulando numerações alternadas. |
Solução/Implementação: | A não conformidade ocorria devido ao fato da quando a função de leitura dos layouts leiautes da versão 2.00 ou superior realizar realizava a macroexecução macro-execução do inicializador padrão do campo de do código do cliente antes de enviaenviá-lo para a à execução automática da rotina de Cadastros do Cadastro de Clientes (MATA030 | CRMA980), que por . Por sua vez executava , estas rotinas do Cadastro de Clientes executavam novamente o inicializador padrão do campo, e ao mesmo campo. Ao final da sua operação, uma das operações terminara sem confirmação. Para reverter esta situação, foi corrigido o bloco que lida com a criação de numeração automática para layouts numerações automáticas terminava sem a devida confirmação / atualização. Desta forma, foi realizado o ajuste de tratamento nos leiautes da versão 2.00 ou superior , quando houver inicializador nos campos de código para que, caso haja o uso da numeração automática para os campos de Código e / ou loja do cadastro de cliente o EAI-MATI030 passa a deixar a cargo da execução automática o controle da numeraçãoLoja do Cliente através da configuração dos seus respectivos inicializadores padrões (com a utilização da função GetSX8Num), o controle da pilha da numeração automática ficará sob a responsabilidade da execução automática da própria rotina do Cadastro de Clientes (MATA030 / CRMA980), da mesma forma como se comportaria comporta atualmente uma inclusão manual via browse. | Importante Alerta | Caso seu ambiente já esteja configurado com a utilização da numeração automática para o código e/ou loja do cliente, aconselha-se que seja realizada Aconselha-se a correção da numeração automática atual antes da aplicação do patch deste requisito. |
FAQ - Sobre a numeração durante a inclusão de registros na versão 2.00 ou superior | Para Nos ambientes onde os campos de código e / ou loja do | cadastro de Cliente cliente (A1_COD | A1_LOJA) não | possua inicializador padrão, mantem se possuam inicializadores padrões, o comportamento | de atual da geração da numeração dos seus conteúdos será mantido: | layout tentará - leiaute utilizará a própria string enviada na tag <Code> como base
| para criar o novo código de cliente no Protheus, caso a string seja maior que o campo no sistema, a mesma será cortada - na criação do novo Código de Cliente no ambiente do Protheus®;
- Caso o conteúdo desta string possua mais dígitos que o campo do sistema, o seu conteúdo será truncado até o tamanho máximo do campo
| . Caso esta string por ventura seja igual a um valor que já corresponde a outro registro na - ;
- Caso o conteúdo desta string corresponda ao código já utilizado num registro da tabela de Clientes (SA1), o EAI - MATI030
| então - utilizará a função GetSX8Num para obter
| para obter o - um próximo código válido, e o utilizará para o registro que está sendo recebido;
- Caso a tag <StoreId> não seja informada
| o sistema atribui - , a rotina atribuirá o valor "0"
| igual ao - até o tamanho máximo do campo loja (A1_LOJA). Desta forma,
| desta forma tamanho 4 - o tamanho de 04 (quatro) caracteres e a tag <StoreId>
| não preenchida - em branco, o valor a ser atribuído ao campo A1_LOJA será igual a "0000";
- Quando
| houver - for identificado que o inicializador padrão
| nos - dos campos de código e / ou loja
| o - do Cliente, a rotina do EAI - MATI030
| passa deixar cargo da - execução automática do Cadastro de Clientes (MsExecAuto da rotina MATA030 | CRMA980), inclusive o controle da numeração
| - - automática, mantendo o mesmo comportamento de uma inclusão manual
| dos dentro - da rotina através do ERP Protheus®;
| Para Nos ambientes onde os campos de código e / ou loja do | cadastro de Cliente cliente (A1_COD | A1_LOJA) não | possua inicializador padrão e há possuam inicializadores padrões, e existir a integração NewHotel (MV_INTHTL = .T.) ativa, | o sistema mantém a rotina adotará o seguinte comportamento: | Código - código do cliente (A1_COD) sempre receberá um novo código, via
| função GetSx8Num que é confirmado ao concluir o - execução da função GetSx8Num. E a sua confirmação ocorrerá na conclusão do processamento do EAI - MATI030;
- O campo de Loja (A1_LOJA) sempre receberá o conteúdo "0"
| no - com o tamanho máximo do campo. Desta forma,
| desta forma tamanho 4 - o tamanho de 04 (quatro) caracteres e a tag <StoreId> esteja em branco, o valor
| atribuído sempre será - a ser atribuído ao campo A1_LOJA será igual a "0000"
| ; |