feat(skills,cli): sandbox avoir (credit note) + arcodange sandbox CLI group
- 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) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# arcodange — read-only operational CLI for the Arcodange Dolibarr ERP.
|
||||
# arcodange — operational CLI for the Arcodange Dolibarr ERP. Read-only on prod;
|
||||
# host-guarded WRITE ops on the sandbox via `arcodange sandbox ...`.
|
||||
#
|
||||
# Usage: arcodange <command> [subcommand] [args]
|
||||
#
|
||||
@@ -81,6 +82,13 @@ COMMANDS
|
||||
inspect <messageId> [--folder|--save-pdf|--json] Parse PDFs + draft Dolibarr entry
|
||||
curl <path> Raw read-only curl through zoho-curl.sh
|
||||
|
||||
sandbox WRITE ops on erp-sandbox ONLY (host-guarded; JSON on stdin)
|
||||
thirdparty Create a client/supplier fiche
|
||||
invoice Customer/supplier invoice + product/service lines
|
||||
payment Record a règlement on a validated invoice
|
||||
creditnote Create an avoir (credit note) of a source invoice
|
||||
write <METHOD> <path> [body] Raw host-guarded write
|
||||
|
||||
whoami GET /users/info — confirm auth
|
||||
ping GET /status — liveness + Dolibarr version
|
||||
curl <path> Raw read-only curl through dol-curl.sh
|
||||
@@ -99,6 +107,7 @@ EXAMPLES
|
||||
arcodange tva summary --year 2026
|
||||
arcodange thirdparty audit-all
|
||||
arcodange snapshot --out /tmp/erp.json
|
||||
echo '{"name":"OVH","role":"supplier"}' | arcodange sandbox thirdparty
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -265,6 +274,38 @@ EOF
|
||||
esac
|
||||
;;
|
||||
|
||||
sandbox)
|
||||
sub="${1:-help}"; shift || true
|
||||
case "${sub}" in
|
||||
thirdparty) exec "${SKILLS}/dolibarr-sandbox-write/scripts/thirdparty-create.sh" "$@" ;;
|
||||
invoice) exec "${SKILLS}/dolibarr-sandbox-write/scripts/invoice-create.sh" "$@" ;;
|
||||
payment) exec "${SKILLS}/dolibarr-sandbox-write/scripts/payment-record.sh" "$@" ;;
|
||||
creditnote) exec "${SKILLS}/dolibarr-sandbox-write/scripts/creditnote-create.sh" "$@" ;;
|
||||
write) exec "${SKILLS}/dolibarr-sandbox-write/scripts/dol-write.sh" "$@" ;;
|
||||
help|-h|--help)
|
||||
cat <<'EOF'
|
||||
arcodange sandbox — WRITE operations against erp-sandbox (rehearsal ONLY).
|
||||
Every write goes through dol-write.sh, which REFUSES any non-sandbox host.
|
||||
Each subcommand reads a JSON object on stdin (or a file path arg).
|
||||
|
||||
thirdparty client/supplier fiche
|
||||
echo '{"name":"OVH","role":"supplier"}' | arcodange sandbox thirdparty
|
||||
invoice customer/supplier invoice with product/service lines (+ ref_supplier)
|
||||
echo '{"socid":42,"validate":true,"lines":[{"desc":"X","qty":1,"price_ht":100,"tva":20,"type":"service"}]}' | arcodange sandbox invoice
|
||||
payment règlement on a validated invoice
|
||||
echo '{"invoice_id":19,"mode":"VIR","account_id":1}' | arcodange sandbox payment
|
||||
creditnote avoir (credit note) referencing a source invoice
|
||||
echo '{"socid":42,"source_invoice":19,"validate":true,"lines":[...]}' | arcodange sandbox creditnote
|
||||
write raw host-guarded write arcodange sandbox write POST /thirdparties '{"name":".."}'
|
||||
|
||||
Needs .claude/skills/dolibarr-sandbox-write/.env (DOLIBARR_SANDBOX_URL + _API_KEY).
|
||||
See dolibarr-sandbox-write/SKILL.md.
|
||||
EOF
|
||||
;;
|
||||
*) echo "arcodange sandbox: unknown subcommand '${sub}' (try 'arcodange sandbox help')" >&2; exit 2 ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
whoami)
|
||||
exec "${DOLC}" /users/info
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user