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.
Consulta de beneficiários inadimplentes
Visualização de títulos em aberto
Registro de interações realizadas com os beneficiários
Envio de e-mail de notificação de inadimplência
Filtros específicos da RN 593
A rotina leva em consideração dois parâmetros para retornar os títulos:
MV_PLSTIT - Tipo do título (campo E1_TIPO)
MV_PLPFE11 - Prefixo do título (campo E1_PREFIXO)

Matrícula
Nome do Beneficiário
Código do Cliente (SA1)
Código da Loja Relacionado ao Cliente (SA1)
Nome do Cliente (SA1)
Nome Social
Data de Internação
Matrícula Antiga
Operadora
Empresa
Contrato
Subcontrato
Prefixo
Número do Título
Vencimento
Dias em Atraso
Valor
Vencimento Real
Emissão
Mês Base
Ano Base
Parcela
Tipo
Número do Lote de Cobrança
Contrato
Subcontrato
Código do Cliente
Loja do Cliente
Confirmação de recebimento do contato
Data do contato
Hora do contato
Origem do contato
Matrícula do beneficiário posicionado
Motivo do contato
Data da criação do registro no sistema
Hora da criação do registro no sistema

Clique no botão Novo Filtro.
Uma janela com um formulário será exibida.
Preencha os dados conforme a necessidade.
Clique em OK.
Importante: Quanto menos parâmetros informados, maior pode ser o tempo de processamento devido à quantidade de registros retornados. |
Clique no botão Atualizar Dados.
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.
|
Selecione uma ou mais linhas na tabela da esquerda.
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. |

