Histórico da Página
01. DADOS GERAIS
| Produto: | TOTVS Saúde Planos |
|---|---|
| Linha de Produto: | Linha Protheus |
| Segmento: | Saúde |
| Módulo: | Faturamento |
| Função: | Monitor de Inadimplência |
| Issue : | DSAUBE-26610 |
02. SITUAÇÃO/REQUISITO
Desenvolver uma rotina que permita aos usuários visualizar os beneficiários inadimplentes, juntamente com os respectivos títulos em aberto. A rotina também deverá identificar os beneficiários que atendem aos critérios estabelecidos pela Resolução Normativa nº 593, possibilitando sua categorização conforme diferentes status.
03. SOLUÇÃO
>> Índice <<
Índice maxLevel 2 minLevel 2
| maxLevel | 2 |
|---|---|
| minLevel | 2 |
>> 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.
> Funcionalidades do Sistema
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.
>> Parâmetros (SX6) <<
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)
>>
...
Como Acessar a Rotina <<
- Para acessar o monitor de inadimplência, digite no campo que está na parte superior do lado esquerdo a seguinte informação: PLMONINAD.
- Voce também pode acessar a rotina navegando pelo menu: Atualizações > Faturamento > Monitor de Inadimplência.
2. Uma tela exibindo os parâmetros iniciais será mostrada.
3. Preencha os campos e clique em OK.
| Informações |
|---|
📚 Caso a rotina não esteja disponível, será necessário criar a opção de menu via módulo configurador. Para mais informações acesse: Inclur Opção de Menu no Protheus |
>> Estrutura da Interface <<
> Parte Superior: Dados do Beneficiário
Matrícula
Nome do Beneficiário
Código do Cliente
> Parte Superior: Dados do Beneficiário
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
> Parte Inferior Esquerda: Títulos em Atraso
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
> Parte Inferior Direita: Contatos Realizados
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
>> Passo a Passo das Funcionalidades <<
> Opção de Menu Novo Filtro
Clique no botão Novo Filtro.
Uma janela com um formulário será exibida.
Preencha os dados conforme a necessidade.
Clique em OK.
| Nota |
|---|
Quanto menos parâmetros informados, maior pode ser o tempo de processamento devido à quantidade de registros retornados. |
> Opção de Menu Atualizar Dados
Clique no botão Atualizar Dados.
O sistema irá recarregar os dados com base nos parâmetros preenchidos anteriormente.
| Nota |
|---|
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. |
...
no topo da tela como lembrete para atualizar os dados. |
> Opção de Menu Enviar Notificação de Inadimplência
| Nota |
|---|
Para que o sistema consiga enviar o e-mail de notificação, é necessário configurar a conta de e-mail do remetente na rotina Gerenciador de Contas de E-mail. Dessa forma, o sistema identificará que, ao enviar o e-mail de notificação, deverá utilizar a configuração vinculada ao método SendNotification, que é o mesmo utilizado pela rotina do Monitor de Inadimplência para o envio de e-mails. 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. |
Selecione uma ou mais linhas na tabela da esquerda.
Clique no botão Enviar Notificação de Inadimplência.
...
- Se ao final do processo de envio dos e-mails, não ocorrer nenhum erro, o sistema irá apresentar apenas a mensagem confirmando o envio.
...
- apenas a mensagem confirmando o envio.
> Opção de Menu Documentação
- Exibe a documentação do monitor de inadimplência.
> Opção de Menu Filtros RN 593
📝 Como funciona?
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.
✅ Premissas para atender a RN 593:
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
🔽 Filtros Disponíveis
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)
...
| Informações |
|---|
📚 Clique no link para mais informações sobre a RN 593: Resolução Normativa 593 - ANS |
>> Seção Contatos Realizados <<
A seção de Contatos Realizados é onde ficam registradas todas as interações com o cliente, seja quando a empresa entra em contato com o beneficiário ou quando o beneficiário entra em contato com a empresa.
...
- Para incluir um registro, clique no botão incluir e insira os dados referentes ao contato realizado.
Campos disponíveis:
📩 Cont. Conf ? (BRZ_CNFCON)
- Indica se o recebimento do contato foi confirmado, conforme o meio de comunicação utilizado.
Valores possíveis:
...
> 1 – Recebimento confirmado
📅 Data do Contato (BRZ_DATCON)
- Data em que o contato com o beneficiário foi realizado.
⏰ Hora do Contato (BRZ_HORCON)
- Horário em que o contato foi efetuado.
🗓️ Data de Criação (BRZ_DATCRI)
- Data em que o registro foi criado na tabela.
🕒 Hora de Criação (BRZ_HORCRI)
- Horário em que o registro foi inserido na tabela.
>> Criação de Botões Customizados <<
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.
...
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
function PLMON001()
LOCAL aMenu := {}
AADD(aMenu, {"Teste Botão 1", {||U_botao1()}})
AADD(aMenu, {"Teste Botão 2", {||U_botao2()}})
return aMenu |
>> Ponto de Entrada do Status de Contato <<
Através do Ponto de entrada PLMON002, é possível criar status relacionados à tabela de contatos realizados (BRZ).
...
| Informações |
|---|
📚 Para mais informações sobre como utilizar ponto de entrada em MVC, consulte o documento: https: //tdn.totvs.com/display/public/framework/AdvPl+utilizando+AdvPl Utilizando MVC |
>> Recuperar Seleção de Beneficiários <<
- Os beneficiários selecionados no mark browse não podem ser passados diretamente como parâmetro para botões customizados ou em customizações relacionadas aos contatos realizados. Para contornar essa limitação, foi disponibilizado um método estático que retorna um objeto JSON contendo a lista dos beneficiários selecionados.
- Com a utilização desse método, 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.
Sintaxe
|
Retorno
Nome | Tipo | Descrição |
|---|---|---|
oJson | Json | Retorna um objeto json com a seguinte estrutura |
...
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
oJSelecBeneficiaries := delinquency.monitor.DelinquencyInterface():getSelecBeneficiaries() //O objeto retorna os seguintes atributos //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 |
>> Inserção de Dados na Tabela de Contatos Realizados (BRZ) <<
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.
...
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
//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() |
Sintaxe
|
Parâmetros
Nome | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| cBenefRegister | Caracter | Matrícula do beneficiário que será registrada no campo Matrícula (BRZ_MATRIC). | X |
| cTypeContact | Caracter | 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 | Caracter | Descrição do contato que será registrada no campo Motivo (BRZ_MOTIVO). | X |
Retorno
Nome | Tipo | Descrição |
|---|---|---|
lRet | booleano | true - Em caso de sucesso. false - Em caso de erro. |
...
Hora Criação (BRZ_HORCRI) - Irá gravar a hora em que o registro foi gerado.
>> Consultar Tabelas Temporárias <<
Os dois grids (beneficiários e títulos) utilizam tabelas temporárias. Para ter acesso utilizando a sintaxe ADVPL, use o alias BENEINAD (beneficiários) e BENEFINA (títulos).
...
Em casos em que os dados das tabelas temporárias precisem ser utilizadas diretamente em uma query, em um join com outra tabela do sistema por exemplo, se faz necessário informar o nome real da tabela no banco de dados, pois o alias não funciona para tabelas temporárias. Dessa forma, disponibilizamos dois métodos que basicamente retornam o nome real das tabelas temporárias de beneficiário e do financeiro naquele momento (o nome muda dinamicamente a cada execução da rotina ou atualização da tela).
Sintaxe (tabela beneficiários BENEINAD)
|
Retorno
Nome | Tipo | Descrição |
|---|---|---|
cAlias | Caracter | Retorna o nome real da tabela temporária de beneficiários no banco de dados. |
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
cRealTable := totvs.protheus.health.delinquency.monitor.DelinquencyService():realNameBeneficiaries() oExecQuery := FWExecStatement():New() //não é necessário utilizar o campo D_E_L_E_T_ pois a temporária possui apenas registros ativos cSQL := " SELECT *" cSQL += " FROM " + cRealTable oExecQuery:SetQuery( cSQL ) cAliasTemp := oExecQuery:OpenAlias() |
Sintaxe (tabela de Titulos BENEFINA)
|
Retorno
Nome | Tipo | Descrição |
|---|---|---|
cAlias | Caracter | Retorna o nome real da tabela temporária dos dados financeiros no banco de dados |
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
cRealTable := totvs.protheus.health.delinquency.monitor.DelinquencyService():realNameInvoices() oExecQuery := FWExecStatement():New() //não é necessário utilizar o campo D_E_L_E_T_ pois a temporária possui apenas registros ativos cSQL := " SELECT *" cSQL += " FROM " + cRealTable oExecQuery:SetQuery( cSQL ) cAliasTemp := oExecQuery:OpenAlias() cTitulo := (cAliasTemp)->E1_NUM |
>> 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 seção não ficam visíveis em outras sessões.
...
| Nota |
|---|
|
04. DEMAIS INFORMAÇÕES
Atualização do Dicionário de Dados
Inclusões na tabela SX2 (Tabela):
...
Variável | Tipo | Descrição | Conteúdo |
|---|---|---|---|
| MV_DEBMONT | LógicoCaracter | Ativa a criação de tabelas temporárias de suporte para a rotina monitor de inadimplência apenas para banco de dados oracle. ".T." = Ativa a funcionalidade ".F." = Desativa a funcionalidade | ".F." |
Inclusão no Arquivo SX7 (gatilhos):
...
Alias | Tipo | Sequencial | Coluna | Descrição | Contem |
|---|---|---|---|---|---|
| SUBIND | 1 | 01 | DB | SubContratos | BQC |
| SUBIND | 2 | 01 | 01 | Número SubContrato | |
| SUBIND | 4 | 01 | 01 | Número SubContrato | BRC->BQC_SUBCON |
| SUBIND | 4 | 01 | 02 | Versão SubContrato | BRC->BQC_VERSUB |
| SUBIND | 4 | 01 | 03 | Descrição | BRC->BQC_DESCRI |
| SUBIND | 5 | 01 | BQC->BQC_SUBCON | ||
| SUBIND | 6 | 01 | BQC->BQC_CODIGO == MV_PAR02 + MV_PAR03 .and. BQC->BQC_NUMCON == MV_PAR04 |
>> Importante
Card documentos Informacao As alterações de dicionário referente a essa implementação estarão disponíveis através de pacote de expedição contínua do plano de saúde com data igual ou superior 16/06/2025. Titulo °
| Informacao | As alterações de dicionário referente a essa implementação estarão disponíveis através de pacote de expedição contínua do plano de saúde com data igual ou superior 16/06/2025. |
|---|---|
| Titulo | ° |
05. ASSUNTOS RELACIONADOS
- DT Gerenciador de Contas de E-mail
- Resolução Normativa 593 - ANS
- https://tdn.totvs.com/display/public/framework/AdvPl+utilizando+AdvPl Utilizando MVC
| Templatedocumentos |
|---|








