Faz tratativas após incluir um Documento de Entrada
Exemplo 1- Manipular títulos (a pagar / a receber) vinculados ao Documento de Entrada:
User Function SF1100I()
Local aArea := GetArea()
Local aAreaF1 := SF1->(GetArea())
Local aAreaE2 := SE2->(GetArea())
Local aAreaE1 := SE1->(GetArea())
Local dVenc := Date()
//Se for Utiliza Fornecedor ou Devolucao, será Título a Receber
If SF1->F1_TIPO $ "B;D;"
DbSelectArea("SE1")
SE1->(DbSetOrder(2)) //E1_FILIAL+E1_CLIENTE+E1_LOJA+E1_PREFIXO+E1_NUM+E1_PARCELA+E1_TIPO
//Se conseguir posicionar, altera o vencimento... se houver mais de uma parcela, o ideal é transformar o trecho abaixo em um while com DbSkip
If SE1->(DbSeek(FWxFilial("SE1")+SF1->F1_FORNECE+SF1->F1_LOJA+SF1->F1_SERIE+SF1->F1_DOC))
RecLock("SE1",.F.)
SE1->E1_VENCTO := dVenc
SE1->E1_VENCREA := DataValida(dVenc)
SE1->(MsUnLock())
EndIf
//Senão, será Título a Pagar
Else
DbSelectArea("SE2")
SE2->(DbSetOrder(6)) //E2_FILIAL + E2_FORNECE + E2_LOJA + E2_PREFIXO + E2_NUM
//Se conseguir posicionar, altera o vencimento... se houver mais de uma parcela, o ideal é transformar o trecho abaixo em um while com DbSkip
If SE2->(DbSeek(FWxFilial("SE2")+SF1->F1_FORNECE+SF1->F1_LOJA+SF1->F1_SERIE+SF1->F1_DOC))
RecLock("SE2",.F.)
SE2->E2_VENCTO := dVenc
SE2->E2_VENCREA := DataValida(dVenc)
SE2->(MsUnLock())
EndIf
EndIf
RestArea(aAreaE1)
RestArea(aAreaE2)
RestArea(aAreaF1)
RestArea(aArea)
Return
Exemplo 2- Percorrer todas as parcelas do contas a pagar e atualizar um campo customizado:
User Function SF1100I()
Local aArea := GetArea()
Local aAreaF1 := SF1->(GetArea())
Local aAreaE2 := SE2->(GetArea())
//Se [Não] for Utiliza Fornecedor ou Devolucao, será Título a Pagar
If ! SF1->F1_TIPO $ "B;D;"
DbSelectArea("SE2")
SE2->(DbSetOrder(6)) //E2_FILIAL + E2_FORNECE + E2_LOJA + E2_PREFIXO + E2_NUM
//Se conseguir posicionar no título a pagar
If SE2->(DbSeek(FWxFilial("SE2")+SF1->F1_FORNECE+SF1->F1_LOJA+SF1->F1_SERIE+SF1->F1_DOC))
//Enquanto houver parcelas na SE2 desse mesmo documento
While ! SE2->(EoF()) .And. SE2->E2_FILIAL == FWxFilial("SE2") .And. SE2->(E2_FORNECE + E2_LOJA + E2_PREFIXO + E2_NUM) == SF1->(F1_FORNECE + F1_LOJA + F1_SERIE + F1_DOC)
//Atualiza as informações da parcela atual
RecLock("SE2", .F.)
SE2->E2_X_COND := SF1->F1_COND
SE2->(MsUnlock())
SE2->(DbSkip())
EndDo
EndIf
EndIf
RestArea(aAreaE1)
RestArea(aAreaE2)
RestArea(aAreaF1)
RestArea(aArea)
Return