Gestão do relacionamento com o cliente (CRM)

CRM_2

Descrição

CRM é a sigla para "Customer Relationship Management".

O CRM é composto por processos de gerenciamento que se concentram em estabelecer e manter relacionamentos duradouros e mutuamente benéficos com os clientes de uma empresa.

O objetivo principal do CRM é maximizar a satisfação do cliente e aumentar a rentabilidade do negócio, fornecendo uma visão abrangente do cliente, melhorando a eficiência dos processos de negócios e permitindo a personalização dos serviços e produtos oferecidos.

Algumas das atividades típicas do CRM incluem o gerenciamento de contatos e leads, a análise de dados do cliente, a gestão de vendas, o gerenciamento de campanhas de marketing, o gerenciamento de serviços ao cliente, a gestão de suporte técnico e a gestão da fidelidade do cliente.

O CRM é uma disciplina que abrange muitas áreas, incluindo vendas, marketing, atendimento ao cliente, tecnologia da informação e gestão de negócios. O sucesso do CRM depende de uma forte liderança, uma cultura organizacional orientada para o cliente, a utilização de ferramentas e tecnologias de CRM adequadas, e a melhoria contínua do desempenho em relação aos clientes.

Procedimentos

Interfaces

Sub-sistemas relacionados

Configurações

CRM_2.CAD_CAMPANHAS_CRM_FILTROS.TOTAIS.SCRIPT

Script

Script para apresentação dos totais de pessoas e telefones na campanha definido conforme os padrões de SCRIPTED_FIELD.

Um SCRIPTED_FIELD é um campo só de apresentação (read-only) cujo conteúdo apresentado é o resultado da execução de um script. Campos deste tipo devem ser utilizados apenas como UNBOUNDS em interfaces. Não há nenhum suporte para persistir seu conteúdo, ou seja, não deve ser usado em entidades.

O script deve ser registrado em uma preferência de runtime "SCRIPT" associada ao campo e pode ser customizado em tempo de execução. O script pode ser escrito em qualquer uma das linguagens de script disponíveis no ambiente. As principais são:

  • Telescope Script Engine (padrão)
  • Groovy
  • ECMAScript

Para utilizar uma linguagem diferente do padrão, basta incluir na primeira linha do script com "#!" seguido do nome da linguagem utilizada. Exemplo:
#! Groovy

No script, os seguintes objetos de contexto estão disponíveis para uso:
  • ctx: Contexto da requisição
  • session: Sessão atual
  • user: Usuário logado (se houver)
  • id: Id do registro da entidade base que está sendo acessado
  • form: Formulário da operação corrente
  • model: Service model que representa o bloco
  • record: Registro completo da entidade base
  • field: O próprio campo
  • parâmetros: Todos os parâmetros registrados no bloco são expostos no script com seu nome em minúsculo. Exemplo: pedido_id, documento_id, titulo_id, etc.

Alguns exemplos úteis:
  • ${user.id}:
  • ${user.loginName}:
  • ${session.ESTABELECIMENTO_ID}:
  • ${session.PERSON_ID}:

Se for necessário atualizar o scripted-field quando algum campo da tela for alterado (em operações de INSERT ou UPDATE, por exemplo), será necessário fazer uma regra disparada no ON_CHANGE implementada da seguinte forma:
aCampo.value("-").nullify();
aCampo.setVisible(!"".equals(aCampo.getValue()));

