Ir para o conteúdo principal

4.4 function CRMONE_BP_MESSAGE: Mensagem do Parceiro de Negócio

Mensagem do Parceiro de Negócio 

Recurso que exibe um mensagem informativa no topo dos documentos do CRM One (Atendimento, Cotação, Pedido e Oportunidade) assim que o PN é selecionado. A origem do texto e da cor é uma function HANA, totalmente personalizável.

Quando usar

  • Alertar o usuário sobre limite de crédito, títulos em atraso, bloqueios ou políticas específicas do cliente.
  • Exibir instruções operacionais no momento da venda (ex.: “exigir pedido de compra”, “usar tabela X”).
  • Centralizar a lógica do aviso no banco (HANA), facilitando manutenção e auditoria.

Como funciona

  1. No momento em que o usuário define o Parceiro de Negócio no documento, o CRM One chama a function CRMOne_BP_Message no HANA.
  2. A function retorna duas colunas:
    • Value → texto que será exibido na mensagem.
    • Color → cor do texto (hex ou nome CSS).
  3. A mensagem aparece automaticamente no topo da tela do documento.

    image.png


O time pode alterar livremente a lógica interna da function para atender cada necessidade.

Function padrão (exemplo: Limite de crédito disponível)

Crie a function abaixo no HANA (schema do ambiente). Ela calcula: Limite − Saldo − Pedidos em aberto.

CREATE FUNCTION CRMOne_BP_Message(
    CardCode VARCHAR(254),
    UserCode VARCHAR(254),
    SlpCode  VARCHAR(254),
    ObjectId VARCHAR(254)
)
RETURNS TABLE ("Value" VARCHAR(254), "Color" VARCHAR(254))
LANGUAGE SQLSCRIPT
AS
BEGIN
  RETURN
  (
    SELECT
      (
        (SELECT IFNULL(C."CardName",'') FROM OCRD C WHERE C."CardCode" = :CardCode)
        || ' Limite de crédito disponível: R$ '
        || TO_DECIMAL(
             IFNULL(
               (SELECT  IFNULL(C."CreditLine",0)
                      - IFNULL(C."Balance",0)
                      - IFNULL((SELECT SUM(O."DocTotal")
                                FROM ORDR O
                                WHERE O."DocStatus"='O' AND O."CardCode"=:CardCode),0)
                FROM OCRD C
                WHERE C."CardCode"=:CardCode),
               0),
             30,2)
      ) AS "Value",
      '#000' AS "Color"
    FROM DUMMY
  );
END;

O retorno da coluna Color pode ser ajustado dinamicamente (ex.: vermelho quando o disponível < 0). Veja a seção “Customizações”.

Onde aparece

  • Atendimento
  • Cotação de venda
  • Pedido de venda
  • Oportunidade de venda

Assim que o PN é escolhido, a mensagem é carregada automaticamente.

Exemplo visual  Atendimento(mensagem com limite de crédito):

image.png


Customizações úteis (modelos prontos)

1) Cor dinâmica por situação do crédito

/* Dica: ajuste a cor conforme o disponível */
SELECT
  case when :disp < 0 then '#DC2626'  -- vermelho
       when :disp = 0 then '#F59E0B'  -- amarelo
       else '#16A34A'                 -- verde
  end as "Color";

2) Mensagens por observação do cliente

No exemplo abaixo, adaptamos a function para que a mensagem mostre as observações cadastradas no PN (campo Free_Text do OCRD):

CREATE FUNCTION CRMOne_BP_Message(
    CardCode  VARCHAR(254),
    UserCode  VARCHAR(254),
    SlpCode   VARCHAR(254),
    ObjectId  VARCHAR(254)
)
RETURNS TABLE (
    "Value" NVARCHAR(2000),
    "Color" NVARCHAR(254)
)
LANGUAGE SQLSCRIPT
AS
BEGIN
  RETURN
  (
    SELECT 
      CASE 
        WHEN LENGTH(IFNULL(TO_NVARCHAR(T0."Free_Text"), '')) = 0
          THEN T0."CardName" || ' – sem observações cadastradas.'
        ELSE 
          T0."CardName" || ' – Observações:' || CHAR(10) || CHAR(10) ||
          SUBSTRING(TO_NVARCHAR(T0."Free_Text"), 1, 1800)  -- evita extrapolar 2000
      END AS "Value",
      '#1E3A8A' AS "Color"
    FROM OCRD T0
    WHERE T0."CardCode" = :CardCode
  );
END;

Resultado esperado no CRM One:

  • Ao selecionar o cliente em Atendimento, Cotação, Pedido ou Oportunidade, aparecerá um pop-up com as observações cadastradas no PN.

    image.png

  • Se não houver observações, o sistema mostra a mensagem:
    Cliente X – sem observações cadastradas.

    image.png

     

📌 Esse exemplo mostra que o recurso é personalizável:
Você pode trocar a lógica e exibir qualquer informação do cadastro do cliente, como limite de crédito, notas em atraso ou observações internas.


Parâmetros recebidos

Parâmetro Descrição
CardCode PN selecionado no documento (obrigatório).
UserCode Usuário logado (permite mensagens por perfil).
SlpCode Vendedor (permite regras por equipe).
ObjectId Tipo do documento que chamou (ex.: 97 = OV, 17 = Pedido, 23 = Cotação, etc.).

Boas práticas

  • Mantenha a function rápida: use índices e evite sub-queries pesadas.
  • Prefira IFNULL para evitar valores nulos no texto.
  • Retorne mensagens curtas e diretas; se precisar de detalhes, inclua um resumo + instrução para abrir outra tela/relatório.
Pronto! Com a CRMOne_BP_Message você tem uma mensagem/alerta único, padronizado e totalmente personalizável em todos os documentos do CRM One. Basta ajustar a lógica SQL para refletir a política do seu negócio (crédito, títulos, bloqueios, avisos operacionais, etc.).