add dolibarr-thirdparty-completeness and dolibarr-tva-deductible

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) <noreply@anthropic.com>
This commit is contained in:
2026-05-29 06:14:28 +02:00
parent fe9e8274f1
commit 585b7beb03
18 changed files with 5736 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
================================================================================
Thirdparty 2 — Wise Europe SA [supplier, country=BE]
================================================================================
[OK] name = 'Wise Europe SA'
[OK] address = 'Rue du Trône 100, 3rd floor'
[OK] zip = '1050'
[OK] town = 'Brussels'
[OK] country_code = 'BE'
[XX] tva_intra (VAT EU) = ''
[--] idprof1 (national reg) = '' (optional)
[--] email = None (optional)
[--] phone = None (optional)
[OK] url = 'wise.com' (optional)
[--] iban = (not set) (optional)
6 pass, 1 mandatory fail(s), 3 optional unset