Files
erp/fleet/profile/calendar.schema.json
T
arcodangeandClaude Opus 5 ae9207ab66 docs(profile): échéancier URSSAF 2026 réel + correction 645 → 646
L'entrée « urssaf-echeancier / pending-definition / recurrence unknown » traînait
depuis erp#54 avec la consigne « ne pas inventer de cadence ». L'opérateur a
communiqué l'échéancier : ce n'est pas trimestriel mais trois appels irréguliers.

  493,00 (22/05, prélevé) + 1 215,00 (05/08) + 1 333,00 (05/11) = 3 041,00 EUR

Corrige aussi le compte comptable, faux dans la note : les cotisations d'un
gérant associé unique de SARLU (TNS) vont en 646 — cotisations personnelles du
dirigeant — et non en 645, qui vise les cotisations patronales sur salaires et
doit rester vide puisque Arcodange n'a aucun salarié.

Le schéma accepte désormais amount_eur : la boucle de rappels T11 (erp#60) a
besoin du montant en donnée structurée, pas noyé dans du texte libre.

Registre validé : 8 règles, 16 entrées, 8 ADC, 0 erreur.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh
2026-08-13 17:26:58 +02:00

47 lines
2.5 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "fleet/profile/calendar.schema.json",
"title": "Arcodange compliance calendar (fleet/profile/calendar.yaml)",
"description": "Dated obligations the T11 reminder loop (erp#60) reads. due 'YYYY-MM-DD' = exact date; 'YYYY-MM' = month window (source gives no day - verify on the authority's notice, never invent). Exactly one of due|recurrence per entry unless status is pending-definition/conditional (checked by scripts/validate.py, which implements the JSON-Schema subset {type, properties, required, additionalProperties, items, enum, pattern}).",
"type": "object",
"additionalProperties": false,
"required": ["version", "defaults", "entries"],
"properties": {
"version": { "type": "integer", "enum": [1] },
"defaults": {
"type": "object",
"additionalProperties": false,
"required": ["reminders_days_before"],
"properties": {
"reminders_days_before": { "type": "array", "items": { "type": "integer" } },
"reminders_repeat_until_acknowledged": { "type": "boolean" }
}
},
"entries": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["id", "title", "category", "source"],
"properties": {
"id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
"title": { "type": "string" },
"category": { "type": "string", "enum": ["fiscal", "legal", "regulatory", "social", "receivable", "contract"] },
"nature": { "type": "string", "enum": ["regulatory-hard", "fiscal-hard", "legal-hard", "engineering", "informational"] },
"status": { "type": "string", "enum": ["confirmed", "estimated", "conditional", "pending-definition"] },
"due": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}(-[0-9]{2})?$" },
"recurrence": { "type": "string", "enum": ["yearly", "quarterly", "monthly", "unknown"] },
"months": { "type": "array", "items": { "type": "integer" } },
"effective_from": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" },
"effective_until": { "type": ["string", "null"], "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" },
"authority": { "type": "string" },
"related_task": { "type": "string", "pattern": "^T[0-9]{2}$" },
"source": { "type": "string" },
"notes": { "type": "string" },
"amount_eur": { "type": "number" }
}
}
}
}
}