Identificador de Regra

GER-000SULOT01

Módulo: GER - Gerais.

Finalidade: Sugerir via regra a primeira parte do código de lote ao clicar no botão "Sugere Lotes", utilizando como base a estrutura da máscara definida na origem. A variável "EstACodLot" retorna a primeira parte sugerida via regra, e a última parte é incrementada pelo sistema.

Características: Ex: Máscara definida na origem (99999-99999):
- 1a. parte com tamanho 5 e numérico
- 2a. parte com tamanho 1 que é o hífen,
- 3a. parte com tamanho 5 e numérico

Após a execução da regra, deverá ser retornado para o sistema a sugestão da primeira parte do código do lote + o restante, conforme a estrutura da máscara:

EstACodLot = 00001-00000;

Após isso, o sistema fará o incremento dos códigos de lote, de acordo com o número de itens distribuídos:

Itens: 5

Códigos de lote:
00001-00001
00001-00002
00001-00003
00001-00004
00001-00005

Tela: F000Dls

Transação: Não se aplica.

Regra:

/*
Exemplo de regra para tratar incremento da 1a. parte do lote quando
a máscara do lote for: 99999-99999, ou seja,
- 1a. parte com tamanho 5 e numérico
- 2a. parte com tamanho 1 que é o hífen,
- 3a. parte com tamanho 5 e numérico

Sugestão de regra, pode ser alterada conforme necessidade, o importante é retornar ao sistema
a 1a. parte incrementada seguida de -0000 pois a última parte é incrementada pelo sistema conforme
a máscara configurada na origem.
ex: 00001-00000 (isso retornará ao sistema via variável ESTACODLOT)
*/

definir alfa EstACodMs1;
definir alfa EstACodLot;
definir alfa CodMs1SQL;
definir numero xIncremento;
definir alfa xSubst;
definir numero xTamCodMs1;
definir cursor cur_E070EMP;
definir alfa xErro;
definir alfa xMensagem;

@ FAZ A BUSCA DO CAMPO DE USUÁRIO A ÚLTIMA 1ª PARTE DO CÓDIGO DO LOTE @
cur_E070EMP.SQL
"SELECT USU_ULTCODMS1 FROM E070EMP WHERE CODEMP = 10";

cur_E070EMP.AbrirCursor();
Se (cur_E070EMP.Achou) {
CodMs1SQL = cur_E070EMP.Usu_UltCodMs1;
}
cur_E070EMP.FecharCursor();

@ ATRIBUI O VALOR SELECIONADO NO SQL @
EstACodMs1 = CodMs1SQL;
TamanhoAlfa(EstACodMs1, xTamCodMs1);
EstACodLot = EstACodMs1 + "-00000";

@ MODIFICA A 1ª PARTE DO CÓDIGO DO LOTE, ATUALIZANDO A INFORMAÇÃO NO CAMPO DE USUÁRIO @
DeletarAlfa(EstACodMs1, xTamCodMs1, xTamSubst); @ Deleta a parte da 1ª parte do lote a ser substituído @
AlfaParaInt(EstACodMs1, xIncremento); @ Pega a quantidade a ser incrementada @
xIncremento = xIncremento + 1;
IntParaAlfa(xIncremento, xSubst); @ Converte para alfa, para ser concatenado à 1ª parte do lote @
TamanhoAlfa(xSubst, xTamSubst); @ Pega o tamanho do valor a ser substituido @
DeletarAlfa(EstACodMs1, xTamCodMs1, xTamSubst); @ Deleta a parte da 1ª parte do lote a ser substituído @

EstACodMs1 = EstACodMs1 + xSubst;
ExecSQL " UPDATE E070EMP SET USU_ULTCODMS1 = :EstACodMs1 WHERE CODEMP = 10";

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
EstNCodEmp NÚMERO Código da Empresa N
EstNCodFil NÚMERO Código da Filial N
EstACodPro ALFA Código do Produto N
EstACodDer ALFA Código da Derivação N
EstACodDep ALFA Código do Depósito N
EstDDatFab DATA Data do Fabricante N
EstACodMs1 ALFA Primeira parte do código do lote N
EstACodMs2 ALFA Segunda parte do código do lote N
EstACodMs3 ALFA Terceira parte do código do lote N
EstACodMs4 ALFA Quarta parte do código do lote N
EstACodLot ALFA Código do lote S

Atenção

Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.

Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.

Este artigo ajudou você?