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).
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 (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] 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 | 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 |
Compensación automática - Ejecución automática vs. manual (FINA330)
Uso de MaIntBxCr en rutinas estandarizadas
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:
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" //------------------------------------------------------------------- /*/ MaIntBxCr Ejemplo de compensación de títulos normales con anticipos - 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 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("----¡Inicio de la rutina 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() 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) // ¿Muestra Asto Contab ? lAglutina := .F. /* ==> Utilice este trecho si quiere simular la opción Tasas de la pantalla inicial del FINA330 ==> Verifique los parámetros MV_CMP330 y MV_CMTXCON para ello. 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 } */ //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","No fue posible la compensación"+CRLF+" del título de anticipo",1,0) lRet := .F. ENDIF ENDIF ENDIF RestArea(aArea) RESET ENVIRONMENT Return lRet