Glossário

Blog Advpl - Share knowledge

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

 

Deixe uma resposta