Árvore de páginas

Versões comparadas

Chave

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

...

Índice
maxLevel2
minLevel2

01. VISÃO GERAL

Para execução automática da compensação de contas a receber, é necessário o O uso da função MaIntBxCr() deve ser utilizado para realizar compensações de contas a receber de forma automática.

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 automática 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 parâmetro MV_CMP330  para que a execução automática acione a rotina Compensação CR(FINA330) onde será efetuado os mesmos tratamentos e validações da rotina manual.

Parâmetros da rotina

compensações automáticas envolvendo as notas fiscais com os títulos de adiantamento (tipo RA) ou de devoluções (tipo NCC).

Informações

Esse recurso também foi previsto para realizar liquidações e baixas de títulos a receber, porém recomendamos que para novos recursos sejam usadas as rotinas automáticas do FINA460 e FINA070

Parâmetros da rotina

PosiçãoParâmetroTipoDescrição
1nCasonumeric

Código da operação a ser efetuada (numérico), devendo ser uma das opções (1, 2 ou 3):

[1] Baixa simples do financeiro; [2] Liquidação de títulos; [3] Compensação de títulos de mesma carteira (RA/NCC).

2aSE1arrayVetor com
PosiçãoParâmetroTipoDescrição
1nCasonumeric

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).

2aSE1arrayVetor com os RECNOs dos títulos a serem baixados (exemplo: NF ou boleto).
3aBaixaarray

Vetor com os dados da baixa simples do financeiro. Segue abaixo o que deve ser informado em cada posição do vetor:

[[1] Motivo da Baixa; [2] Valor Recebido; [3] Banco; [4] Agência; [5] Conta; [6] Data de Crédito; [7] Data da Baixa.

*Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[1] Baixa simples do financeiro". 

4aNCC_RAarray

Vetor com os RECNOs dos títulos de créditos a serem compensados (exemplo: RA ou NCC)

*Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[3] Compensação de títulos de mesma carteira (RA/NCC)". 

5aLiquidacaoarray

Vetor com os dados

5aLiquidacaoarray

Vetor  com os dados da liquidação do financeiro. Segue abaixo o que deve ser informado em cada posição do vetor:

[1] Prefixo; [2] Banco; [3] Agencia; [4] Conta; [5] Numero do Cheque; [6] Data Boa; [7] Valor; [8] Tipo; [9] Natureza; [10] Moeda; [14] Número da liquidação (no caso de estorno)

*Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[2] Liquidação de títulos". 

6aParamarray

Vetor com

6aParamarray

Vetor com os parâmetros da rotina. Segue abaixo o que deve ser informado em cada posição do vetor:

[1] Contabiliza On-Line; [2] Aglutina Lançamentos Contábeis; [3] Digita lançamentos contábeis; [4] Juros para Comissão; [5] Desconto para Comissão; [6] Calcula Comissão.

7NILNILParâmetro interno.
8aEstornoarray

Informar o vetor caso deseje realizar o estorno da movimentação.

Quando a posição 1 for definida para compensação (nCaso = 3):

  • Vetor com o campo E5_

Para compensação (nCaso = 3)

Vetor com o campo E5_
  • DOCUMEN referente à movimentação de compensação 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: {{{cDocumen}, cSeq}} ou {{cDocumen}}

Para Quando a posição 1 for definida para liquidação (nCaso = 2):)

  • Sequencia de baixa que será estornada no título de mesma posição do aRecnoNF.
9NILNILParâmetro interno.
10NILNILParâmetro interno.
11nSaldoCompnumericValor a compensar - Informe o valor que deseja compensar. Este valor deve ser menor ou igual ao saldo do título e maior que zero. Para compensação total, informar NIL.
Em caso de títulos em moeda estrangeira, enviar o valor em moeda corrente.
12aCpoUserarray

Vetor com os campos de usuário para gravação da liquidação.

*Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[2] Liquidação de títulos". 

13aNCC_RAvlr13aNCC_RAvlrarrayParâmetro interno.
14nSomaCheqnumericParâmetro interno.
15nTaxaCMnumericTaxa para correção monetária.
16aTxMoedaarray

Vetor  com as taxas das moedas existentes.

[1] Moeda; [2] Taxa da Moeda;

17lConsdAbatlogical

Variável logica para

consideração dos abatimentos.
18NILNILParâmetro interno.

considerar os abatimentos.

*Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[3] Compensação de títulos de mesma carteira (RA/NCC)". 

