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:
@@ -0,0 +1,14 @@
|
||||
id name cnty role missing
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
1 KissMetrics US client tax_id
|
||||
2 Wise Europe SA BE supplier tva_intra
|
||||
3 Greffe du tribunal de commerce Évry FR supplier (complete)
|
||||
4 YOLAW FR supplier (complete)
|
||||
5 Medialex FR supplier SIRET, tva_intra
|
||||
6 Qonto FR supplier SIRET
|
||||
7 OVH FR supplier (complete)
|
||||
8 La Poste FR supplier (complete)
|
||||
9 Infogreffe FR supplier SIRET
|
||||
10 Darnis Operations FR supplier (complete)
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
# 10 thirdparties audited, 5 with mandatory gaps
|
||||
@@ -0,0 +1,16 @@
|
||||
================================================================================
|
||||
Thirdparty 1 — KissMetrics [client, country=US]
|
||||
================================================================================
|
||||
[OK] name = 'KissMetrics'
|
||||
[OK] address = '2850 34th Street North, 307'
|
||||
[OK] zip = '33713'
|
||||
[OK] town = 'St. Petersburg'
|
||||
[OK] country_code = 'US'
|
||||
[XX] idprof1 (tax id / EIN) = ''
|
||||
[--] idprof2 = '' (optional)
|
||||
[OK] email = 'evan@kissmetrics.io' (optional)
|
||||
[--] phone = None (optional)
|
||||
[--] url = None (optional)
|
||||
[--] iban = (not set) (optional)
|
||||
|
||||
6 pass, 1 mandatory fail(s), 3 optional unset
|
||||
@@ -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
|
||||
@@ -0,0 +1,18 @@
|
||||
================================================================================
|
||||
Thirdparty 5 — Medialex [supplier, country=FR]
|
||||
================================================================================
|
||||
[OK] name = 'Medialex'
|
||||
[OK] address = '10 rue du Breil'
|
||||
[OK] zip = '35063'
|
||||
[OK] town = 'Rennes'
|
||||
[OK] country_code = 'FR'
|
||||
[OK] idprof1 (SIREN) = '353403074'
|
||||
[XX] idprof2 (SIRET) = ''
|
||||
[OK] idprof3 (APE) = '7312Z' (optional)
|
||||
[XX] tva_intra (VAT) = ''
|
||||
[--] email = None (optional)
|
||||
[OK] phone = '0299264200' (optional)
|
||||
[--] url = None (optional)
|
||||
[--] iban = (not set) (optional)
|
||||
|
||||
8 pass, 2 mandatory fail(s), 2 optional unset
|
||||
Reference in New Issue
Block a user