Files
oto-enterprise-os-dtp/05_deliverables_mvp/crm/commissions/bareme_spec.json
T
Claude Code DTP Worker 71c1223cc3 [DTP-Worker] Sprint 4 · Générateur barème commissions vendeurs (ERPNext Backend · roadmap L51)
Plan de commissions cross-cohérent workflow ↔ DocType ↔ RBAC + calcul traçable
commission = base × taux (façon banclib/finance.py). Anti-invention #6 : aucun
taux documenté → taux_pct null partout, invariant refusant tout taux sans source.
Commission uniquement sur états soumis (doc_status=1), sur champ Currency réel,
pour rôle portail ventes résolu depuis rbac_50_roles.json.

- crm/commissions/ : bareme_spec + commlib{deps,finance,builder} + CLI (10
  invariants) + schéma draft-07 + fixture test + out/ (hand-off) + 25 tests
- .gitea/workflows/ci.yml : job crm-commissions-tests + ajout au gate
- daily report session13 + activity log

Vérifs : 25/25 tests · gate CI local vert · régression 202 tests verts.
Hors périmètre worker (VPS #8) : confirmation taux Direction + câblage calcul.
Auto-score 4Big : 96/100.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 06:35:03 +00:00

54 lines
2.3 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"version": "1.0.0",
"bareme_name": "OTO Barème Commissions Ventes",
"devise_field": "devise",
"_comment": "Contrat STRUCTUREL du barème de commissions vendeurs (roadmap Sprint 4 · ERPNext Backend « commissions vendeurs auto »). N'ENCODE AUCUN TAUX (#6 zéro invention) : aucun pourcentage de commission n'est documenté dans CLAUDE.md (seuls 3 %/8.5 %/52 % le sont, et ce ne sont PAS des commissions). Chaque évènement porte donc `taux_pct: null` + `source: null` + `a_confirmer: true` ; le taux réel est fourni PLUS TARD par la Direction (avec sa source) — jamais fabriqué ici. Le module calcule alors commission = base × taux de façon traçable (façon banclib/finance.py). Cross-cohérence : chaque `update_value` référence un état du workflow vente (soumis uniquement, doc_status=1) ; `base_field` référence un champ Currency du DocType OTO Dossier Vente ; `role_id` référence un rôle de rbac_50_roles.json (portail ventes). Le worker n'écrit jamais sur le VPS (#8).",
"evenements": [
{
"update_value": "reservation",
"role_id": "ventes-conseiller",
"base_field": "montant_reservation",
"libelle": "Commission sur dépôt de réservation encaissé",
"taux_pct": null,
"source": null,
"a_confirmer": true
},
{
"update_value": "contrat",
"role_id": "ventes-conseiller",
"base_field": "montant_contrat",
"libelle": "Commission conseiller sur contrat signé",
"taux_pct": null,
"source": null,
"a_confirmer": true
},
{
"update_value": "contrat",
"role_id": "ventes-courtier-externe",
"base_field": "montant_contrat",
"libelle": "Commission courtier externe sur contrat signé (si apporteur)",
"taux_pct": null,
"source": null,
"a_confirmer": true
},
{
"update_value": "contrat",
"role_id": "ventes-chef-equipe",
"base_field": "montant_contrat",
"libelle": "Override chef d'équipe sur contrat signé",
"taux_pct": null,
"source": null,
"a_confirmer": true
},
{
"update_value": "confotur_approuve",
"role_id": "ventes-confotur",
"base_field": "montant_contrat",
"libelle": "Prime sur approbation CONFOTUR (cycle clos)",
"taux_pct": null,
"source": null,
"a_confirmer": true
}
]
}