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

...

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

Vetor  com os dados .Vetor com os parâmetros da rotinaVetor com o campo 13 consideração dos abatimentos.
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 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

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 os parâmetros da rotina. Segue abaixo o que deve ser informado em cada posição do vetor:

6aParamarray

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

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

18NILNILParâmetro interno.
19NILNILParâmetro interno.

02. EXEMPLOS DE UTILIZAÇÃO

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.
19NILNILParâ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.

02. EXEMPLOS DE UTILIZAÇÃO


Bloco de código
languagejava
themeMidnight
firstline1
titleExemplo #01 - Rotina automática para compensação
linenumberstrue
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 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 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

...