În B2B FMCG, distribuitorul aduce retaileri — nu invers

Catalogul retailerului e gol până există un distributorLink activ. În practica reală, agentul distribuitorului vizitează magazinul și inițiază legătura pe loc (vezi vizite.html). Inbox-ul de aici e ce vezi după momentul fizic: pe partea distribuitorului — onboardările echipei tale; pe partea retailerului — invitațiile primite.

Calea retailer-pulled (cere singur o legătură știind IDNO-ul distribuitorului) rămâne ca opțiune de fallback pentru cazuri rare — retaileri stabiliți care vor să găsească ei activ un distribuitor specific. Demotată vizual.

API mapping (Phase 3 — implementat): Permisiune retailers.onboard (agent + owner) · Branch A (retailer există)inviteExistingRetailerToLink({distributorIdno, retailerIdno, message?}) · Branch B (retailer nou, fără org)inviteRetailerToOnboard({distributorIdno, invitedPhone, suggestedRetailerName?, suggestedRetailerIdno?, suggestedAddress?, message?}) apoi retailerul apelează claimRetailerOnboardingInvitation({invitationId, retailerIdno, retailerName, retailerAddress}) · Acceptă (Branch A) → acceptDistributorLinkRequest({requestId}) · Respinge → rejectDistributorLinkRequest / rejectRetailerOnboardingInvitation · Anulează (initiator) → cancelDistributorLinkRequest / cancelRetailerOnboardingInvitation · Pauză / Reia → pauseDistributorLink / resumeDistributorLink({linkId, reason?}) · Termină → terminateDistributorLink({linkId}) (ireversibil, oricare parte) · Fallback retailer-pulled — nu există în v1 (deferred). Vezi vizite.html pentru fluxul agentului.

distributor_owner

inbox · onboardări echipa ta

Hero CTA "Adaugă magazin" sus. Tab default = "Onboardări" (cele inițiate de tine / agenții tăi). Cererile retailer-pulled apar într-un tab separat, mai rare.

9:41● ● ●
V
Vitafor SRL
Proprietar
RG
Parteneri
14 activi · 3 onboardări în curs · 1 cerere primită
+
Adaugă magazin nou
Caută după telefon sau IDNO · creează cont și trimite invitația
Onboardări ·3
Activi ·14
Cereri ·1
Istoric
Cereri primite (rar) · 1 retailer a cerut singur o legătură
Acasă
Produse
Comenzi
Parteneri

retailer_owner

invitație primită · hero

Cazul comun: distribuitorul te-a invitat (agent în vizită sau remote). Signature card cu Accept/Respinge — un singur tap. Parteneri activi dedesubt. "Caut singur" e demoted la sfârșit.

9:41● ● ●
M
Magazin Central
Proprietar
AG
Distribuitori legați
2 activi · 1 invitație nouă
Activi ·2
Invitații ·1
Pauză
Istoric
Cauți un distribuitor anume?
Dacă ai deja IDNO-ul lui, trimite-i o cerere directă. Altfel, așteaptă vizita unui agent.
Acasă
Magazin
Echipa
Comenzi

retailer_owner

deferred · retailer-pulled (NU în v1)

Acest flux nu există în v1. Mockat aici ca referință dacă/când va fi adăugat (feedback real-world ar arăta dacă există cerere pentru self-request). În v1, retailerul așteaptă vizita unui agent — vezi vizite.html.

9:41● ● ●
×
Cere o legătură
rar · de obicei distribuitorul te invită
IDNO distribuitor
1003600099999
⚠ Niciun distribuitor cu acest IDNO. Verifică cu partenerul.
Sau alege dintre exemple corecte
1003600054321 → Vitafor SRL
Distribuitor găsit. Va primi cererea ta.
Mesaj · opțional
Spune-i pe scurt cine ești și ce-ți dorești din catalogul lui (mesajul construiește încredere)…
240 caractere · 0 / 240
⚠ Alte tipuri de erori
already-exists: ai deja o legătură activă cu acest distribuitor sau o cerere pending
wrong-org-type: IDNO-ul aparține unui retailer, nu unui distribuitor
permission-denied: numai proprietarul retailerului poate trimite cereri
Renunță
Trimite cererea
Acasă
Magazin
Echipa
Comenzi