Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Dica
titleCompensação Automática com as mesmas regras do FINA340

O parâmetro MV_IMPCOM determina se a compensação automática de títulos a pagar será realizada no modelo legado (fonte apartado) ou com as regras do FINA340 (onde existe todo o processo de retenção dos impostos).

Utilização do parâmetro MV_IMPCOM

Informações
titleAcréscimo/Decréscimo

Para fazer compensações entre títulos NF x NDF e a nota fiscal possuir acréscimo (E2_ACRESC) e/ou decréscimo (E2_DECRESC), configure o parâmetro MV_IMPCOM como T (Verdadeiro). Dessa forma, será atualizado o saldo dos títulos NF e NDF considerando o acréscimo/decréscimo.

Já para as compensações entre títulos NF x PA com acréscimo (E2_ACRESC) e/ou decréscimo (E2_DECRESC), não há a necessidade de realizar configurações adicionais.


Parâmetros da função:

PosiçãoParâmetroTipo Descrição
1aNFarrayVetor com os RECNOs das notas a serem compensadas
2aPA_NDFarrayVetor com os RECNOs dos PAs/NDFs a serem compensados
3aContabilarrayVetor de 3 posições:  [1] - Contabiliza Online, [2] - Aglutina os movimentos contábeis, [3] - Mostra lançamento contábil
4bBlockbBlockBloco de código que será executado após cada compensação (Geração dos movimentos na tabela SE5).
5aEstornoarrayVetor de 1 elemento. Esse elemento será um outro vetor, contendo os RECNOs (SE2) a serem cancelados.
6nSldCompnuméricoNumérico com valor determinado a ser compensado. Caso não seja informado será considerado o saldo de cada título.
7dBaixadateData de realização da compensação
8nTaxaPAnuméricoTaxa de movimento a ser considerada no PA para moedas estrangeiras
9nTaxaNFnuméricoTaxa de movimento a ser considerada na NF em moedas estrangeiras
10nHdlnuméricoCabeçalho do arquivo contábil (Default = 0)
11nOperacaonumé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
12aRecSe5arrayVetor que contém os RECNOsda SE5 para posterior contabilização
13aNDFDados arrayVetor com as informações das NDFs
14lHelpló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 #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 += "AND AND D_E_L_E_T_ = ' ' "
        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
	Else
		Alert("Não existem dados a serem compensados")     
	EndIf

Return Nil

...