Histórico da Página
CONTEÚDO
Índice | ||||
---|---|---|---|---|
|
01. VISÃO GERAL
O uso da função MaIntBxCr() deve ser utilizado para realizar compensações de contas a receber de forma automática.
Por meio dessa função, é possível realizar a compensação automática entre dois títulos a receber (NF x Adiantamento).
...
compensações automáticas envolvendo as notas fiscais com os títulos de adiantamento (tipo RA) ou de devoluções (tipo NCC).
Informações |
---|
Esse recurso também foi previsto para realizar liquidações e baixas de títulos a receber, porém recomendamos que para novos recursos sejam usadas as rotinas automáticas do FINA460 e FINA070. |
Parâmetros da rotina
Posição | Parâmetro | Tipo | Descrição | |||||
---|---|---|---|---|---|---|---|---|
1 | nCaso | numeric | Código da operação a ser efetuada (numérico).), devendo ser uma das opções (1, 2 ou 3): [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 (exemplo: NF ou boleto). | |||||
3 | aBaixa | array | Vetor com os dados da baixa simples do financeiro. Segue abaixo o que deve ser informado em cada posição do vetor: [[1] Motivo da Baixa; [2] Valor Recebido; [3] Banco; [4] Agência; [5] Conta; [6] Data de Crédito; [7] Data da Baixa. *Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[1] Baixa simples do financeiro". | |||||
4 | aNCC_RA | array | Vetor com os RECNOs dos títulos de créditos a serem compensados | .(exemplo: RA ou NCC) *Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[3] Compensação de títulos de mesma carteira (RA/NCC)". | ||||
5 | aLiquidacao | array | Vetor com | 5 | aLiquidacao | array | Vetor comos dados da liquidação do financeiro. Segue abaixo o que deve ser informado em cada posição do vetor: [1] Prefixo; [2] Banco; [3] Agencia; [4] Conta; [5] Numero do Cheque; [6] Data Boa; [7] Valor; [8] Tipo; [9] Natureza; [10] Moeda | .; [14] Número da liquidação (no caso de estorno) *Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[2] Liquidação de títulos". |
6 | aParam | array | Vetor com os parâmetros da rotina. Segue abaixo o que deve ser informado em cada posição do vetor: | 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 campoInformar o vetor caso deseje realizar o estorno da movimentação. Quando a posição 1 for definida para compensação (nCaso = 3):
| se
Quando a posição 1 for definida para liquidação (nCaso = 2):)
| ||||
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. *Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[2] Liquidação de títulos". | |||||
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
considerar os abatimentos. *Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[3] Compensação de títulos de mesma carteira (RA/NCC)". | |||
18 | NIL | NIL | Parâmetro interno. |
19 | NIL | NIL | Parâmetro interno. |
20 | lResidual | logical | Indica se o saldo do título será zerado caso atinja um valor menor que a margem de valor residual. O Default deste parâmetro é .T. (zera o saldo) *Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[3] Compensação de títulos de mesma carteira (RA/NCC)". |
Informações | ||
---|---|---|
| ||
|
Informações | ||
---|---|---|
| ||
A função MaIntBxCr() também é utilizada em rotinas padrão do sistema, como por exemplo no Documento de Entrada (MATA103), que a utiliza para efetivar compensações automáticas:
|
02. EXEMPLOS DE UTILIZAÇÃO
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 CmpAutCRUSER FUNCTION CmpAutCR() Local lRetOK Local lRetOK := .T. Local aArea Local aArea := GetArea GetArea() Local nTaxaCM Local nTaxaCM := 5 5.2322 Local aTxMoeda 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 {} Local nSaldoComp:= 1000.00 *nTaxaCM // Valor a ser compensado (Caso seja parcial Pode ser parcial) - Compensar apenas R$ 50,00 Local dDtComp := CTOD(" / / ") Private nRecnoNDF Private nRecnoE1 PREPARE ENVIRONMENT EMPRESA "TI" FILIAL "D MG 01 " MODULO "FIN" TABLES "SE2TI0","SE5TI0","SA6TI0","SEDTI0" Conout("----Inicio da Rotina AutomaticaInicio da Rotina Automatica!------") dbSelectArea("SE1") dbSetOrder(2) // E1 E1_FILIAL, E1 E1_CLIENTE, E1 E1_LOJA, E1 E1_PREFIXO, E1 E1_NUM, E1 E1_PARCELA, E1 E1_TIPO, R R_E_C_N_O_, D D_E_L_E_T_ IF dbSeek IF dbSeek(XFILIAL("SE1")+"000000"+"00"+"331"+"RA0001 "+" "+"RA ") nRecnoRA := RECNO()RA ") nRecnoRA := RECNO() dDtComp := SE1->E1_EMISSAO 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 } */ //Data a ser considerada na compensação dDataBase := dDtComp 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 |
03. PARÂMETROS APLICÁVEIS
04. PONTOS DE ENTRADA
...