Ir para o conteúdo principal

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.

no

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ário transformarconfirme conscientemente uma ação importante, como alterar um LEAD 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 para identificarcliente.

o

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á:Exemplo de alerta na tela do CRM One

  • Se o usuário clicar noem botão NÃO,: a mensagemação será fechadacancelada esem nadaalteração.
  • Se clicar em Sim: a alteração será feito,reprocessada inclusiveautomaticamente.Por atrás atualizaçãoda domágica
  • cadastro.

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.

quando

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.