Rétrocession
Vue d’ensemble
Section titled “Vue d’ensemble”La rétrocession gère le partage de revenus entre praticiens. Typiquement, un ophtalmologue rétrocède une partie de ses honoraires à l’orthoptiste qui a fait le bilan, ou un réseau facture des frais aux cabinets membres.
Concepts
Section titled “Concepts”RetrocessionAccount
Section titled “RetrocessionAccount”Modèle : src/Domain/Retrocession/Models/RetrocessionAccount.php
Un compte de rétrocession est une entité capable d’émettre et recevoir des paiements. Il utilise Laravel Cashier (Billable) pour la gestion Stripe.
Le compte est polymorphe (resource_type / resource_id) :
RetrocessionAccountResourceType | Description |
|---|---|
user | Compte personnel d’un praticien |
site | Compte du site (cabinet) |
network | Compte du réseau |
Le mode de rétrocession du site (SiteRetrocessionMode) détermine qui est le payeur :
| Mode | Description |
|---|---|
individual | Chaque praticien paie/reçoit individuellement |
global | Le site gère globalement les rétrocessions |
Retrocession
Section titled “Retrocession”Modèle : src/Domain/Retrocession/Models/Retrocession.php
Représente une rétrocession pour une période donnée entre un payeur et un destinataire.
| Champ | Type | Description |
|---|---|---|
payer_id | uuid | RetrocessionAccount payeur |
recipient_type / recipient_id | morphTo | Destinataire |
period_start / period_end | date | Période couverte |
amount | int | Montant total (centimes) |
total_platform_fee | int | Frais plateforme (centimes) |
agreed_amount | int | Montant convenu après négo |
status | enum | Statut du workflow |
payment_status | enum | Statut du paiement |
stripe_pi / stripe_invoice | string | Références Stripe |
expires_at | datetime | Expiration (auto-accept après 7j) |
RetrocessionLine
Section titled “RetrocessionLine”Les lignes de détail de la rétrocession. Chaque ligne correspond à un acte facturé.
RetrocessionLineType | Description |
|---|---|
appointment_type_network | Acte réseau (type de RDV) |
proofreading_between_users | Relecture entre praticiens |
Taux (RetrocessionLineRate)
Section titled “Taux (RetrocessionLineRate)”| Type | Description |
|---|---|
fixed | Montant fixe par acte |
percentage | Pourcentage du montant |
Cycle de vie
Section titled “Cycle de vie”Statuts (RetrocessionStatus)
Section titled “Statuts (RetrocessionStatus)”stateDiagram-v2
[*] --> pending
pending --> countered
pending --> auto_accepted: Après 7j sans réponse
countered --> accepted
countered --> cancelled
accepted --> [*]: Paiement
auto_accepted --> [*]: Paiement
| Statut | Description |
|---|---|
pending | Proposition initiale |
countered | Contre-proposition en cours |
accepted | Accepté par les deux parties |
auto_accepted | Auto-accepté après expiration |
cancelled | Annulé |
Système d’offres (RetrocessionOffer)
Section titled “Système d’offres (RetrocessionOffer)”Les deux parties peuvent négocier le montant via des offres :
RetrocessionOfferStatus | Description |
|---|---|
proposed | Offre en attente |
accepted | Offre acceptée |
declined | Offre refusée |
superseded | Remplacée par une nouvelle offre |
RetrocessionOfferActor | Description |
|---|---|
payer | Le payeur fait l’offre |
recipient | Le destinataire fait l’offre |
Paiement (RetrocessionPaymentStatus)
Section titled “Paiement (RetrocessionPaymentStatus)”| Statut | Description |
|---|---|
pending | En attente de paiement |
in_transit | Paiement en cours |
succeeded | Payé |
failed | Échec |
refunded | Remboursé |
Le paiement est géré par RetrocessionPayoutService qui utilise Stripe pour les transferts.
Fichiers clés
Section titled “Fichiers clés”| Fichier | Rôle |
|---|---|
src/Domain/Retrocession/Models/RetrocessionAccount.php | Compte de rétrocession |
src/Domain/Retrocession/Models/Retrocession.php | Rétrocession (période) |
src/Domain/Retrocession/Models/RetrocessionLine.php | Ligne de détail |
src/Domain/Retrocession/Models/RetrocessionOffer.php | Offre/contre-offre |
src/Domain/Retrocession/Enums/ | Tous les enums |
src/Domain/Retrocession/Jobs/ProofreadingRetrocession*Job.php | Jobs de calcul |
src/Infrastructure/Stripe/RetrocessionPayoutService.php | Service de paiement Stripe |
src/Domain/Site/Enums/SiteRetrocessionMode.php | Mode par site |