ABCDEFGHIJKLMNOPQRSTUVWXYZ#
SaldoSB2
Calcula o saldo do arquivo SB2 Sintaxe nSaldo := SaldoSB2(ExpL1,ExpL2,ExpD1,ExpL3,ExpN1) Parametros: ExpN1 = Saldo devolvido pela função ExpL1 = Flag que indica se chamada da função ‚ utilizada p/ cálculo de necessidade. Caso .T. deve considerar quantidade a distribuir, pois a mesma apenas não pode ser utilizada, porem já esta em estoque. ExpL2 = Flag que indica se deve subtrair o empenho do saldo a ser retornado. ExpD1 = Data final para filtragem de empenhos. Empenhos ate esta data serão considerados no caso de leitura do SD4. ExpL3 = Flag que indica se deve considerar o saldo de terceiros em nosso poder ou não (B2_QTNP). ExpL4 = Flag que indica se deve considerar nosso saldo em poder de terceiros ou não (B2_QNPT). ExpN1 = Qtd empenhada para esse movimento que não deve ser subtraída ExpN2 = Qtd empenhada do Projeto para esse movimento que não deve ser subtraída ExpL5 = Subtrai a Reserva do Saldo a ser Retornado? ExpD2 = Data limite para composição do saldo MV_TPSALDO="C" ExpL6 = Subtrai a Quantidade Prevista no SA a ser Retornado Obs.: Somente funciona se o MV_TPSALDO for "C" Exemplo:// Static Function MostrarSaldo(cProduto, lAltera) Local nSaldo := 0 //Saldo em Estoque Local aArea := GetArea() //Area Local aAreaSB2 := SB2->(GetArea()) Local nSaldoAtu := 0 Default lAltera := .f. SB2->( dbSetOrder(1) ) SB2->( dbSeek(xFilial("SB2") + cProduto ) ) While !SB2->( Eof() ) .And. SB2->B2_FILIAL + SB2->B2_COD == xFilial("SB2") + cProduto nSaldoAtu := SaldoSB2() nSaldo += nSaldoAtu If nSaldoAtu <> SB2->B2_ECSALDO lAltera := .T. If SB2->( SoftLock("SB2") ) //Se nao conseguir travar ira provavelmente ser enviado novamente no proximo processamento. SB2->B2_ECSALDO := nSaldoAtu //Grava com o mesmo calculo usado na Query da MF1. SB2->( MsUnLock() ) EndIf EndIf SB2->( dbSkip() ) EndDO IF nSaldo < 0 nSaldo := 0 EndIf RestArea(aAreaSB2) RestArea(aArea) Return nSaldo
Artigos relacionados
SQL - Funções de agregação