Árvore de páginas

Versões comparadas

Chave

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

...

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 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 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_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 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 qual a data da compensação/baixa deverá ser executada na compensação automática, deve ser manipulado o conteúdo da variável global dDataBase;

...

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 nSaldoCompLocal nSaldoComp:= 1000 1000.00 00 *nTaxaCM 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  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

...