L'article 289 impose une numérotation chronologique et continue aux factures que la société ÉMET. Il ne dit rien de la référence de classement que Dolibarr attribue à celles qu'elle REÇOIT : le numéro qui fait foi pour ces dernières est celui du fournisseur, porté par ref_supplier, et la séquence FAF suit l'ordre d'ENREGISTREMENT — c'est sa construction normale, pas un défaut. Appliquée aux deux registres, la garde produisait un faux positif systématique. La production porte DÉJÀ cinq ruptures dans la séquence FAF — FAF2026003 daté du 4 janvier suit FAF2026002 daté du 9 — et ZÉRO dans la séquence FAC. Or adc-008 prescrit d'enregistrer une facture fournisseur à la date du document : le cas ordinaire se heurtait donc au refus et exigeait ARCO_ALLOW_BACKDATE. Une garde qu'on outrepasse par routine ne garde plus rien. Elle avait déjà été outrepassée deux fois en une journée sur les factures Anthropic, et le même faux positif avait été produit par le juge pré-gate sur le change-set d'indemnité — signe que l'erreur était dans la règle, pas dans son application. Vérifié sur les deux registres : facture FOURNISSEUR antidatée au 01/03 -> créée facture CLIENT antidatée au 01/03 -> REFUSÉE (FAC008 au 23/07) La garde protège désormais là où la loi s'applique, et cesse d'obstruer là où elle ne s'applique pas. 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.