Caso de Uso: Oportunidade de Venda
1. Objetivo do Cenário
O cenário abaixo consiste em um Kanban de Oportunidades (OOPR) no SAP CRM One.
O objetivo foi:
-
Organizar as Oportunidades de Venda por etapas (pipeline).
-
Mostrar os vendedores responsáveis pela abertura e última movimentação da oportunidade.
-
Destacar prioridades de acordo com a classificação da oportunidade (Alto, Médio, Baixo).
-
Exibir datas-chave da negociação: abertura, previsão de fechamento e próximo contato.
-
Controlar o potencial de venda (Valor1) e o valor ponderado (Valor2) conforme a probabilidade.
-
Fornecer uma visão visual e rápida para acompanhamento de status, progresso e prioridade.
2. Estrutura básica
Query inicial
SELECT
T4."Descript" AS "Agrupador", -- Agrupador obrigatório (primeira coluna)
'#DAE8F8' AS "CorAgrupador", -- Cor de fundo da coluna (segunda coluna obrigatória)
T0."OpprId" AS "IdDoc", -- ID da oportunidade
97 AS "TipoObjeto", -- Tipo do objeto SAP para oportunidade (ObjectType = 97)
T0."OpprId" ||' - '|| T0."CardCode" || ' - ' || T1."CardName" AS "Titulo", -- Título do card
T0."OpenDate" AS "Data1", -- Data inicial da oportunidade
T0."PredDate" AS "Data2", -- Data prevista de fechamento
"U_DtProxContato" AS "Data3", -- Data real de fechamento (pode ser NULL)
T0."Memo" AS "Observacao", -- Observação do card
T2."SlpName" AS "Responsavel", -- Responsável pela oportunidade (vendedor)
IFNULL(T7."Descript", 'Alto') AS "Prioridade", -- Prioridade (campo nativo da oportunidade)
CASE
WHEN IFNULL(T7."Descript", 'Alto') = 'Alto' THEN '#00FF00' -- Verde
WHEN IFNULL(T7."Descript", 'Alto') = 'Médio' THEN '#FFFF00' -- Amarelo
WHEN IFNULL(T7."Descript", 'Alto') = 'Baixo' THEN '#FF0000' -- Vermelho
ELSE '#FFF' -- Cor padrão, branco
END AS "CorPrioridade", -- Cor da prioridade (pode ser customizada se quiser)
T6."descript" AS "Classificacao", -- Classificação
'#000' AS "CorClassificacao", -- Cor da classificação
T0."MaxSumLoc" AS "Valor1", -- Valor potencial da oportunidade (valor local)
T0."MaxSumLoc" * (T0."CloPrcnt"/100) AS "Valor2", -- Valor 2 (pode ser outro campo, se quiser)
0 AS "Valor3", -- Valor 3 (idem)
TO_INT(T0."CloPrcnt") AS "Progresso", -- Progresso (exemplo: 0-5 status → 0%-100%)
'' AS "CampoUsuario1", -- Campo usuário 1 (ex: tipo)
'' AS "CampoUsuario2", -- Campo usuário 2 (ex: origem)
'#DAE8F8' AS "CorDoCard" -- Cor da borda do card (última coluna obrigatória)
FROM OOPR T0
LEFT JOIN OCRD T1 ON T1."CardCode" = T0."CardCode"
LEFT JOIN OSLP T2 ON T2."SlpCode" = T0."LastSlp"
LEFT JOIN OOST T4 ON T0."StepLast" = T4."StepId"
LEFT JOIN "@DWU_ATENDIMENTO" T5 ON T5."U_CodTipoAtendimento"='1' AND T5."U_BaseEntry" =TO_NVARCHAR(T0."OpprId")
LEFT JOIN OTER T6 ON T6."territryID" = T1."Territory"
left join OOIR T7 ON T0."IntRate"= T7."Num"
WHERE T0."OpenDate" BETWEEN '{[Data1CRMOne][Data Inicial]}' AND '{[Data2CRMOne][Data Final]}'
AND T2."SlpCode" in (SELECT "SlpCode" FROM RetornaVendedoresSubordinados('#UserIDCRM#'))
ORDER BY T0."OpprId"
3. Estrutura do Kanban
-
Agrupador (colunas)
-
Baseado em
OOST.StepId
→ etapas da oportunidade. -
Exemplo: Prospecção, Negociação, Fechamento.
-
-
Cards (oportunidades) exibem:
-
Título: ID da OV + Cliente.
-
Responsável: Último vendedor (LastSlp).
-
Observação: Memo da oportunidade.
-
Datas:
-
Data1 = Abertura.
-
Data2 = Previsão de fechamento.
-
Data3 = Próximo contato.
-
-
Valores:
-
Valor1 = Potencial da OV.
-
Valor2 = Potencial × Probabilidade (%).
-
Valor3 = Não utilizado nesse cenário (padrão = 0).
-
-
Progresso: Probabilidade de fechamento (
CloPrcnt
). -
Campos extras: Reservados para personalização futura.
-
-
Cores:
-
Coluna (Agrupador): azul suave
#DAE8F8
. -
Card (borda/fundo): também
#DAE8F8
neste exemplo. -
Prioridade:
-
Alto → Verde.
-
Médio → Amarelo.
-
Baixo → Vermelho.
-
-
4. Destaques do Caso
-
Integração com a hierarquia de vendedores:
Apenas mostra oportunidades ligadas ao usuário ou subordinados (RetornaVendedoresSubordinados
). -
Possibilidade de destacar território (via OTER).
-
Flexibilidade para usar campos de usuário (UDFs), como
U_DtProxContato
. -
Estrutura modular: pode ser facilmente expandida para incluir cores dinâmicas no card (fundo e borda) ou regras adicionais de progresso.