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:
- Código da Empresa (Numero)
- Código do Produto (Alfa)
- Código da Derivação (Alfa)
- Código do Depósito (Alfa)
- Código do Lote (Alfa)
- Quantidade sugerida para o lote (Numero)
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.