EU non-FR: tva_intra required for B2B autoliquidation
Extra-EU: national tax id in idprof1 (EIN for US, etc.)
audit-all-thirdparties.sh [--clients-only|--suppliers-only] — loops the whole list, compact table of gaps.
Live findings — 5 / 10 thirdparties have mandatory gaps:
socid
name
gap
1
KissMetrics (US)
EIN missing (already known)
2
Wise Europe SA (BE)
tva_intra missing
5
Medialex (FR)
SIRET + tva_intra missing
6
Qonto (FR)
SIRET missing
9
Infogreffe (FR)
SIRET missing
dolibarr-tva-deductible/
The supplier-side mirror of dolibarr-tva-reconciliation. Together they give you the two numbers a French CA3 needs (collectée vs déductible → net to remit).
deductible-by-month.sh — HT + TVA déductible grouped by (year-month × tva_tx), mapped to CA3 lignes.
deductible-line-detail.sh — per-line audit with supplier country classification (FR / EU intra-UE / extra-EU).
Live findings:
TVA déductible totals 223.22 € across 13 supplier-invoice lines.
Wise Europe SA correctly identified as intra-UE autoliquidation (ligne 17 + 24).
La Poste correctly identified as FR exempt (timbres).
TVA collectée = 0 € (all KM under 259-1° CGI) → Arcodange is in 223.22 € TVA credit cumulatif.
API gotcha documented
/supplierinvoices/{id}/lines returns HTTP 403 for ai_agent. We work around it cleanly — lines are also embedded inline on /supplierinvoices/{id}, just like the customer-side. Saved as acl_403_supplier_lines.json for future reference.
Base-skill updates
dolibarr/SKILL.md: catalogue row for /supplierinvoices (with the 403 gotcha) and two new sibling cross-links. dolibarr/README.md: two new permission checkboxes for "Factures fournisseurs → Lire / Voir toutes" — they were already granted in this Dolibarr but the doc now reflects the required state for any rebuild.
Test plan
audit-all-thirdparties.sh → exit 1, 5 gaps
audit-thirdparty.sh 1 → exit 1 (US EIN missing)
audit-thirdparty.sh 7 → exit 0 (OVH complete)
deductible-by-month.sh → 4 month-buckets, total 223.22 € TVA
deductible-line-detail.sh → 14 rows, 3 buckets in summary
No credentials in the diff (verified pre-commit)
V5 candidates
dolibarr-tva-summary — composes tva-reconciliation + tva-deductible into a single monthly CA3-ready report (net to remit / TVA credit, ligne-by-ligne).
arcodange-k8s, arcodange-backups, arcodange-bank-reco — operational siblings outside the Dolibarr-API perimeter.
## Summary
V4 bundle — two sibling skills, both read-only, both depending on `dolibarr`. The `dolibarr-*` family now counts **8 skills**.
### `dolibarr-thirdparty-completeness/`
Country-aware completeness audit for any thirdparty (client or supplier). Generalizes the V1 KM-hardcoded `audit-km-thirdparty.sh`.
- `audit-thirdparty.sh <socid>` — single-id audit with country-specific rules:
- **FR**: SIREN (idprof1) + SIRET (idprof2) + tva_intra (if supplier)
- **EU non-FR**: tva_intra required for B2B autoliquidation
- **Extra-EU**: national tax id in idprof1 (EIN for US, etc.)
- `audit-all-thirdparties.sh [--clients-only|--suppliers-only]` — loops the whole list, compact table of gaps.
**Live findings — 5 / 10 thirdparties have mandatory gaps:**
| socid | name | gap |
|---|---|---|
| 1 | KissMetrics (US) | EIN missing (already known) |
| 2 | Wise Europe SA (BE) | tva_intra missing |
| 5 | Medialex (FR) | SIRET + tva_intra missing |
| 6 | Qonto (FR) | SIRET missing |
| 9 | Infogreffe (FR) | SIRET missing |
### `dolibarr-tva-deductible/`
The supplier-side mirror of `dolibarr-tva-reconciliation`. Together they give you the two numbers a French CA3 needs (collectée vs déductible → net to remit).
- `deductible-by-month.sh` — HT + TVA déductible grouped by `(year-month × tva_tx)`, mapped to CA3 lignes.
- `deductible-line-detail.sh` — per-line audit with supplier country classification (FR / EU intra-UE / extra-EU).
**Live findings:**
- TVA déductible totals **223.22 €** across 13 supplier-invoice lines.
- Largest items: Darnis Operations (51 + 102 €), Qonto (33.80 €), Medialex (24.80 €).
- Wise Europe SA correctly identified as intra-UE autoliquidation (ligne 17 + 24).
- La Poste correctly identified as FR exempt (timbres).
- TVA collectée = 0 € (all KM under 259-1° CGI) → **Arcodange is in 223.22 € TVA credit cumulatif**.
### API gotcha documented
`/supplierinvoices/{id}/lines` returns HTTP 403 for `ai_agent`. We work around it cleanly — lines are also embedded inline on `/supplierinvoices/{id}`, just like the customer-side. Saved as [acl_403_supplier_lines.json](.claude/skills/dolibarr/examples/acl_403_supplier_lines.json) for future reference.
### Base-skill updates
`dolibarr/SKILL.md`: catalogue row for `/supplierinvoices` (with the 403 gotcha) and two new sibling cross-links.
`dolibarr/README.md`: two new permission checkboxes for "Factures fournisseurs → Lire / Voir toutes" — they were already granted in this Dolibarr but the doc now reflects the required state for any rebuild.
## Test plan
- [ ] `audit-all-thirdparties.sh` → exit 1, 5 gaps
- [ ] `audit-thirdparty.sh 1` → exit 1 (US EIN missing)
- [ ] `audit-thirdparty.sh 7` → exit 0 (OVH complete)
- [ ] `deductible-by-month.sh` → 4 month-buckets, total 223.22 € TVA
- [ ] `deductible-line-detail.sh` → 14 rows, 3 buckets in summary
- [ ] No credentials in the diff (verified pre-commit)
## V5 candidates
- `dolibarr-tva-summary` — composes `tva-reconciliation` + `tva-deductible` into a single monthly CA3-ready report (net to remit / TVA credit, ligne-by-ligne).
- `arcodange-k8s`, `arcodange-backups`, `arcodange-bank-reco` — operational siblings outside the Dolibarr-API perimeter.
V4 bundle — two more sibling skills, both read-only, both depending
on the dolibarr base skill.
dolibarr-thirdparty-completeness:
- audit-thirdparty.sh <socid>: country-aware completeness audit for
any thirdparty (FR: SIREN + SIRET + tva_intra; EU non-FR: tva_intra;
extra-EU: national tax id). Generalizes the V1 KM-hardcoded script.
- audit-all-thirdparties.sh: loops over /thirdparties and surfaces a
compact table of gaps. --clients-only / --suppliers-only flags.
- Live baseline finds 5/10 thirdparties with mandatory gaps:
KissMetrics (US tax id), Wise Europe SA (BE tva_intra), Medialex
(FR SIRET + tva_intra), Qonto (SIRET), Infogreffe (SIRET).
dolibarr-tva-deductible:
- deductible-by-month.sh: TVA déductible aggregated per period × rate.
- deductible-line-detail.sh: per supplier-invoice line with country-
based CA3 bucket assignment (ligne 20 for 20 % FR, ligne 19 for
reduced rates, ligne 17+24 for intra-UE autoliquidation).
- Live baseline: 223.22 € total TVA déductible across 13 lines.
Wise Europe SA correctly identified as intra-UE autoliquidation;
La Poste correctly identified as FR exempt (timbres).
- Mirrors dolibarr-tva-reconciliation on the supplier side. Together
they give the two numbers a CA3 monthly declaration needs.
Also extends dolibarr/SKILL.md endpoint catalogue with /supplierinvoices
(noting the 403 on the /lines sub-endpoint — inline lines on the detail
endpoint make this a non-issue). dolibarr/README.md gains two new
permission checkboxes for Factures fournisseurs.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
V4 bundle — two sibling skills, both read-only, both depending on
dolibarr. Thedolibarr-*family now counts 8 skills.dolibarr-thirdparty-completeness/Country-aware completeness audit for any thirdparty (client or supplier). Generalizes the V1 KM-hardcoded
audit-km-thirdparty.sh.audit-thirdparty.sh <socid>— single-id audit with country-specific rules:audit-all-thirdparties.sh [--clients-only|--suppliers-only]— loops the whole list, compact table of gaps.Live findings — 5 / 10 thirdparties have mandatory gaps:
dolibarr-tva-deductible/The supplier-side mirror of
dolibarr-tva-reconciliation. Together they give you the two numbers a French CA3 needs (collectée vs déductible → net to remit).deductible-by-month.sh— HT + TVA déductible grouped by(year-month × tva_tx), mapped to CA3 lignes.deductible-line-detail.sh— per-line audit with supplier country classification (FR / EU intra-UE / extra-EU).Live findings:
API gotcha documented
/supplierinvoices/{id}/linesreturns HTTP 403 forai_agent. We work around it cleanly — lines are also embedded inline on/supplierinvoices/{id}, just like the customer-side. Saved as acl_403_supplier_lines.json for future reference.Base-skill updates
dolibarr/SKILL.md: catalogue row for/supplierinvoices(with the 403 gotcha) and two new sibling cross-links.dolibarr/README.md: two new permission checkboxes for "Factures fournisseurs → Lire / Voir toutes" — they were already granted in this Dolibarr but the doc now reflects the required state for any rebuild.Test plan
audit-all-thirdparties.sh→ exit 1, 5 gapsaudit-thirdparty.sh 1→ exit 1 (US EIN missing)audit-thirdparty.sh 7→ exit 0 (OVH complete)deductible-by-month.sh→ 4 month-buckets, total 223.22 € TVAdeductible-line-detail.sh→ 14 rows, 3 buckets in summaryV5 candidates
dolibarr-tva-summary— composestva-reconciliation+tva-deductibleinto a single monthly CA3-ready report (net to remit / TVA credit, ligne-by-ligne).arcodange-k8s,arcodange-backups,arcodange-bank-reco— operational siblings outside the Dolibarr-API perimeter.