-
-
Notifications
You must be signed in to change notification settings - Fork 0
Cliente Vendedor Vinculo e Permissoes
technical-documenter edited this page Aug 5, 2026
·
1 revision
Documentação técnica da entrega associada a ControleOnline/ui-crm#2 (closed).
Cópia operacional no repositório. A wiki do módulo (
ui-crm/wiki) deve espelhar esta página quando o push da wiki estiver disponível.
Registrar regras de negócio, modularização e contratos do fluxo que:
- vincula vendedor a cliente quando o vínculo ainda não existe;
- expõe o vendedor no detalhe do cliente a partir do CRM;
- restringe gestão de vínculos e visualização de comissões conforme o app (
MANAGERvs demais).
| Módulo | Papel no fluxo |
|---|---|
ui-crm |
Handoff do CRM para o detalhe do cliente com contexto de vendedores |
ui-customers |
Aba Vendedores no detalhe do cliente (listagem / gestão UI) |
api-platform-people |
Vínculo automático, distribuição de vendedores e recurso people_link
|
app-community |
Fronteira de apps (MANAGER vs CRM) em MODOS_OPERACAO.md
|
Quando uma pessoa/empresa se torna cliente (PeopleLink.linkType = client) e ainda não possui vendedor daquela empresa:
- se o usuário logado for vendedor da empresa → vincula esse vendedor;
- caso contrário → escolhe vendedor pela estratégia de distribuição da empresa (
salesman-distribution-strategy):-
random(default) round_robinleast_clientslast_received
-
O vínculo criado usa linkType = sellers-client.
Implementação:
-
api-platform-people/src/Service/SalesmanService.php—discoverSalesmanForClient,getSalesmanFromCompany -
api-platform-people/src/Service/SalesmanDistributionService.php—discoverSalesman
| Capacidade | APP_TYPE=MANAGER |
Fora de MANAGER (ex.: CRM) |
|---|---|---|
| Ver quem é o vendedor vinculado | sim | sim |
| Trocar / remover / adicionar múltiplos vendedores | sim | não |
| Editar vendedor no vínculo | sim | não |
Ver % de comissão |
sim | não |
| Ver valor mínimo de comissão | sim | não |
A fronteira oficial é por app (APP_TYPE), não apenas por role de empresa no front.
-
PeopleLinkcomlinkType:-
client— empresa ↔ cliente -
salesman— empresa ↔ vendedor -
sellers-client— vendedor ↔ cliente
-
- Campos sensíveis no vínculo:
comission,minimum_comission
flowchart LR
CRM["ui-crm\nCRM list/detail entry"]
NAV["clientDetailsNavigation\nclientId + contextKey + initialTab"]
DET["ui-customers\nClientDetails"]
TAB["SalesmanTab\nlista vínculos sellers-client"]
API["api-platform-people\nPeopleLink + SalesmanService"]
CRM --> NAV --> DET --> TAB --> API
API -->|"auto-link on client"| API
- Responsabilidade: abrir
ClientDetailssó comclientIdválido,contextKey=cliente, para PJ,initialTab=sellers. - Não assume gestão administrativa de comissões (isso é de
MANAGER/ui-customers).
- Responsabilidade: aba
Vendedoresno detalhe. -
SalesmanTablista vínculos viapeople_linke navega para o detalhe da pessoa/empresa vinculada. - Gestão administrativa (CRUD de vínculos + comissões) deve permanecer restrita a
APP_TYPE=MANAGER.
-
SalesmanServicereage aEntityChangedEventemPeopleLinkcomlinkType=cliente criasellers-clientquando necessário. -
SalesmanDistributionServiceaplica a estratégia configurada por empresa. -
PeopleLinkServiceé o ponto esperado desecurityFilter/ guards de leitura e escrita do recurso sensível (vínculos e comissões).
- Restrição de comissão fora de
MANAGERnão pode depender só de UI. - Escrita em
people_linkdeve respeitar menor privilégio (evitar que “pode ler” vire “pode escrever” em outroslinkType). - Escopo multiempresa: gestor de uma empresa não deve herdar gestão de
sellers-clientde outra empresa só porque o vendedor é compartilhado.
Não há pacote isolado. O fluxo depende dos submódulos front (ui-crm, ui-customers) compostos no app e do módulo PHP api-platform-people na API.
Config relevante por empresa:
- chave
salesman-distribution-strategy(defaultrandom)
Ao alterar este fluxo:
- atualizar esta página e as cópias nos módulos afetados;
- manter testes focais de navegação CRM e de helpers da aba de vendedores;
- validar enforcement de
people_linkno backend antes de liberar exposição de comissão.
- Issue:
ControleOnline/ui-crm#2 - PRs da trilha (histórico):
ui-crm#10,ui-customers#3,api-platform-people#4 - Fronteira de apps:
app-community/MODOS_OPERACAO.md