Ao abrir o Monitor, todos os beneficiários inadimplentes são exibidos, independentemente da RN 593.
Os filtros RN 593 refinam os dados carregados, mantendo apenas os que atendem à norma.
Cobrança no nível da família (BA3_COBNIV == '1)
Data-base do contrato >= 01/12/2024 (BA3_DATBAS)
Dois ou mais títulos em atraso, sendo um com 50 dias ou mais
Mais de 50 Dias de Atraso Sem Envio de Notificação
Deve atender todas as premissas
Não possuir interações registradas
❌ Não estar internado (BE4_DTDIGI)
Mais de 50 Dias de Atraso Com Prazo de Retorno Expirado
Atender todas as premissas
Possuir interações
A última interação ocorreu há 10 dias ou MAIS
❌ Não estar internado (BE4_DTDIGI)
Mais de 50 Dias de Atraso Dentro do Prazo de Retorno
Atender todas as premissas
Possuir interações
A última interação ocorreu há 10 dias ou MENOS
❌ Não estar internado (BE4_DTDIGI)
BE4_DTDIGI.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. |
Limpar Filtro
Desfaz o último filtro e restaura a exibição de todos os inadimplentes.
📚 Clique no link para mais informações sobre a RN 593: Resolução Normativa 593 - ANS |
Através do Ponto de entrada PLMON001, é possível criar botões na rotina, permitindo a criação de quantos botões forem necessários com as funcionalidades desejadas.
> É necessário retornar um array bidimensional.
Na primeira posição: descrição do botão.
Na segunda posição: bloco de código com a função a ser executada.
function PLMON001()
LOCAL aMenu := {}
AADD(aMenu, {"Teste Botão 1", {||U_botao1()}})
AADD(aMenu, {"Teste Botão 2", {||U_botao2()}})
return aMenu |

Através do Ponto de entrada PLMON002, é possível criar status relacionados à tabela de contatos realizados (BRZ).
Primeira posição: condição do status
Segunda posição: cor
Terceira posição: descrição
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 como utilizar ponto de entrada em MVC, consulte o documento: https://tdn.totvs.com/display/public/framework/AdvPl+utilizando+MVC |
delinquency.monitor.DelinquencyInterface():getSelecBeneficiaries() |
//dados do beneficiário oJSelecBeneficiaries[nPosicao]["beneficiarie"]["register"] - Matrícula completa do beneficiário oJSelecBeneficiaries[nPosicao]["beneficiarie"]["name" ] - Nome do beneficiário oJSelecBeneficiaries[nPosicao]["beneficiarie"]["email"] - E-mail do beneficiário //dados do cliente oJSelecBeneficiaries[nPosicao]["client"]["code" ] - Código do cliente e loja oJSelecBeneficiaries[nPosicao]["client"]["name" ] - Nome do cliente oJSelecBeneficiaries[nPosicao]["client"]["email"] - e-mail do cliente |
Dependendo da quantidade de contatos que precisam ser registrados — como no caso do envio de e-mails em massa para diversos beneficiários, onde é necessário gerar um registro de contato para cada envio —, é comum que customizações precisem lidar com essa geração em larga escala.
Para facilitar esse processo, criamos uma solução simplificada que exige apenas os dados dinâmicos obrigatórios a serem gravados. Essa abordagem reduz a complexidade e torna o processo mais ágil.
Utilizamos um conjunto de métodos desenvolvidos com foco em objetividade e performance, tendo como base a classe FWBulk, que permite inserções em massa com alta eficiência.
//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
//Nesse momento os dados são gravados em um objeto mas serão efetivamente gravados na tabela quando somar 1000 registros inseridos no objeto
//ou a cada execução do método flushBulkContact
self:oMonitorService:insertDataBulkContact("00010001123456011", "01", "E-mail enviado para o beneficiário")
Next
//efetua a gravação dos dados contidos no objeto na tabela BRZ
oMonitorService:flushBulkContact() |
|
Nome | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| cBenefRegister | caractere | Matrícula do beneficiário que será registrada no campo Matrícula (BRZ_MATRIC). | X |
| cTypeContact | caractere | Código do tipo de contato, conforme a tabela genérica SX5 (código TY), que será registrado no campo Origem Cont. (BRZ_ORICON). | X |
| cDescriptionContact | caractere | Descrição do contato que será registrada no campo Motivo (BRZ_MOTIVO). | X |
Nome | Tipo | Descrição |
|---|---|---|
lRet | booleano | true - Em caso de sucesso. false - Em caso de erro. |
Importante: Ambos os métodos retornam |
Os campos abaixo serão gravados da seguinte forma a cada inserção de dados no objeto através do método insertDataBulkContact:
Cont. Conf? (BRZ_CNFCON) - Por padrão será gravado com o valor 0 (Recebimento não confirmar).
Data Contato (BRZ_DATCON) - Irá gravar a data em que o registro foi gerado.
Hora Contato (BRZ_HORCON) - Irá gravar a hora em que o registro foi gerado.
Data Criação (BRZ_DATCRI) - Irá gravar a data em que o registro foi gerado.
Hora Criação (BRZ_HORCRI) - Irá gravar a hora em que o registro foi gerado.
Os dois grids (beneficiários e títulos) utilizam tabelas temporárias. Para acesso por:
ADVPL: Use aliases BENEINAD (beneficiários) e BENEFINA (títulos)
SQL: Utilize os nomes reais das tabelas obtidos por:
totvs.protheus.health.delinquency.monitor.DelinquencyService():realNameBeneficiaries()
totvs.protheus.health.delinquency.monitor.DelinquencyService():realNameInvoices()
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:
BENEFINA_COPY, com os dados dos beneficiários (grid superior), e
BENEINAD_COPY, com os títulos em aberto (grid inferior esquerdo).
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:
O uso dessa funcionalidade pode impactar negativamente a performance da rotina, portanto, deve ser utilizado com cautela.
Essas tabelas são cópias das tabelas temporárias geradas no momento da execução da rotina. Portanto, qualquer alteração feita diretamente nelas não será refletida nas tabelas temporárias utilizadas internamente pela sessão criada pelo programa para manipulação dos dados.