× Linguagem de Programação ADVPL

Perguntas Sintaxe da função saldoterc()

Mais
11 anos 10 meses atrás #9208 por saranery
Bom dia pessoal,

Alguém sabe qual a sintaxe da função para calcular saldo em poder de terceiros?
saldoterc() - parametros e retorno. Procurei no site TDN e não encontrei nenhuma referencia, se alguém puder ajudar...

Desde já agradecida,
Sara Nery

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 meses atrás #9234 por lalberto
Respondido por lalberto no tópico Re: Sintaxe da função saldoterc()
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡…o ³ SaldoTerc³ Autor ³ Cristina M. Ogura ³ Data ³ 31.05.95 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³ Retorna o Saldo do Produto no arquivo SB6 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Sintaxe ³ ExpA1 := SaldoTerc(ExpC1,ExpC2,ExpC3,ExpD4,ExpC4) ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ExpC1 = Codigo da Produto ³±±
±±³ ³ ExpC2 = Local do Produto ³±±
±±³ ³ ExpC3 = Tipo de Poder de terceiros (D = De Terceiros, ³±±
±±³ ³ T = Em Terceiros) ³±±
±±³ ³ ExpD4 = Data de fechamento ³±±
±±³ ³ ExpC5 = Local limite do produto ³±±
±±³ ³ ExpL6 = Indica se o saldo deve ser calculado por Cli/Forn. ³±±
±±³ ³ ExpC7 = Codigo do Produto ate, utilizado para gerar a ³±±
±±³ ³ matriz aSaldoProd{} ³±±
±±³ ³ ExpL1 = Indica se considera TES de poder de 3os que nao ³±±
±±³ ³ atualiza estoque ³±±
±±³ ³ ExpL2 = Indica se Custo FIFO ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³ Uso ³ Generico ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Function SaldoTerc(cCod,cLocal,cTipo,dDtFech,cLocalAte,lCliFor,cCodAte,lConsTesTerc,lCusFifo)

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 meses atrás #9296 por saranery
Respondido por saranery no tópico Re: Sintaxe da função saldoterc()
Olá Luis Alberto, muito obrigada pelo retorno, era disso mesmo que eu estava precisando!!
Só mais uma coisa, eu vi aqui que a função retorna um vetor de 5 posições, sabe dizer a que se refere cada campo??

Mais uma vez obrigada!

Sara Nery

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 meses atrás #9299 por lalberto
Respondido por lalberto no tópico Re: Sintaxe da função saldoterc()
Melhor segue a função inteira ok.

Function SaldoTerc(cCod,cLocal,cTipo,dDtFech,cLocalAte,lCliFor,cCodAte,lConsTesTerc,lCusFifo)

Local aStruSB6 :={}
Local aStruSF4 :={}
Local aSaldo := Array(3)
Local aSaldoProd := {}
Local dDtVai := Ctod("01/01/80")
Local cArq := Alias()
Local cAliasSQL :="SB6"
Local cAliasTES :="SF4"
Local lLocalWhile:=.F.
Local lQuery :=.F.
Local nX := 0

DEFAULT cLocalAte := cLocal
DEFAULT lCliFor := .F.
DEFAULT cCodAte := ""
DEFAULT lConsTesTerc:= .F.
DEFAULT lCusFifo := .F.

lLocalWhile:=(cLocal == cLocalAte) .And. ("B6_LOCAL" $ SB6->(IndexKey()))
Afill(aSaldo,0)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Ajusta o array a Saldo ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lCliFor
aSaldo := {}
EndIf

IIf(cTipo=="T",cTipo:="E",cTipo)

dbSelectArea("SF4")
nRegSF4 := RecNo()
dbSelectArea("SB6")
dbSetOrder(nIndSB6 + 1)
If lLocalWhile
dbSeek(xFilial("SB6")+cCod+cLocal+cTipo+Dtos(dDtVai),.T.)
Else
dbSeek(xFilial("SB6")+cCod+cTipo+Dtos(dDtVai),.T.)
EndIf

While !Eof() .And. If(lQuery,.T.,B6_FILIAL+B6_PRODUTO+ If(lLocalWhile,B6_LOCAL,"")+B6_TIPO+Dtos(B6_DTDIGIT) <= xFilial("SB6")+If(Empty(cCodAte),cCod,cCodAte)+If(lLocalWhile,cLocal,"")+cTipo+Dtos(dDtFech))

If !(SB6->B6_LOCAL >= cLocal .And. SB6->B6_LOCAL <= cLocalAte) .Or. !(B6_TIPO == cTipo)
dbSkip()
Loop
Endif

