Repository navigation
Client Details Franquia Filial
ControleOnline Agents edited this page Aug 27, 2026
·
1 revision
Página canônica da aba Franquia/Filial no detalhe de Pessoa Jurídica (client-details).
- Issue: app-community#453
- Relacionada (listagem invertida em My Company Details): app-community#641
- Aba irmã (padrão UX): Cliente × Vendedor — vínculo e permissões
- API: api-platform-people — PeopleLink
- App Home: app-community wiki
Registrar regras de negócio, contrato de dados e fronteiras de visão da aba que vincula PJ a PJ como Franquia ou Filial.
- Aba visível somente na edição de Pessoa Jurídica.
- Vínculos persistidos em
people_linkcomlinkTypefranchisee(Franquia) oufilial(Filial). - CRUD administrativo (vincular / editar tipo / remover) somente quando
APP_TYPE=MANAGER. - Picker e listagem somente PJ (
peopleType=J); PF e outroslinkTypeficam fora do escopo desta aba. - Comissão/royalties de franquia não fazem parte desta entrega.
| Módulo | Papel no fluxo |
|---|---|
ui-customers |
Aba FranchiseLinksTab + modal + helpers no detalhe do cliente |
api-platform-people |
Recurso PeopleLink; enum link_type inclui filial; AuthZ de escrita |
app-community |
Pin do submódulo e fronteira APP_TYPE (MODOS_OPERACAO.md) |
api-community |
Pin de people
|
| Contexto | Aba Franquia/Filial |
|---|---|
Pessoa Jurídica (isPessoaJuridica) |
visível |
| Pessoa Física | não visível |
| Outras abas (Vendedores, Contatos, etc.) | independentes |
| Capacidade | APP_TYPE=MANAGER |
Fora de MANAGER
|
|---|---|---|
| Ver listagem de Franquia / Filial | sim | sim (somente leitura) |
| Botão adicionar | sim | não |
| Editar tipo / remover vínculo | sim | não |
| Modal picker PJ + tipo | sim | não |
Helper de fronteira: canManageFranchiseLinks(appType) — equivalente ao corte da aba Vendedores (canManageSalesmen). A UI não é o enforcement final; escrita em people_link continua no backend (PeopleLink Put ROLE_SUPER | ROLE_OWNER, PeopleLinkService::securityFilter + assertWriteAccess).
- Recurso:
people_link -
company= PJ editada (matriz / empresa âncora) -
people= PJ vinculada (somentepeopleType=J) -
linkType:-
franchisee— rótulo UI Franquia -
filial— rótulo UI Filial (enum estendido pela migrationVersion20260821190000)
-
- Payload de save limitado a
company/people/linkType/enable(+idem edição)
flowchart TD
A[Abrir client-details de PJ] --> B{isPessoaJuridica?}
B -->|não| Z[Aba ausente]
B -->|sim| C[FranchiseLinksTab]
C --> D[GET people_links company + linkType franchisee/filial]
D --> E[Listagem PJ apenas]
E --> F{APP_TYPE = MANAGER?}
F -->|não| G[Somente leitura]
F -->|sim| H[Adicionar / editar tipo / remover]
H --> I[POST/PUT/DELETE people_links]
- Abrir
/client-detailsde uma PJ no MANAGER. - Aba Franquia/Filial lista vínculos existentes.
- Adicionar: picker de PJ + tipo Franquia ou Filial.
- Editar: alterar
linkTypeentrefranchiseeefilial. - Remover: confirmação antes do DELETE /
enable=0conforme o helper da aba. - Fora de MANAGER: mesma listagem sem botões de gestão.
| Arquivo | Papel |
|---|---|
FranchiseLinksTab.js |
Listagem + empty state + ações |
FranchiseLinksManageModal.js |
Picker PJ + tipo |
useFranchiseLinksManage.js |
Load / save / delete |
franchiseLinksTab.helpers.js |
Normalize PJ-only, labels, payload, canManage
|
clientDetailsTabContent.js / details.js
|
Wiring da aba |
Limite canônico: ≤500 linhas por arquivo.
- Unit:
franchiseLinksTab.helpers.test.mjs(canManage, normalize PJ-only,linkType, payload, filtro PF). - Browser smoke:
src/tests/browser/manager/client-details-franchise-links.spec.js(aba, listagem franchisee/filial, PF ausente, testIDs de CRUD, querycompany=).
- Comissão / royalties de franquia (issues filhas / outro fluxo).
- Onboarding de franquia fora de
client-details. - Vínculo PF → PJ nesta aba.
- Substituir a aba Vendedores (
sellers-client).
| Visão | Papel |
|---|---|
MANAGER |
Dono do CRUD administrativo da aba |
CRM e demais |
Podem ver a listagem se a tela de detalhe for reutilizada; sem botões de gestão |
POS / SHOP / DELIVERY
|
Fora do fluxo desta aba |
Fronteira: MODOS_OPERACAO.md.