Identificador de Regra

VEN-140EUDLE02

Módulo: VEN - Vendas.

Finalidade: Sugerir lotes e suas respectivas quantidades. Para saber mais sobre todas as possibilidades de sugestão de lotes e séries, clique aqui.

Características: as funções de programador MontaListaLotesSugeridos e LimpaListaLotesSugeridos permitem efetuar o processo de sugestão de lotes/quantidades através de regra.
A funções MontaListaLotesSugeridos pode ser chamada várias vezes para a mesma combinação de empresa, produto, derivação e depósito, permitindo assim a distribuição de vários lotes com suas respectivas quantidades dentro do mesmo item. Ao final da execução da regra, o próprio sistema irá se encarregar de consistir a quantidade total distribuída, somando todos os lotes enviados.

Ela precisa que sejam passados seis parâmetros. É Importante que seja respeitada a ordem dos parâmetros abaixo. São eles:

Importante

Não existe uma variável de retorno para este identificador de regra, os lotes e suas respectivas quantidades são armazenados em uma lista interna do sistema através da função de programador MontaListaLotesSugeridos.

Caso este identificador de regras esteja ativo e com regra associada, ele sempre será "superior" a qualquer outro identificar de regras que faça sugestão de lotes, desde que a origem seja Nota Fiscal de Saída.

Exemplo: Identificador GER-140EUDLE01 ativo de com regra associada para sugerir lotes por ordem ascendente por saldo disponível e o VEN-140EUDLE02 também esteja ativo e com regra associada e o ponto de chamada da regra seja a tela F140PRE(Nota Fiscal de Saída), o identificador que será executado é o VEN-140EUDLE02.

A função SugerirLoteCriterio efetua a sugestão do lote de acordo com um critério de formação de estoque para verificar o saldo disponível dos lotes. Ela deve ser chamada até que seja distribuída entre os lotes toda a quantidade a faturar do item na nota fiscal de saída a ser gerada. As opções de critério de formação de estoque são as mesmas disponíveis para selecionar na filial. Possui os mesmos parâmetros da função "MontaListaLotesSugeridos" mais o parâmetro de critério da formação de estoque (numérico).

Sugestão de lote sem saldo

É possível realizar a sugestão um lote sem saldo no estoque quando a movimentação de estoque for assíncrona, definida na rotina 87 - Movimentar pendências de estoque do faturamento.

Para isso, deve ser utilizada a variável VSConsisteEstoque, que identifica se o sistema deve consistir o estoque. Com isso, na importação do cupom fiscal quando a movimentação do estoque for assíncrona e a variável estiver com o valor N, a regra de distribuição de lotes fará somente a distribuição sem consistir o estoque. Isso porque, primeiramente é dada entrada do cupom fiscal e posteriormente a entrada do produto. Assim, na entrada do cupom fiscal mesmo via regra não é realizada a consistência do saldo do estoque.

 

Tela: Notas Fiscais de Venda

Transação: Não se aplica.

Regra:

Definir Cursor Cur_E210DLS;
Definir numero VSCodEmp;
Definir alfa VSCodPro;
Definir alfa VSCodDer;
Definir alfa VSCodDep;
Definir numero VSQtdFat;
Definir alfa VSConsisteEstoque;

Cur_E210DLS.SQL "Select CodEmp, CodPro, CodDer, CodDep, CodLot, QtdEst From E210DLS Where CodEmp = :vsCodEmp and codpro = :vsCodPro and CodDer = :vsCodDer and CodDep = :vsCodDep and QtdEst > 0 and QtdRes = 0 Order by CodLot Desc";

Cur_E210DLS.AbrirCursor();
Enquanto(Cur_E210DLS.Achou)
inicio
@ Soma a quantidade de estoque que encontrou@
TotQtdEst = TotQtdEst + Cur_E210DLS.QtdEst;
Cur_E210DLS.Proximo();
fim;
Cur_E210DLS.FecharCursor();

@Verifica se o total dos lotes encontrados atende a quantidade a faturar@
se (VSConsisteEstoque = 'S')
inicio
Se (TotQtdEst < VSQtdFat)
Mensagem(Erro,"Não existem lotes disponíveis para atender a quantidade do item.");
fim;

Cur_E210DLS.AbrirCursor();
xTotalADistribuir = VSQtdFat;

@Distribui a quantidade encontrada nos lotes até atender a quantidade a faturar@
Enquanto (xTotalADistribuir > 0)
Inicio
xQtdDistribuir = Cur_E210DLS.QtdEst;
Se (xQtdDistribuir > xTotalADistribuir)
xQtdDistribuir = xTotalADistribuir;

MontaListaLotesSugeridos(VSCodEmp,VSCodPro,VSCodDer,VSCodDep,Cur_E210DLS.CodLot,xQtdDistribuir);

xTotalADistribuir = xTotalADistribuir - xQtdDistribuir;
Cur_E210DLS.Proximo();
Fim;

Cur_E210DLS.FecharCursor();

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
VSConsisteEstoque ALFA O Sistema ERP consiste estoque N
VSCodEmp NÚMERO Código da empresa N
VSCodFil NÚMERO Código da filial N
VSCodSnf ALFA Código da série da nota fiscal N
VSNumNfv NÚMERO Número da nota fiscal N
VSSeqIpv NÚMERO Sequência do item da nota fiscal N
VSNumPed NÚMERO Número do pedido N
VSSeqIpd NÚMERO Sequência do item de pedido N
VSCodPro ALFA Código do produto N
VSCodDer ALFA Código da derivação N
VSCodDep ALFA Código do depósito N
VSQtdFat NÚMERO Quantidade faturada N

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ê?