Para utilizar o processo de Compensação Automática Contas a Pagar é necessário chamar a função: FinCmpAut.
A compensação pode ser realizada de N para N: N adiantamentos/devoluções (PA ou NDF) para N títulos (NF, DP, etc.) ou vice-versa.
Parâmetros da função:
Parâmetro | Tipo | Descrição |
---|---|---|
aNF | array | Vetor com os recnos das notas a serem compensadas |
aPA_NDF | array | Vetor com os recnos dos PAs/NDFs a serem compensados |
aContabil | array | Vetor de 3 posições: [1] - Contabiliza Online, [2] - Aglutina os movimentos contábeis, [3] - Mostra laçamento contábil |
bBlock | bBlock | Bloco de código que será executado após cada compensação. "Geração dos movimentos na tabela SE5) |
aEstorno | array | Vetor com recnos a serem cancelados |
nSldComp | numérico | Numérico com valor determinado a ser compensado. Caso não seja informado será considerado o saldo de cada título. |
dBaixa | date | Data de realização da compensação |
nTaxaPA | numérico | Taxa de movimento a ser considerada no PA para moedas estrangeiras |
nTaxaNF | numérico | Taxa de movimento a ser considerada na NF em moedas estrangeiras |
nHdl | numérico | Cabeçalho do arquivo contábil (Default = 0) |
nOperacao | numérico | Na operação de estorno/exclusão determina a ação que será realizada nos movimentos da compensação. 2 = Gera movimento de estorno, 3=Exclui os movimentos |
aRecSe5 | array | Vetor que contém os recnos da SE5 para posterior contabilização |
aNDFDados | array | Vetor com as informações das NDFs |
lHelp | lógico | Informe .T. se deseja exibir o Help dos pagamentos antecipados que não possuem movimentação bancária |
#INCLUDE "Protheus.ch" #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" Static __COMPAUT := Nil User Function CMPAUTOMA() Local lRet := .F. Local cQry := "" Local aTipos := {"NF ", "PA ", "NDF"} Local cTblTmp := "" Local aNF := {} Local aPA_NDF := {} Local aContabil := {} Local bBlock := Nil Local aEstorno := {} Local nSldComp := 0 Local nTaxaPA := 0 Local nTaxaNF := 0 Local nHdl := 0 Local nOperacao := 0 If __COMPAUT == Nil cQry := "SELECT E2_TIPO TIPO, R_E_C_N_O_ R_E_C_N_O FROM " + RetSqlName("SE2") + " " cQry += "WHERE E2_SALDO > 0 AND E2_TIPO IN (?) " cQry += "ORDER BY E2_TIPO" cQry := ChangeQuery(cQry) __COMPAUT := FWPreparedStatement():New(cQry) EndIf __COMPAUT:SetIn(1, aTipos) cQry := __COMPAUT:GetFixQuery() cTblTmp := MpSysOpenQuery(cQry) While (cTblTmp)->(!Eof()) If (cTblTmp)->TIPO $ MVPAGANT+"|"+MV_CPNEG Aadd(aPA_NDF, (cTblTmp)->R_E_C_N_O) Else Aadd(aNF, (cTblTmp)->R_E_C_N_O) EndIf (cTblTmp)->(DbSkip()) lRet := .T. EndDo (cTblTmp)->(DbCloseArea()) cTblTmp := "" If lRet Pergunte("AFI340", .F.) lContabiliza := MV_PAR11 == 1 lAglutina := MV_PAR08 == 1 lDigita := MV_PAR09 == 1 lRet := FinCmpAut(aNF, aPA_NDF, aContabil, bBlock, aEstorno, nSldComp, dDatabase, nTaxaPA ,nTaxaNF, nHdl, nOperacao) If lRet Alert("Compensação realizada com sucesso") Else Alert("Ocorreu um erro no processo de compensação") EndIf EndIf Return Nil |