You are on page 1of 2

Static Function AjustaEmp(cCod,cArmz, lAtu)

Local aArea := GetArea()


Local aAreaSB2 := SB2->(GetArea())
Local nRet := 0
Local cQuery := ""
Local nCont := 0
Local cTrb1 := GetNextAlias()
Default lAtu := .T.

cQuery := " SELECT D4_OP, D4_COD, D4_QUANT FROM " + RetSqlName("SD4") + "
SD4"
cQuery += " WHERE SD4.D4_FILIAL = '" + xFilial("SD4") + "' AND"
cQuery += " SD4.D4_COD = '"+cCod+"' AND "
cQuery += " SD4.D4_LOCAL = '"+cArmz+"' AND "
cQuery += " SD4.D_E_L_E_T_ = ' ' AND SD4.D4_QUANT > 0"
cQuery += " ORDER BY D4_COD "

cQuery := ChangeQuery(cQuery)

If Select(cTrb1) > 0
(cTrb1)->(DbCloseArea())
Ferase(cTrb1+GetDBExtension())
Ferase(cTrb1+OrdBagExt())
EndIf
DbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cTrb1, .F., .T.)

While !(cTrb1)->(Eof())
//nRet += (cTrb1)->D4_QUANT
DbSelectArea("SC2")
DbSetOrder(1)
If DbSeek(xFilial("SC2")+AllTrim((cTrb1)->D4_OP))
If AllTrim(SC2->C2_TPOP) == "F"
nRet += (cTrb1)->D4_QUANT
EndIf
Else
nRet += (cTrb1)->D4_QUANT
//Alert("Erro?")
EndIf

(cTrb1)->(DbSkip())
EndDo

If Select(cTrb1) > 0
(cTrb1)->(DbCloseArea())
Ferase(cTrb1+GetDBExtension())
Ferase(cTrb1+OrdBagExt())
EndIf

If lAtu
DbSelectArea("SB2")
DbSetOrder(1) //cod+local
If DbSeek(xFilial("SB2")+cCod+cArmz)
If RecLock("SB2",.F.)
If SB2->B2_QEMP == SB2->B2_QEMP2
SB2->B2_QEMP := nRet
SB2->B2_QEMP2 := nRet
Else
SB2->B2_QEMP := nRet
EndIf
MsUnLock()
EndIf
EndIf
EndIf
RestArea(aAreaSB2)
RestArea(aArea)
Return(nRet)

You might also like