Explicação:
  • O .value("-") garante que o campo fique marcado para ser retornado pelo Ajax.
  • O .nullify() garante que o próximo getValue() execute o script para atualizar o valor.
  • O .setVisible(!"".equals(aCampo.getValue()) fará com que o script seja executado e no caso do valor retornado pelo script for nulo (vazio), então o campo será escondido na tela.



Tipo: SOURCE_CODE

Valor padrão: #!TSL item pessoas_total integer, label='Total de pessoas'; item pessoas_filtro integer, label='Com filtro'; item fones_total integer, label='Total de telefones'; item fones_filtro integer, label='Com filtro'; select count(distinct pessoas_total) as pessoas_total , count(distinct pessoas_filtro) as pessoas_filtro , count(1) as fones_total , sum(fones_filtro) as fones_filtro from ( select pc.id as pessoas_total , case when cpc.filtro='S' then pc.id else null end as pessoas_filtro , 1 as fones_total , case when cpc.filtro='S' then 1 else 0 end as fones_filtro from pessoas_campanhas pc join dados_pessoas dp on dp.id = pc.pessoa_mailing_id join contatos_pessoas_campanhas cpc on cpc.pessoa_campanha_id = pc.id where pc.campanha_id = ${id} ) q

CRM_2.CAD_CONTATOS_CRM.SCRIPT_INFORMACOES_PESSOA

Script Engine para apresentação de informações adicionais da pessoa, como telefone, email, endereço e etc.
P.ex.:
Apresentar todos os meios de contatos da pessoa
item tipo_endereco text, label=Tipo;
item endereco text, label=Contato;
item observacoes text, label=Observações;

select tpend.tipo_endereco, ende.endereco, ende.observacoes
from enderecos ende
join tipos_enderecos tpend on tpend.id = ende.tipo_endereco_id
where pessoa_id = ${id}
and ende.ativo = 'S'
and tpend.tipo_enderecamento = 'E';

Tipo: SOURCE_CODE

CRM_2.CAD_CONTATOS_CRM.SCRIPT_VINCULACOES

Configuração da apresentação de vínculos ao contato CRM

Script engine utilizado para apresentar os vínculos do contato com, por exemplo pedidos ou orçamentos.

Quando informado, este campo representa um script que gera informações adicionais sobre este contato. Normalmente, esta preferência é utilizada para apresentar os pedidos gerados pelo contato, mas pode ser utilizada para agregar quaisquer outras informações neste contexto.

O preenchimento deve seguir a sintaxe do Telescope Script Engine que deve utilizar a(s) seguinte(s) variável(is) de contexto (macros):

  • ${id}: ID do contato que está sendo realizado.

Ver também:

Tipo: SOURCE_CODE

Valor padrão: set table-title '

Pedido/orçamentos

'; item pedido text_html; label='Pedido'; item data_inclusao date_time; label='Data inclusão'; item tipo_pedido text; label='Tipo'; item link text_html; label='Link'; select (''||p.pedido::text||'') as pedido , p.data_inclusao , tp.tipo_pedido from pedidos p join tipos_pedidos tp on tp.id = p.tipo_pedido_id where p.contato_crm_id = ${id} union select (''||p.pedido::text||'') as pedido , p.data_inclusao , tp.tipo_pedido from contatos c join pedidos p on p.id = c.pedido_id join tipos_pedidos tp on tp.id = p.tipo_pedido_id where c.id = ${id}

CRM_2.CAD_PERSPECTIVAS_NEGOCIOS.ATRIBUTOS_HISTORICO

Atributos a serem apresentados no histórico

Nomes dos atributos a serem apresentados no histórico separados por vírgulas.

Tipo: UPPER

CRM_2.CAMPANHAS_CRM.ORDEM_CHAMADAS

Ordem das ligações

Indica a ordem pela qual as ligações serão realizadas.

O preenchimento da ordenação segue a sintaxe do SQL considerando os seguintes aliases:


Caso não configurado, assume a sequencia dos contatos de cada pessoa seguido do ID da pessoa na campanha (ordem de entrada da pessoa na campanha):
cpc.sequencia, pc.id

Exemplo: Dado um mailing com 3 pessoas, cada uma com 2 números de telefone, a sequencia será:
  1. Pessoa 1, fone 1
  2. Pessoa 2, fone 1
  3. Pessoa 3, fone 1
  4. Pessoa 1, fone 2
  5. Pessoa 2, fone 2
  6. Pessoa 3, fone 2

Tipo: TEXT