Árvore de páginas


Nota

Essa rotina foi ajustada para atender a Lei Geral de Proteção de Dados (Lei n° 13.70), sendo que alguns campos que apresentam informações consideradas como dados sensíveis e/ou pessoais, serão ofuscados deixando de ser legíveis.

01. VISÃO GERAL

Esta rotina permite que sejam executadas as compensações de títulos a pagar com títulos a receber, efetuando desta forma o encontro de contas entre o fornecedor e o cliente.

Os títulos a serem considerados nesse processo são:

  • Títulos de débito - exemplo:  NF (Nota Fiscal), BOL (boleto), etc.
  • Títulos de crédito - exemplo: PA (pagamento antecipado), RA (Recebimento antecipado) e títulos de devolução (NDF e NCC).

02. EXECUÇÃO

  • Manual

Procedimento efetuado de forma manual via rotina Compensação entre carteiras (FINA450), com exibição das telas envolvidas no processo e necessitando de ações/comandos do usuário.

  • Automática

Procedimento realizado de forma automática na rotina de Compensação entre carteiras (FINA450), sem exibição de telas ou necessidade de interação do usuário.

Utilizado em customizações onde o processo não necessita de interações do usuário (MSEXECAUTO)

Exemplo de rotina automática  Expandir origem
#include "rwmake.ch"
#include 'tbiconn.ch'
   
User Function Auto450()
    Local aAutoCab := {}
    Local aArea    := GetArea()
    Local cTabSe1  := "TMPSE1A"
    Local cTabSe2  := "TMPSE2A"
    Local aSE1450  := {}
    Local aSE2450  := {}
    Local aFilCmp  := {}
 
    Private lMsHelpAuto := .F.
    Private lMsErroAuto := .F.
 
    BeginSql Alias cTabSe1
        SELECT R_E_C_N_O_ as RECNO
            FROM %Table:SE1% SE1
            WHERE SE1.E1_FILIAL = 'D MG 01 '
                AND SE1.E1_PREFIXO = 'CPT'
                AND SE1.E1_NUM = 'VT001'
                AND SE1.E1_TIPO = 'NF'
                AND SE1.E1_CLIENTE = 'FIN001'
                AND SE1.E1_LOJA    = '01'
                AND SE1.%NotDel%
    EndSql
 
    While (cTabSe1)->(!EOF())
        SE1->(DbGoto((cTabSe1)->RECNO))
        AAdd(aSE1450, {SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO})
        If ascan(aFilCmp,SE1->E1_FILIAL) == 0
            Aadd(aFilCmp, SE1->E1_FILIAL)
        EndIf   
        (cTabSe1)->(DbSkip()) 
    Enddo
 
    (cTabSe1)->(DbCloseArea())
 
    BeginSql Alias cTabSe2
        SELECT R_E_C_N_O_ as RECNO
            FROM %Table:SE2% SE2
            WHERE SE2.E2_FILIAL = 'D MG 02 '
                AND SE2.E2_PREFIXO = 'CPT'
                AND SE2.E2_NUM = 'VT001'
                AND SE2.E2_TIPO = 'NF'
                AND SE2.E2_FORNECE = 'FIN001'
                AND SE2.E2_LOJA    = '01'
                AND SE2.%NotDel%
    EndSql
 
    While (cTabSe2)->(!EOF())
        SE2->(DbGoto((cTabSe2)->RECNO))
        AAdd(aSE2450, {SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2->E2_FORNECE+SE2->E2_LOJA})
        If ascan(aFilCmp,SE2->E2_FILIAL) == 0
            Aadd(aFilCmp, SE2->E2_FILIAL)
        EndIf   
        (cTabSe2)->(DbSkip()) 
    Enddo
     
    (cTabSe2)->(DbCloseArea())
 
    aAutoCab :={  {"AUTDVENINI450", cTod('27/08/19') , nil},;
                {"AUTDVENFIM450", cTod('27/08/19') , nil},;
                {"AUTNLIM450" ,8000, nil},;
                {"AUTCCLI450" , "FIN001" , nil},;
                {"AUTCLJCLI" , "01" , nil},;
                {"AUTCFOR450" , "FIN001" , nil},;
                {"AUTCLJFOR" , "01" , nil},;
                {"AUTCMOEDA450" , "01" , nil},;
                {"AUTNDEBCRED" , 1 , nil},;
                {"AUTLTITFUTURO", .F. , nil},;
                {"AUTARECCHAVE" ,aSE1450, nil},;
                {"AUTAPAGCHAVE" , aSE2450 , nil},;
                {"AUTAFILCOMP" , aFilCmp , nil}} //Parâmetro opcional, somente devera ser informado quando houver uma compensação multi-filiais 
 
    MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 )
 
    If !lMsErroAuto
        ConOut("Incluido com sucesso! ")
        confirmsx8()
    Else
        ConOut("Erro na inclusao!")
        rollbacksx8()
        MostraErro()
    EndIf
 
    RestArea(aArea)
