| Produto: | TOTVS Saúde Planos |
|---|---|
| Linha de Produto: | Linha Protheus |
| Segmento: | Saúde |
| Módulo: | GESTÃO DE CONTRATOS / FAMÍLIAS |
| Função: | GERENCIADOR DE EMAIL |
| Issue : | DSAUBE-26611 |
Houve a necessidade de criar uma rotina automatizada para envio de e-mails, garantindo mais eficiência na comunicação e padronização das mensagens enviadas pelo sistema. Durante o processo, identificou-se a importância de permitir a configuração de eventos para disparo automático, assegurando que as notificações sejam enviadas de forma precisa e oportuna.
Personalização de Envio de E-mails
O configurador de e-mails é uma ferramenta que permite configurar dados de e-mails utilizados como remetentes em diversas rotinas. Ideal para clientes que desejam personalizar e-mails.
Entre as principais funcionalidades do configurador de e-mails, destacam-se:
Criação de layouts específicos em HTML e CSS para cada configuração.
Permite configurar diferentes remetentes para rotinas diferentes ou para uma mesma rotina levando em consideração a operadora, empresa, contrato e subcontrato.
Personaliza o envio de e-mails para diferentes rotinas ou para uma mesma rotina com base na operadora, empresa, contrato e subcontrato.

1 - Título Conf. - Título de identificação do Gerenciador de E-mail.
2 - Usu. Conta / Senha - Dados do e-mail remetente que irá enviar o E-mail.
3 - Autentica? - ComboBox que se marcado com Sim deverá ter os dados do Passo 4 como obrigatório.
4 - Usuario Aut. / Senha Aut. - Usuário de e-mail com dados de autenticação e token de autenticação para liberar o envio de E-mail.
5 - Remetente - Remetente que será enviado o E-mail.
6 - SMTP / Porta - SMTP do E-mail que está sendo configurado como Rementente (No exemplo estamos utilizando Gmail) e a Porta que deve ser usada conforme seleção do Passo 7 (No exemplo, utilizamos a porta SSL).
7 - Utiliza TLS? / Utiliza SSL? - Uma das duas deve estar como Sim para poder fazer a conexão com o SMTP e deverá ser configurado conforme informações do Passo 6.

