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

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.

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.


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

Procedimentos

Para realizar uma 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 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

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

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, dependendo da configuração escolhida (Líquido ou Bruto), na tela de seleção de títulos que serão compensados, os títulos serão apresentados com o seu valor líquido ou bruto. 


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


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>