Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

ÍNDICE

Índice
maxLevel2
minLevel2

01. 

...

VISIÓN GENERAL

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 FINA460FINA070


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
titleImportante

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.

Parâmetros da rotina

PosiçãoParâmetroTipoDescrição1nCasonumeric

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 (exemplo: NF ou boleto

Vector con los RECNOS de los títulos que se darán de baja (ejemplo: Factura o boleta).

3

aBaixa

array

Vetor com os dados da baixa simples do financeiro.

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

da Baixa

de la baja; [2] Valor

Recebido

cobrado; [3] Banco; [4]

Agência

Agencia; [5]

Conta

Cuenta; [6]

Data de Crédito

Fecha del crédito; [7]

Data da Baixa.4aNCC_RAarrayVetor com os RECNOs dos títulos de créditos a serem compensados (exemplo: RA ou NCC)5aLiquidacaoarray

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

[1] Prefixo; [2] Banco; [3] Agencia; [4] Conta; [5] Numero do Cheque; [6] Data Boa

; [7] Valor; [8] Tipo; [9]

Natureza

Modalidad; [10]

Moeda

Moneda; [14] Número

da liquidação (no caso de estorno)

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

Vetor com os parâmetros da rotina

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]

Aglutina Lançamentos Contábeis

Agrupa asientos contables; [3] Digita

lançamentos contábeis

asientos contables; [4] Juros para

Comissão

comisión; [5]

Desconto

Descuento para

Comissão

comisión; [6] Calcula

Comissão

comisión.

7

NIL

NIL

Parâmetro

Parámetro interno.

8

aEstorno

array

Para compensação

Informar el vector si desea realizar la reversión del movimiento.

Si la situación 1 fuera definida para compensación (nCaso = 3)

Vetor com o

:

·         Vector con el campo E5_DOCUMEN referente

à movimentação

al movimiento de

compensação

compensación que se

deseja estornar, podendo a sequência ser passada opcionalmente. Caso a sequência não seja informada, todas as compensação relativas aos documentos informados serão estornadas. Exemplo

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}}

ou

o {{cDocumen}}

Para liquidação

Si la situación 1 fuera definida para liquidación (nCaso = 2):)

Sequencia

·         Secuencia de

baixa que será estornada no título de mesma posição do

baja que se revertirá en el título de igual posición que la de aRecnoNF.

9

NIL

NIL

Parâmetro

Parámetro interno.

10

NIL

NIL

Parâmetro

Parámetro interno.

11

nSaldoComp

numeric

Valor

a

por compensar - Informe

o

el valor que

deseja

desea compensar. Este valor

deve

debe ser menor

ou

o igual

ao

al saldo

do

del título

e maior

y mayor que

zero

cero. Para

compensação

compensación total, informar NIL.

12

aCpoUser

array

Vetor com os

Vector con los campos de

usuário para gravação da liquidação.

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

13aNCC_RAvlrarrayParâmetro

interno.

14

nSomaCheq

numeric

Parâmetro

Parámetro interno.

15

nTaxaCM

numeric

Taxa

Tasa para

correção monetária

corrección monetaria.

16

aTxMoeda

array

Vetor  com as taxas das moedas

Vector con las tasas de las monedas existentes.

[1]

Moeda

Moneda; [2]

Taxa da Moeda;

Tasa de la moneda.

17

lConsdAbat

logical

Variável logica para consideração dos abatimentos.

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

Parámetro interno.

19

NIL

NIL

Parâmetro

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
titleCompensación automática - Ejecución automática vs. manual (FINA330)
  • La compensación automática por medio de MaIntBxCr en su concepción no utilizaba las reglas y validaciones de la rutina deCompensación de títulos por cobrar (FINA330)De esta manera, algunos tratamientos son diferentes de acuerdo con el uso de la rutina.
    • Con la creación del parámetro MV_CMP330, al activarlo, se activan algunas funcionalidades de la rutina FINA330 para que la ejecución automática se aproxime de tratamientos y validaciones de la rutina manual. Por ejemplo, el cálculo de los impuestos no se realizan en el modelo nativo de MaIntBxCr, pero puede configurarse por medio del parámetro MV_CMP330 para que la ejecución automática realice la generación de los impuestos vinculados al título compensado.
  • La rutina de compensación manual (FINA330) permite que la fecha de la compensación/baja sea determinada por el usuario en pantalla. Para la ejecución automática (MaIntBxCr) no hay un parámetro de la rutina para especificar la fecha de compensación. Por lo tanto, para determinar la fecha, debe manejarse el contenido de la variable global dDataBase.
Informações
titleUso 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:

  • Por medio del parámetro MV_CMPDEVV es posible configurar para que en facturas de devolución de venta (total o parcial), el título de crédito (tipo NCC) se compense automáticamente.
    • La configuración del parámetro MV_CHECKNF determina si la situación de la cartera del título por cobrar debe considerarse en la compensación automática.
    • Si fuera necesario que la compensación automática no se realice en determinados casos, puede utilizarse el punto de entrada MT103BXCRpara indicar la regla deseada.
    • La rutina tentará compensar la NCC con el título referente a la factura de salida devuelta, pero si el título del cuentas por cobrar estuviera dado de baja, el sistema dejará la NCC pendiente para posterior compensación manual por medio de la rutina Compensación de títulos por cobrar (FINA330);
    • Si la devolución fuera parcial e involucrando ítems/productos de varias facturas emitidas (Documento de salida), la compensación automática no evalúa la proporcionalidad devuelta de cada Factura y sí el total devuelto vs. Facturas vinculadas en la devolución. Por lo tanto, el sistema considerará el total de la NCC y realizará la compensación con la primera Factura, mientras hubiera saldo disponible. Solamente se realizará la compensación con las otras Facturas, si el saldo de la primera Factura se pusiera en cero.


02. EJEMPLOS DE UTILIZACIÓN

...


Bloco de código
languagejava
themeMidnight
firstline1
titleExemplo Ejemplo #01 - Rotina Rutina automática para compensaçãocompensación
linenumberstrue
#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
languagejava
themeMidnight
firstline1
titleExemplo Ejemplo #02 - Rotina Rutina automática para compensação ou estornocompensación o reversión
linenumberstrue
collapsetrue
#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

  


03. 

...

PARÁMETROS APLICABLES

04.

...

PUNTOS DE ENTRADA