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.