Histórico da Página
Exemplo de Uso:
Para o correto funcionamento da rotina automática é necessário informar os seguintes parâmetros:
1 - Matriz com os títulos a serem baixados - Obrigatório
2 - Numérico com a operação e ser realizada (3 - Baixa, 5 - Cancelamento, 6 - Exclusão) - Obrigatório
3 - Lógico que determina se o browse será exibido. (.F. - Não será apresentado o browse, .T. - O browse será mostrado)
4 - Numérico com a sequência de baixa a ser cancelada/excluída quando o título possuir mais de uma baixa.
aBaixa: é possível informar o array com os dados referentes ao título a ser baixado e as informações necessárias para esta baixa:aBaixa[1] = Filial
aBaixa[2] = Prefixo
aBaixa[3] = Número
aBaixa[4] = Parcela
aBaixa[5] = Tipo
aBaixa[6] = Fornecedor
aBaixa[7] = Loja
aBaixa[8] = Descrição do Motivo da Baixa
aBaixa[9] = Banco
aBaixa[10] = Agência
aBaixa[11] = Conta
aBaixa[12] = Data da Baixa.
aBaixa[13] = Data de Crédito
aBaixa[14] = Histórico
aBaixa[15] = Saldo
...
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.
O estorno será aplicado a todas as compensações realizadas entre os títulos informados em aNF e aEstorno, não sendo possível escolher uma sequência específica.
Dica | ||
---|---|---|
| ||
Ao cancelar a compensação, para definir se será gerado o movimento de estorno na SE5, ou se o movimento será excluído da SE5, veja o ponto de entrada MaIntDel. |
Dica | ||
---|---|---|
| ||
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). |
Informações | ||
---|---|---|
| ||
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ção | Parâmetro | Tipo | Descrição |
---|---|---|---|
1 | aNF | array | Vetor com os RECNOs das notas a serem compensadas |
2 | aPA_NDF | array | Vetor com os RECNOs dos PAs/NDFs a serem compensados |
3 | aContabil | array | Vetor de 3 posições: [1] - Contabiliza Online, [2] - Aglutina os movimentos contábeis, [3] - Mostra lançamento contábil |
4 | bBlock | bBlock | Bloco de código que será executado após cada compensação (Geração dos movimentos na tabela SE5). |
5 | aEstorno | array | Vetor de 1 elemento. Esse elemento será um outro vetor, contendo os RECNOs (SE2) a serem cancelados. |
6 | nSldComp | numérico | Numérico com valor determinado a ser compensado. Caso não seja informado será considerado o saldo de cada título. |
7 | dBaixa | date | Data de realização da compensação |
8 | nTaxaPA | numérico | Taxa de movimento a ser considerada no PA para moedas estrangeiras |
9 | nTaxaNF | numérico | Taxa de movimento a ser considerada na NF em moedas estrangeiras |
10 | nHdl | numérico | Cabeçalho do arquivo contábil (Default = 0) |
11 | 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 |
12 | aRecSe5 | array | Vetor que contém os RECNOsda SE5 para posterior contabilização |
13 | aNDFDados | array | Vetor com as informações das NDFs |
14 | lHelp | lógico | Informe .T. se deseja exibir o Help dos pagamentos antecipados que não possuem movimentação bancária |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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 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 |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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]))
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
|
...