Gatilhos para CAMPANHA e CAMPWF
Destina-se aos Supervisores do Sistema ISOCRM
Objetivo
Este documento tem o objetivo de detalhar como é construído os gatilhos para Campanha e Campanha com WorkFlow
Exemplos:
Os exemplos abaixo são gatilhos usados em produção por clientes, portanto já são homologados.
Exemplo 1-Envio de Email lendo resposta dos DC do Contato da campanha
(Envia email pelo Workflow de acordo com informações respondidas em dados complementares do contato da Campanha)
INSERT INTO ISOSDCON_ENTIDADE
SELECT DISTINCT A.ISOEMP_CODIGO, §ISOSDCONEXE_CODIGO§, C.ISOMKATECMPCNT_ENTCODIGO AS CODIGO,'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM
ISOMKATECMPCNTATTVALUES A LEFT JOIN ISOMKATECMPCNTATT B
ON
A.ISOMKATECMPCNTATTID = B.ISOMKATECMPCNTATTID AND
A.ISOEMP_CODIGO = B.ISOEMP_CODIGO AND
A.ISOMKATECMPCNTFORMDEFID = B.ISOMKATECMPCNTFORMDEFID
LEFT JOIN ISOMKATECMPCONTATO C
ON
A.ISOMKATECMP_CODIGO = C.ISOMKATECMP_CODIGO AND
A.ISOEMP_CODIGO = C.ISOEMP_CODIGO AND
A.ISOMKATECMPCNT_SEQUENCIA = C.ISOMKATECMPCNT_SEQUENCIA
WHERE B.ISOMKATECMPCNTFORMDEFID = 3 AND
B.ISOMKATECMPCNTATTID = 54 AND
B.ISOMKFIN_CODIGO = 1 AND
DATEADD(DAY, 1, CAST(CONVERT(CHAR , GETDATE(), 102) AS DATETIME)) = CONVERT(DATETIME, DBO.RETORNADATA(A.ISOMKATECMPCNTATTVALUE, 2), 120)
Exemplo 2 – Inserir cliente/contato de uma Campanha em outra Campanha
(insere contato na campanha de acordo com o resultado da finalidade de uma outra campanha)
INSERT INTO ISOSDCON_CAMPANHACONTATO
SELECT DISTINCT A.ISOEMP_CODIGO, §ISOSDCONEXE_CODIGO§, B.ISOMKATECMP_CODIGO, B.ISOMKATECMPCNT_SEQUENCIA,
'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§ FROM ISOMKATECMPCNTDETALHE A
WITH (NOLOCK) LEFT JOIN ISOMKATECMPCONTATO B
WITH (NOLOCK) ON A.ISOEMP_CODIGO = B.ISOEMP_CODIGO
AND A.ISOMKATECMP_CODIGO = B.ISOMKATECMP_CODIGO
AND A.ISOMKATECMPCNT_SEQUENCIA = B.ISOMKATECMPCNT_SEQUENCIA
WHERE A.ISOMKATECMP_CODIGO = 1 AND A.ISOMKFINRSL_CODIGO = 64 AND
UPPER(B.ISOMKATECMPCNT_SITTABULADA) <> 'PRO'
Exemplo 3-Envio de e-mail após 45 dias com base em resposta DC Contato da Campanha
APÓS 45 DIAS DO INICIO DE VIGÊNCIA (Envia email pelo Workflow de acordo com informações respondidas em
Dados Complementares do contato da Campanha)
INSERT INTO ISOSDCON_ENTIDADE
SELECT DISTINCT A.ISOEMP_CODIGO, §ISOSDCONEXE_CODIGO§, C.ISOMKATECMPCNT_ENTCODIGO AS CODIGO,'A',
CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOMKATECMPCNTATTVALUES A
LEFT JOIN ISOMKATECMPCONTATO C
ON
A.ISOMKATECMP_CODIGO = C.ISOMKATECMP_CODIGOAND A.ISOEMP_CODIGO = C.ISOEMP_CODIGO
AND A.ISOMKATECMPCNT_SEQUENCIA = C.ISOMKATECMPCNT_SEQUENCIA
WHERE A.ISOMKATECMPCNTFORMDEFID = 1 AND A.ISOMKATECMPCNTATTID = 22 AND
DBO.RETORNADIFERENCA(A.ISOMKATECMPCNTATTVALUE) = 45 AND A.ISOMKATECMP_CODIGO = 4 AND
A.ISOEMP_CODIGO = 1
Exemplo 4- Inserir um contato na campanha de acordo com a Região do Cliente
REGIAO 1 (Insere um contato na campanha de acordo com a Região do Cliente e classificação do cliente/contato)
INSERT INTO ISOSDCON_ENTIDADE
SELECT DISTINCT A.ISOEMP_CODIGO, §ISOSDCONEXE_CODIGO§, B.ISOMKATECMPCNT_ENTCODIGO
AS CODIGO,'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOMKATECMPCONTATO B WITH (NOLOCK)
INNER JOIN ISOENTORGANIZACAO C WITH (NOLOCK)
ON B.ISOMKATECMPCNT_ENTCODIGO = C.ISOENTORG_CODIGO
INNER JOIN ISOENTCLIENTE A WITH (NOLOCK)
ON A.ISOEMP_CODIGO = B.ISOEMP_CODIGO
AND A.ISOENTCLI_CODIGO = C.ISOENTORG_CODIGO
WHERE B.ISOMKATECMP_CODIGO NOT IN (8, 28, 30)
AND A.ISOENTCLA_CODIGO IN (1,8,9,10)
AND A.ISOREG_CODIGO = 1
Exemplo 5:Inserir contato lendo ramo de atividade e que não tenha NF emitidas a mais de 180 dias.
REVENDAS INATIVAS (Insere contato na campanha de acordo com Ramo de Atividade e que não tenham Nota fiscal emitidas a mais de 180 dias)
INSERT INTO ISOSDCON_ENTIDADE
SELECT 1, §ISOSDCONEXE_CODIGO§, ISOENTORG_CODIGO, 'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOENTORGANIZACAO
WHERE ISOENTRAMATV_CODIGO = 3
AND ISOENTORG_CODIGO NOT IN ( SELECT ISOENTCLI_CODIGO FROM ISOENTCLINOTAFISCAL
WHERE ISOENTCLINF_DATA > GETDATE() - 180 ) AND ISOENTORG_FLAG = 'A' AND
ISOENTORG_DATACADASTRO < GETDATE() - 180
Exemplo 6- Inserir contato na campanha com Nota fiscal de determinado produto a 90 dias
Produto X (insere contato na campanha com Nota fiscal de determinado produto a 90 dias)
INSERT INTO ISOSDCON_ENTIDADE
SELECT DISTINCT 1, §ISOSDCONEXE_CODIGO§, ISOENTCLIENTE.ISOENTCLI_CODIGO, 'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOENTCLIENTE
INNER JOIN ISOENTCLINOTAFISCAL
ON ISOENTCLINOTAFISCAL.ISOENTCLI_CODIGO = ISOENTCLIENTE.ISOENTCLI_CODIGO
LEFT JOIN ISOENTCLINFITEM
ON ISOENTCLINOTAFISCAL.ISOENTCLINF_NUMERO = ISOENTCLINFITEM.ISOENTCLINF_NUMERO
AND ISOENTCLINOTAFISCAL.ISOENTCLINF_REFFISCAL = ISOENTCLINFITEM.ISOENTCLINF_REFFISCAL
AND ISOENTCLINOTAFISCAL.ISOENTCLINF_SERIE = ISOENTCLINFITEM.ISOENTCLINF_SERIE
WHERE
ISOPRD_CODIGO IN (40860179) AND DATEDIFF(DAY, ISOENTCLINF_DATA, GETDATE()) = 90
Exemplo7- Inserir contatos na campanha lendo data de aniversário e segmento da Entidade
ANIVERSARIANTES DO DIA(REPRESENTANTES) (insere contatos na campanha de acordo com data de aniversário e segmento da Entidade)
INSERT INTO ISOSDCON_ENTIDADE
SELECT 1, §ISOSDCONEXE_CODIGO§, ISOENTPES_CODIGO, 'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOENTPESSOA
WHERE DAY(ISOENTPES_DATANASCIMENTO) = DAY(GETDATE())
AND MONTH(ISOENTPES_DATANASCIMENTO) = MONTH(GETDATE())
AND ISOENTPES_DATANASCIMENTO <> '1753-01-01'
AND ISOENTPES_DATANASCIMENTO IS NOT NULL
AND ISOENTSEG_CODIGO = 11
Exemplo 8- Inserir contato na campanha de acordo com a Classificação do papel
Campanha X (insere contato na campanha de acordo com a Classificação do papel)
INSERT INTO ISOSDCON_ENTIDADE
SELECT 1, §ISOSDCONEXE_CODIGO§, ISOENTCLI_CODIGO, 'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOENTECLIENTE WHERE ISOENTCLAP_CODIGO=1
Exemplo9-Alterar situação do contato da Campanha atraves do resultado informado.
11-CONTATO CAMPANHA-SIT 5-PROSPECÇÃO/SUSPECTS (Altera através de workflow a situação do contato da Campanha de acordo com o Resultado da Finalidade)
INSERT INTO ISOSDCON_ENTIDADE
SELECT DISTINCT A.ISOEMP_CODIGO, §ISOSDCONEXE_CODIGO§, B.ISOMKATECMPCNT_ENTCODIGO
AS CODIGO,'A', CAST(CONVERT(CHAR , GETDATE(), 120) AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOMKATECMPCNTDETALHE A
WITH (NOLOCK) LEFT JOIN ISOMKATECMPCONTATO B
WITH (NOLOCK) ON A.ISOEMP_CODIGO = B.ISOEMP_CODIGO
AND A.ISOMKATECMP_CODIGO = B.ISOMKATECMP_CODIGO
AND A.ISOMKATECMPCNT_SEQUENCIA = B.ISOMKATECMPCNT_SEQUENCIA
LEFT JOIN ISOMKATECAMPANHA C ON C.ISOEMP_CODIGO = A.ISOEMP_CODIGO AND
C.ISOMKATECMP_CODIGO = A.ISOMKATECMP_CODIGO
WHERE C.ISOMKFIN_CODIGO = 10 AND A.ISOMKFINRSL_CODIGO IN (21,22) AND ISOMKATECMPCNTDET_FINALCONTATO >= §ISOWFPRCPAD_MK_DATAMOTOR§
Exemplo10-Inserir clientes de um determinado responsável em sua própria campanha.
Campanha - Inserir clientes de um determinado responsável em sua própria campanha.
INSERT INTO ISOSDCON_ENTIDADE
SELECT 1, §ISOSDCONEXE_CODIGO§, ISOENT_CODIGO
AS CODIGO ,'A', CAST(CONVERT(CHAR , GETDATE(), 120)
AS DATETIME), §ISOSDCONEXE_USUARIOALTERACAO§
FROM ISOENTIDADE
WHERE ISOENT_FLAG = 'A' AND ISOENT_CODIGO IN(SELECT ISOENTCLI_CODIGO FROM
ISOENTRSP_CLIENTES
WHERE ISOENTRSP_CODIGO IN (5922,2400,154,148,1581,1623,2408) AND ISOENTRSP_CLI_FLAG = 'A')