EstornaComponentes

Estorna os componentes já baixados da OP.

Nota

Sintaxe: EstornaComponentes(Alfa aCodOri, Numero aNumOrp, Numero aCodEtg, Alfa aCodPro, Alfa aCodDer, Alfa aCodCmp, Numero aQtdEst, Numero aDatFim, Alfa aCodTns, Alfa End Retorno);

Parâmetros:

Nome Tipo Descrição
aCodOri Alfa Código da origem da O.P.
aNumOrp Numero Número da O.P.
aCodEtg Numero Estágio da O.P.
aCodPro Alfa Código do produto da O.P..
aCodDer Alfa Código da derivação do produto.
aCodCmp Alfa Código do componente que deseja estornar. Informando aCodCmp, o estorno será apenas daquele componente, com a quantidade informada (aQtdEst) sendo a estornada.
aDerCmp Alfa Derivação do componente a ser estornado.
aQtdEst Numero Quantidade que deseja estornar.
aDatFim Numero Data do movimento. Quando não informada data, será utilizada a data atual. Esta variável deve ser passada em formato Numero (como no banco), caso não saiba, pode usar a função ConvDataInt para transformar uma data alfa no formato aceito.
aCodTns Alfa Código da transação. Quando não informada transação, será utilizada a transação padrão de estorno definida na filial.

Tipo de retorno: Status da execução da função. Retorna "OK" caso tenha sido processado com sucesso.

Exemplo:

Definir Alfa Retorno;

EstornaComponentes("PEC", 8, 110, "GABINETE", "MS", "", "", 5, 0, "90203", Retorno);

Se (Retorno <> "OK")

  GeraLog(Retorno);

Observação: É possível optar entre informar aCodPro/ aCodDer ou apenas aCodCmp. A diferença é que informando aCodPro/ aCodDer, o estorno será realizado para todos os componentes da O.P. e de maneira proporcional a quantidade realizada, que será aQtdEst. E não é necessário informar aCodPro/aCodDer/aCodCmp, mas caso seja feito, o comportamento será o mesmo que se tivesse informado apenas aCodCmp.

Para a quantidade utilizada o cálculo é feito da seguinte maneira: E900CMO.QTDUTI * ('aQtdEst' / (E900EOP.QTDRE1 + E900EOP.QTDRE2 + E900EOP.QTDRE3 + E900EOP.QTDRFG)), sendo:

Para cada execução da regra, este cálculo é realizado, porém, a cada vez que se executa a regra, a QTDUTI (quantidade utilizada) já não é mais a mesma da quantidade anterior. As quantidades dos campos E900EOP.QTDRE1, E900EOP.QTDRE2, E900EOP.QTDRE3, E900EOP.QTDRFG não são atualizadas, pois, não se trata dos componentes e sim do produto acabado. Por esta razão, a cada execução da função, a quantidade que será estornada ficará diferente da quantidade proposta na regra.

Este artigo ajudou você?