Mudanças entre as edições de "SMS"

De Tek-System Wiki
Ir para navegação Ir para pesquisar
Linha 85: Linha 85:
Tags disponíveis:
Tags disponíveis:


<pre><BR> para quebra de linha na mensagem.</pre>
<pre><br> para quebra de linha na mensagem.</pre>


<pre><CODIGO_PESSOA> para substituir pelo código da pessoa encontrada nos filtros.</pre>
<pre><CODIGO_PESSOA> para substituir pelo código da pessoa encontrada nos filtros.</pre>

Edição das 16h00min de 8 de março de 2023

Liberação da Funcionalidade

Para utilização do envio de SMS pelo sistema Tek-System ERP 4G será necessário a liberação da funcionalidade na Licença do cliente.

Envio de SMS

Os envios de SMS podem ser realizados através de processamentos específicos, agendamentos, gatilhos, entre outros.

Serão enviados apenas para pessoas que possuem telefones do tipo igual a C = Celular.

INTEGRACAO SMS: Enviar Mensagem

Envio de mensagem SMS informada pelo usuário através do processamento específico INTEGRACAO SMS: Enviar Mensagem para filtros de pessoas.

Ao executar o processamento será apresentado a tela com os filtros:

EnvioAvulsoSMS.png

No campo de mensagem, o usuário poderá informar a mensagem que deseja enviar.

Utilize a tag <BR> para quebra de linha na mensagem.
Utilize a tag <RAZAO_PESSOA> para substituir pelo nome da pessoa encontrada nos filtros.

Ao executar, irá apresentar uma tela para selecionar quais pessoas irão receber as mensagens.

EnvioAvulsoSMS 02.png

Após confirmação dos filtros, será enviado as mensagens SMS.

INTEGRACAO SMS: Enviar Status dos Documentos

Envio de mensagem SMS através do processamento específico INTEGRACAO SMS: Enviar Status dos Documentos para documentos que tiveram alteração de Status na data atual.

Ao executar o processamento será apresentado a tela com os filtros:

EnvioSmsStatus 01.png

No campo de mensagem, o usuário poderá informar a mensagem que deseja enviar. Caso não informe uma mensagem, será utilizado a mensagem padrão:

A mensagem deve ter no máximo 160 caracteres.

Alteracao de status <br> <TIPODOCUMENTO>: <DOCUMENTO> <br> Status: <CODIGO_STATUS> - <DESCRICAO_STATUS> <br> Data: <DATA_ALTERACAO>

Tags disponíveis:

<br> para quebra de linha na mensagem.
<CODIGO_PESSOA> para substituir pelo código da pessoa encontrada nos filtros.
<RAZAO_PESSOA> para substituir pelo nome da pessoa encontrada nos filtros.
<EMPRESA> para substituir pelo nome da empresa.
<DOCUMENTO> para substituir pelo número do documento.
<CODIGO_STATUS> para substituir pelo código do status.
<CODIGO_STATUS> para substituir pelo código do último status atualizado.
<DESCRICAO_STATUS> para substituir pelo descrição do último status atualizado.
<DATA_ALTERACAO> para substituir pela data do último status atualizado.

Ao executar, irá apresentar uma tela para selecionar quais pessoas irão receber as mensagens.

EnvioSmsStatus 02.png

Após confirmação dos filtros, será enviado as mensagens SMS.

INTEGRACAO SMS: Enviar Cobrança

Envio de mensagem SMS através do processamento específico INTEGRACAO SMS: Enviar Cobrança para duplicatas e cheques de cobrança.

Ao executar o processamento será apresentado a tela com os filtros:

EnvioSmsCobranca 01.png

No campo de mensagem, o usuário poderá informar a mensagem que deseja enviar. Caso não informe uma mensagem, será utilizado a mensagem padrão:

A mensagem deve ter no máximo 160 caracteres.

Ola! Nao identificamos o pagamento do titulo <DOCUMENTO>. Entre em contato para chegarmos juntos a melhor solucao.<br> <EMPRESA>

Tags disponíveis:

