Caso de Uso: Oportunidade de Venda
Caso de Uso: Oportunidade de Venda (OV)
1. Objetivo do Cenário
OEste cenário abaixo consiste em um Kanban de Oportunidades (OOPR) no SAP CRM One.
O objetivo foi:
-
Organizar as Oportunidades de Venda por etapas do pipeline
(pipeline). -
Mostrar os vendedores responsáveis pela abertura e última movimentação da
oportunidade.OV. -
Destacar prioridades e cores dinâmicas
deconformeacordoprobabilidadecomea classificação da oportunidade (Alto, Médio, Baixo).status. -
Exibir datas-chave
da negociação:: abertura, previsão defechamento efechamento, próximo contato. -
Controlar o potencial
dedavendaOV (Valor1)e, o valor ponderado (Valor2)conformeeadocumentosprobabilidade.relacionados (Valor3). -
Incluir no verso do card o último parecer/atividade registrado no SAP.
-
Fornecer uma visão
visualvisual, clara erápidaprática paraacompanhamento destatus, progresso e prioridade.acompanhamento.
2. Estrutura básicada Query
Query inicialprincipal
WITH last_activity AS (
SELECT
A."U_BaseEntry",
MAX(C."ClgCode") AS "LastClgCode"
FROM "@DWU_ATENDIMENTO" A
JOIN "@DWU_ATEND_PARECER" P ON P."DocEntry" = A."DocEntry"
JOIN "OCLG" C ON C."ClgCode" = P."U_NumAtividade"
GROUP BY A."U_BaseEntry"
),
last_stage AS (
SELECT r1."OpprId", r1."Step_Id", r1."ObjType" AS "LkBaseType", r1."DocId" AS "LkBaseEntry"
FROM "OOPR" h
JOIN "OPR1" r1 ON r1."OpprId" = h."OpprId"
AND r1."Line" = (SELECT MAX(r11."Line") FROM OPR1 r11 WHERE r11."OpprId" = h."OpprId")
),
doc_values AS (
SELECT 23 AS "ObjType", q."DocEntry", q."DocTotal" FROM "OQUT" q
UNION ALL
SELECT 17, r."DocEntry", r."DocTotal" FROM "ORDR" r
UNION ALL
SELECT 15, d."DocEntry", d."DocTotal" FROM "ODLN" d
UNION ALL
SELECT 13, i."DocEntry", i."DocTotal" FROM "OINV" i
)
SELECT
T4."Descript" AS "Agrupador",
-- Agrupador obrigatório (primeira coluna)
'#DAE8F8'#F5F5F5' AS "CorAgrupador", -- Cor de fundo da coluna (segunda coluna obrigatória)
T0."OpprId" AS "IdDoc",
-- ID da oportunidade
97'97' AS "TipoObjeto",
-- Tipo do objeto SAP para oportunidade (ObjectType = 97)
T0."OpprId" || ' - ' || T0."CardCode" || ' - ' || SUBSTRING(T1."CardName", 1, 30) AS "Titulo", -- Título do card
T0."OpenDate" AS "Data1",
-- Data inicial da oportunidade
T0."PredDate" AS "Data2",
-- Data prevista de fechamento
T5."U_DtProxContato" AS "Data3",
--/* DataÚltima realnota/parecer de fechamento*/
(podeSELECT serTOP NULL)1 T0.T11."Memo"Notes" FROM OCLG T11
WHERE T11."ClgCode" = C."ClgCode") AS "Observacao", -- Observação do card
T2."SlpName" AS "Responsavel",
--/* ResponsávelPrioridade pelapor oportunidadeclassificação (vendedor)*/
IFNULL(T7."Descript", 'Alto') AS "Prioridade", -- Prioridade (campo nativo da oportunidade)
CASE
WHEN IFNULL(T7."Descript", 'Alto') = 'Alto' THEN '#00FF00' -- Verde#FF6347'
WHEN IFNULL(T7."Descript", 'Alto') = 'Médio' THEN '#FFFF00' -- Amarelo#1E90FF'
WHEN IFNULL(T7."Descript", 'Alto') = 'Baixo' THEN '#FF0000' -- Vermelho#7DD78C'
ELSE '#FFF' -- Cor padrão, branco
END AS "CorPrioridade",
--SUBSTRING(T2."SlpName", Cor1, da prioridade (pode ser customizada se quiser)
T6."descript"24) AS "Classificacao", -- Classificação
'#000' AS "CorClassificacao",
--/* CorIndicadores da classificação*/
T0."MaxSumLoc" AS "Valor1", -- Valor potencial da oportunidade (valor local)Potencial
T0."MaxSumLoc" * (T0.T4."CloPrcnt"/100) AS "Valor2", -- ValorPonderado
2 (pode ser outro campo, se quiser)
0IFNULL(dv."DocValor",0) AS "Valor3", -- ValorDocumentos 3vinculados
(idem)
TO_INT(T0.CAST(T4."CloPrcnt") AS INT) AS "Progresso",
--/* ProgressoCampos (exemplo:extras 0-5*/
statusCASE →T0."Status"
0%-100%)WHEN 'L' THEN 'Perdida'
WHEN 'W' THEN 'Vencida'
WHEN 'O' THEN 'Aberta'
ELSE 'Desconhecido'
END AS "CampoUsuario1",
-- Campo usuário 1 (ex: tipo)
''T0."Name" AS "CampoUsuario2",
--/* CampoCores usuáriodo 2card (ex:*/
origem)CASE WHEN T0."Status" = '#DAE8F8'L' THEN '#FF6347'
WHEN T0."Status" = 'W' THEN '#7DD78C'
WHEN T0."Status" = 'O' THEN '#1E90FF'
ELSE '#FF6347' END AS "CorDoCard",
--CASE CorWHEN daT0."Status" borda= do'L' cardTHEN (última'#F9D9D9'
colunaWHEN obrigatória)T0."Status" = 'W' THEN '#D7FDDE'
WHEN T0."Status" = 'O' THEN '#DEEEFF'
ELSE '#E9E9E9' END AS "CorDoCardTotal"
FROM OOPR"OOPR" T0
LEFT JOIN OCRD"OCRD" T1 ON T1."CardCode" = T0."CardCode"
LEFT JOIN OSLP"OSLP" T2 ON T2."SlpCode" = T0."LastSlp"
LEFT JOIN OOST"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") AND T5."U_BaseType" = '33' AND T5."U_Status" = 'O'
LEFT JOIN OTER"OTER" T6 ON T6."territryID" = T1."Territory"
leftLEFT joinJOIN OOIR"OOIR" T7 ON T0."IntRate" = T7."Num"
WHERELEFT JOIN last_activity LA ON LA."U_BaseEntry" = TO_NVARCHAR(T0."OpprId")
LEFT JOIN "OCLG" C ON C."ClgCode" = LA."LastClgCode"
LEFT JOIN last_stage LS ON LS."OpprId" = T0."OpenDate"OpprId"
BETWEENLEFT '{[Data1CRMOne][DataJOIN Inicial]}'doc_values dv ON dv."ObjType" = LS."LkBaseType" AND '{[Data2CRMOne][Datadv."DocEntry" Final]}'= ANDLS."LkBaseEntry"
T2."SlpCode"WHERE in (SELECT "SlpCode" FROM RetornaVendedoresSubordinados('#UserIDCRM#'))1=1
ORDER BY T0.T4."OpprId"CloPrcnt";
3. Estrutura do Kanban
-
Agrupador (colunas)
-
Baseado em
OOST.StepId
→etapasEtapasdado pipeline de oportunidade. -
Exemplo: Prospecção, Negociação, Fechamento.
-
-
Cards (
oportunidades)Oportunidades) exibem:-
Título: ID da OV + Cliente.
-
Responsável: Último vendedor da etapa (LastSlp).
-
Observação:
MemoÚltimo parecer daoportunidade.OV (atividade vinculada em OCLG). -
Datas:
-
Data1 = Abertura.
-
Data2 = Previsão de fechamento.
-
Data3 = Próximo contato.
-
-
ValoresIndicadores:-
Valor1 = Potencial da OV.
-
Valor2 = Potencial
×ponderadoProbabilidadepela(%).probabilidade. -
Valor3 =
NãoValorutilizadodenessedocumentocenáriovinculado (padrãoex.:=pedido,0)entrega, fatura).
-
-
Progresso:
Probabilidade% da probabilidade de fechamento (CloPrcnt
). -
Campos extras:
Reservados-
personalizaçãoCampoUsuario1
futura.= Status da OV (Aberta, Perdida, Vencida). -
CampoUsuario2 = Nome do registro.
para -
-
-
Cores:
-
Coluna (Agrupador)Agrupador:azulCinza suave
.#DAE8F8#F5F5F5 -
Card (
borda/fundo)fundo/borda):tambémdefinidos
conforme#DAE8F8nestestatusexemplo.da OV:-
Aberta → Azul.
-
Perdida → Vermelho.
-
Vencida → Verde.
-
-
Prioridade: cores dinâmicas com base na classificação (Alto, Médio, Baixo).
Alto → Verde.Médio → Amarelo.Baixo → Vermelho.
-
4. Destaques do Caso
-
Integração com
aatividadeshierarquiaede vendedorespareceres:Apenaso verso do card mostraoportunidadessempreligadasoaoúltimousuárioparecerou subordinados (RetornaVendedoresSubordinados)registrado. -
PossibilidadeIntegração com documentos comerciais: exibe valores de cotações, pedidos, entregas ou faturas vinculados. -
Uso de cores dinâmicas e suaves para destacar
territórioprioridades(viaeOTER).status. -
Flexibilidade para
usaraplicarcamposfiltros no CRM One (ex.: vendedor, status, datas, tipo deusuárioatendimento,(UDFs)setor, grupo de PN).
5. Resultado Final
O resultado é um Kanban de Oportunidades, comoque U_DtProxContato.oferece:
-
Clareza visual para identificar rapidamente status e prioridades.
-
EstruturaRiquezamodular:depodeinformaçãoser facilmente expandida paraao incluircorespareceres,dinâmicasno card (fundoprogresso eborda)valoresouvinculados.regras -
deControle
progresso.gerencial sobre negociações em andamento.