Un exercice OUVERT n'a d'engagement envers personne : aucun compte déposé, aucune liasse, aucun FEC remis. Tant qu'il en va ainsi, une erreur de MODÉLISATION se corrige mieux en rejouant depuis les pièces qu'en la contournant — la piste d'audit fiable demande que l'écriture reflète sa pièce, et rejouer resserre ce lien là où une rustine le distend. extractExercise.ts ne fait que LIRE. Il produit la description ordonnée des faits : tiers, factures client et fournisseur avec leurs lignes et règlements, et l'intégralité des mouvements bancaires. Les mouvements bancaires sont le RÉFÉRENT : Qonto et Wise sont hors de Dolibarr, on ne peut pas les réécrire. Le test d'acceptation d'un rejeu est donc qu'ils soient retrouvés au centime et à la date. La ligne de partage entre ce qui se rejoue et ce qui est figé n'est pas technique mais juridique : est figé tout ce qu'un tiers détient — facture client ENVOYÉE, dépôt au greffe, déclaration transmise — et tout exercice clos. Les factures client sont donc extraites avec delivered:true : un rejeu les reproduit à l'identique, il ne les recalcule pas. Les exclusions sont DÉCLARATIVES ET MOTIVÉES, jamais codées en dur : un auditeur doit lire pourquoi une référence manque sans avoir à le deviner. Deux pièces sont écartées — FAC001-CL00001, dont la référence était malformée par un défaut de masque, et l'avoir qui l'annulait. L'opérateur a établi qu'elle n'a jamais quitté la société : KissMetrics a été facturé via Wise en février, et le document qu'il détient référence FAC001-CL0001001. L'avoir ne documentait donc qu'un faux pas interne. La séquence FAC reste continue (FAC001 à FAC008), la réémission portant elle aussi FAC001 — rien à renuméroter. Deux constats que l'extraction met au jour : - 20 des 37 mouvements bancaires portent un libellé Dolibarr générique (« SupplierInvoicePayment », « CustomerInvoicePayment ») qui traverse le grand livre tel quel et y est illisible pour un repreneur comme pour un inspecteur ; - FAF2025001 (OVH, 7,30 EUR) est datée du 24/10/2025, trois mois avant l'immatriculation, et NE FIGURE PAS à l'annexe 1 des statuts qui recense les actes accomplis pour le compte de la société en formation. Une dépense antérieure à l'existence de la société ne peut être supportée par elle que si elle est reprise par cet état ou ratifiée ensuite. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
ERP
CLI — bin/arcodange
Read-only operational CLI for the Arcodange Dolibarr at erp.arcodange.lab. One entry point, subcommands per domain:
bin/arcodange ping # Dolibarr version + liveness
bin/arcodange whoami # confirm auth as ai_agent
bin/arcodange invoice list # KissMetrics invoices with payment state
bin/arcodange invoice audit 12 # JSON facts + PDF mandatory-mention audit
bin/arcodange payments state # per-invoice TTC vs payments reconciliation
bin/arcodange payments timeline --year 2026 # cash receipts with cumulative balance
bin/arcodange tva summary # CA3-ready collectée − déductible per month
bin/arcodange thirdparty audit-all # completeness audit, country-aware
bin/arcodange templates inspect 1 # recurring template health (frequency, next fire, …)
bin/arcodange snapshot --out /tmp/erp.json # full state dump with content_hash
bin/arcodange help # full command tree
Read-only by design. The underlying API key (ai_agent) has no write permissions; corrections go through the Dolibarr UI.
Credentials. Reads .claude/skills/dolibarr/.env (mode 600, gitignored). Setup instructions: .claude/skills/dolibarr/README.md.
Source of behaviour. Each subcommand delegates to a script under .claude/skills/<skill>/scripts/. The skills' SKILL.md files document the business logic and are also discoverable by Claude Code via skill triggers.
Dolibarr
Premiers démarrages
Si l'application log au démarrage l'erreur suivante:
Importing custom SQL from update_table_ownership.sql ...
sed: couldn't open temporary file /var/www/scripts/before-starting.d/sedwHcRlQ: Read-only file system
Il faudra prendre la main du shell du pod et executer:
kubectl exec -n erp `kubectl get pod -n erp -l app.kubernetes.io/name=erp -o=name` -c erp -- sh -c 'PGPASSWORD=${DOLI_DB_PASSWORD} psql -U ${DOLI_DB_USER} -h ${DOLI_DB_HOST} -p ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} \
-f /var/www/scripts/before-starting.d/update_table_ownership.sql'
Sous peine de ne plus avoir les droits de consulter la base de données une fois les crédentials mis à jour par vault. Dans ce cas executer la commande mais avec les credentials d'admin postgres.