<br> para quebra de linha na mensagem.
<CODIGO_PESSOA> para substituir pelo código da pessoa encontrada nos filtros.
<RAZAO_PESSOA> para substituir pelo nome da pessoa encontrada nos filtros.
<EMPRESA> para substituir pelo nome da empresa.
<DOCUMENTO> para substituir pelo número do documento.
<SEQUENCIA> para substituir pelo código da sequencia da duplicata ou cheque.
<DTEMISSAO> para substituir pela data de emissão da duplicata ou cheque.
<DTVENCIMENTO> para substituir pela data de vencimento da duplicata ou cheque.
<VALOR> para substituir pelo valor da duplicata ou cheque.
<VALOR_ABERTO> para substituir pelo valor aberto da duplicata ou cheque.
<VALOR_PAGO> para substituir pelo valor pago da duplicata ou cheque.

Ao executar, irá apresentar uma tela para selecionar quais pessoas irão receber as mensagens.

EnvioSmsCobranca 02.png

Após confirmação dos filtros, será enviado as mensagens SMS.

Agendamento de SMS

Ao acessar o cadastro de Agendamentos no módulo BI - Gerador de Relatórios, o usuário poderá verificar o exemplo de utilização do agendamento de SMS.

Menu -> Relatórios -> Agendamentos

Selecionar a opção de Condição para Execução, Exemplo de Envio de SMS.

Envio de Status de Documentos

Exemplo de configuração para agendamento de envio de status dos documentos.

Configuração padrão, filtros vazios:

  • Será enviado SMS para todas pessoas que possuem telefone do tipo C= Celular, e que tenham a marcação de envia Mala Direta em seu cadastro.
  • Será considerado todos documentos que tiveram atualização de Status no dia.
  • IgnorarEcommerces: Indica que o processamento irá ignorar pedidos referente E-Commerces, pois geralmente as notificações já são tratadas pelas integrações.
  • A mensagem a ser enviada deverá respeitar o limite de 160 caracteres.

Condição para Execução:

unit ProcessarEnvioSMS;

uses TEK_INTEGRACAO_SMS_PROC_STATUS_DOCUMENTOS;

const
  IgnorarEcommerces = True; 
  Filtros = '';
  
function Main: OleVariant;
var
  Mensagem: String; 
begin
  Mensagem := 'Alteracao de status <br> <TIPODOCUMENTO>: <DOCUMENTO> <br> Status: <CODIGO_STATUS> - <DESCRICAO_STATUS> <br> Data: <DATA_ALTERACAO>';

  TEK_INTEGRACAO_SMS_PROC_STATUS_DOCUMENTOS.DefinirMensagemPadrao(Mensagem);
  TEK_INTEGRACAO_SMS_PROC_STATUS_DOCUMENTOS.ProcessarAgendamento(Filtros, IgnorarEcommerces);

  Result := True;
end;

end.

Para utilizar filtros diferentes do padrão será necessário preencher as constantes Filtros.

Exemplo:

Considerar apenas pedidos de venda da empresa, com status alterados na data atual, e pessoas com telefone igual ao tipo C= Celular e marcação de Envia Mala Direta.

const
   Filtros = '  and DOCUMENTO_FATURA.TIPO_DOCFAT = 1 ' + #13 +
             '  and DOCUMENTO_STATUS.DATAHORAALTERACAO_DOCSTA >= ' + DataSQL(HOJE, 1) + #13 +
             '  and DOCUMENTO_FATURA.EMPRESA_DOCFAT = ' + IntToStr(Codigo_Empresa_Atual) + #13 +
             '  and PESSOA_TELEFONE.TIPOTELEFONE_PESSOA_TEL = ''C''' + #13 +                  
             '  and PESSOA.MALADIRETA_PESSOA = ''S'''; 

Envio de Cobrança

Exemplo de configuração para agendamento de envio de cobrança por SMS.

Configuração padrão, filtros vazios:

  • Será enviado SMS para todas pessoas que possuem telefone do tipo C= Celular, e que tenham a marcação de envia Mala Direta em seu cadastro.
  • Será considerado todas duplicatas abertas com vencimento anterior a dois dias da data atual.
  • Será considerado todos cheques devolvidos abertos com vencimento anterior a dois dias da data atual.
  • A mensagem a ser enviada deverá respeitar o limite de 160 caracteres.

Condição para Execução:

unit ProcessarEnvioSMS;

uses TEK_INTEGRACAO_SMS_PROC_COBRANCA;

const
  FiltrosDup = ''; 
  FiltrosChe = ''; 

