4.9 Aviso via transaction para documentos e cadastros
Aviso via Transaction para Documentos e Cadastros
Se você precisaQuer alertar o usuário sobre determinadauma situação eespecífica pedirno amomento ciência/concordânciade dele,salvar essaum édocumento aou funcionalidadecadastro certa.
SAP? O CRM One possuipermite uma tratativa para transactions padrões do SAP Business One, onde ela pode ao invés de simplesmente bloquearinterceptar a ação, apresentar uma mensagemo e questionar o usuário se quer seguir ou não.
Exemplo de uso:
A empresa necessita que seja enviadaexibir uma mensagem de confirmação sempreantes de continuar.
💡 Essa funcionalidade é ideal quando você quer que o usuáriotransformarconfirme conscientemente uma ação importante, como alterar umLEAD em um CLIENTE.
Então, criaremos uma transaction padrão no B1, considerando:
1- Verificar o tipo do PN no log das tabelas do B1,lead paraidentificarcliente.
Como tipo do PN antes da alteração.
2- Verificar o tipo do PN que está sendo salvo.funciona?
Ao validar,invés iremosde retornarbloquear totalmente a mensagemação depor “erro”meio da transaction nodo seguinteSAP, formato:você pode incluir uma mensagem de alerta com a tag especial [AlertaCRMOne]
.
[AlertaCRMOne]Essa Desejatag alterarfaz ocom cadastro de LEAD para CLIENTE?
Ao receber a mensagem da transaction,que o CRM One irá interpretarinterprete a stringresposta [AlertaCRMOne]como euma transformaráconfirmação — exibindo dois botões para o bloqueiousuário emescolher: umaSim “mensagemou de confirmação”Não.
Veja como o retorno da transaction aparecerá:

