Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Ajuste na descrição do parâmetro de estorno e código-fonte com exemplo de estorno.

...

ParâmetroTipo Descrição
aNFarrayVetor com os recnos RECNOs das notas a serem compensadas
aPA_NDFarrayVetor com os recnos RECNOs dos PAs/NDFs a serem compensados
aContabilarrayVetor de 3 posições:  [1] - Contabiliza Online, [2] - Aglutina os movimentos contábeis, [3] - Mostra laçamento lançamento contábil
bBlockbBlockBloco de código que será executado após cada compensação. "Geração dos movimentos na tabela SE5)
aEstornoarrayVetor com recnos de 1 elemento. Esse elemento será um outro vetor, contendo os RECNOs (SE2) a serem cancelados.
nSldCompnuméricoNumérico com valor determinado a ser compensado. Caso não seja informado será considerado o saldo de cada título.
dBaixadateData de realização da compensação
nTaxaPAnuméricoTaxa de movimento a ser considerada no PA para moedas estrangeiras
nTaxaNFnuméricoTaxa de movimento a ser considerada na NF em moedas estrangeiras
nHdlnuméricoCabeçalho do arquivo contábil (Default = 0)
nOperacaonuméricoNa 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
aRecSe5arrayVetor que contém os recnos da RECNOsda SE5 para posterior contabilização
aNDFDados arrayVetor com as informações das NDFs
lHelplógicoInforme .T. se deseja exibir o Help dos pagamentos antecipados que não possuem movimentação bancária
Bloco de código
languagejava
themeMidnight
firstline1
titleExemplo de rotina automática #01 - Rotina automática
linenumberstrue
#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
	Local aRecSE5 := {}
	Local aNDFDados := {}
	Local lHelp := .T.

    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, aRecSE5, aNDFDados, lHelp)

        If lRet
            Alert("Compensação realizada com sucesso")
        Else
            Alert("Ocorreu um erro no processo de compensação")
        EndIf
    EndIf

Return Nil
Bloco de código
languagejava
themeMidnight
firstline1
titleExemplo #02 - Rotina automática para compensação ou estorno
linenumberstrue
collapsetrue
#INCLUDE "PROTHEUS.CH"
#include "tbiconn.ch"

user function xCmpCP()
    local aPerg as array
    local aRet as array
    local aEstorno as array
    local aRecTit as array
    local aRecCmp as array
    local aRecEst as array
    local cRecTit as character
    local cRecCmp as character
    local cJanela as character
    local cCodCanc as character
    local cValor as character
    local lContabiliza as logical
    local lAglutina as logical
    local lDigita as logical
    local lHelp as logical
    local nSldComp as numeric
    local nHdl as numeric
    local nOperacao as numeric

    cJanela := "Compensação automática CP"    
    aPerg := {}
    aRet := {}
    aEstorno := {}
    aRecTit := {}
    aRecCmp := {}
    aRecEst := {}
    cValor := cCodCanc := cRecTit := cRecCmp := replicate(" ",50)
    nSldComp = 0   
    nHdl := 0
    nOperacao := 0 
    lHelp := .F.
    
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "FIN"
        conOut("INICIO DA ROTINA AUTOMATICA")

        PERGUNTE("AFI340",.F.)
        lContabiliza := MV_PAR11 == 1
        lAglutina := MV_PAR08 == 1
        lDigita := MV_PAR09 == 1

        aAdd(aPerg,{1, 'RecNo título de partida', cRecTit, "@", nil, nil, nil, 50, .T.})
        aAdd(aPerg,{1, 'RecNo título a compensar', cRecCmp, "@", nil, nil, nil, 50, .T.})
        aAdd(aPerg,{2, 'Comp/Est?', "1", {"1=Compensação","2=Estorno"}, 100, nil, .T.})
        aAdd(aPerg,{1, 'Valor', cValor, "@", nil, nil, nil, 50, .F.})

        if paramBox(aPerg, cJanela, aRet)
            aAdd(aRecTit, val(aRet[1]))
            if aRet[3] = "1"
                aAdd(aRecCmp, val(aRet[2]))
                aEstorno := {}
            else
                aAdd(aRecEst, val(aRet[2]))
                nOperacao := 2 // 2 = Gera movimento de estorno, 3=Exclui os movimentos
                aEstorno := {aRecEst}
            endif
            if !Empty(AllTrim(aRet[4]))
                nSldComp := val(aRet[4])
            else
                nSaldo := nil
            endif

            if FinCmpAut(aRecTit, aRecCmp, {lContabiliza,lAglutina,lDigita}, /*bBlock*/, aEstorno, nSldComp, dDatabase, /*nTaxaPA*/,/*nTaxaNF*/, nHdl, nOperacao, /*aRecSE5*/, /*aNDFDados*/, lHelp)           
                conOut("Processo concluido com exito.")
            else
                conOut("Processo nao concluido.")            
            endif
        endif

        conOut("FIM DA ROTINA AUTOMATICA")
    RESET ENVIRONMENT
Return nil