Identificador de Regra
EST-210SUGPD01
Módulo: EST-Estoques.
Finalidade: possibilita a sugestão de itens de destino na tela de transferência entre estoques (F210TPA). É chamado ao inserir um item de origem quando o tipo de transferência for Entre Produtos.
Variáveis Disponibilizadas:
Nome | Tipo | Observações | Retorna Valor |
---|---|---|---|
VSCodEmp | Número | Código da empresa logada | N |
VSCodOri | Texto | Código da origem do item de origem | N |
VSCodFam | Texto | Código da família do item de origem | N |
VSCodPro | Texto | Código do produto do item de origem | N |
VSCodDer | Texto | Código da derivação do item de origem | N |
VSCodDep | Texto | Código do depósito do item de origem | N |
VSCodLot | Texto | Código do lote do item de origem | N |
VSNumSep | Texto | Código da série do item de origem | N |
VSQtdOri | Número | Quantidade do item de origem | N |
VSVlrOri | Número | Valor do item de origem | N |
VSNumDoc | Número | Número do documento do item de origem | N |
VSNumOrp | Número | Número da OP informada nos filtros de pesquisa da tela | N |
VSLisDes | Número | Lista de itens de destino a ser populada pela regra | S |
Através da variável VSLisDes é possível definir os valores que serão usados para preencher a grade de itens de destino. As colunas disponíveis nessa lista são:
Nome | Tipo | Observações | Retorna Valor |
---|---|---|---|
CodProDes | Texto | Código de item de destino | S |
CodDerDes | Texto | Código da derivação do item de destino | S |
CodDepDes | Texto | Código do depósito do item de destino | S |
CodLotDes | Texto | Código do lote do item de destino | S |
NumSepDes | Texto | Número da série do item de destino | S |
QtdDes | Número | Quantidade do item de destino | S |
Observação
O valor do item de destino será o rateio do valor do item de origem pela quantidade de itens de destino. Dessa forma, as transações devem ser modificadas para utilizarem a Forma Valorização Movimento como F-Pelo Fechamento, utilizando assim o preço médio na contabilização.
/* Variáveis do identificador */
Definir Numero VSCodEmp;
Definir Alfa VSCodOri;
Definir Alfa VSCodFam;
Definir Alfa VSCodPro;
Definir Alfa VSCodDer;
Definir Alfa VSCodDep;
Definir Alfa VSCodLot;
Definir Alfa VSNumSep;
Definir Numero VSQtdOri;
Definir Numero VSVlrOri;
Definir Numero VSNumDoc;
Definir Numero VSNumOrp;
Definir Numero VSLisDes; /* Lista usada para definir os itens de destino */
/* Variáveis auxiliares */
Definir Alfa xStrAux;
Definir Cursor Cur_E900CMO;
/* O cursor lê os insumos da OP */
Cur_E900CMO.SQL "SELECT CodCmp, CodDer, CodDep, CodLot, NumSep, QtdUti \
FROM E900CMO \
WHERE CodEmp = :VSCodEmp \
and CodOri = :VSCodOri \
and NumOrp = :VSNumOrp \
and QtdUti > 0";
Cur_E900CMO.AbrirCursor();
Enquanto (Cur_E900CMO.Achou)
Inicio
/* Para cada registro encontrado é criada uma nova linha na lista */
ListaRegraNovaLinha(VSLisDes);
ListaRegraAddValorLinhaAlfa(VSLisDes, "CodProDes", Cur_E900CMO.CodCmp, xStrAux);
ListaRegraAddValorLinhaAlfa(VSLisDes, "CodDerDes", Cur_E900CMO.CodDer, xStrAux);
ListaRegraAddValorLinhaAlfa(VSLisDes, "CodDepDes", Cur_E900CMO.CodDep, xStrAux);
ListaRegraAddValorLinhaAlfa(VSLisDes, "CodLotDes", Cur_E900CMO.CodLot, xStrAux);
ListaRegraAddValorLinhaAlfa(VSLisDes, "NumSepDes", Cur_E900CMO.NumSep, xStrAux);
ListaRegraAddValorLinhaNumero(VSLisDes, "QtdDes", Cur_E900CMO.QtdUti, xStrAux);
/*Salva as colunas populadas acima na linha atual */
ListaRegraSalvarLinha(VSLisDes);
Cur_E900CMO.Proximo();
Fim;
Cur_E900CMO.FecharCursor();