Return

Observação

Importante:

  • Para que a compensação funcione entre filiais se faz necessário o uso do parâmetro AUTAFILCOMP, caso contrário não há a necessidade de informá-lo.
  • Caso as lojas de Cliente e Fornecedor sejam informadas sem conteúdo (vazias), o sistema considerará todas as lojas do mesmo código de cliente e fornecedor.  (Disponível a partir de 01/06/2023)


Para mais informações acesse a documentação da rotina automática.

Compensação entre carteiras automática  


03. OPERAÇÕES

  • Compensar

Operação que permite realizar a compensação entre carteiras pagar/receber. 


  • Cancelar

Operação que permite realizar o cancelamento do movimento gerado pela compensação.


  • Estorno 

Operação que permite realizar o estorno do movimento gerado pela compensação.


  • Legenda

Apresenta quadro das legendas e seus significados referenciados a situação do título a pagar.


  • Pesquisa

Pesquisa o título dentro do arquivo de contas a pagar, tendo como resultado o título posicionado e destacado na browse.


  • Visualizar

Operação que permite visualizar o título posicionado, podendo conferir seu saldo e valor.

04. PARÂMETROS APLICADOS

Lista de parâmetros aplicados ao FINA450 e seu processamento

Pergunta Descrição
Aglutina Lancto ? Informe a opção "Sim" para que os lançamentos contábeis gerados através da compensação sejam aglutinados em um único lançamento 
Mostra lançamentos ? Informe a opção "Sim" para que os lançamentos contábeis gerados através da compensação sejam exibidos em tela, ou "Não", caso contrário 
Comp. títulos transferidos ? Informe a opção "Sim" caso permita a compensação de títulos transferidos ao banco (Borderô) ou "Não", caso contrário
Seleciona Filiais ?  Se "Sim" irá aparecer a tela de seleção de filiais para o processo de compensação multi-filiais


05. PRINCIPAIS PROCESSOS


Procedimentos

Para realizar uma compensação entre carteiras:

  1. Ter um título a pagar disponível para compensação.
  2. Ter um título a receber disponível para compensação.
  3. No browse da compensação entre carteiras, pressione a tecla (F12) para realizar a configuração dos parâmetros da rotina
  4. Configure os parâmetros e confirme
  5. Em seguida, clique na opção Compensar, sera aberta a tela de parametrização

Obs: preencha nessa tela as informações referentes aos títulos dos passos 1 e 2.

6. Em seguida realize a marcação do títulos cadastrados no passo 1 e 2, selecione a opção Salvar no canto direito da tela.

 

Informações

A compensação entre carteiras utiliza uma numeração sequencial usando o parâmetro MV_NUMCOMP, que é controlada pelos campo IDENTEE nas tabelas SE1, SE2 e SE5, e o campo IDPROC nas tabelas FK1 e FK2