8 - Assun. Email - Assunto que irá aparecer no E-mail que será enviado.
9 - Func. Dados - Função de dados para extrair informações da rotina para preencher o E-mail conforme tópico Função de Dados Exemplo.
10 - Corpo E-mail - Dados do HTML e CSS para personalizar o E-mail que será enviado conforme tópico Código exemplo de HTML para geração do E-mail.
11 - Funcao Conf. - Função que chamará esse Gerenciador de E-mail(No Exemplo está sendo chamado ao Bloquear um Beneficiário).
#INCLUDE "Totvs.ch" function dados() Local cCompHtml := "" oJErrorData := JsonObject():New() cCompHtml += "<tr>" cCompHtml += " <td>" + AllTrim(BA1->BA1_NOMUSR) + "</td>" cCompHtml += " <td>" + DTOC(BA1->BA1_DATINC) + "</td>" cCompHtml += " <td>" + DTOC(BA1->BA1_DATBLO) + "</td>" cCompHtml += "</tr>" oJErrorData["1"] := BA1->BA1_NOMUSR oJErrorData["2"] := BA1->(BA1_CODINT+BA1_CODEMP+BA1_MATRIC+BA1_TIPREG+BA1_DIGITO) oJErrorData["3"] := BA1->BA1_EMAIL oJErrorData["4"] := BA1->BA1_TELEFO oJErrorData["5"] := cCompHtml Return oJErrorData |
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f4;
}
.container {
max-width: 600px;
margin: 40px auto;
padding: 20px;
border-radius: 8px;
background-color: #ffffff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05);
}
.header,
.footer {
background-color: #6c9ebd;
color: #ffffff;
text-align: center;
padding: 10px;
border-radius: 8px 8px 0 0;
}
.footer {
border-radius: 0 0 8px 8px;
margin-top: 20px;
font-size: 14px;
}
h2 {
text-align: center;
color: #333;
}
.info {
padding: 10px 0;
font-size: 16px;
color: #555;
}
.info strong {
color: #222;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th,
td {
border: 1px solid #ddd;
padding: 12px;
text-align: left;
}
th {
background-color: #6c9ebd;
color: #ffffff;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
.company-name {
font-size: 20px;
color: #333;
text-align: center;
margin-bottom: 20px;
font-weight: bold;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h2>Usuario Bloqueado</h2>
</div>
<p class="info">
<strong>Prezado(a):</strong> ##1, portador da matrícula
<strong>##2</strong>
</p>
<p class="info">Esperamos que esta mensagem o(a) encontre bem.</p>
<p class="info">
Verificamos em nosso sistema que seu plano de saúde foi bloqueado devido
à inadimplência. Conforme a Resolução Normativa nº 593 da ANS (Agência
Nacional de Saúde Suplementar), o contrato pode ser suspenso ou
rescindido caso haja atraso superior a 60 dias, consecutivos ou não.
</p>
<p class="info">
Para restabelecer seus serviços de assistência à saúde, é necessário
regularizar os débitos pendentes. Caso já tenha efetuado o pagamento,
pedimos a gentileza de desconsiderar esta mensagem.
</p>
<p class="info">
Estamos à disposição para auxiliá-lo(a) no que for necessário.
</p>
<table>
<thead>
<tr>
<th>Nome</th>
<th>Data de Inclusão</th>
<th>Data de Bloqueio</th>
</tr>
</thead>
<tbody>
##5
</tbody>
</table>
<div class="footer">
<p>
Entre em contato conosco para mais informações.<br />Email: ##3 |
Telefone: ##4
</p>
</div>
</div>
</body>
</html> |
inclusão de itens da tabela BZD no Arquivo SX3:
Campo | Tipo | Tamanho | Decimal | Titulo | Descrição | Relação | Usado | Obrigatório | Exibe Browser | Visual | Contexto | VLDUSR | CBox | Help |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BZD_FILIAL | Caracter | 8 | 0 | Filial | Filial do Sistema | Não | Não | Não | Filial do Sistema | |||||
| BZD_ID | Caracter | 6 | 0 | ID Config. | ID Config. | NextNumero("BZD", 1, "BZD_ID", .T.) | Sim | Sim | Não | Visual | Real | ID do configurador | ||
| BZD_TITCFG | Caracter | 100 | 0 | Titulo Conf. | Titulo da configuracao | Sim | Sim | Sim | Alterar | Real | Titulo da configuracao | |||
| BZD_REMTNT | Caracter | 254 | 0 | Remetente | Remetente | Sim | Sim | Sim | Alterar | Real | VAZIO() .OR. ValidMail(M->BZD_REMTNT) | Remetente | ||
| BZD_SMTP | Caracter | 254 | 0 | SMTP | SMTP | Sim | Sim | Sim | Alterar | Real | SMTP | |||
| BZD_USUARI | Caracter | 254 | 0 | Usu. Conta | Usuario | Sim | Sim | Não | Alterar | Real | VAZIO() .OR. ValidMail(M->BZD_USUARIO) | Usuario | ||
| BZD_SENHA | Caracter | 254 | 0 | Senha | Senha | Sim | Sim | Não | Alterar | Real | Senha | |||
| BZD_PORTA | Númeral | 6 | 0 | Porta | Porta | Sim | Sim | Sim | Alterar | Real | Porta | |||
| BZD_AUTENT | Caracter | 1 | 0 | Autentica? | Autentica? | "1" | Sim | Sim | Não | Alterar | Real | 0=Nao;1=Sim | Autentica? | |
| BZD_USUAUT | Caracter | 254 | 0 | Usuario Aut. | Usuario Aut. | Sim | Não | Não | Alterar | Real | VAZIO() .OR. ValidMail(M->BZD_USUAUT) | Usuario Autenticador | ||
| BZD_SENAUT | Caracter | 254 | 0 | Senha Aut. | Senha Aut. | Sim | Não | Não | Alterar | Real | Senha Aut. | |||
| BZD_ASSUNT | Caracter | 254 | 0 | Assun. Email | Assun. Email | Sim | Sim | Não | Alterar | Real | Assun. Email | |||
| BZD_FUNCAO | Caracter | 20 | 0 | Func. Dados | Func. Dados | Sim | Não | Não | Alterar | Real | Func. Dados | |||
| BZD_HTML | Memo | 10 | 0 | Corpo E-mail | Corpo E-mail | Sim | Sim | Não | Alterar | Real | Corpo E-mail | |||
| BZD_USERGA | Caracter | 17 | 0 | Log de Alter | Log de Alteracao | Não | Não | Não | Visual | Real | Log de Alteração | |||
| BZD_USERGI | Caracter | 17 | 0 | Log de Inclu | Log de Inclusao | Não | Não | Não | Visual | Real | ||||
| BZD_TLS | Caracter | 1 | 0 | Utiliza TLS? | Utiliza TLS? | Sim | Sim | Não | Alterar | Real | 0=Nao;1=Sim | Utiliza TLS? | ||
| BZD_SSL | Caracter | 1 | 0 | Utiliza SSL? | Utiliza SSL? | Sim | Sim | Não | Alterar | Real | 0=Nao;1=Sim | Utiliza SSL? |
inclusão de itens da tabela BZD no Arquivo SX3:
Campo | Tipo | Tamanho | Decimal | Titulo | Descrição | Relação | Usado | Obrigatório | Exibe Browser | Visual | Contexto | Help |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BZF_FILIAL | Caracter | 8 | 0 | Filial | Filial do Sistema | Não | Não | Não | Filial do Sistema | |||
| BZF_IDBZD | Caracter | 6 | 0 | ID cabecalho | ID cabecalho | M->BZD_ID | Sim | Não | Não | Visual | Real | ID do cabeçalho |
| BZF_ID | Caracter | 6 | 0 | ID registro | ID registro | Sim | Não | Não | Visual | Real | ID do registro | |
| BZF_FUNCFG | Caracter | 30 | 0 | Funcao Conf. | Funcao de Configuracao | Sim | Não | Não | Alterar | Real | Função de Configuração | |
| BZF_USERGI | Caracter | 17 | 0 | Log de Inclu | Log de Inclusao | Não | Não | Não | Visual | Real | Log de Inclusão | |
| BZF_USERGA | Caracter | 17 | 0 | Log de Alter | Log de Alteracao | Não | Não | Não | Visual | Real | Log de Alteração |
Inclusão no Arquivo SIX:
Índice | Ordem | Chave | Descrição |
|---|---|---|---|
| BZD | 1 | BZD_FILIAL + BZD_ID | Filial + ID |
| BZF | 1 | BZF_FILIAL + BZF_FUNCFG | Filial + funcao em execucao |
Inclusões na tabela SX2 (Tabela):
| Tabela | BZD |
| Modo | Compartilhado |
| Modo Unidade | Exclusivo |
| Modo Empresa | Exclusivo |
| Chave Única | BZD_FILIAL + BZD_ID |
| Nome | Cabecalho do Config. de email |
| Tabela | BZF |
| Modo | Compartilhado |
| Modo Unidade | Exclusivo |
| Modo Empresa | Exclusivo |
| Chave Única | BZF_FILIAL + BZF_IDBZD + BZF_FUNCFG |
| Nome | Funcoes do Config. de email |
Não se aplica