feat(erp): indemnité d'occupation janv→juil 2026 (1 483,23 €) — paiements divers, sans tiers #89

Merged
arcodange merged 3 commits from arcodange/indemnite-occupation into main 2026-08-13 21:09:16 +02:00
5 changed files with 13800 additions and 0 deletions
Showing only changes of commit d4c8d0d68d - Show all commits
+20
View File
@@ -112,6 +112,17 @@ def stage_rehearse(args) -> None:
results.append({"label": op.get("label", ""), "method": call["method"], "path": call["path"],
"rc": 1 if failed else 0, "result": r})
print(f" [{op.get('label','op')}] {call['method']} {call['path']} -> {'ok' if not failed else r}")
if failed:
# Sans ce garde-fou, {id} est remplacé par le DICTIONNAIRE D'ERREUR : l'URL
# devient un JSON multiligne, urllib lève InvalidURL, et la répétition meurt
# AVANT d'écrire son artefact — on perd la preuve de l'échec qu'on venait de
# produire. Une op ratée doit être consignée, pas faire tomber l'étape.
for follow in op.get("then", []):
results.append({"label": f"{op.get('label','')} :: {follow.get('label','follow-up')}",
"method": follow["method"], "path": follow["path"],
"rc": 1, "result": {"_skipped": "op parente en échec"}})
print(f"{follow.get('label','follow-up')} -> ignoré (op parente en échec)")
continue
for follow in op.get("then", []):
fr = api(base, skey, follow["method"], follow["path"].replace("{id}", str(r)), follow.get("body"))
ffailed = isinstance(fr, dict) and "_error" in fr
@@ -259,6 +270,15 @@ def stage_apply(args) -> None:
print(f" [{op.get('label')}] {call['method']} {call['path']} -> {'ok' if not failed else r}")
if failed and not args.keep_going:
break
if failed:
# --keep-going poursuit la boucle : sans ce garde-fou on retomberait sur le
# même InvalidURL qu'en répétition, en pleine écriture de production.
for follow in op.get("then", []):
results.append({"label": f"{op.get('label')} :: {follow.get('label','follow-up')}",
"method": follow["method"], "path": follow["path"],
"result": {"_skipped": "op parente en échec"}, "ok": False})
print(f"{follow.get('label','follow-up')} -> ignoré (op parente en échec)")
continue
for follow in op.get("then", []):
fr = api(base, key, follow["method"], follow["path"].replace("{id}", str(r)), follow.get("body"))
ffailed = isinstance(fr, dict) and "_error" in fr
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,9 @@
{
"at": "2026-08-13T18:35:29+00:00",
"stage": "pre",
"runtime": "mistral",
"model": "vibe -p (mistral)",
"prompt_sha256": "f1145be92032d0a26a7153c64b3e1057f6f570aaaa445fe7a8c863388f947014",
"verdict": "BLOCK",
"response": "VERDICT: BLOCK\nREASON: Backdated invoices receive non-chronological numbers violating CGI art. 289.\nFINDINGS:\n- FAF2026015FAF2026021 (dated JanJul 2026) numbered after existing FAF2026014 (dated Aug 2026).\nRESIDUAL RISK:\n- Existing invoice sequence may require global audit and renumbering for compliance."
}
@@ -0,0 +1,346 @@
{
"title": "Indemnité d'occupation du domicile du gérant — rattrapage janvier→juillet 2026 (163.23 + 6 × 220,00 = 1483.23 EUR), réglée par inscription au compte courant d'associé",
"observe": [
"/thirdparties?limit=200",
"/supplierinvoices?sortfield=t.rowid&sortorder=DESC&limit=10",
"/bankaccounts/3/lines?limit=5"
],
"ops": [
{
"label": "tiers: Radureau Gabriel (metteur à disposition)",
"api": {
"method": "POST",
"path": "/thirdparties",
"body": {
"name": "Radureau Gabriel",
"name_alias": "Metteur à disposition — indemnité d'occupation",
"fournisseur": 1,
"client": 0,
"status": 1,
"address": "73 boulevard de l'Yerres",
"zip": "91000",
"town": "Évry-Courcouronnes",
"country_id": 1,
"typent_code": "TE_PRIVATE",
"note_private": "Gérant et associé unique, agissant ici à titre PERSONNEL comme metteur à disposition d'une partie de son domicile. Ce tiers ne sert qu'à porter l'indemnité d'occupation. Règlement par inscription au compte courant d'associé (compte bancaire 3), jamais par décaissement — cf. adc-005.",
"code_fournisseur": "FO0012"
}
}
},
{
"label": "indemnité d'occupation 2026-01 — 163.23 EUR",
"api": {
"method": "POST",
"path": "/supplierinvoices",
"body": {
"socid": 13,
"type": 0,
"date": 1769860800,
"ref_supplier": "IND-2026-01",
"note_public": "Indemnité d'occupation du domicile du gérant — convention annexée aux statuts (annexe 3) et décision n°1 de l'associé unique du 09/01/2026 (annexe 2). Bureau de 10 m² à usage exclusivement professionnel dans un logement de 60 m², 73 boulevard de l'Yerres, 91000 Évry-Courcouronnes. Montant forfaitaire de 220,00 EUR par mois, charges comprises (quote-part de valeur locative, électricité, chauffage, accès internet), sans régularisation annuelle. Justification du forfait : loyer principal 1 100,00 EUR/mois, quote-part de surface 10/60 = 16,67 % → 183,33 EUR ; charges réelles du logement 75,17 EUR/mois (électricité 38,25 + internet 29,99 + assurance habitation 6,93) → 12,53 EUR au prorata de surface, davantage si l'on pondère l'usage professionnel de l'électricité et d'internet. Prorata strict 195,87 EUR ; forfait retenu 220,00 EUR, soit +12,3 %. N'est PAS une rémunération : sans contrepartie de travail, hors assiette des cotisations TNS (CSS art. L131-6 renvoyant à L136-3). Non soumise à TVA — le metteur à disposition est un particulier non assujetti. Autorisation écrite du propriétaire du 05/01/2026 ; notification au syndic effectuée.",
"lines": [
{
"desc": "Indemnité d'occupation — du 9 au 31 janvier 2026 (prorata : 23 jours sur 31). Bureau 10 m², 73 bd de l'Yerres, 91000 Évry-Courcouronnes. Convention annexée aux statuts, art. 4. Hors champ de la TVA (particulier non assujetti).",
"subprice": "163.23",
"pu_ht": "163.23",
"qty": "1",
"tva_tx": "0",
"product_type": "1"
}
]
}
},
"then": [
{
"label": "valider",
"method": "POST",
"path": "/supplierinvoices/{id}/validate",
"body": {}
},
{
"label": "inscrire au compte courant d'associé",
"method": "POST",
"path": "/supplierinvoices/{id}/payments",
"body": {
"datepaye": 1769860800,
"payment_mode_id": 2,
"closepaidinvoices": "yes",
"accountid": 3,
"num_payment": "",
"comment": "Inscription au compte courant d'associé — aucun mouvement de trésorerie."
}
}
]
},
{
"label": "indemnité d'occupation 2026-02 — 220.00 EUR",
"api": {
"method": "POST",
"path": "/supplierinvoices",
"body": {
"socid": 13,
"type": 0,
"date": 1772280000,
"ref_supplier": "IND-2026-02",
"note_public": "Indemnité d'occupation du domicile du gérant — convention annexée aux statuts (annexe 3) et décision n°1 de l'associé unique du 09/01/2026 (annexe 2). Bureau de 10 m² à usage exclusivement professionnel dans un logement de 60 m², 73 boulevard de l'Yerres, 91000 Évry-Courcouronnes. Montant forfaitaire de 220,00 EUR par mois, charges comprises (quote-part de valeur locative, électricité, chauffage, accès internet), sans régularisation annuelle. Justification du forfait : loyer principal 1 100,00 EUR/mois, quote-part de surface 10/60 = 16,67 % → 183,33 EUR ; charges réelles du logement 75,17 EUR/mois (électricité 38,25 + internet 29,99 + assurance habitation 6,93) → 12,53 EUR au prorata de surface, davantage si l'on pondère l'usage professionnel de l'électricité et d'internet. Prorata strict 195,87 EUR ; forfait retenu 220,00 EUR, soit +12,3 %. N'est PAS une rémunération : sans contrepartie de travail, hors assiette des cotisations TNS (CSS art. L131-6 renvoyant à L136-3). Non soumise à TVA — le metteur à disposition est un particulier non assujetti. Autorisation écrite du propriétaire du 05/01/2026 ; notification au syndic effectuée.",
"lines": [
{
"desc": "Indemnité d'occupation — mois de février 2026. Bureau 10 m², 73 bd de l'Yerres, 91000 Évry-Courcouronnes. Convention annexée aux statuts, art. 4. Hors champ de la TVA (particulier non assujetti).",
"subprice": "220.00",
"pu_ht": "220.00",
"qty": "1",
"tva_tx": "0",
"product_type": "1"
}
]
}
},
"then": [
{
"label": "valider",
"method": "POST",
"path": "/supplierinvoices/{id}/validate",
"body": {}
},
{
"label": "inscrire au compte courant d'associé",
"method": "POST",
"path": "/supplierinvoices/{id}/payments",
"body": {
"datepaye": 1772280000,
"payment_mode_id": 2,
"closepaidinvoices": "yes",
"accountid": 3,
"num_payment": "",
"comment": "Inscription au compte courant d'associé — aucun mouvement de trésorerie."
}
}
]
},
{
"label": "indemnité d'occupation 2026-03 — 220.00 EUR",
"api": {
"method": "POST",
"path": "/supplierinvoices",
"body": {
"socid": 13,
"type": 0,
"date": 1774958400,
"ref_supplier": "IND-2026-03",
"note_public": "Indemnité d'occupation du domicile du gérant — convention annexée aux statuts (annexe 3) et décision n°1 de l'associé unique du 09/01/2026 (annexe 2). Bureau de 10 m² à usage exclusivement professionnel dans un logement de 60 m², 73 boulevard de l'Yerres, 91000 Évry-Courcouronnes. Montant forfaitaire de 220,00 EUR par mois, charges comprises (quote-part de valeur locative, électricité, chauffage, accès internet), sans régularisation annuelle. Justification du forfait : loyer principal 1 100,00 EUR/mois, quote-part de surface 10/60 = 16,67 % → 183,33 EUR ; charges réelles du logement 75,17 EUR/mois (électricité 38,25 + internet 29,99 + assurance habitation 6,93) → 12,53 EUR au prorata de surface, davantage si l'on pondère l'usage professionnel de l'électricité et d'internet. Prorata strict 195,87 EUR ; forfait retenu 220,00 EUR, soit +12,3 %. N'est PAS une rémunération : sans contrepartie de travail, hors assiette des cotisations TNS (CSS art. L131-6 renvoyant à L136-3). Non soumise à TVA — le metteur à disposition est un particulier non assujetti. Autorisation écrite du propriétaire du 05/01/2026 ; notification au syndic effectuée.",
"lines": [
{
"desc": "Indemnité d'occupation — mois de mars 2026. Bureau 10 m², 73 bd de l'Yerres, 91000 Évry-Courcouronnes. Convention annexée aux statuts, art. 4. Hors champ de la TVA (particulier non assujetti).",
"subprice": "220.00",
"pu_ht": "220.00",
"qty": "1",
"tva_tx": "0",
"product_type": "1"
}
]
}
},
"then": [
{
"label": "valider",
"method": "POST",
"path": "/supplierinvoices/{id}/validate",
"body": {}
},
{
"label": "inscrire au compte courant d'associé",
"method": "POST",
"path": "/supplierinvoices/{id}/payments",
"body": {
"datepaye": 1774958400,
"payment_mode_id": 2,
"closepaidinvoices": "yes",
"accountid": 3,
"num_payment": "",
"comment": "Inscription au compte courant d'associé — aucun mouvement de trésorerie."
}
}
]
},
{
"label": "indemnité d'occupation 2026-04 — 220.00 EUR",
"api": {
"method": "POST",
"path": "/supplierinvoices",
"body": {
"socid": 13,
"type": 0,
"date": 1777550400,
"ref_supplier": "IND-2026-04",
"note_public": "Indemnité d'occupation du domicile du gérant — convention annexée aux statuts (annexe 3) et décision n°1 de l'associé unique du 09/01/2026 (annexe 2). Bureau de 10 m² à usage exclusivement professionnel dans un logement de 60 m², 73 boulevard de l'Yerres, 91000 Évry-Courcouronnes. Montant forfaitaire de 220,00 EUR par mois, charges comprises (quote-part de valeur locative, électricité, chauffage, accès internet), sans régularisation annuelle. Justification du forfait : loyer principal 1 100,00 EUR/mois, quote-part de surface 10/60 = 16,67 % → 183,33 EUR ; charges réelles du logement 75,17 EUR/mois (électricité 38,25 + internet 29,99 + assurance habitation 6,93) → 12,53 EUR au prorata de surface, davantage si l'on pondère l'usage professionnel de l'électricité et d'internet. Prorata strict 195,87 EUR ; forfait retenu 220,00 EUR, soit +12,3 %. N'est PAS une rémunération : sans contrepartie de travail, hors assiette des cotisations TNS (CSS art. L131-6 renvoyant à L136-3). Non soumise à TVA — le metteur à disposition est un particulier non assujetti. Autorisation écrite du propriétaire du 05/01/2026 ; notification au syndic effectuée.",
"lines": [
{
"desc": "Indemnité d'occupation — mois de avril 2026. Bureau 10 m², 73 bd de l'Yerres, 91000 Évry-Courcouronnes. Convention annexée aux statuts, art. 4. Hors champ de la TVA (particulier non assujetti).",
"subprice": "220.00",
"pu_ht": "220.00",
"qty": "1",
"tva_tx": "0",
"product_type": "1"
}
]
}
},
"then": [
{
"label": "valider",
"method": "POST",
"path": "/supplierinvoices/{id}/validate",
"body": {}
},
{
"label": "inscrire au compte courant d'associé",
"method": "POST",
"path": "/supplierinvoices/{id}/payments",
"body": {
"datepaye": 1777550400,
"payment_mode_id": 2,
"closepaidinvoices": "yes",
"accountid": 3,
"num_payment": "",
"comment": "Inscription au compte courant d'associé — aucun mouvement de trésorerie."
}
}
]
},
{
"label": "indemnité d'occupation 2026-05 — 220.00 EUR",
"api": {
"method": "POST",
"path": "/supplierinvoices",
"body": {
"socid": 13,
"type": 0,
"date": 1780228800,
"ref_supplier": "IND-2026-05",
"note_public": "Indemnité d'occupation du domicile du gérant — convention annexée aux statuts (annexe 3) et décision n°1 de l'associé unique du 09/01/2026 (annexe 2). Bureau de 10 m² à usage exclusivement professionnel dans un logement de 60 m², 73 boulevard de l'Yerres, 91000 Évry-Courcouronnes. Montant forfaitaire de 220,00 EUR par mois, charges comprises (quote-part de valeur locative, électricité, chauffage, accès internet), sans régularisation annuelle. Justification du forfait : loyer principal 1 100,00 EUR/mois, quote-part de surface 10/60 = 16,67 % → 183,33 EUR ; charges réelles du logement 75,17 EUR/mois (électricité 38,25 + internet 29,99 + assurance habitation 6,93) → 12,53 EUR au prorata de surface, davantage si l'on pondère l'usage professionnel de l'électricité et d'internet. Prorata strict 195,87 EUR ; forfait retenu 220,00 EUR, soit +12,3 %. N'est PAS une rémunération : sans contrepartie de travail, hors assiette des cotisations TNS (CSS art. L131-6 renvoyant à L136-3). Non soumise à TVA — le metteur à disposition est un particulier non assujetti. Autorisation écrite du propriétaire du 05/01/2026 ; notification au syndic effectuée.",
"lines": [
{
"desc": "Indemnité d'occupation — mois de mai 2026. Bureau 10 m², 73 bd de l'Yerres, 91000 Évry-Courcouronnes. Convention annexée aux statuts, art. 4. Hors champ de la TVA (particulier non assujetti).",
"subprice": "220.00",
"pu_ht": "220.00",
"qty": "1",
"tva_tx": "0",
"product_type": "1"
}
]
}
},
"then": [
{
"label": "valider",
"method": "POST",
"path": "/supplierinvoices/{id}/validate",
"body": {}
},
{
"label": "inscrire au compte courant d'associé",
"method": "POST",
"path": "/supplierinvoices/{id}/payments",
"body": {
"datepaye": 1780228800,
"payment_mode_id": 2,
"closepaidinvoices": "yes",
"accountid": 3,
"num_payment": "",
"comment": "Inscription au compte courant d'associé — aucun mouvement de trésorerie."
}
}
]
},
{
"label": "indemnité d'occupation 2026-06 — 220.00 EUR",
"api": {
"method": "POST",
"path": "/supplierinvoices",
"body": {
"socid": 13,
"type": 0,
"date": 1782820800,
"ref_supplier": "IND-2026-06",
"note_public": "Indemnité d'occupation du domicile du gérant — convention annexée aux statuts (annexe 3) et décision n°1 de l'associé unique du 09/01/2026 (annexe 2). Bureau de 10 m² à usage exclusivement professionnel dans un logement de 60 m², 73 boulevard de l'Yerres, 91000 Évry-Courcouronnes. Montant forfaitaire de 220,00 EUR par mois, charges comprises (quote-part de valeur locative, électricité, chauffage, accès internet), sans régularisation annuelle. Justification du forfait : loyer principal 1 100,00 EUR/mois, quote-part de surface 10/60 = 16,67 % → 183,33 EUR ; charges réelles du logement 75,17 EUR/mois (électricité 38,25 + internet 29,99 + assurance habitation 6,93) → 12,53 EUR au prorata de surface, davantage si l'on pondère l'usage professionnel de l'électricité et d'internet. Prorata strict 195,87 EUR ; forfait retenu 220,00 EUR, soit +12,3 %. N'est PAS une rémunération : sans contrepartie de travail, hors assiette des cotisations TNS (CSS art. L131-6 renvoyant à L136-3). Non soumise à TVA — le metteur à disposition est un particulier non assujetti. Autorisation écrite du propriétaire du 05/01/2026 ; notification au syndic effectuée.",
"lines": [
{
"desc": "Indemnité d'occupation — mois de juin 2026. Bureau 10 m², 73 bd de l'Yerres, 91000 Évry-Courcouronnes. Convention annexée aux statuts, art. 4. Hors champ de la TVA (particulier non assujetti).",
"subprice": "220.00",
"pu_ht": "220.00",
"qty": "1",
"tva_tx": "0",
"product_type": "1"
}
]
}
},
"then": [
{
"label": "valider",
"method": "POST",
"path": "/supplierinvoices/{id}/validate",
"body": {}
},
{
"label": "inscrire au compte courant d'associé",
"method": "POST",
"path": "/supplierinvoices/{id}/payments",
"body": {
"datepaye": 1782820800,
"payment_mode_id": 2,
"closepaidinvoices": "yes",
"accountid": 3,
"num_payment": "",
"comment": "Inscription au compte courant d'associé — aucun mouvement de trésorerie."
}
}
]
},
{
"label": "indemnité d'occupation 2026-07 — 220.00 EUR",
"api": {
"method": "POST",
"path": "/supplierinvoices",
"body": {
"socid": 13,
"type": 0,
"date": 1785499200,
"ref_supplier": "IND-2026-07",
"note_public": "Indemnité d'occupation du domicile du gérant — convention annexée aux statuts (annexe 3) et décision n°1 de l'associé unique du 09/01/2026 (annexe 2). Bureau de 10 m² à usage exclusivement professionnel dans un logement de 60 m², 73 boulevard de l'Yerres, 91000 Évry-Courcouronnes. Montant forfaitaire de 220,00 EUR par mois, charges comprises (quote-part de valeur locative, électricité, chauffage, accès internet), sans régularisation annuelle. Justification du forfait : loyer principal 1 100,00 EUR/mois, quote-part de surface 10/60 = 16,67 % → 183,33 EUR ; charges réelles du logement 75,17 EUR/mois (électricité 38,25 + internet 29,99 + assurance habitation 6,93) → 12,53 EUR au prorata de surface, davantage si l'on pondère l'usage professionnel de l'électricité et d'internet. Prorata strict 195,87 EUR ; forfait retenu 220,00 EUR, soit +12,3 %. N'est PAS une rémunération : sans contrepartie de travail, hors assiette des cotisations TNS (CSS art. L131-6 renvoyant à L136-3). Non soumise à TVA — le metteur à disposition est un particulier non assujetti. Autorisation écrite du propriétaire du 05/01/2026 ; notification au syndic effectuée.",
"lines": [
{
"desc": "Indemnité d'occupation — mois de juillet 2026. Bureau 10 m², 73 bd de l'Yerres, 91000 Évry-Courcouronnes. Convention annexée aux statuts, art. 4. Hors champ de la TVA (particulier non assujetti).",
"subprice": "220.00",
"pu_ht": "220.00",
"qty": "1",
"tva_tx": "0",
"product_type": "1"
}
]
}
},
"then": [
{
"label": "valider",
"method": "POST",
"path": "/supplierinvoices/{id}/validate",
"body": {}
},
{
"label": "inscrire au compte courant d'associé",
"method": "POST",
"path": "/supplierinvoices/{id}/payments",
"body": {
"datepaye": 1785499200,
"payment_mode_id": 2,
"closepaidinvoices": "yes",
"accountid": 3,
"num_payment": "",
"comment": "Inscription au compte courant d'associé — aucun mouvement de trésorerie."
}
}
]
}
]
}
@@ -0,0 +1,2 @@
{"at": "2026-08-13T18:29:05+00:00", "stage": "rehearsal", "file": "01-rehearsal.json"}
{"at": "2026-08-13T18:35:29+00:00", "stage": "pre", "file": "02-pre-verdict.json"}