{ "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 } ] }