creditnote-create.sh — create a customer avoir (credit note): a customer invoice type=2 referencing source_invoice (fk_facture_source); amounts come out negative, validates to an AVC… ref. (The user asked for avoirs "si c'est facile" — it was: one type flag + the source ref.)
bin/arcodange sandbox — new command group wiring all the write scripts:
Builds on the V9 write skill (erp#21).
- **`creditnote-create.sh`** — create a customer **avoir** (credit note): a customer invoice `type=2` referencing `source_invoice` (`fk_facture_source`); amounts come out negative, validates to an `AVC…` ref. (The user asked for avoirs "si c'est facile" — it was: one `type` flag + the source ref.)
- **`bin/arcodange sandbox`** — new command group wiring all the write scripts:
```
arcodange sandbox thirdparty # client/supplier fiche
arcodange sandbox invoice # customer/supplier invoice + product/service lines
arcodange sandbox payment # règlement
arcodange sandbox creditnote # avoir
arcodange sandbox write … # raw host-guarded write
```
(JSON on stdin). Header/usage updated: the CLI is now "read-only on prod; host-guarded sandbox writes".
### Verified live (incl. the lines, per your ask)
Read straight back from the sandbox — the **product/service lines** land exactly:
```
FAC004-CL0003001 Conseil qty2 pu500 tva20% [service] → HT 1000 ; Licence qty1 pu100 tva20% [product] → HT 100 (HT 1100/TTC 1320)
```
And the full CLI chain: `thirdparty → invoice (FAC004-CL0004001) → avoir (AVC002-CL0004001, TTC −240, fk_facture_source=21)`, host-guard intact.
Follow-ups: supplier avoirs, `banque lire` for account listing, the human-gated promote-to-prod replay.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
- dolibarr-sandbox-write/scripts/creditnote-create.sh: create a customer avoir
(credit note) — a customer invoice type=2 referencing source_invoice
(fk_facture_source); amounts negative, validates to an AVC… ref. Proven live.
- bin/arcodange: new `sandbox` command group wiring the write scripts —
`arcodange sandbox {thirdparty|invoice|payment|creditnote|write}` (JSON on
stdin). Header + usage updated to note the CLI now does host-guarded sandbox
writes (still read-only on prod).
- SKILL.md: avoir workflow + CLI notes.
Verified end-to-end through the CLI: thirdparty -> invoice (FAC…) -> avoir
(AVC…, total_ttc -240, fk_facture_source set); host-guard intact via the CLI.
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.
Builds on the V9 write skill (erp#21).
creditnote-create.sh— create a customer avoir (credit note): a customer invoicetype=2referencingsource_invoice(fk_facture_source); amounts come out negative, validates to anAVC…ref. (The user asked for avoirs "si c'est facile" — it was: onetypeflag + the source ref.)bin/arcodange sandbox— new command group wiring all the write scripts:Verified live (incl. the lines, per your ask)
Read straight back from the sandbox — the product/service lines land exactly:
And the full CLI chain:
thirdparty → invoice (FAC004-CL0004001) → avoir (AVC002-CL0004001, TTC −240, fk_facture_source=21), host-guard intact.Follow-ups: supplier avoirs,
banque lirefor account listing, the human-gated promote-to-prod replay.🤖 Generated with Claude Code
- dolibarr-sandbox-write/scripts/creditnote-create.sh: create a customer avoir (credit note) — a customer invoice type=2 referencing source_invoice (fk_facture_source); amounts negative, validates to an AVC… ref. Proven live. - bin/arcodange: new `sandbox` command group wiring the write scripts — `arcodange sandbox {thirdparty|invoice|payment|creditnote|write}` (JSON on stdin). Header + usage updated to note the CLI now does host-guarded sandbox writes (still read-only on prod). - SKILL.md: avoir workflow + CLI notes. Verified end-to-end through the CLI: thirdparty -> invoice (FAC…) -> avoir (AVC…, total_ttc -240, fk_facture_source set); host-guard intact via the CLI. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>