Tempo aproximado para leitura: 05 min
A rotina FINA645 - PDD (Provisão de Devedores Duvidosos) constitui a provisão para devedores duvidosos.
Outras denominações dessa provisão:
Esta provisão cobre perdas prováveis no recebimento das duplicatas. Assim, uma vez constituída tal provisão e, não ocorrendo o recebimento de algumas duplicatas pela empresa, essas eram obrigatoriamente baixadas em contrapartida com a Provisão para Devedores Duvidosos.
Por exemplo: Se ao final do ano, o total de perdas não atingisse o valor da Provisão, a sobra era revertida, ou seja, era contabilizada como receita, zerando a Provisão antiga, para na sequência efetuar-se uma nova Provisão para o ano seguinte.
Importante: Rotina disponibilizada a partir do release 12.1.25
|
|
O relatório Provisão de Devedores Duvidosos (FINR645) demonstra os clientes e títulos que constituíram a provisão.
Parâmetros do relatório:
|
A constituição de PDD e a reversão da constituição serão contabilizadas a partir dos lançamentos padrão:
|
| Nome da Variável | MV_PDDREF |
|---|---|
| Tipo | Caracter |
| Descrição | Campo para considerar na regra do PDD: |
| Valor Padrão | 1 |
| Nome da Variável | MV_PDDRTNF |
|---|---|
| Tipo | Numérico |
| Descrição | Indica se a rotina de PDD irá realizar o rateio por item da nota fiscal que gerou o título. |
| Valor Padrão | 2 |
| Nome da Variável | MV_PDDACRE |
|---|---|
| Tipo | Carácter |
| Descrição | Selecione se o saldo liquido do PDD irá considerar o acréscimo e decréscimo do título. |
| Valor Padrão | 1 |
| Nome da Variável | MV_BAIXPDD |
|---|---|
| Tipo | Lógico |
| Descrição | Indica se a rotina de PDD irá considerar também os títulos baixados em sua totalidade com atraso. Obs.: Este parâmetro será incorporado ao produto a partir do release 12.1.27. Havendo necessidade de uso é possível a inclusão do mesmo através do módulo configurador. |
| Valor Padrão | .F. |
04. PONTOS DE ENTRADA
05. TABELAS UTILIZADAS
| Chave | Nome | Modo | PYME |
|---|---|---|---|
| FJX | Processamento PDD | C | S |
| FJY | Clientes em PDD | C | S |
| FJZ | Títulos Provisicionados | C | S |
| FWZ | Rateio de Tìtulos PDD | C | S |
| FRV | Situação de Cobrança | C | S |
Para a correta execução automática da rotina FINA645, é necessário informar os parâmetros da função conforme abaixo:
lAutomato = .T.
nOperation = Informar qual a operação deverá ser realizada.
aSitCob = Este array deverá receber quais são as Situações de Cobranças que devem ser tratadas para o filtro.
Ex.: Aadd(aSitCob, '0')
Aadd(aSitCob, '3')
Aadd(aSitCob, '4')
Aadd(aSitCob, '5')
Aadd(aSitCob, '6')
Aadd(aSitCob, '7')
cNroProc = Numero do Processo Gerado da tabela FJX.
aDdsAlt = Este array deverá receber quais as informações da chave que serão pesquisadas na tabela FJZ e quais as alterações que devem ser efetuadas. A variável lGrvOk será utilizada para marcar ou desmarcar o título, e a variável cSitCob será usada para alteração da situação de cobrança.
Ex.: Aadd(aDdsChv, xFilial("FJZ") )
Aadd(aDdsChv, cNroProc )
Aadd(aDdsChv, cItemCliZ )
Aadd(aDdsChv, cItemZ )
Aadd(aDdsChv, cFilCliZ )
Aadd(aDdsChv, cPref )
Aadd(aDdsChv, cNum )
Aadd(aDdsChv, cParc )
Aadd(aDdsChv, cTipo )
lGrvOk := .F.
cSitCob := "2"
Aadd(aDdsAlt, { cSitCob, aDdsChv, lGrvOk } )
| Execuções implementadas | Parâmetros a serem preenchidos |
|---|---|
Constituição | FINA645(lAutomato, nOperation, aSitCob ) |
| Efetivação | FINA645(lAutomato, nOperation, aSitCob, cNroProc ) |
Alteração | FINA645(lAutomato, nOperation, aSitCob, cNroProc ) |
Reversão | FINA645(lAutomato, nOperation, aSitCob, cNroProc ) |
| Efetivação da Reversão | FINA645(lAutomato, nOperation, , cNroProc, aDdsAlt ) |
| Exclusão | FINA645(lAutomato, nOperation, , cNroProc ) |
Para a execução da Constituição deverá ser alimentado o Grupo de Perguntas e Respostas correspondente (FINA645C), conforme exemplo abaixo:
| Grupo de Perguntas e Respostas - FINA645C | ||
|---|---|---|
| Data de Referência? | Data Referencia | MV_PAR01 |
| Número de dias de atraso? | Qtde de dias para atraso | MV_PAR02 |
| Transferir para Provisão? | 1 = Sim ou 2 = Não | MV_PAR03 |
| Cliente De? | Código do Cliente De | MV_PAR04 |
| Loja do Cliente De? | Loja do Cliente De | MV_PAR05 |
| Cliente Ate? | Código do Cliente Ate | MV_PAR06 |
| Loja do Cliente Ate? | Loja do Cliente Ate | MV_PAR07 |
| Emissão De? | Data da Emissão do Título De | MV_PAR08 |
| Emissão Ate? | Data da Emissão do Título Ate | MV_PAR09 |
| Seleciona Filial? | 1 = Sim ou 2 = Não | MV_PAR10 |
| Situação de Cobrança PDD? | Informe a situação da cobrança | MV_PAR11 |
| Seleciona Sit. de Cobrança? | 1 = Sim ou 2 = Não | MV_PAR12 |
| Considera Negociados? | 1 = Sim ou 2 = Não | MV_PAR13 |
Para a execução da Efetivação, Efetivação da Reversão e Alteração deverá ser informado o Grupo de Perguntas e Respostas correspondente (FINA645D), conforme exemplo abaixo:
| Grupo de Perguntas e Respostas - FINA645D | ||
|---|---|---|
| Mostra Lançamento? | 1 = Sim ou 2 = Não | MV_PAR01 |
| Aglutina Lançamento? | 1 = Sim ou 2 = Não | MV_PAR02 |
| Considera movimento posterior geração do processo? | 1 = Sim ou 2 = Não | MV_PAR03 |
Para a execução da Reversão deverá ser informado Grupo de Perguntas e Respostas correspondente (FINA645E), conforme exemplo abaixo:
| Grupo de Perguntas e Respostas - FINA645E | ||
|---|---|---|
| Reverter Provisão? | 1 = Todos / 2 = Titulos Baixados / 3 = Abertos | MV_PAR01 |
| Cliente De? | Código do Cliente De | MV_PAR02 |
| Loja do Cliente De? | Loja do Cliente De | MV_PAR03 |
| Cliente Ate? | Código do Cliente Ate | MV_PAR04 |
| Loja do Cliente Ate? | Loja do Cliente Ate | MV_PAR05 |
| Seleciona Filial? | 1 = Sim ou 2 = Não | MV_PAR06 |
| Data de Refenrencia | Data Referencia | MV_PAR07 |
| Emissão De? | Data da Emissão do Título De | MV_PAR08 |
| Emissão Ate? | Data da Emissão do Título Ate | MV_PAR09 |
#include "protheus.ch"
#include "topconn.ch"
#include "RWMAKE.CH"
#include "TBICONN.CH"
/*/{Protheus.doc} F645Const
Constituição PDD
@type function
@version 1.0
@author totvs
@return nil
/*/
User Function F645Const()
Local lAutomato := .T.
Local nOperation:= 3
Local aSitCob := {}
Private lMsErroAuto := .f.
Private lAutoErrNoFile := .T.
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01"
//Situações de cobrança a serem filtradas
Aadd(aSitCob, '0')
Aadd(aSitCob, '3')
Aadd(aSitCob, '4')
Aadd(aSitCob, '5')
Aadd(aSitCob, '6')
Aadd(aSitCob, '7')
//Ajusta perguntas (F12)
Pergunte("FINA645C",.F.)
SetMVValue("FINA645C","MV_PAR01", DDATABASE ) // Data de Referencia ?
SetMVValue("FINA645C","MV_PAR02", 1 ) // Numero de dias de atraso ?
SetMVValue("FINA645C","MV_PAR03", 3 ) // Transferir para Provisao ?
SetMVValue("FINA645C","MV_PAR04", "PDD001" ) // Cliente De ?
SetMVValue("FINA645C","MV_PAR05", "01" ) // Loja do Cliente De ?
SetMVValue("FINA645C","MV_PAR06", "PDD001" ) // Cliente Ate ?
SetMVValue("FINA645C","MV_PAR07", "01" ) // Loja do Cliente Ate ?
SetMVValue("FINA645C","MV_PAR08", CTOD("01/01/2001") ) // Emissão De ?
SetMVValue("FINA645C","MV_PAR09", CTOD("31/12/2049") ) // Emissão Ate ?
SetMVValue("FINA645C","MV_PAR10", 2 ) // Seleciona Filial ? 1 = Sim 2 = Não
SetMVValue("FINA645C","MV_PAR11", "8" ) // Situação de Cobrança PDD ?
SetMVValue("FINA645C","MV_PAR12", 2 ) // Seleciona Sit. de Cobrança ? 1 = Sim 2 = Não
SetMVValue("FINA645C","MV_PAR13", 2 ) // Considera Negociados ? 1 = Sim 2 = Não
//Constituição
MSExecAuto({|a,b,c| FINA645(a,b,c)}, lAutomato, nOperation, aSitCob )
If !lMsErroAuto
conout("sucesso! ")
Else
conout("Erro!")
mostraErro()
EndIf
Return |
#include "protheus.ch"
#include "topconn.ch"
#include "RWMAKE.CH"
#include "TBICONN.CH"
/*/{Protheus.doc} F645EfeCon
Efetiva Constituição PDD
@type function
@version 1.0
@author totvs
@return nil
/*/
User Function F645EfeCon()
Local lAutomato := .T.
Local nOperation:= 4
Local aSitCob := {}
Local cNroProc := "000010"
Private lMsErroAuto := .f.
Private lAutoErrNoFile := .T.
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01"
//Ajusta perguntas (F12)
Pergunte("FINA645D",.F.)
SetMVValue("FINA645D","MV_PAR01", 2 ) // Mostra Lançamento ?
SetMVValue("FINA645D","MV_PAR02", 2 ) // Aglutina Lançamento ?
SetMVValue("FINA645D","MV_PAR03", 2 ) // Considera movimento posterior geração do processo ?
//Efetivação
MSExecAuto({|a,b,c,d| FINA645(a,b,c,d)}, lAutomato, nOperation, aSitCob, cNroProc )
If !lMsErroAuto
conout("sucesso! ")
Else
conout("Erro!")
mostraErro()
EndIf
Return |
#include "protheus.ch"
#include "topconn.ch"
#include "RWMAKE.CH"
#include "TBICONN.CH"
/*/{Protheus.doc} F645Revers
Reversão da Constituição PDD
@type function
@version 1.0
@author totvs
@return nil
/*/
User Function F645Revers()
Local lAutomato := .T.
Local nOperation:= 5
Local aSitCob := {}
Local cNroProc := "000010"
Local dDtRef := CTOD("14/10/2021")
Private lMsErroAuto := .f.
Private lAutoErrNoFile := .T.
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01"
//Ajusta perguntas (F12)
Pergunte("FINA645E",.F.)
SetMVValue("FINA645E","MV_PAR01", 1 ) // Reverter Provisão ? - 1 = Todos / 2 = Titulos Baixados / 3 = Abertos
SetMVValue("FINA645E","MV_PAR02", "PDD001" ) // Cliente De ?
SetMVValue("FINA645E","MV_PAR03", "01" ) // Loja do Cliente De ?
SetMVValue("FINA645E","MV_PAR04", "PDD001" ) // Cliente Ate ?
SetMVValue("FINA645E","MV_PAR05", "01" ) // Loja do Cliente Ate ?
SetMVValue("FINA645E","MV_PAR06", 2 ) // Seleciona Filial ? 1 = Sim 2 = Não
SetMVValue("FINA645E","MV_PAR07", dDtRef ) // Data de Refenrencia ?
SetMVValue("FINA645E","MV_PAR08", dDatabase ) // Emissão De ?
SetMVValue("FINA645E","MV_PAR09", dDatabase ) // Emissão Ate ?
//Reversão da Constituição
MSExecAuto({|a,b,c,d| FINA645(a,b,c,d)}, lAutomato, nOperation, aSitCob, cNroProc )
If !lMsErroAuto
conout("sucesso! ")
Else
conout("Erro!")
mostraErro()
EndIf
Return |
#include "protheus.ch"
#include "topconn.ch"
#include "RWMAKE.CH"
#include "TBICONN.CH"
/*/{Protheus.doc} F645EfetRev
Efetiva a Reversão da Constituição PDD
@type function
@version 1.0
@author totvs
@return nil
/*/
User Function F645EfetRev()
Local lAutomato := .T.
Local nOperation:= 6 //Efetiva Reversão
Local aSitCob := {}
Local cNroProc := "000010"
Private lMsErroAuto := .f.
Private lAutoErrNoFile := .T.
PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01"
//Ajusta perguntas (F12)
Pergunte("FINA645D",.F.)
SetMVValue("FINA645D","MV_PAR01", 2 ) // Mostra Lançamento ?
SetMVValue("FINA645D","MV_PAR02", 2 ) // Aglutina Lançamento ?
SetMVValue("FINA645D","MV_PAR03", 2 ) // Considera movimento posterior geração do processo ?
//Efetivação
MSExecAuto({|a,b,c,d| FINA645(a,b,c,d)}, lAutomato, nOperation, aSitCob, cNroProc )
If !lMsErroAuto
conout("sucesso! ")
Else
conout("Erro!")
mostraErro()
EndIf
Return |