06. CONTABILIDADE

A contabilização dos processos aplicados a uma compensação contas a pagar via módulo Financeiro é feita pelos lançamentos padrões abaixo:

LP

Fato Gerador

ON

OFF (CTBAFIN)

535Cancelamento da Compensação de títulos a Pagar / a ReceberX
594Contas a Pagar/Receber - Compensação entre CarteirasX



07. TABELAS RELACIONADAS

  • SE2 - Cadastro do contas a pagar
  • SE1 - Cadastro do contas a receber
  • SE5 - Movimentação Bancária
  • SED - Cadastro de Naturezas
  • SA1 - Cadastro de Clientes
  • SA2 - Cadastro de Fornecedores
  • FK2 - Baixas a Pagar
  • FK1 - Baixas a receber
  • FK6 - Valores acessórios
  • FK7 - Tabela Auxiliar
  • FKA - Rastreio de movimento


08. PONTOS DE ENTRADA

Ponto de entradaObservação
F450BROW

Ponto de entrada que permite manipular o conteúdo dos campos, e quais campos irão compor o browser na rotina de compensação entre carteiras.

Documentação: https://tdn.totvs.com/x/p6Rc

lFA450BU

O ponto de entrada lFA450BU permite o cliente fazer a inclusão de um botão.

Documentação: https://tdn.totvs.com/x/E6Vc

F450ValCon

O ponto de entrada F450ValCon, permite a validação dos dados referentes aos títulos selecionados e controla a confirmação do processo de compensação, na rotina de Compensação de Carteiras. Executado na função FA450CMP().

Documentação: https://tdn.totvs.com/x/haVc

F450SE5

O ponto de entrada F450SE5 é executado após a compensação de todos os títulos selecionados na tela.

Documentação: https://tdn.totvs.com/x/GqNc

F450OWN

 Monta expressão de filtro do arquivo SE1 na IndRegua. 

Documentação: https://tdn.totvs.com/x/FqNc

F450FIL

Realiza customização do filtro da IndRegua 

Documentação: https://tdn.totvs.com/x/nwtRCg

F450OWN1

Monta expressão de filtro do arquivo SE2 na IndRegua. 

Documentação: https://tdn.totvs.com/x/9GASCw

F450FIL1

Realiza customização do filtro da IndRegua 

Documentação: https://tdn.totvs.com/x/ogtRCg

F450ORDEM


F450GRAVA

Permite manipular os dados da tabela temporária responsável pela compensação.

Documentação: https://tdn.totvs.com/x/k422C

F450Conf

O ponto de entrada F450CONF tem como finalidade validar a marcação do título para compensação.

Documentação: https://tdn.totvs.com/x/FaNc

F450valid

Ponto de entrada permite a validação de informações da tela de compensação.

Documentação: https://tdn.totvs.com/x/iaVc

F450CAES

O ponto de entrada F450CAES é utilizado para validar ou executar algum procedimento após o usuário confirmar o Cancelamento/Estorno da compensação entre carteiras.

Documentação: https://tdn.totvs.com/x/FKNc

F450SE1C

O ponto de entrada F450SE1C sera utilizado para gravações complementares no arquivo SE1; não necessita retorno e não passa nenhum parâmetro.

Documentação: https://tdn.totvs.com/x/GKNc

F450SE2C

O ponto de entrada F450SE2C sera utilizado para gravacoes complementares no arquivo SE2; nao necessita retorno e nao passa nenhum parametro.

Documentação: https://tdn.totvs.com/x/GaNc

FA450BUT

O ponto de entrada FA450BUT será utilizado na inclusão de opções na barra de ferramentas. O retorno deverá ser o array dos botões.

Documentação: https://tdn.totvs.com/x/vaNc

FILEMOT

Ponto de entrada para leitura do arquivo de texto de motivos de baixa de contas a receber.

Documentação: https://tdn.totvs.com/x/IF1NDQ