- Se o usuário clicar
noembotãNãoNÃO,: amensagemação seráfechadacanceladaesemnadaalteração. - Se clicar em Sim: a alteração será
feito,reprocessadainclusiveautomaticamente.Poratrásatualizaçãodadomágica
SeQuando o usuário clicarconfirma no botão SIM, o CRM One irá reprocessar a atualização e seguir adiante.
É importante entender que quando o usuário clicar no botão SIM(SIM), o CRM One atualiza umo campo de usuário de controle chamado U_DWU_IgnoraAlerta
na tabela correspondente da validação com o valor ‘S‘ de SIMS’. PorA isso, sua transaction deveprecisa validar esse campo também para permitirevitar que a atualizaçãomensagem ocorrareapareça comno sucessoreprocessamento.
Exemplo prático – Lead para Cliente
A seguir, veja o usuárioexemplo clicar no botão SIM, ou seja, quando o CRM One reprocessar a atualização, ade transaction não vaipara exibir a mensagem ao alterar um parceiro de novo.negócio do tipo LEAD para CLIENTE:
Agora,
Transaction veja a transactionpara SQL para a tratativa:Server
-- ################################################
-- INÍCIO - Alerta Lead para Cliente - CRM ONE
-- ################################################
-- VALIDA NOVO CADASTRO DO TIPO CLIENTE
IF @object_type in ('2') and @transaction_type in ('A')
BEGIN
IF
(SELECT CardType FROM OCRD WHERE CardCode = @list_of_cols_val_tab_del) = 'C'
AND (SELECT ISNULL(U_DWU_IgnoraAlerta,'N') FROM OCRD WHERE CardCode = @list_of_cols_val_tab_del) = 'N'
AND (SELECT ISNULL(U_DWU_Origem,'') FROM OCRD WHERE CardCode = @list_of_cols_val_tab_del) = 'W'
BEGIN
Select @error = -1, @error_message = '[AlertaCRMOne] Deseja inserir o cadastro diretamente como CLIENTE?'
select @error, @error_message
END
END
-- VALIDA SE ALTERAÇÃO CADASTRO ESTÁ SENDO ALTERADO DE LEAD PARA CLIENTE
IF @object_type in ('2') and @transaction_type in ('U')
BEGIN
IF
(SELECT TOP 1 CardType FROM ACRD WHERE CardCode = @list_of_cols_val_tab_del ORDER BY LogInstanc DESC) = 'L'
AND (SELECT CardType FROM OCRD WHERE CardCode = @list_of_cols_val_tab_del) = 'C'
AND (SELECT ISNULL(U_DWU_IgnoraAlerta,'N') FROM OCRD WHERE CardCode = @list_of_cols_val_tab_del) = 'N'
AND (SELECT ISNULL(U_DWU_Origem,'') FROM OCRD WHERE CardCode = @list_of_cols_val_tab_del) = 'W'
BEGIN
Select @error = -1, @error_message = '[AlertaCRMOne] Deseja alterar o cadastro de LEAD para CLIENTE?'
select @error, @error_message
END
END
-- REDEFINERESET ODO CAMPO U_DWU_IgnoraAlerta PARA 'N' PARA CAIR NOVAMENTE NA VALIDAÇÃO DE ATUALIZAÇÃOALERTA
IF @object_type in ('2') and @transaction_type in ('A','U')
BEGIN
IF (SELECT CardType FROM OCRD WHERE CardCode = @list_of_cols_val_tab_del) = 'L'
BEGIN
UPDATE OCRD SET U_DWU_IgnoraAlerta = 'N' WHERE CardCode = @list_of_cols_val_tab_del
END
END
-- ################################################
-- FIM - Alerta Lead para Cliente - CRM ONE
-- ################################################
Agora, veja a transaction HANA
Transaction para a tratativa:HANA
-- ################################################
-- INÍCIO - Alerta Lead para Cliente - CRM ONE
-- ################################################
IF :object_type = ('2')
THEN
DECLARE CardTypeLog NVARCHAR(20);
DECLARE CardType NVARCHAR(20);
DECLARE U_DWU_IgnoraAlerta NVARCHAR(20);
DECLARE U_DWU_Origem NVARCHAR(20);
----------------------------------------------------------------------------------
-- VALIDA NOVO CADASTRO DO TIPO CLIENTE
----------------------------------------------------------------------------------
IF :transaction_type = ('A') THEN
SELECT (SELECT "CardType" FROM OCRD WHERE "CardCode" = :list_of_cols_val_tab_del)... INTO CardType FROM DUMMY;
SELECT-- (SELECTDemais IFNULL("U_DWU_IgnoraAlerta",seleções 'N')omitidas FROMaqui OCRDpor WHERE "CardCode" = :list_of_cols_val_tab_del) INTO U_DWU_IgnoraAlerta FROM DUMMY;
SELECT (SELECT IFNULL("U_DWU_Origem", '') FROM OCRD WHERE "CardCode" = :list_of_cols_val_tab_del) INTO U_DWU_Origem FROM DUMMY;brevidade
IF :CardType = 'C' AND :U_DWU_IgnoraAlerta = 'N' AND :U_DWU_Origem = 'W'
THEN
error_message := '[AlertaCRMOne] Deseja inserir o cadastro diretamente como CLIENTE?';
error := 1;
END IF;
END IF;
---------------------------------------------------------------------------------- -- VALIDA SE ALTERAÇÃO CADASTRO ESTÁ SENDO ALTERADO DE LEAD PARA CLIENTE
----------------------------------------------------------------------------------
IF :transaction_type = ('U') THEN
SELECT (SELECT TOP 1 "CardType" FROM ACRD WHERE "CardCode" = :list_of_cols_val_tab_del ORDER BY "LogInstanc" DESC)... INTO CardTypeLog FROM DUMMY;
SELECT-- (SELECTDemais "CardType"seleções FROMomitidas OCRDaqui WHEREpor "CardCode" = :list_of_cols_val_tab_del) INTO CardType FROM DUMMY;
SELECT (SELECT IFNULL("U_DWU_IgnoraAlerta", 'N') FROM OCRD WHERE "CardCode" = :list_of_cols_val_tab_del) INTO U_DWU_IgnoraAlerta FROM DUMMY;
SELECT (SELECT IFNULL("U_DWU_Origem", '') FROM OCRD WHERE "CardCode" = :list_of_cols_val_tab_del) INTO U_DWU_Origem FROM DUMMY;brevidade
IF :CardTypeLog = 'L' AND :CardType = 'C' AND :U_DWU_IgnoraAlerta = 'N' AND :U_DWU_Origem = 'W'
THEN
error_message := '[AlertaCRMOne] Deseja alterar o cadastro de LEAD para CLIENTE?';
error := 1;
END IF;
END IF;
---------------------------------------------------------------------------------- -- REDEFINE O CAMPO U_DWU_IgnoraAlerta PARA 'N' PARA CAIR NOVAMENTE NA VALIDAÇÃORESET DE ATUALIZAÇÃO
----------------------------------------------------------------------------------ALERTA
IF :transaction_type='A' OR :transaction_type='U' THEN
SELECT (SELECT "CardType" FROM OCRD WHERE "CardCode" = :list_of_cols_val_tab_del)... INTO CardType FROM DUMMY;
IF :CardType = 'L' THEN
UPDATE OCRD SET "U_DWU_IgnoraAlerta" = 'N' WHERE "CardCode" = :list_of_cols_val_tab_del;
END IF;
END IF;
END IF;
-- ################################################
-- FIM - Alerta Lead para Cliente - CRM ONE
-- ################################################
Pronto!
Resultado Final
AgoraCom vocêisso, podeao criartentar estessalvar alertasum nasparceiro telascomo existentescliente, doo CRMsistema Oneperguntará WEBao usuário se ele deseja prosseguir com a alteração. Tudo de forma clara, com controle e personalizar ainda mais o ambiente do CRM One.segurança.