Escolar Documentos
Profissional Documentos
Cultura Documentos
doc} fGrvApontP
Realiza a inclus�o ou estorno dos apontamentos de perda.
@return lRet, Indica se o processamento foi realizado com sucesso
@param aFields, array, Array com os campos da MsNewGetDados
@param lEstAuto, logical, Indica se � o processo de estorno autom�tico
@type function
/*/
Static Function fGrvApontP(aFields, lEstAuto)
Local aAreas := {}
Local aMata240 := {}
Local cMsgErro := ""
Local cLocal := ""
Local cLocaliz := ""
Local cProduto := ""
Local cLoteCtl := ""
Local lDelete := .F.
Local lRet := .T.
Local lEstorno := .F.
Local nOpcExec := 0
Local nPosDelete := 0
Local nRecno := 0
Local nI := 0
Local nQtde := 0
Local aCab := {}
Local aItem := {}
Local aItens := {}
If !lEstAuto
/* Ajuste para a fun��o GDFieldGet */
If Type("N") == "U"
Private N := 0
EndIf
/* Atualiza o aCols */
aCols := oGetDados:aCols
EndIf
Aadd(aAreas, GetArea())
Aadd(aAreas, SD3->(GetArea()))
ProcRegua(Len(aCols) + 1)
If !lEstAuto
BeginTran()
EndIf
nPosDelete := Len(aHeader) + 1
For nI := 1 To Len(aCols)
/* Limpa as vari�veis */
aMata240 := {}
lDelete := .F.
nOpcExec := 0
nRecno := 0
If !lEstAuto
oGetDados:GoTo(nI)
N := oGetDados:nAt
Else
N := nI
EndIf
If !Empty(GDFieldGet("D3_COD",nI,.T.))
lDelete := aCols[nI,nPosDelete]
nRecno := GDFieldGet("D3_REC_WT",nI,.T.)
If !lEstAuto
IncProc("Estornando apontamento de perda da linha " +
CValToChar(nI) + "...")
Else
IncProc("Estornando apontamento de perda...")
EndIf
Else
IncProc()
Loop
EndIf
/*
Adiciona os campos que est�o na MsNewGetDados.
Todos os campos que estiverem no array aFields, ser�o passados
automaticamente para o ExecAuto.
*/
//AEval(aFields, {|cField| Aadd(aMata240, {cField,
GDFieldGet(cField,nI,.T.), Nil})})
AEval(aFields, {|cField| Aadd(aItem, {cField,
GDFieldGet(cField,nI,.T.), Nil})})
AADD(aItens, {aItem})
lMsErroAuto:= .F.
MSExecAuto({|x,y,z| MATA241(x, y, z)}, aCab, aItens, nOpcExec)
If !lMsErroAuto
cLocal := GDFieldGet("D3_LOCAL" )
cLocaliz := GDFieldGet("D3_LOCALIZ")
cProduto := GDFieldGet("D3_COD" )
cLoteCtl := GDFieldGet("D3_LOTECTL")
nQtde := GDFieldGet("D3_QUANT" )
lEstorno := nOpcExec == 5
If !lEstAuto
DisarmTransaction()
If nOpcExec == 3
cMsgErro := "Erro na inclus�o do apontamento de
perda." + CRLF
Else
cMsgErro := "Erro no estorno do apontamento de
perda." + CRLF
EndIf
MsgAlert(cMsgErro, cCadastro)
MostraErro()
EndIf
Exit
EndIf
EndIf
Next nI
If !lEstAuto
EndTran()
If lRet
MsgInfo("Grava��o realizada com sucesso.", cCadastro)
EndIf
EndIf
fRestAreas(aAreas)
Return(lRet)