Dolibarr n'expose AUCUNE API REST pour les charges sociales (/taxes, /socialcontributions, /chargesociales répondent tous « API not found »). Le module est actif, seule l'API manque : le pipeline de promotion, qui parle REST, ne peut pas porter cette opération. D'où un script UI, gardé par guard.ts. La sandbox a joué son rôle : quatre doublons y ont été créés pendant la découverte, sans conséquence, et les quatre pièges du formulaire sont désormais documentés au lieu d'être redécouverts. - recordSocialCharge.ts : idempotent (cherche la charge avant de créer), vérifie par LECTURE de la liste, type TNS par défaut, --dry-run. - RUNBOOK_charges_sociales.md : écrit pour être suivi par un agent moins performant ou un harness limité — la commande, les garanties, les quatre pièges, et ce que le script ne garantit PAS (ni juge, ni artefact de gate). Les quatre pièges, tous rencontrés : 1. La date visible est décorative : le backend ne lit que les champs CACHÉS echday/echmonth/echyear. Remplir le champ texte crée l'enregistrement avec une période aberrante (20/06/2000 observé) au lieu d'échouer. 2. Le bouton de soumission n'a pas d'attribut name — le cibler par value. 3. L'URL après soumission ne porte pas d'id : vérifier par l'URL fait conclure à un échec sur une création réussie. C'est ce qui a produit les doublons. 4. Les milliers portent une espace insécable (« 1 215,00 ») : une comparaison littérale casse au-delà de 999 € et l'idempotence saute en silence. Correction comptable : 645x → 646 dans known-patterns.json. Les cotisations d'un gérant TNS sont des cotisations personnelles du dirigeant (646), pas des cotisations patronales sur salaires (645) — Arcodange n'a aucun salarié. Appliqué en production : les trois échéances URSSAF 2026, toutes IMPAYÉES. Reste à vérifier dans le dictionnaire Dolibarr que le type « indépendants » porte bien le code comptable 646. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh
61 lines
3.3 KiB
JSON
61 lines
3.3 KiB
JSON
{
|
|
"_schema": "v1",
|
|
"_description": "Operator-curated catalogue of known recurring/intentional bank movements. Used by bank-match.sh to annotate the BANK-ONLY bucket so the operator can immediately tell 'needs Dolibarr entry' from 'documented intentional gap'. Edit this file as new recurring patterns emerge.",
|
|
"_match_rules": "Pattern matched case-insensitively as a regex against the bank label. Optional filters: bank (qonto|wise), side (credit|debit), amount_min, amount_max, type (Wise activity type). All present filters must match.",
|
|
"_classifications": {
|
|
"capital_deposit": "Apport en capital social. Dolibarr account 1013 (capital souscrit appelé versé).",
|
|
"social_charges": "URSSAF, retraite complémentaire, etc. Dolibarr compte 646 (cotisations personnelles du dirigeant TNS) — PAS 645x, réservé aux cotisations patronales sur salaires : Arcodange n'a aucun salarié.",
|
|
"ai_subscription": "Claude / Mistral / OpenAI / similar. Dolibarr account 6262 (frais télécom / abonnements logiciels).",
|
|
"bank_fee": "Plan bancaire, frais d'opération, refunds. Dolibarr account 627 (services bancaires).",
|
|
"internal_topup": "Solde Wise/Qonto rechargé pour couvrir un frais immédiat. Often nets out.",
|
|
"personal_apport": "Apport en compte courant d'associé (Gabriel finançant Arcodange depuis son perso). Dolibarr account 4551.",
|
|
"needs_classification": "Pattern catched but no Dolibarr account assignment defined yet; surface for review."
|
|
},
|
|
"patterns": [
|
|
{
|
|
"pattern": "FOUREZ.*Quentin",
|
|
"classification": "capital_deposit",
|
|
"bank": "qonto",
|
|
"side": "credit",
|
|
"note": "Apport en capital social initial 1000 €. Maître FOUREZ Quentin, notaire centralisateur du dépôt. Date typique : 2026-01-21. Dolibarr: account 1013."
|
|
},
|
|
{
|
|
"pattern": "URSSAF",
|
|
"classification": "social_charges",
|
|
"bank": "qonto",
|
|
"side": "debit",
|
|
"note": "Cotisations sociales URSSAF (régime mensuel/trimestriel). Dolibarr: account 645100 (charges de sécurité sociale)."
|
|
},
|
|
{
|
|
"pattern": "MISTRAL\\.AI",
|
|
"classification": "ai_subscription",
|
|
"side": "debit",
|
|
"note": "Mistral AI API subscription (Le Chat Pro - Annual). Récurrent annuel (invoice MSTRL-API-814045-001, 2026-04-02, 143.90 HT / 172.68 TTC). Next expected ~2027-04. Dolibarr: account 6262 + supplier 'Mistral AI'."
|
|
},
|
|
{
|
|
"pattern": "CLAUDE\\.AI",
|
|
"classification": "ai_subscription",
|
|
"side": "debit",
|
|
"note": "Claude AI subscription (Anthropic). Récurrent mensuel. April was on Qonto card; May/June on personal card (fk_account=3, API-invisible). See #57. Dolibarr: account 6262 + supplier 'Anthropic'."
|
|
},
|
|
{
|
|
"pattern": "Wise.*Plan",
|
|
"classification": "bank_fee",
|
|
"side": "debit",
|
|
"note": "Wise account plan billed via card. Wise's internal fee for keeping the BUSINESS profile active."
|
|
},
|
|
{
|
|
"pattern": "qonto_fee",
|
|
"classification": "bank_fee",
|
|
"bank": "qonto",
|
|
"note": "Qonto fees ou refunds. Petites valeurs. Dolibarr: account 627."
|
|
},
|
|
{
|
|
"pattern": "BALANCE_DEPOSIT|For your account plan",
|
|
"classification": "internal_topup",
|
|
"bank": "wise",
|
|
"note": "Solde Wise rechargé pour couvrir un frais immédiat (souvent net zéro avec le FEATURE_CHARGE du même jour)."
|
|
}
|
|
]
|
|
}
|