Histórico da Página
...
Por meio dessa função, é possível realizar a compensação automática entre dois títulos a receber (NF x Adiantamento).
Parâmetros da rotina
Posição | Parâmetro | Tipo | Descrição |
---|---|---|---|
1 | nCaso | numeric | Código da operação a ser efetuada (numérico). [1] Baixa simples do financeiro; [2] Liquidação de títulos; [3] Compensação de títulos de mesma carteira (RA/NCC). |
2 | aSE1 | array | Vetor com os RECNOs dos títulos a serem baixados. |
3 | aBaixa | array | Vetor com os dados da baixa simples do financeiro. [1] Motivo da Baixa; [2] Valor Recebido; [3] Banco; [4] Agência; [5] Conta; [6] Data de Crédito; [7] Data da Baixa. |
4 | aNCC_RA | array | Vetor com os RECNOs dos títulos a serem compensados. |
5 | aLiquidacao | array | Vetor com os dados da liquidação do financeiro. [1] Prefixo; [2] Banco; [3] Agencia; [4] Conta; [5] Numero do Cheque; [6] Data Boa; [7] Valor; [8] Tipo; [9] Natureza; [10] Moeda. |
6 | aParam | array | Vetor com os parâmetros da rotina [1] Contabiliza On-Line; [2] Aglutina Lançamentos Contábeis; [3] Digita lançamentos contábeis; [4] Juros para Comissão; [5] Desconto para Comissão; [6] Calcula Comissão. |
7 | NIL | NIL | Parâmetro interno. |
8 | aEstorno | array | Vetor com o campo E5_DOCUMEN referente à movimentação de compensação que se deseja estornar, podendo a sequência se passada opcionalmente. Caso a sequência não seja informada, todas as compensação relativas aos documentos informados serão estornadas. Exemplo: {{{cDocumen}, cSeq}} ou {{cDocumen}} |
9 | NIL | NIL | Parâmetro interno. |
10 | NIL | NIL | Parâmetro interno. |
11 | nSaldoComp | numeric | Valor a compensar - Informe o valor que deseja compensar. Este valor deve ser menor ou igual ao saldo do título e maior que zero. Para compensação total, informar NIL. |
12 | aCpoUser | array | Vetor com os campos de usuário para gravação da liquidação. |
13 | aNCC_RAvlr | array | Parâmetro interno. |
14 | nSomaCheq | numeric | Parâmetro interno. |
15 | nTaxaCM | numeric | Taxa para correção monetária. |
16 | aTxMoeda | array | Vetor com as taxas das moedas existentes. [1] Moeda; [2] Taxa da Moeda; |
17 | lConsdAbat | logical | Variável logica para consideração dos abatimentos. |
18 | NIL | NIL | Parâmetro interno. |
19 | NIL | NIL | Parâmetro interno. |
02.
...
EXEMPLOS DE UTILIZAÇÃO
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" //------------------------------------------------------------------- /*/ MaIntBxCr Exemplo de compensação de títulos normais com adiantamentos - CR @since 27/07/2021 @version 1.0 /*/ //------------------------------------------------------------------- USER FUNCTION CmpAutCR() Local lRetOK := .T. Local aArea := GetArea() Local nTaxaCM := 5.2322 Local aTxMoeda := {} Local nSaldoComp:= 1000.00 *nTaxaCM // Valor a ser compensado (Caso seja parcial Pode ser parcial) - Compensar apenas R$ 50,00 Private nRecnoNDF Private nRecnoE1 PREPARE ENVIRONMENT EMPRESA "TI" FILIAL "D MG 01 " MODULO "FIN" TABLES "SE2TI0","SE5TI0","SA6TI0","SEDTI0" Conout("----Inicio da Rotina Automatica!------") 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")+"000000"+"00"+"331"+"RA0001 "+" "+"RA ") nRecnoRA := RECNO() IF dbSeek(XFILIAL("SE1")+"000000"+"00"+"331"+"000001 "+" "+"DP ") nRecnoE1 := RECNO() PERGUNTE("FIN330",.F.) lContabiliza := (MV_PAR09 == 1) // Contabiliza On Line ? lDigita := (MV_PAR07 == 1) // Mostra Lanc Contab ? lAglutina := .F. /* ==> Utilizar esse trecho se quiser simular o botão Taxas da tela inicial do FINA330 ==> Verifique os parâmetros MV_CMP330 e MV_CMTXCON para tal. nTaxaCM := RecMoeda(dDataBase,SE1->E1_MOEDA) aAdd(aTxMoeda, {1, 1} ) aAdd(aTxMoeda, {2, nTaxaCM} ) */ SE1->(dbSetOrder(1)) //E1_FILIAL+E1_PREFIXO+E1_NUM+E1_PARCELA+E1_TIPO+E1_FORNECE+E1_LOJA //NF X RA aRecRA := { nRecnoRA } aRecSE1 := { nRecnoE1 } /* //RA X NF aRecRA := { nRecnoE1 } aRecSE1 := { nRecnoRA } */ 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 de adiantamento",1,0) lRet := .F. ENDIF ENDIF ENDIF RestArea(aArea) RESET ENVIRONMENT Return lRet |
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
#INCLUDE "PROTHEUS.CH"
#include "tbiconn.ch"
user function xCmpCR()
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 aRecEst1 as array
local aTxMoeda as array
local cRecTit as character
local cRecCmp as character
local cJanela as character
local cCodCanc as character
local cValor as character
local cSeq as character
local lContabiliza as logical
local lAglutina as logical
local lDigita as logical
local lHelp as logical
local lConsdAbat as logical
local nSldComp as numeric
local nHdl as numeric
local nOperacao as numeric
local nTaxaCM as numeric
cJanela := "Compensação automática CR"
aPerg := {}
aRet := {}
aEstorno := {}
aRecTit := {}
aRecCmp := {}
aRecEst := {}
aRecEst1 := {}
aTxMoeda := {}
cSeq := cValor := cCodCanc := cRecTit := cRecCmp := replicate(" ",50)
nSldComp = 0
nHdl := 0
nOperacao := 0
nTaxaCM := 0
lHelp := .F.
lConsdAbat := .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.})
aAdd(aPerg,{1, 'Sequencia Est.', cRecCmp, "@", nil, nil, nil, 50, .F.})
if paramBox(aPerg, cJanela, aRet)
aAdd(aRecTit, val(aRet[1]))
cSeq := AllTrim(aRet[5])
if aRet[3] = "1"
aAdd(aRecCmp, val(aRet[2]))
else
aAdd(aRecEst, getDocumen(val(aRet[2])))
if cSeq = ""
aAdd(aEstorno, aRecEst)
else
aAdd(aEstorno, {aRecEst,cSeq})
endif
endif
if !Empty(AllTrim(aRet[4]))
nSldComp := val(aRet[4])
else
nSldComp := nil
endif
if MaIntBxCR(3, aRecTit, nil ,aRecCmp, nil,{lContabiliza,lAglutina,lDigita,.F.,.F.,.F.},nil,aEstorno,nil,nil,nSldComp,nil,nil,nil, nTaxaCM, aTxMoeda, lConsdAbat)
conOut("Processo concluido com exito.")
else
conOut("Processo nao concluido.")
endif
endif
conOut("FIM DA ROTINA AUTOMATICA")
RESET ENVIRONMENT
Return nil
static function getDocumen(nRecSe1 as numeric)
local cDocumen as character
default cDocumen := ""
SE1->(DbGoTo(nRecSe1))
If SE1->(Recno()) == nRecSe1
cDocumen := SE1->E1_PREFIXO + SE1->E1_NUM + SE1->E1_PARCELA + SE1->E1_TIPO + SE1->E1_LOJA
EndIf
return cDocumen
|