mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
feat(api): compléter la facture des fournisseurs en rapprochement automatique (#568)
Les livraisons d'un fournisseur en rapprochement automatique sont validées d'office à la saisie du BL ; PATCH /api/ext/v1/deliveries/:id les refusait donc (409) sauf à les dévalider. Pour ces fournisseurs, la référence, les montants HT/TTC et l'échéance s'écrivent désormais directement, la livraison restant validée. - automaticReconciliation exposé sur chaque livraison renvoyée par l'API - documentation mise à jour avec un exemple Claude-Session: https://claude.ai/code/session_01LEhR8Cok79VpsxixhrKChM Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
6f1a39e4b2
commit
bd3bb5e64a
2 files changed
+27
-3
No files matched your search
@@ -82,6 +82,7 @@ Paramètre mal formé : `400` avec la liste des paramètres fautifs.
|
||||
"supplierId": 4,
|
||||
"supplierName": "Lactalis",
|
||||
"supplierCode": "LAC01",
|
||||
"automaticReconciliation": false,
|
||||
"status": "delivered",
|
||||
"scheduledDate": "2026-10-08",
|
||||
"deliveredDate": "2026-10-08T07:42:00.000Z",
|
||||
@@ -131,6 +132,10 @@ Règles :
|
||||
- livraison non livrée : `409` ;
|
||||
- livraison déjà rapprochée : sa facture est figée (`409`). Envoyer
|
||||
`"reconciled": false` dans la même requête pour la dévalider et la modifier ;
|
||||
- exception, fournisseur en **rapprochement automatique**
|
||||
(`automaticReconciliation: true`) : la livraison est validée d'office dès la
|
||||
saisie du BL, sa facture (référence, montants, échéance) se complète ensuite
|
||||
directement, sans la dévalider ; elle reste validée ;
|
||||
- corps invalide : `400` avec le détail par champ.
|
||||
|
||||
## Exemple : rapprocher une facture reçue
|
||||
@@ -139,3 +144,17 @@ Règles :
|
||||
2. `GET /deliveries?supplierId=4&blNumber=BL-4567` → récupérer l'`id` de la livraison.
|
||||
3. `PATCH /deliveries/812` avec `invoiceReference` et `invoiceAmount`
|
||||
(ajouter `"reconciled": true` pour valider directement).
|
||||
|
||||
## Exemple : compléter la facture d'un fournisseur automatique
|
||||
|
||||
Les livraisons d'un fournisseur en rapprochement automatique sont déjà
|
||||
validées (`reconciled: true`) ; la facture s'y ajoute sans autre champ :
|
||||
|
||||
```bash
|
||||
curl -X PATCH https://logiflow.example/api/ext/v1/deliveries/815 \
|
||||
-H "X-API-Key: $LOGIFLOW_API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"invoiceReference":"FAC-2026-0057","invoiceAmount":"842,10","invoiceAmountTTC":"1010,52","dueDate":"2026-11-30"}'
|
||||
```
|
||||
|
||||
Pour les retrouver : `GET /deliveries?supplierId=<id auto>&hasInvoice=false`.
|
||||
@@ -2,7 +2,8 @@
|
||||
//
|
||||
// Permet à un outil tiers (comptabilité, n8n, script...) de lire les magasins,
|
||||
// les fournisseurs et les livraisons livrées (numéros de BL), puis d'écrire la
|
||||
// référence et le montant de la facture sur une livraison.
|
||||
// référence, les montants et l'échéance de la facture sur une livraison (y
|
||||
// compris déjà validée, pour les fournisseurs en rapprochement automatique).
|
||||
//
|
||||
// Authentification par clé d'API, indépendante des sessions du webUI :
|
||||
// - variable d'environnement EXTERNAL_API_KEYS (une ou plusieurs clés
|
||||
@@ -127,6 +128,7 @@ function toApiDelivery(d: any) {
|
||||
supplierId: d.supplierId,
|
||||
supplierName: d.supplier?.name ?? null,
|
||||
supplierCode: d.supplier?.codefou ?? null,
|
||||
automaticReconciliation: !!d.supplier?.automaticReconciliation,
|
||||
status: d.status,
|
||||
scheduledDate: toIsoDate(d.scheduledDate),
|
||||
deliveredDate: toIsoDateTime(d.deliveredDate),
|
||||
@@ -304,8 +306,11 @@ export function registerExternalApi(app: Express) {
|
||||
|
||||
const touchesInvoice = INVOICE_FIELDS.some((f) => body[f] !== undefined);
|
||||
// Une livraison rapprochée est figée, comme dans le webUI : il faut la
|
||||
// dévalider (reconciled: false) pour modifier sa facture.
|
||||
if (delivery.reconciled && touchesInvoice && body.reconciled !== false) {
|
||||
// dévalider (reconciled: false) pour modifier sa facture. Exception : les
|
||||
// fournisseurs en rapprochement automatique, validés d'office dès la
|
||||
// saisie du BL, dont la facture arrive après et se complète sans dévalider.
|
||||
const isAutomatic = !!delivery.supplier?.automaticReconciliation;
|
||||
if (delivery.reconciled && !isAutomatic && touchesInvoice && body.reconciled !== false) {
|
||||
return res.status(409).json({
|
||||
error: "Livraison déjà rapprochée : envoyer reconciled: false pour la dévalider avant de modifier la facture",
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user