Compensar Taxa Contratada x Taxa ContratadaCompensação com Taxa Contratada Parâmetros envolvidos: MV_CMTXCON =Indica que sera gerado será gerada correção monetária para títulos com taxa contratada na compensação CP. T = Gera CM / F = Não gera CM Para o processo de compensação com Taxa Contratada x Taxa Contratada , o parâmetro deverá estar configurados configurado conforme abaixo:
MV_CMTXCON = T (True) A correção monetária se dará a partir do documento selecionado: Caso seja selecionado o título de adiantamento (RA) os título títulos NF´s sofrerão a correção monetária com base na taxa do título RA selecionado. Caso seja selecionado o título NF os títulos de adiantamentos (RA´s) sofrerão a correção monetária com base na taxa do título NF selecionado. Com o parâmetro: MV_CMTXCON = F (False) As compensações ocorreram sem ocorrer a correção monetária nos títulosNão será gerada correção monetária e não será permitida compensações com taxa contratada diferentes.
Exemplo: Nota fiscal: Valor: 1.000,00 Moeda: 2 Taxa: 2 Valor Convertido: 2.000,00
Adiantamento: Valor: 1.000,00 Moeda: 2 Taxa: 2,5 Valor Convertido: 2.500,00
Realizando a compensação partindo da Nota Fiscal teremos as seguintes gravações na tabela SE5: E5_TIPO | E5_VALOR | E5_VLMOED2 | E5_TXMOEDA | E5_TIPODOC |
---|
NF | 1000 | 2000 | 2 | CP | RA | 1000 | 2000 | 2 | BA | RA | -500 | -250 | 2 | CM |
Realizando a compensação partindo do Adiantamento teremos as seguintes gravações na tabela SE5: E5_TIPO | E5_VALOR | E5_VLMOED2 | E5_TXMOEDA | E5_TIPODOC |
---|
RA | 1000 | 2500 | 2,5 | BA | NF | 1000 | 2500 | 2,5 | CP | NF | 500 | 200 | 2,5 | CM |
Exemplo de compensação automática utilizando as taxas acima:
Bloco de código |
---|
language | java |
---|
theme | Midnight |
---|
title | Compensação Automática Taxa Contratada x Taxa Contratada |
---|
collapse | true |
---|
| #INCLUDE "TOTVS.ch"
#Include "PROTHEUS.ch"
#Include "PRTOPDEF.CH"
#INCLUDE "TBICONN.CH"
User FUNCTION COMPCR()
Local lRetOK := .T.
Local aArea := GetArea()
Local nTaxaCM := 0
Local aTxMoeda := {}
Local cCliente := "001 "
Local cLoja := "01"
Local cPrefixo := "TIT"
Local cNumDoc := '00001 '
Local cParcela := " "
Local cTipoDoc := "RA "
Private nRecnoNDF
Private nRecnoE1
dbSelectArea("SE1")
dbSetOrder(2) // E1_FILIAL, E1_CLIENTE, E1_LOJA, E1_PREFIXO, E1_NUM, E1_PARCELA, E1_TIPO, R_E_C_N_O_, D_E_L_E_T_
IF dbSeek(XFILIAL("SE1") + cCliente + cLoja + cPrefixo + cNumDoc + cParcela + cTipoDoc)
nRecnoRA := RECNO()
cTipoDoc := "NF"
IF dbSeek(XFILIAL("SE1") + cCliente + cLoja + cPrefixo + cNumDoc + cParcela + cTipoDoc)
nRecnoE1 := RECNO()
PERGUNTE("AFI340",.F.)
lContabiliza := .F.
lAglutina := .F.
lDigita := .F.
SE1->(dbSetOrder(1)) //E1_FILIAL+E1_PREFIXO+E1_NUM+E1_PARCELA+E1_TIPO+E1_FORNECE+E1_LOJA
aRecRA := { nRecnoRA }
aRecSE1 := { nRecnoE1 }
nSaldoComp := 2000 // Valor da compensacao em moeda forte
nTaxaCM := 2 // Taxa considerada na compensacao
aAdd(aTxMoeda, {SE1->E1_MOEDA, nTaxaCM} ) // Taxas das moedas utilizadas
If !MaIntBxCR(3, aRecSE1,,aRecRA,,{lContabiliza,lAglutina,lDigita,.F.,.F.,.F.},,,,,nSaldoComp,,,, nTaxaCM, aTxMoeda)
Help("XAFCMPAD",1,"HELP","XAFCMPAD","Não foi possível a compensação"+CRLF+" do titulo do adiantamento",1,0)
lRetOK := .F.
Else
Alert("Compensação realizada.")
ENDIF
ENDIF
ENDIF
RestArea(aArea)
Return lRetOK
|
|