Versões comparadas

Chave

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

...

ÍNDICE

Índice
maxLevel2
minLevel2

01. 

...

VISIÓN GENERAL

Para 

...

Para execução automática da compensação de contas a receber, é necessário o uso da função ejecución automática de la compensación de cuentas por cobrar, es necesario el uso de la función MaIntBxCr().

Por meio dessa função, é possível realizar a compensação automática entre dois títulos a receber (NF x Adiantamento).medio de esta función, es posible realizar la compensación automática entre dos títulos por cobrar (Factura vs. Anticipo).


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 estándar, la compensación automática no utiliza las mismas reglas y validaciones de la rutina de compensación CR(FINA330), sendo assim alguns tratamentos são diferentes de acordo com o uso da rotina, de esta manera, algunos tratamientos son diferentes de acuerdo con el uso de la rutina, como por exemplo ejemplo de impostos que não são realizados por padrão, mas pode ser configurado o parametro impuestos que no se realizan por estándar, pero puede configurarse el parámetro 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

 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.


Parámetros de la rutina

DescriçãoVetor com os RECNOs dos a serem compensados (exemplo ou Vetor  com os dados da liquidação do financeiro Prefixo Conta Numero do Cheque Data Boa Natureza Moeda da liquidação (no estornoVetor com os parâmetros da rotina Aglutina Lançamentos Contábeis lançamentos contábeis Comissão Desconto Comissão ComissãoParâmetro compensação Vetor com o à movimentação compensação 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 ou liquidação Sequencia de baixa que será estornada no título de mesma posição do Parâmetro Parâmetro a o deseja deve ou ao do e maior zero compensação Vetor com os usuário para gravação da liquidaçãoParâmetro Parâmetro Taxa correção monetáriaVetor  com as taxas das moedas Moeda Taxa da Moeda;Variável logica para consideração dos abatimentosParâmetro Parâmetro

Posición

Parámetro

Tipo

Descripción

PosiçãoParâmetroTipo

1

nCaso

numeric

Código

da operação a ser efetuada

de la operación que se efectuará (numérico).

[1]

Baixa simples do financeiro

Baja simple del financiero; [2]

Liquidação

Liquidación de títulos; [3]

Compensação

Compensación de títulos de

mesma carteira

la misma cartera (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.

[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

Fecha de la baja.

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
titleImportante

Estes parametros são referente ao uso da rotina via Estos parámetros son referentes al uso de la rutina vía MaIntBxCr(), caso o parametro si el parámetro MV_CMP330 esteja ativo, alguns tratamentos podem ser diferentes e estes parametrôs não surtiram efeitos no processamentoestuviera activo, algunos tratamientos pueden ser diferentes y estos parámetros no surtirán efectos en el procesamiento.


02. EXEMPLOS DE UTILIZAÇÃO


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 00 *nTaxaCM nTaxaCM // Valor a ser compensado (Caso seja parcial Pode ser parcial) - Compensar apenas R$ 50 Valor que se compensará (Si fuera parcial Puede ser parcial) - Compensar solamente R$ 50,00

Private nRecnoNDF
Private nRecnoE1

PREPARE ENVIRONMENT EMPRESA Private nRecnoNDF
Private nRecnoE1

PREPARE ENVIRONMENT EMPRESA "TI" FILIAL "D MG 01 " MODULO  FILIAL "D MG 01 " MODULO "FIN" TABLES  TABLES "SE2TI0","SE5TI0","SA6TI0","SEDTI0"

    Conout("----Inicio da Rotina Automatica¡Inicio de la rutina automática!------")

    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         nRecnoRA := RECNO RECNO()
        IF dbSeek        IF dbSeek(XFILIAL("SE1")+"000000"+"00"+"331"+"000001   "+"  "+"DP DP ")
            nRecnoE1             nRecnoE1 := RECNO RECNO()

            PERGUNTE("FIN330",.F.)
            lContabiliza    :=  (MV_PAR09 PAR09 == 1) // Contabiliza On Line  1) // ¿Contabiliza On Line ?
            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
 .F.

            /*
            ==> 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             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 /NF X RA
            aRecRA :=  { nRecnoRA  nRecnoRA }
            aRecSE1             aRecSE1 :=  { nRecnoE1  nRecnoE1 }

			/*
            //RA X NF
            aRecRA RA X NF
            aRecRA :=  { nRecnoE1  nRecnoE1 }
            aRecSE1             aRecSE1 :=  { nRecnoRA  nRecnoRA }
			*/

            If             If !MaIntBxCR(3, aRecSE1 aRecSE1,,aRecRA,,{lContabiliza,lAglutinalAgrupa,lDigita,.F.,.F.,.F.},,,,,nSaldoComp,,,, nTaxaCM nTaxaCM, aTxMoeda 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                 lRet :=  .F.
            ENDIF
        ENDIF
    ENDIF

    RestArea(aArea)

RESET ENVIRONMENTRESET ENVIRONMENT

Return lRetReturn 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 " MODULOMÓDULO "FINFINAL"
        conOut("INICIO DADE LA ROTINARUTINA AUTOMATICAAUTOMÁTICA")

        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çãoCompensación","2=EstornoReversión"}, 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("ProcessoProceso concluidofinalizado comcon exitoéxito.")
            else
                conOut("Processo naono concluidofinalizado.")            
            endif
        endif

        conOut("FIMFINAL DE DALA ROTINARUTINA AUTOMATICAAUTOMÁTICA")
    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