Histórico da Página
...
Índice | ||||||
---|---|---|---|---|---|---|
|
Informações | ||
---|---|---|
| ||
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 todos os adiantamentos já efetuados e cadastrados, realizados pelos fornecedores (títulos tipo PA), além de notas de crédito a abater (títulos tipo NDF).
Os adiantamentos selecionados e informados pelo usuário serão abatidos do valor total do título original.
Através da compensação de títulos a pagar é possível:
- Compensar titulos de um mesmo fornecedor/loja com adiantamentos deste mesmo fornecedor/loja
- Compensar titulos de um determinado fornecedor com adiantamentos deste mesmo fornecedor, não importando qual a loja do titulo a compensar
- Compensar título de determinado fornecedor com adiantamentos de diversos fornecedores, podendo ser determinada uma faixa de fornecedores ou todos. Com isso, o título pode ser compensado com qualquer título de adiantamento em aberto no cadastro de títulos, não importando qual o fornecedor deste título.
02. EXECUÇÃO
Dica | ||
---|---|---|
| ||
É possível vincular adiantamentos a pedidos de compra para que o sistema faça a compensação automaticamente ao classificar o documento de entrada. Veja mais em Adiantamento no Pedido de Compras. |
02. EXECUÇÃO
- Manual
Procedimento efetuado de forma manual via rotina Compensação contas a pagar (FINA340), com exibição das telas envolvidas no processo e necessitando de ações/comandos do usuário
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE '"Protheus.ch'" #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.ch"CH" Static __COMPAUT := Nil User Function CMPCPAUTCMPAUTOMA() Local nSavIndlRet := IndexOrd() LOCAL nSavRec.F. Local cQry := RecNO() PRIVATE nTamTit"" Local aTipos := TamSX3("E2_PREFIXO")[1]+TamSX3("E2_NUM")[1]+TamSX3("E2_PARCELA")[1] PRIVATE nTamTip{"NF ", "PA ", "NDF"} Local cTblTmp := TamSX3("E2_TIPO")[1] Private aCores Local aNF :={ { 'E2_SALDO = E2_VALOR .AND. E2_ACRESC = E2_SDACRES','ENABLE'},; // Titulo nao Compensado { 'E2_SALDO = 0' , 'DISABLE'},; // Titulo Compensado Totalmente { 'E2_SALDO <> 0' , 'BR_AZUL'} } // Titulo Compensado Parcialmente //----------------------------- // Define Variaveis //----------------------------- PRIVATE aRotina := { { "Pesquisar","AxPesqui" , 0 , 1,,.F. },; //"Pesquisar" { "Visualizar","AxVisual" , 0 , 2 },; //"Visualizar" { "Compensar","XAFCMPAD" , 0 , 4 },; //"Compensar" { "Excluir","Fa340Desc" , 0 , 4 },; //"Excluir" { "Legenda","Fa340Leg" ,0,2, ,.F.} } //"Legenda" //----------------------------------------------------------------- // Carrega fun‡„o Pergunte //----------------------------------------------------------------- SetKey (VK_F12,{|a,b| AcessaPerg("AFI340",.T.)}) Pergunte("AFI340",.F.) //------------------------------------------------- // Define o cabe‡alho da tela de baixas //------------------------------------------------- PRIVATE cCadastro := "Compensação de Titulos Automatico" //------------------------------------------------ // Verifica o numero do Lote //------------------------------------------------ PRIVATE cLoteLoteCont( "FIN" ) PRIVATE VALOR := 0 PRIVATE VLRINSTR := 0 Private aTxMoedas := {} dbSelectArea("SE2") dbSetOrder(1) dbGoTop() //---------------------------------------- // Endere‡a a Funçao de BROWSE //---------------------------------------- mBrowse( 6, 1,22,75,"SE2",,,,,,aCores) dbSelectArea("SE2") dbSetOrder(nSavInd) dbGoTo(nSavRec) Return /* Programa | XAFCMPAD ========================================================== Desc. | Realiza a compensação do titulo de adiantamento */ Static Function XAFCMPAD() Local aArea := GetArea() Local aAreaSE2 := SE2->(GetArea()) Local aRecPA := {} // Array contendo os Recnos dos titulos PA Local aRecAux := {} Local nX := 0 Local lContabiliza := .F. Local lAglutina := .F. Local lDigita := .F. Local aRecSE2 := {SE2->(Recno())} LOCAL oDlg LOCAL nOpca := 0 Local dBaixaCMP := dDataBase //-------------------------------------------------------- // Carrega o pergunte da rotina de compensação financeira //-------------------------------------------------------- PERGUNTE("AFI340",.F.) lContabiliza := MV_PAR11 == 1 lAglutina := MV_PAR08 == 1 lDigita := MV_PAR09 == 1 //---------------------------------- //Ordenação das tabelas envolvidas //---------------------------------- SE2->(dbSetOrder(1)) //E2_FILIAL+E2_PREFIXO+E2_NUM+E2_PARCELA+E2_TIPO+E2_FORNECE+E2_LOJA aRecAux := {} aRecAux := XGetTitAd(SE2->E2_FORNECE,SE2->E2_LOJA ) For nX := 1 To Len(aRecAux) aADD(aRecPA,aRecAux[nX]) Next nX If !Empty(aRecPA) DEFINE MSDIALOG oDlg FROM 080,000 TO 190,260 TITLE "Data de Baixa para a Compensação" PIXEL oDlg:lMaximized := .F. oPanel := TPanel():New(0,0,'',oDlg,, .T., .T.,, ,20,20) oPanel:Align := CONTROL_ALIGN_ALLCLIENT @ 015, 010 SAY "Dt. Baixa: " SIZE 52, 08 OF oPanel PIXEL @ 015, 035 MSGET dBaixaCMP Valid !Empty(dBaixaCMP) SIZE 52, 08 OF oPanel PIXEL hasbutton DEFINE SBUTTON FROM 034,050 TYPE 1 ACTION {||oDlg:End(),nOpca:=1} ENABLE OF oDlg DEFINE SBUTTON FROM 034,080 TYPE 2 ACTION {||oDlg:End(),nOpca:=0} ENABLE OF oDlg ACTIVATE MSDIALOG oDlg CENTERED If nOpca == 1 .and. !MaIntBxCP(2,aRecSE2,,aRecPA,,{lContabiliza,lAglutina,lDigita,.F.,.F.,.F.},,,,dBaixaCMP) Help("XAFCMPAD",1,"HELP","XAFCMPAD","Não foi possível a compensação"+CRLF+" do titulo do adiantamento",1,0) ElseIf nOpca == 0 MsgInfo("Processo não realizado por desistência do usuário","Atencao") Else MsgInfo("Compensação Automática Concluida","Atencao") EndIf EndIf RestArea(aAreaSE2) RestArea(aArea) Return /* Programa| XGetTitAd ===================================================================== Desc| Função que retorna os titulos de adiantamento do Fornecedor | e Loja Informados ===================================================================== */ Static Function XGetTitAd( cFornece,cLoja ) Local aArea := GetArea() Local aRecPA := {} // Array contendo os Recnos dos titulos PA Local cQuery := "" Local cTab := GetNextAlias() If Select(cTab) > 0 (cTab)->(dbCloseArea()) EndIf cQuery += " SELECT " cQuery += " R_E_C_N_O_ SE2REC " cQuery += " FROM " + RetSqlTab("SE2") cQuery += " WHERE " cQuery += " E2_FORNECE = '"+cFornece+"' AND " cQuery += " E2_LOJA = '"+cLoja+"' AND " cQuery += " E2_TIPO IN ('PA ','NDF') AND " cQuery += " E2_SALDO > 0 AND " cQuery += RetSQLCond("SE2") cQuery := ChangeQuery(cQuery) dbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cTab, .F., .T.) (cTab)->(dbGoTop()) While (cTab)->(!EOF()) aAdd(aRecPA,(cTab)->SE2REC) (cTab)->(dbSkip()) EndDo (cTab)->(dbCloseArea()) RestArea(aArea) Return aRecPA |
03. TELA XXXXX
Outras Ações / Ações relacionadas
...
04. TELA XXXXX
Principais Campos e Parâmetros
...
Card documentos | ||||
---|---|---|---|---|
|
...
}
Local aPA_NDF := {}
Local aContabil := {}
Local bBlock := Nil
Local aEstorno := {}
Local nSldComp := 0
Local nTaxaPA := 0
Local nTaxaNF := 0
Local nHdl := 0
Local nOperacao := 0
If __COMPAUT == Nil
cQry := "SELECT E2_TIPO TIPO, R_E_C_N_O_ R_E_C_N_O FROM " + RetSqlName("SE2") + " "
cQry += "WHERE E2_SALDO > 0 AND E2_TIPO IN (?) "
cQry += "ORDER BY E2_TIPO"
cQry := ChangeQuery(cQry)
__COMPAUT := FWPreparedStatement():New(cQry)
EndIf
__COMPAUT:SetIn(1, aTipos)
cQry := __COMPAUT:GetFixQuery()
cTblTmp := MpSysOpenQuery(cQry)
While (cTblTmp)->(!Eof())
If (cTblTmp)->TIPO $ MVPAGANT+"|"+MV_CPNEG
Aadd(aPA_NDF, (cTblTmp)->R_E_C_N_O)
Else
Aadd(aNF, (cTblTmp)->R_E_C_N_O)
EndIf
(cTblTmp)->(DbSkip())
lRet := .T.
EndDo
(cTblTmp)->(DbCloseArea())
cTblTmp := ""
If lRet
Pergunte("AFI340", .F.)
lContabiliza := MV_PAR11 == 1
lAglutina := MV_PAR08 == 1
lDigita := MV_PAR09 == 1
lRet := FinCmpAut(aNF, aPA_NDF, aContabil, bBlock, aEstorno, nSldComp, dDatabase, nTaxaPA ,nTaxaNF, nHdl, nOperacao)
If lRet
Alert("Compensação realizada com sucesso")
Else
Alert("Ocorreu um erro no processo de compensação")
EndIf
EndIf
Return
|
Informações | ||
---|---|---|
| ||
Para utilizar o processo de Compensação Automática Contas a Pagar é necessário chamar a função: FinCmpAut. |
03. OPERAÇÕES
- Compensar
Através desta operação é possível a compensação de títulos a pagar:
- Compensar títulos de um mesmo fornecedor/loja com adiantamentos deste mesmo fornecedor/loja;
- Compensar títulos de um determinado fornecedor com adiantamentos deste mesmo fornecedor, não importando qual a loja do titulo a compensar;
- Compensar título de determinado fornecedor com adiantamentos de diversos fornecedores, podendo ser determinada uma faixa de fornecedores ou todos. Com isso, o título pode ser compensado com qualquer título de adiantamento em aberto no cadastro de títulos, não importando qual o fornecedor deste título;
Aviso | ||
---|---|---|
| ||
A data da compensação deverá ser maior que a data de emissão dos títulos envolvidos, por exemplo:
A compensação destes títulos só poderá ser efetuada após o dia 02/04 tendo em vista que no dia 29/03 a NF ainda não existia, sendo assim o conceito de baixas será corretamente aplicado nas operações de compensação. (E2_BAIXA maior que E2_EMISSAO)
|
Aviso | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
Para compensação entre adiantamentos e títulos de diferentes filiais, deve ser utilizado o botão Filiais para definir quais filiais serão consideradas para a seleção dos títulos a compensar.
|
- Excluir
Operação que permite realizar a exclusão do movimento gerado pela compensação
- Estorno
Operação que permite realizar o estorno do movimento gerado pela compensação, gerando assim sua contrapartida.
- Legenda
Apresenta quadro das legendas e seus significados referenciados a situação do titulo a pagar.
- Pesquisa
Pesquisa o titulo dentro do arquivo de contas a pagar, tendo como resultado o titulo posicionado e destacado na browse.
- Visualizar
Operação que permite visualizar o titulo posicionado, podendo conferir seu saldo e valor.
04. PARÂMETROS APLICADOS
Lista de parâmetros aplicados ao FINA340 e seu processamento
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Opções para configuração dos parâmetros MV_PABRUTO, MV_BP10925, MV_PAPRIMEQuando o parâmetro MV_PABRUTO, estiver igual 2 (Líquido), ao gerar títulos do tipo PA (pagamento antecipado), é mantida a geração com o valor líquido, em que são descontados os valores de impostos que podem ser retidos na inclusão. Ao realizar a compensação de um título, por exemplo, do tipo NF com uma PA, sendo que ambas retêm impostos na baixa, é aconselhável os parâmetros abaixo sejam configurados da seguinte maneira, para que haja coerência de valores:
Quando o parâmetro MV_PABRUTO estiver igual a 1 (Bruto) ao gerar títulos do tipo PA, o mesmo é gerado com o valor bruto, não descontando os valores de impostos que podem ser retidos na inclusão. Então a compensação de uma NF com um PA deve ser pelo valor bruto , configurando os parâmetros conforme abaixo:
|
05. 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) |
---|---|---|---|
589 | Cancelamento de compensação de títulos contas a pagar | X | X |
597 | Compensação contas a pagar | X | X |
Card documentos | ||||
---|---|---|---|---|
|
Variáveis de contabilização
Totvs custom tabs box | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||
|
Informações | ||
---|---|---|
| ||
Contabilização do tipo DIC A contabilização do título do tipo DIC gerado pela compensação, pode ser contabilizada pela LP 510 - Inclusão de títulos a pagar, pois o mesmo é gerado através da rotina automática do FINA050 (Contas a Pagar). Contabilização dos impostos gerados na compensação. A contabilização dos impostos gerados pela compensação, podem ser contabilizados, pela própria LP 597 - Compensação a pagar, através das variáveis: NPIS340, NCOF340, NCSL340, NIRF340, NISS340. |
Veja também:
Contabilização de Compensações CR/CP
06. TABELAS RELACIONADAS
- SE2 - Cadastro do contas a pagar
- SE5 - Cadastro de cheques
- SED - Cadastro de Naturezas.
- SA2 - Cadastro de Fornecedores.
- FK2 - Baixas a Pagar.
- FK3 - Impostos Calculados.
- FK4 - Impostos Retidos.
- FK5 - Movimentos Bancários.
- FK6 - Valores acessórios.
- FK7 - Tabela Auxiliar
- FKA - Rastreio de movimento.
07. PONTOS DE ENTRADA
Ponto de entrada | Observação |
---|---|
F340BROW | O ponto de entrada F340BROW sera chamado antes do browse e podera ser utilizado no tratamento dos dados apresentados no browse. Documentação: http://tdn.totvs.com/x/56Jc |
F340LIBT | O ponto de entrada indica se haverá a validação de liberação do titulo no momento da compensação. Documentação: http://tdn.totvs.com/x/_a2FDg |
F340DTFIN | O PE é chamado nas validações do parâmetro MV_DATAFIN existentes na Compensação CP. Documentação: http://tdn.totvs.com/x/6qJc |
F340TAXA | Neste ponto de entrada é possível alterar as taxas das moedas que serão utilizadas na compensação do contas a pagar. Documentação: http://tdn.totvs.com/x/aK_FDg |
F340ATLIS | Este Ponto de Entrada permite a manipulação do Array aTitulos, para alteração do listBox da tela de compensação. |
F340TOTCP | ponto de entrada F340TOTCP() possibilita manipular os valores totais de títulos a serem compensados. Documentação: http://tdn.totvs.com/x/nYIbCQ |
F340MKTIT | O ponto de entrada F340MKTIT permite a customização dos títulos já selecionados na markbrowse. Permite a manipulação da array que contem os títulos, e, |
F340NAT | |
F340_PA | O ponto de entrada F340_PA sera executado apos contabilizar cada titulo de compensacao a pagar. Documentação: http://tdn.totvs.com/x/7aJc |
F340SE5 | O ponto de entrada F340SE5 manipula Movimentos Bancários Processados tendo como parâmetro o Recno dos registros SE5 que foram utilizados na Compensação. Documentação: http://tdn.totvs.com/x/sAKqC |
F340GRV | O ponto de entrada F340GRV valida a inclusão na rotina de Compensação de Contas a Pagar (FINA340) Documentação: http://tdn.totvs.com/x/IgBzB |
F340ACAN | Este ponto de entrada permite que seja criada uma regra para informar quando será Estornado ou não. Documentação: http://tdn.totvs.com/x/j7GFDg |
F340CAN | Ponto de Entrada chamado quando realizada a confirmação do estorno de compensação. Documentação: http://tdn.totvs.com/x/zoFdAg |
F340GREST | Gravação de dados adicionais no estorno da compensação Documentação: http://tdn.totvs.com/x/iqVc |
F340FCAN | Ponto de entrada permite gravação de informação complementares no momento do estorno da compensação. Documentação: http://tdn.totvs.com/x/W7KFDg |
FA340QRY | Complemento de query para cancelamento da compensação Documentação: http://tdn.totvs.com/x/lgwGD |
FA340FILT | O ponto de entrada FA340FILT é executado na montagem da tabela de títulos a compensar e será utilizado para escolher quais títulos serão compensados |
F340CMP | Tem como finalidade permitir ao usuario calcular o titulo de NDF ou PA e sera chamado na funcao Fa340Tit() Documentação: http://tdn.totvs.com/x/6aJc |
FA340ORD | Ponto de Entrada permite a alteração do indice, mudando assim a ordem dos titulos exibidos da markbrowse para a compensação a pagar |
F340ValOk | O ponto de entrada F340ValOk, permite o controle dos dados e da confirmação da tela de compensação de títulos a pagar |
F340TOTCP | Possibilita manipular os valores totais de títulos a serem compensados. Documentação: http://tdn.totvs.com/x/nYIbCQ |
F340VLD | Ponto de Entrada que permite validar se um título será ou não compensado. |
F340LEGE | |
SE5FI340 | Ponto de Entrada que permite realizar gravações complementares na tabela SE5, após a gravação do movimento bancário do título principal na compensação a pagar automática |
SE5FI341 | Ponto de Entrada que permite realizar gravações complementares na tabela SE5, após a gravação do movimento bancário do título de Adiantamento na compensação a pagar automática. |
F340GERNDF | Possibilidade de gravar campos adicionais na inclusão da NDF gerada pela compensação à pagar. Documentação: http://tdn.totvs.com/x/kvdbDQ |
FA340NDFGrv | |
F340FLCP | Permite implementar uma expressão complementar no filtro de titulos. Documentação: http://tdn.totvs.com/x/66Jc |
F340FCPTOP | Esse ponto de entrada permite criar um novo filtro para a rotina de Compensação Contas a Pagar - FINA340. Documentação: http://tdn.totvs.com/x/r_xZE |
08. DEMAIS REGRAS DE COMPENSAÇÃO
Deck of Cards | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
Deck of Cards | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
09. MAIS INFORMAÇÕES
Informações | ||
---|---|---|
| ||
Ao apresentar o assistente NOTITSEL no estorno de compensação, valide o campo E5_FILORIG nos registros da compensação e também verifique os campos da chave (Prefixo+número+parcela+tipo+fornecedor+loja) das tabelas SE2 e SE5. Os campos devem possuir tamanhos correspondentes nas duas tabelas. |
Deck of Cards | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
HTML |
---|
<!-- 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> |
...