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:

02. EXECUÇÃO

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.

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)

#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

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

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


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


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


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


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


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

PerguntaDescriçã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
PerguntaDescrição Default
MV_BX10925Define momento do tratamento da retenção dos impostos Pis Cofins e Csll  1 = Na Baixa ou 2 = Na Emissão  1
MV_BP10925Define 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_CC10925Configura 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 receber1
MV_NUMCOMPNumeração sequencial para Compensação entre carteiras.  000000
MV_CTLIPAGControla 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_VLMINPGValor 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_JURTIPOOs 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_LJINTFSIndica integração com Financial Services..F.
MV_JURXFINHabilita a integração entre os módulos SIGAFIN - Financeiro e SIGAPFS - Jurídico - Padrão desabilitado.  .F.
MV_CTBFLAGIndica 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.

 

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


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

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.


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


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.

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.


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


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.


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


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


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




<!-- esconder o menu --> 


<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>