function Main: OleVariant;
var
  Mensagem: String; 
begin
  Mensagem := 'Ola! Nao identificamos o pagamento do titulo <DOCUMENTO>. Entre em contato para chegarmos juntos a melhor solucao.<br> <EMPRESA>';

  TEK_INTEGRACAO_SMS_PROC_COBRANCA.DefinirMensagemPadrao(Mensagem);
  TEK_INTEGRACAO_SMS_PROC_COBRANCA.ProcessarAgendamento(FiltrosDup, FiltrosChe);

  Result := True;
end;

end.

Para utilizar filtros diferentes do padrão será necessário preencher as constantes FiltrosDup(Para Duplicatas) e/ou FiltrosChe(Para Cheques).

Exemplo:

Duplicatas com vencimento no ano anterior.

const
    FiltrosDup := '  and DUPLICATA.VENCIMENTO_DUP between ' + DataSQL(INICIO_ANO_ANTERIOR, 1) + ' and ' + DataSQL(FIM_ANO_ANTERIOR, 2) + #13 +
                  '  and DUPLICATA.SUBSTITUIDA_DUP = ''N''' + #13 +
                  '  and DUPLICATA.DESCONSIDERADA_DUP = ''N''' + #13 +
                  '  and PESSOA_TELEFONE.TIPOTELEFONE_PESSOA_TEL = ''C''' + #13 +
                  '  and PESSOA.MALADIRETA_PESSOA = ''S''' + #13 +
                  '  and DUPLICATA.EMPRESA_DUP = ' + IntToStr(Codigo_Empresa_Atual) + #13;
    FiltrosChe := '';

Desconsiderar cheques para envio:

const
  FiltrosDup = ''; 
  FiltrosChe = 'and CHEQUE.AUTOINC_CHE = -1'; 

Gatilhos

Exemplo de utilização de envio de SMS através de gatilhos.

Enviar SMS notificando ao cliente sempre que houver alteração do Status.

unit GatilhoDocumento;

const
  cSistema = 86;

var
  CDSCad, CDSTemp: TClientDataSet;
  Documento, Mensagem, Celular, Status, DescStatus, Sql: String;
     
procedure Main;
begin
  if OldValue('STATUS_DOCFAT') <> Value('STATUS_DOCFAT') then
  begin
    CDSCad := FonteDeDados('CDSCadastro');
    CDSTemp := TClientDataSet.Create;  
    try
      Sql := 'select PESSOA_TELEFONE.TELEFONE_PESSOA_TEL' + #13 +
             'from PESSOA' + #13 +
             'left join PESSOA_TELEFONE on (PESSOA_TELEFONE.PESSOA_PESSOA_TEL = PESSOA.CODIGO_PESSOA)' + #13 +
             'where PESSOA.MALADIRETA_PESSOA = ''S''' + #13 + 
             '  and PESSOA_TELEFONE.TIPOTELEFONE_PESSOA_TEL = ''C''' + #13 + 
             '  and  PESSOA_TELEFONE.TELEFONE_PESSOA_TEL is not null' + #13 +
             '  and  PESSOA_TELEFONE.TELEFONE_PESSOA_TEL is not null' + #13 +             
             '  and PESSOA.CODIGO_PESSOA = ' + CDSCad.FieldByName('CLIENTE_DOCFAT').AsString;
             
      CDSTemp.Data := ExecuteReader(Sql);
      
      Documento  := CDSCad.FieldByName('CODIGO_DOCFAT').AsString;
      Status     := CDSCad.FieldByName('STATUS_DOCFAT').AsString;
      DescStatus := CDSCad.FieldByName('DESCRICAO_STATUS').AsString; 
        
      Mensagem   := 'Alteracao de status <br> Pedido: ' + Documento + ' <br> Status: ' + Status + ' - ' + DescStatus + ' <br> Data: ' + DateTimeToStr(Hoje);
      
      CDSTemp.First;
      while not CDSTemp.Eof do
      begin  
        Celular  := CDSTemp.FieldByName('TELEFONE_PESSOA_TEL').AsString;

        EnviarSimplesSms(cSistema, Documento, Celular, Mensagem, '', '', Hoje);
      
        CDSTemp.Next;    
      end;          
    finally
      CDSTemp.Free;
    end;  
  end;      
end;

end.