If !lQuery
dbSelectArea("SF4")
dbSeek(xFilial("SF4")+SB6->B6_TES)
EndIf
If Empty(cCodAte)
If lQuery .Or. (((cAliasTes)->F4_ESTOQUE == "S") .Or. (lConsTesTerc .And. (cAliasTes)->F4_PODER3 $ "RD"))
If !lCliFor
If (cAliasTES)->F4_PODER3 == "R"
aSaldo[1] += (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldo[2] += (cAliasSQL)->B6_CUSFF1
Else
aSaldo[2] += (cAliasSQL)->B6_CUSTO1
EndIf
aSaldo[3] += If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
Else
aSaldo[1] -= (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldo[2] -= (cAliasSQL)->B6_CUSFF1
Else
aSaldo[2] -= (cAliasSQL)->B6_CUSTO1
EndIf
aSaldo[3] -= If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
EndIf
Else
nX := aScan(aSaldo,{|x| x[1] == (cAliasSQL)->B6_TPCF+(cAliasSQL)->B6_CLIFOR+(cAliasSQL)->B6_LOJA})
If nX == 0
aadd(aSaldo,{(cAliasSQL)->B6_TPCF+(cAliasSQL)->B6_CLIFOR+(cAliasSQL)->B6_LOJA,0,0,0})
nX := Len(aSaldo)
EndIf
If (cAliasTES)->F4_PODER3 == "R"
aSaldo[nX,2] += (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldo[nX,3] += (cAliasSQL)->B6_CUSFF1
Else
aSaldo[nX,3] += (cAliasSQL)->B6_CUSTO1
EndIf
aSaldo[nx,4] += If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
Else
aSaldo[nX,2] -= (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldo[nX,3] -= (cAliasSQL)->B6_CUSFF1
Else
aSaldo[nX,3] -= (cAliasSQL)->B6_CUSTO1
EndIf
aSaldo[nx,4] -= If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
EndIf
EndIf
EndIf
Else
If lQuery .Or. (((cAliasTes)->F4_ESTOQUE == "S") .Or. (lConsTesTerc .And. (cAliasTes)->F4_PODER3 $ "RD"))
If !lCliFor
nX := aScan(aSaldoProd,{|x| x[1] == (cAliasSQL)->B6_FILIAL+(cAliasSQL)->B6_PRODUTO})
If nX == 0
AADD(aSaldoProd,{(cAliasSQL)->B6_FILIAL+(cAliasSQL)->B6_PRODUTO,(cAliasSQL)->B6_LOJA,0,0,0})
nX := Len(aSaldoProd)
EndIf
If (cAliasTES)->F4_PODER3 == "R"
aSaldoProd[nX,3] += (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldoProd[nX,4] += (cAliasSQL)->B6_CUSFF1
Else
aSaldoProd[nX,4] += (cAliasSQL)->B6_CUSTO1
EndIf
aSaldoProd[nx,5] += If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
Else
aSaldoProd[nX,3] -= (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldoProd[nX,4] -= (cAliasSQL)->B6_CUSFF1
Else
aSaldoProd[nX,4] -= (cAliasSQL)->B6_CUSTO1
EndIf
aSaldoProd[nx,5] -= If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
EndIf
Else
nX := aScan(aSaldoProd,{|x| x[1] == (cAliasSQL)->B6_TPCF+(cAliasSQL)->B6_CLIFOR+(cAliasSQL)->B6_LOJA+(cAliasSQL)->B6_PRODUTO})
If nX == 0
aadd(aSaldoProd,{(cAliasSQL)->B6_TPCF+(cAliasSQL)->B6_CLIFOR+(cAliasSQL)->B6_LOJA+(cAliasSQL)->B6_PRODUTO,0,0,0})
nX := Len(aSaldoProd)
EndIf
If (cAliasTES)->F4_PODER3 == "R"
aSaldoProd[nX,2] += (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldoProd[nX,3] += (cAliasSQL)->B6_CUSFF1
Else
aSaldoProd[nX,3] += (cAliasSQL)->B6_CUSTO1
EndIf
aSaldoProd[nx,4] += If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
Else
aSaldoProd[nX,2] -= (cAliasSQL)->B6_QUANT
If lCusFifo
aSaldoProd[nX,3] -= (cAliasSQL)->B6_CUSFF1
Else
aSaldoProd[nX,3] -= (cAliasSQL)->B6_CUSTO1
EndIf
aSaldoProd[nx,4] -= If((cAliasTes)->F4_ESTOQUE # "S",(cAliasSQL)->B6_QUANT,0)
EndIf
EndIf
EndIf
Endif
dbSelectArea(cAliasSQL)
dbSkip()
EndDo
If lCliFor .And. Empty(aSaldo)
aSaldo := {{"",0,0}}
EndIf
If lQuery
dbSelectArea(cAliasSQL)
dbCloseArea()
Else
dbSelectArea("SF4")
dbGoto(nRegSF4)
EndIf
dbSelectArea(cArq)

Return(If(Empty(cCodAte),aSaldo,aSaldoProd))

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 meses atrás #9333 por saranery
Respondido por saranery no tópico Re: Sintaxe da função saldoterc()
VALEU!!!!!!!!!!!!!!!!!

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.123 segundos
Joomla templates by a4joomla