1. O que é o Monitor de Inadimplência?

O Monitor de Inadimplência é uma ferramenta desenvolvida para permitir que usuários visualizem, acompanhem e registrem informações sobre beneficiários de planos de saúde que possuem faturas vencidas. O sistema também identifica aqueles que se enquadram na RN nº 593 da ANS, norma que regulamenta o cancelamento de contratos por inadimplência.

2. Funcionalidades do Sistema

3. Parâmetros (SX6)

A rotina leva em consideração dois parâmetros para retornar os títulos:

4. Estrutura da Interface

> Parte Superior: Dados do Beneficiário

> Parte Inferior Esquerda: Títulos em Atraso

> Parte Inferior Direita: Contatos Realizadas

5. Passo a Passo das Funcionalidades

Opção de Menu Novo Filtro

  1. Clique no botão Novo Filtro.

  2. Uma janela com um formulário será exibida.

  3. Preencha os dados conforme a necessidade.

  4. Clique em OK.

Importante: Quanto menos parâmetros informados, maior pode ser o tempo de processamento devido à quantidade de registros retornados.

Opção de Menu Atualizar Dados

  1. Clique no botão Atualizar Dados.

  2. O sistema irá recarregar os dados com base nos parâmetros preenchidos anteriormente.

Importante: Utilize esta funcionalidade sempre após registrar uma interação manualmente, garantindo a atualização correta dos filtros da RN 593. Sempre que uma interação for inserida manualmente, uma mensagem será exibida no topo da tela como lembrete para atualizar os dados.


Opção de Menu Enviar Notificação de Inadimplência

  1. Selecione uma ou mais linhas na tabela da esquerda.

  2. Clique no botão Enviar Notificação de Inadimplência.


     3. Clicando em Não! O sistema exibira uma lista contendo os beneficiários e os clientes que estão com alguma não conformidade no e-mail. No caso abaixo, o e-mail não foi configurado.

 


      4. Ao confirmar a ação clicando em 'Sim', o sistema exibirá uma janela solicitando que o usuário escolha se o envio dos e-mails deve ser feito apenas para o titular ou para o titular e o cliente.


      5. Clicando em uma das opções, o sistema iniciará o processo de envio dos e-mails. 




Importante:  Toda configuração relacionada ao layout do e-mail, remetente e assunto do e-mail são configurados na rotina Gerenciador de Contas de E-mail, clique no link para acessar a documentação completa DT Gerenciador de Contas de E-mail.

Opção de Menu Documentação

Opção de Menu Filtros RN 593

📝 Como funciona?

✅ Premissas para atender a RN 593:

  1. Cobrança no nível da família (BA3_COBNIV == '1)

  2. Data-base do contrato >= 01/12/2024 (BA3_DATBAS)

  3. Dois ou mais títulos em atraso, sendo um com 50 dias ou mais

🔽 Filtros Disponíveis





Importante: A data de digitação é usada porque em algumas situações há o atraso na atualização do status de internação no sistema (BE4_DATPRO). Isso evita o risco de enviar cobrança a beneficiários internados.



📚 Clique no link para mais informações sobre a RN 593: Resolução Normativa 593 - ANS



8. Criação de Botões Customizados

Foi implementada a customização de botões na rotina, permitindo a criação de quantos botões forem necessários com as funcionalidades desejadas. O ponto de entrada responsável pela criação dos botões é o PLMON001.

É faz necessário retornar um array bidimensional.

Exemplo de implementação:

function PLMON001()
     LOCAL aMenu := {}
     AADD(aMenu, {"Teste Botão 1", {||U_botao1()}})
     AADD(aMenu, {"Teste Botão 2", {||U_botao2()}})
return aMenu

Recuperar Seleção de Beneficiários

Para obter a relação dos beneficiários selecionados no mark da primeira coluna, não é possível passar como parâmetro na criação do botão. Por isso, foi disponibilizado um método estático que devolve um objeto JSON com a lista dos beneficiários selecionados:

totvs.protheus.health.delinquency.monitor.DelinquencyInterface():getSelecBeneficiaries()

Realizando a chamada desse método dessa forma, a lista dos beneficiários selecionados na tela estará disponível em qualquer fonte, função ou método customizado enquanto o monitor de inadimplência estiver aberto.

Ponto de Entrada do Status de Contato

Através do PE PLMON002, é possível criar status relacionados à tabela de contatos realizados (BRZ).

Exemplo:

FUNCTION PLMON002()
   LOCAL aStatus := {}
   AADD(aStatus, {"BRZ_DATCON < dDataBase .AND. BRZ_CNFCON == '0'", "BLUE", "Data anterior a hoje"})
RETURN aStatus

Para mais informações sobre pontos de entrada no grid de contatos, consulte o documento MVC: https://centraldeatendimento.totvs.com/hc/pt-br/articles/360017512652-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Como-utilizar-MVC-Model-View-Controller

Inserção de Dados na Tabela BRZ

Utilize a classe FWBulk para inserção em massa com melhor performance:

// Instancia a classe de serviços
oMonitorService := totvs.protheus.health.delinquency.monitor.DelinquencyService():New()
// Cria o objeto bulk
oMonitorService:createBulkContact()

For nSendMail := 1 To 100
   self:oMonitorService:insertDataBulkContact("00010001123456011", "01", "E-mail enviado para o beneficiário")
Next

// Commit final
oMonitorService:flushBulkContact()

Ambos os métodos retornam true se bem-sucedidos, e false em caso de erro. Logs em monitorInadimplencia.log no diretório logpls.

Consulta a Tabelas Temporárias

Os dois grids (beneficiários e títulos) utilizam tabelas temporárias. Para acesso por:

totvs.protheus.health.delinquency.monitor.DelinquencyService():realNameBeneficiaries()
totvs.protheus.health.delinquency.monitor.DelinquencyService():realNameInvoices()

Ambiente Com Banco de Dados Oracle

O monitor de inadimplência utiliza tabelas temporárias para armazenar tanto os dados dos beneficiários quanto os títulos em aberto. No entanto, o banco de dados Oracle possui uma particularidade: os dados inseridos em uma tabela temporária durante uma sessão não ficam visíveis em outras sessões.

Por esse motivo, quando for necessário acessar os dados para depuração ou implementar pontos de entrada, deve-se configurar o parâmetro MV_DEBMONT como true (.T.). Quando esse parâmetro está ativado — e somente no Oracle — são criadas duas tabelas físicas:

Essas tabelas são recriadas sempre que a rotina é encerrada e reaberta. Além disso, qualquer novo filtro ou atualização também provoca a exclusão e recriação das tabelas com os dados atualizados.

Importante: