...
Índice | ||||
---|---|---|---|---|
|
...
El uso de la función MaIntBxCr() debe utilizarse para realizar compensaciones de cuentas por cobrar de forma automática.
Por medio de esta función es posible realizar compensaciones automáticas involucrando las facturas con los títulos de anticipo (tipo RA) o de devoluciones (tipo NCC).
Informações |
---|
Esse recurso también fue previsto para realizar liquidaciones y bajas de títulos por cobrar, sin embargo recomendamos que para nuevos recursos se utilicen las rutinas automáticas del FINA460 y FINA070. |
Parámetros de la rutina
Situación | Parámetro | Tipo | Descripción |
---|---|---|---|
1 | nCaso | numeric | Código de la operación que se efectuará (numérico), debiendo ser una de las opciones (1, 2 o 3): [1] Baja simple del financiero; [2] Liquidación de títulos; [3] Compensación de títulos de la misma cartera |
...
Para execução automática da compensação de contas a receber, é necessário o uso da função MaIntBxCr().
Por meio dessa função, é possível realizar a compensação automática entre dois títulos a receber (NF x Adiantamento).
Informações | ||
---|---|---|
| ||
Por padrão, a compensação automatica não faz uso das mesmas regras e validações da rotina de compensação CR(FINA330), sendo assim alguns tratamentos são diferentes de acordo com o uso da rotina, como por exemplo de impostos que não são realizados por padrão, mas pode ser configurado o parametro MV_CMP330 para que a execução automatica acione a rotina Compensação CR(FINA330) onde será efetuado os mesmos tratamentos e validações da rotina manual. |
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 |
Vector con los RECNOS de los títulos que se darán de baja (ejemplo: Factura o boleta). | ||
3 | aBaixa | array |
Vector con los datos de la baja simple del financiero. A continuación se muestra lo que debe informarse en cada situación del vector: [1] Motivo |
de la baja; [2] Valor |
cobrado; [3] Banco; [4] |
Agencia; [5] |
Cuenta; [6] |
Fecha del crédito; [7] |
Vetor com os dados da liquidação do financeiro.
Fecha de la baja. *Esta situación solamente debe informarse si la situación 1 (nCaso) fuera definida como "[1] Baja simple del financiero". | |||
4 | aNCC_RA | array | Vector con los RECNOS de los títulos de créditos que se compensarán (ejemplo: RA o NCC) *Esta situación solamente debe informarse si la situación 1 (nCaso) fuera definida como "[3] Compensación de títulos de la misma cartera (RA/NCC)". |
5 | aLiquidacao | array | Vector con los datos de la liquidación del financiero. A continuación se muestra lo que debe informarse en cada situación del vector: [1] Prefijo; [2] Banco; [3] Agencia; [4] Cuenta; [5] Número de cheque; [6] Fecha buena |
; [7] Valor; [8] Tipo; [9] |
Modalidad; [10] |
Moneda; [14] Número |
de la liquidación (en el caso de reversión) *Esta situación solamente debe informarse si la situación 1 (nCaso) fuera definida como "[2] Liquidación de títulos". | ||
6 | aParam | array |
Vector con los parámetros de la rutina. A continuación se muestra lo que debe informarse en cada situación del vector: [1] Contabiliza On-Line; [2] |
Agrupa asientos contables; [3] Digita |
asientos contables; [4] Juros para |
comisión; [5] |
Descuento para |
comisión; [6] Calcula |
comisión. | ||
7 | NIL | NIL |
Parámetro interno. | ||
8 | aEstorno | array |
Informar el vector si desea realizar la reversión del movimiento. Si la situación 1 fuera definida para compensación (nCaso = 3) |
: · Vector con el campo E5_DOCUMEN referente |
al movimiento de |
compensación que se |
desea revertir, pudiendo pasarse la secuencia opcionalmente. Si no se informara la secuencia, todas las compensaciones referentes a los documentos informados se revertirán. Ejemplo: {{{cDocumen}, cSeq}} |
o {{cDocumen}} |
Si la situación 1 fuera definida para liquidación (nCaso = 2):) |
· Secuencia de |
baja que se revertirá en el título de igual posición que la de aRecnoNF. | ||
9 | NIL | NIL |
Parámetro interno. | ||
10 | NIL | NIL |
Parámetro interno. | |||
11 | nSaldoComp | numeric | Valor |
por compensar - Informe |
el valor que |
desea compensar. Este valor |
debe ser menor |
o igual |
al saldo |
del título |
y mayor que |
cero. Para |
compensación total, informar NIL. | ||
12 | aCpoUser | array |
Vector con los campos de |
usuario para grabación de la liquidación. *Esta situación solamente debe informarse si la situación 1 (nCaso) fuera definida como "[2] Liquidación de títulos". | |||
13 | aNCC_RAvlr | array | Parámetro |
interno. | ||
14 | nSomaCheq | numeric |
Parámetro interno. | ||
15 | nTaxaCM | numeric |
Tasa para |
corrección monetaria. | ||
16 | aTxMoeda | array |
Vector con las tasas de las monedas existentes. [1] |
Moneda; [2] |
Tasa de la moneda. | ||
17 | lConsdAbat | logical |
Variable lógica para considerar los descuentos. *Esta situación solamente debe informarse si la situación 1 (nCaso) fuera definida como "[3] Compensación de títulos de la misma cartera (RA/NCC)". | ||
18 | NIL | NIL |
Parámetro interno. | ||
19 | NIL | NIL |
Parámetro interno. |
...
20 |
...
lResidual |
...
Estes parametros são referente ao uso da rotina via MaIntBxCr(), caso o parametro MV_CMP330 esteja ativo, alguns tratamentos podem ser diferentes e estes parametrôs não surtiram efeitos no processamento.
logical | Indica si el saldo del título se pondrá en cero si alcanza un valor menor que el margen de valor residual. El estándar de este parámetro es .T. (Pone en cero el saldo) *Esta situación solamente debe informarse si la situación 1 (nCaso) fuera definida como "[3] Compensación de títulos de la misma cartera (RA/NCC)". r4 |
Informações | ||
---|---|---|
| ||
|
Informações | ||
---|---|---|
| ||
La función MaIntBxCr() también se utiliza en rutinas estándar del sistema, como por ejemplo en el Documento de entrada (MATA103), que la utiliza para hacer efectiva compensaciones automáticas:
|
...
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" //------------------------------------------------------------------- /*/ MaIntBxCr ExemploEjemplo de compensaçãocompensación de títulos normaisnormales comcon adiantamentosanticipos - 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 nSaldoCompLocal nSaldoComp:= 1000 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 00 *nTaxaCM // Valor que se compensará (Si fuera parcial Puede ser parcial) - Compensar solamente 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 Conout("----Inicio da Rotina Automatica--¡Inicio de la rutina 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 RA ") nRecnoRA := RECNO() nRecnoRA := RECNO() dDtComp := SE1->E1_EMISSAO IF dbSeek(XFILIAL("SE1")+"000000"+"00"+"331"+"000001 "+" "+"DP ") nRecnoE1 := RECNO() PERGUNTE("FIN330",.F.) lContabiliza lContabiliza := (MV_PAR09 == 1) // Contabiliza On Line ¿Contabiliza On Line ? lDigita lDigita := (MV_PAR07 PAR07 == 1 1) // Mostra Lanc Contab ¿Muestra Asto Contab ? lAglutina := .F. /* ==> Utilizar esse trecho se quiser simular o botão Taxas da tela inicial do FINA330> Utilice este trecho si quiere simular la opción Tasas de la pantalla inicial del FINA330 ==> Verifique oslos parâmetrosparámetros MV_CMP330 ey MV_CMTXCON para talello. 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 } */:= { nRecnoE1 } aRecSE1 := { nRecnoRA } */ //Fecha que se considerará en la compensación 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çãoNo fue posible la compensación"+CRLF+" do titulo de adiantamento del título de anticipo",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çãoCompensación 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 DADE LA ROTINARUTINA 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 apor 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, 'SequenciaSecuencia EstRev.', 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("ProcessoProceso concluidofinalizado comcon exito.") else conOut("ProcessoProceso naono concluidofinalizado.") endif endif conOut("FIMFINAL DE DALA ROTINARUTINA 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 |
...
...