...
Índice | ||||
---|---|---|---|---|
|
Para ejecución automática de la compensación de cuentas por cobrar, es necesario el 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 | ||
---|---|---|
| ||
Por estándar, la compensación automática no utiliza las mismas reglas y validaciones de la rutina de compensación CR(FINA330), de esta manera, algunos tratamientos son diferentes de acuerdo con el uso de la rutina, como por ejemplo de impuestos que no se realizan por estándar, pero puede configurarse el parámetro MV_CMP330 para que la ejecución automática active la rutina Compensación CR(FINA330) donde se efectuarán los mismos tratamientos y validaciones de la rutina manual. |
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 (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 |
Posición
Parámetro
Tipo
Descripción
1
nCaso
numeric
Código de la operación que se efectuará (numérico).
[1] Baja simple del financiero; [2] Liquidación de títulos; [3] Compensación de títulos de la misma cartera (RA/NCC).
2
array | Vector con los RECNOS de los títulos de créditos que se |
compensarán (ejemplo: |
3
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] |
4
aNCC_RA
array
Vector con los RECNOS de los títulos de créditos que se compensarán (ejemplo: RA o NCC)
5
aLiquidacao
array
Vector con los datos de la liquidación del financiero.
[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)
6
aParam
array
Vector con los parámetros de la rutina
[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
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}}
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.
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 consideración de los descuentos.
18
NIL
NIL
Parámetro interno.
19
NIL
NIL
Parámetro interno.
Informações | ||
---|---|---|
| ||
Estos parámetros son referentes al uso de la rutina vía MaIntBxCr(), si el parámetro MV_CMP330 estuviera activo, algunos tratamientos pueden ser diferentes y estos parámetros no surtirán efectos en el procesamiento. |
...
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 |
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 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 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 de la rutina automáticaautomatica!------") 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 dDtComp := SE1->E1_EMISSAO IF dbSeek(XFILIAL("SE1")+"000000"+"00"+"331"+"000001 "+" "+"DP DP ") nRecnoE1 nRecnoE1 := RECNO RECNO() PERGUNTE("FIN330",.F.) lContabiliza lContabiliza := (MV_PAR09 PAR09 == 1 1) // ¿Contabiliza On Line ¿Contabiliza On Line ? lDigita lDigita := (MV_PAR07 == 1) // ¿Muestra Asto. Contab ? lAglutina := .F. /* ==> Utilice> 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 nTaxaCM := RecMoeda RecMoeda(dDataBase,SE1->E1_MOEDA) aAdd(aTxMoeda, {1, 1 1} ) aAdd(aTxMoeda, {2, nTaxaCM 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 } NF X RA aRecRA := { nRecnoRA } aRecSE1 := { nRecnoE1 } /* //RA X NF aRecRA := { nRecnoE1 } aRecSE1 := { nRecnoRA } */* //RA X NF aRecRA := { nRecnoE1 } aRecSE1 := { nRecnoRA } */ If //Fecha que se considerará en la compensación dDataBase := dDtComp If !MaIntBxCR(3, aRecSE1 aRecSE1,,aRecRA,,{lContabiliza,lAgrupalAglutina,lDigita,.F.,.F.,.F.},,,,,nSaldoComp,,,, nTaxaCM nTaxaCM, aTxMoeda aTxMoeda) Help("XAFCMPAD",1,"HELP","XAFCMPAD","No fue posible la compensación"+CRLF+" del título de anticipo",1,0) lRet lRet := .F. ENDIF ENDIF ENDIF RestArea(aArea) RESET ENVIRONMENTRESET ENVIRONMENT Return lRetReturn 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 := "Compensació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 " MÓDULOMODULO "FINALFIN" conOut("INICIO DE LA RUTINA AUTOMÁTICAAUTOMATICA") 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 por compensar', cRecCmp, "@", nil, nil, nil, 50, .T.}) aAdd(aPerg,{2, 'Comp/Est?', "1", {"1=CompensaciónCompensação","2=ReversiónEstorno"}, 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("Proceso finalizado con éxitoexito.") else conOut("ProcessoProceso no finalizado.") endif endif conOut("FINAL DE LA RUTINA AUTOMÁTICAAUTOMATICA") 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 |