Á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
#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
    Pergunta Descrição  Default
    MV_BX10925 Define momento do tratamento da retenção dos impostos Pis Cofins e Csll  1 = Na Baixa ou 2 = Na Emissão   1
    MV_BP10925 Define se deve considerar no valor de pagamento, o valor bruto da baixa parcial ou o valor liquido considerando os impostos.(1=Vl Bruto/2=Vl Liquido) 1
    MV_CC10925 Configura o calculo e retenção de PCC na Compensação entre carteiras. 1. (Padrão) Não Calcula PCC,  2. Calcula PCC no pagar, 3. Calcula PCC pagar e receber 1
    MV_NUMCOMP Numeração sequencial para Compensação entre carteiras.   000000
    MV_CTLIPAG Controla as baixas a pagar através da data de liberação preenchida, caso .T. o sistema verifica se o campo E2_DATALIB preenchido, caso contrário não controla  F
    MV_VLMINPG Valor mínimo para executar a baixa do título, mesmo que o campo E2_DATALIB não esteja preenchido e o parâmetro MV_CTLIPAG seja .T.   0
    MV_JURTIPO Os juros dos títulos a receber poderão ser : (S)imples, somente (C)omposto ou (M)isto = Simples ate 30 dias de atraso e posteriormente Composto.   M
    MV_LJINTFS Indica integração com Financial Services. .F.
    MV_JURXFIN Habilita a integração entre os módulos SIGAFIN - Financeiro e SIGAPFS - Jurídico - Padrão desabilitado.   .F.
    MV_CTBFLAG Indica se a marcação dos flags de contabilização das rotinas será feita na transação do lançamento contábil                     .F.


    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



      Procedimentos

      Para realizar um cancelamento de compensação entre carteiras:

      1. Ter uma compensação entre carteiras.
      2. No browse da compensação entre carteiras, pressione a tecla (F12) para realizar a configuração dos parâmetros da rotina.
      3. Configure os parâmetros e confirme.
      4. Posicionar sobre o titulo que foi compensado e selecionar a opção Cancelar.

      5. Pressione o botão OK


      Importante

      A operação de cancelamento da compensação entre carteiras é feita com base nas tabelas FK1 e FK2 utilizando o campo IDPROC para localizar os registros que foram compensados,

      é imprescindível a integridade dessas tabelas para essa operação

      Importante

      Ao tentar efetuar o cancelamento de compensação no valor do acréscimo com saldo do título zerado, será exibido um help informando que é necessário cancelar ou estornar outro processo de compensação antes.


      Importante

      Os usuários que não tenham permissões de edição de registros de outras filiais no browse (Permissão 115), não poderão cancelar ou estornar registros que a origem da compensação difiram da filial logada. Ou seja, se a compensação originou de outra filial, pode ser que os registros da baixa não sejam encontrados para o estorno.


      A mensagem apresentada conforme imagem abaixo é apenas informativa, ou seja, caso os títulos envolvidos no processo de compensação estejam dentro das regras estabelecidas em relação a compartilhamento e permissões de acesso, o cancelamento/estorno irá ocorrer normalmente após apresentar o help A450PERM.

      Procedimentos

      Para realizar um estorno entre carteiras:

      1. Ter uma compensação entre carteiras.
      2. No browse da compensação entre carteiras, pressione a tecla (F12) para realizar a configuração dos parâmetros da rotina.
      3. Configure os parâmetros e confirme.
      4. Posicionar sobre o titulo que foi compensado e selecionar a opção Estornar.

      5. Pressione o botão OK


      Importante

      A operação de estorno da compensação entre carteiras é feita com base nas tabelas FK1 e FK2 utilizando o campo IDPROC para localizar os registros que foram compensados, é imprescindível a integridade dessas tabelas para essa operação.

      Importante

      Ao tentar efetuar o estorno de compensação no valor do acréscimo com saldo do título zerado, será exibido um help informando que é necessário cancelar ou estornar outro processo de compensação antes.


      Importante

      Os usuários que não tenham permissões de edição de registros de outras filiais no browse (Permissão 115), não poderão cancelar ou estornar registros que a origem da compensação difiram da filial logada. Ou seja, se a compensação originou de outra filial, pode ser que os registros da baixa não sejam encontrados para o estorno.


      A mensagem apresentada conforme imagem abaixo é apenas informativa, ou seja, caso os títulos envolvidos no processo de compensação estejam dentro das regras estabelecidas em relação a compartilhamento e permissões de acesso, o cancelamento/estorno irá ocorrer normalmente após apresentar o help A450PERM.

      A rotina Compensação Entre Carteiras realiza a retenção de PIS, Cofins e CSLL quando a empresa que utiliza o Protheus efetua a retenção desses impostos, pois é possível controlar a retenção através da geração dos títulos do tipo 'TX'.


      Importante

      A rotina de compensação entre carteiras passa a efetuar a retenção dos impostos de PIS, Cofins e CSLL tanto para o contas a pagar quanto o contas a receber, a partir de fontes com versão superior a dezembro de 2021. 


      Para realizar a retenção dos impostos PIS , COFINS e CSLL na rotina Compensação entre Carteiras é necessário configurar os parâmetros conforme abaixo:

      MV_BX10925 = 1 (retenção do PCC na baixa)
      MV_BR10925 = 1 (retenção do PCC na baixa)
      MV_CC10925 = 2 ou 3 (habilita a retenção do PCC na compensação entre carteiras)
      MV_BP10925 = 1 ou 2 (Líquido ou Bruto)
      MV_BQ10925 = 1 ou 2 (Líquido ou Bruto)

      Para a correta retenção dos impostos PIS , COFINS e CSLL na Compensação entre Carteiras, os parâmetros MV_BP10925 e MV_BQ10925 devem estar com o conteúdo coerente (Líquido ou Bruto para ambos). Do contrário, o sistema irá apresentar a mensagem abaixo:

      Outro ponto referente a configuração dos parâmetros MV_BP10925 e MV_BQ10925, na tela de seleção de títulos que serão compensados, os títulos serão apresentados sempre com o seu valor liquido independente de suas configurações. Estes parâmetros impactam os cálculos e gravações que envolvem as compensações parciais.


      Informações

      • Para a retenção do PCC dos Títulos a Pagar na rotina Compensação entre Carteiras é necessária a utilização do parâmetro MV_BX10925 = 1 (na baixa).
      • Essa implementação abrange somente a retenção de PCC, não contempla IR e ISS.
      • Caso o valor do título a receber seja menor que o valor líquido do título a pagar, o PCC será calculado sobre o valor compensado (valor do título a receber).

      A rotina Compensação Entre Carteiras realiza a retenção de IR na baixa tanto para título a pagar quanto para títulos a receber .


      Importante

      A rotina de compensação entre carteiras passa a efetuar a retenção de IR na baixa contemplando cumulatividade tanto para o contas a pagar quanto o contas a receber, a partir de fontes com versão superior a dezembro de 2021. 


      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