18NILNILParâmetro interno.
19NILNIL19NILNILParâmetro interno.
20lResiduallogical

Indica se o saldo do título será zerado caso atinja um valor menor que a margem de valor residual. O Default deste parâmetro é .T. (zera o saldo)

*Essa posição só deve ser informada quando a posição 1 (nCaso) for definida como "[3] Compensação de títulos de mesma carteira (RA/NCC)". 

Informações
titleCompensação Automática - Execução automática X manual (FINA330)
  • A compensação automática através da MaIntBxCr em sua concepção não fazia uso das regras e validações da rotina de Compensação de Títulos a Receber (FINA330)Sendo assim, alguns tratamentos são diferentes de acordo com o uso da rotina.
    • Com a criação do parâmetro MV_CMP330, ao ativa-lo, são acionas algumas funcionalidades da rotina FINA330 para que a execução automática se aproxime de tratamentos e validações da rotina manual. Por exemplo, o calculo dos impostos não são realizados no modelo nativo da MaIntBxCr, mas pode ser configurado através do parâmetro MV_CMP330 para que a execução automática faça a geração dos impostos atrelados ao título compensado.
  • A rotina de compensação manual (FINA330) possibilita que a data da compensação/baixa seja determinada pelo usuário em tela. Já para a execução automática (MaIntBxCr) não há um parâmetro da rotina para especificar a data de compensação. Portanto, para determinar a data, deve ser manipulado o conteúdo da variável global dDataBase;
Informações
titleUso da MaIntBxCr em rotinas padronizadas

A função MaIntBxCr() também é utilizada em rotinas padrão do sistema, como por exemplo no Documento de Entrada (MATA103), que a utiliza para efetivar compensações automáticas:

  • Através do parâmetro MV_CMPDEVV é possível configurar para que em notas fiscais de devolução venda (total ou parcial), o título de crédito (tipo NCC) seja compensado automaticamente.
    • A configuração do parâmetro MV_CHECKNF determina se a situação de carteira do título a receber deve ser considerada na compensação automática;
    • Caso seja necessário que a compensação automática não seja realizada em determinados casos, pode ser usado o ponto de entrada MT103BXCR para indicar a regra desejada;
    • A rotina tentará compensar a NCC com o título referente a nota de saída devolvida, mas se o título do contas a receber já estiver baixado, o sistema deixará a NCC em aberto para posterior compensação manual através da rotina Compensação de Títulos a Receber (FINA330);
    • Caso a devolução seja parcial e envolvendo itens/produtos de várias notas faturadas (Documento de Saída), a compensação automática não avalia a proporcionalidade devolvida de cada NF e sim o total devolvido X NFs vinculadas na devolução. Portanto, o sistema irá considerar o total da NCC e irá realizar a compensação com a primeira NF, enquanto houver saldo disponivel. Só será realizada a compensação com as demais NFs, quando o saldo da primeira NF for zerado
Informações
titleImportante
Estes parâmetros são referente ao uso da rotina via MaIntBxCr(), caso o parâmetro MV_CMP330 esteja ativo, alguns tratamentos podem ser diferentes e estes parâmetros não surtiram efeitos no processamento
    • .

02. EXEMPLOS DE UTILIZAÇÃO

...

Bloco de código
languagejava
themeMidnight
firstline1
titleExemplo #01 - Rotina automática para compensação
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"


//-------------------------------------------------------------------
/*/ MaIntBxCr
Exemplo de compensação de títulos normais com adiantamentos - 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 nSaldoComp:= 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 
Local aTxMoeda := {}
Local nSaldoComp:= 1000.00 *nTaxaCM // Valor a ser compensado (Caso seja parcial Pode ser parcial) - Compensar apenas 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 da Rotina AutomaticaInicio da Rotina 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 ")
        nRecnoRA := RECNO()"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) // Mostra Lanc Contab ?
            lAglutina       := .F.

            /*
            ==> Utilizar esse trecho se quiser simular o botão Taxas da tela inicial do FINA330
			==> Verifique os parâmetros MV_CMP330 e MV_CMTXCON para tal.
            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 }
			*/

            //Data a ser considerada na compensação
            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ção"+CRLF+" do titulo de adiantamento",1,0)
                lRet := .F.
            ENDIF
        ENDIF
    ENDIF

    RestArea(aArea)

RESET ENVIRONMENT

Return lRet

...