Demandes & commandes¶
À quoi ça sert¶
Cette page couvre le cycle complet d'un achat dans Jigi : la demande d'achat soumise par un collaborateur, son approbation, sa transformation en bon de commande, la réception des marchandises et le règlement de la facture fournisseur.
Prérequis¶
Prérequis
- Modules sous licence :
SUPPLIES - Permissions :
supplies.request,supplies.manage - Rôles :
EMPLOYEE,MANAGER,ACCOUNTANT,ORG_ADMIN
Comment ça marche¶
1. Créer une demande d'achat¶
- Ouvrez Achats → Demandes & commandes (
/dashboard/supplies/requests). - Cliquez sur Nouvelle demande. Un panneau latéral s'ouvre avec le formulaire :
- Titre * — objet de l'achat.
- Catégorie * —
IT-EQUIP,FURNITURE,SERVICES,OFFICE-SUPPLIES,TRAVEL,TRAININGouOTHER. - Montant estimé * et Devise (EUR par défaut côté formulaire, XOF par défaut côté serveur).
- Date limite (optionnelle) — sert aussi à déterminer l'exercice budgétaire.
- Description et Justification (facultatives).
- Deux boutons sont proposés :
- Enregistrer — crée la demande au statut Brouillon, modifiable plus tard.
- Soumettre — crée la demande et la soumet immédiatement au circuit d'approbation.
- Une demande au statut Brouillon peut être soumise plus tard depuis la liste (« Mes demandes ») via le lien Soumettre.
2. Ce qui se passe à la soumission¶
- Jigi vérifie le budget du département/catégorie pour l'exercice de la date de besoin (ou l'année en cours si aucune date n'est renseignée). Si la dépense ferait dépasser 100 % du budget alloué, la soumission est bloquée avec un message explicite.
- Si une règle d'auto-approbation active correspond (montant sous le seuil configuré pour la catégorie, ou seuil général), la demande passe directement au statut Approuvée, sans circuit d'approbation.
- Sinon, la demande est envoyée dans le moteur de workflow générique de Jigi et passe au statut En attente d'approbation. Le demandeur reçoit une notification à chaque étape (soumission, approbation, rejet).
3. Approuver ou rejeter une demande¶
- Les personnes désignées comme approbatrices dans le circuit voient les demandes en attente sous l'onglet À approuver de la même page, avec le compteur de demandes en attente.
- Chaque ligne propose les boutons Approuver et Rejeter (un commentaire optionnel peut être associé à la décision côté API).
- Lorsqu'une demande est approuvée (dernière étape du circuit, ou auto-approbation), Jigi réserve le montant estimé sur le budget du département/catégorie (
committedAmount) et notifie le demandeur. - Une demande rejetée repasse au statut Rejetée et ne peut plus être modifiée ; le demandeur est notifié avec le motif.
4. Annuler une demande¶
- Le demandeur peut annuler sa propre demande tant qu'elle est Brouillon, En attente d'approbation ou Approuvée (bouton Annuler dans la liste « Mes demandes »).
- Si la demande était déjà Approuvée, Jigi libère le montant réservé sur le budget.
- Une demande déjà Commandée, déjà Annulée ou Rejetée ne peut plus être annulée.
5. Créer le bon de commande¶
- Ouvrez Achats → Commandes (
/dashboard/supplies/orders). - Cliquez sur Nouvelle commande : choisissez le fournisseur (liste des fournisseurs actifs), une date de livraison prévue, un montant de taxe, puis ajoutez une ou plusieurs lignes (désignation, quantité, prix unitaire) via Ajouter une ligne.
- La commande est créée au statut Brouillon. Utilisez ensuite les actions du détail de commande :
- Envoyer — passe la commande au statut Envoyée (au fournisseur).
- Accuser réception — le fournisseur a confirmé la commande → statut Accusée.
- PDF — génère et ouvre le bon de commande au format PDF.
- Annuler — possible tant que la commande n'est pas Reçue.
- Le fichier de paiement fournisseurs (CSV) peut être téléchargé depuis le bouton Fichier de paiement de la liste des commandes.
6. Réceptionner les marchandises¶
- Sur la page de détail d'une commande, la section Lignes de commande affiche, pour chaque ligne, la quantité commandée et déjà reçue.
- Saisissez la quantité reçue pour chaque ligne concernée puis cliquez sur Enregistrer la réception. La réception peut se faire en plusieurs fois (livraisons partielles) tant que la commande est Envoyée, Accusée ou Reçue.
- Une fois toutes les lignes réceptionnées, la commande passe au statut Reçue.
7. Enregistrer et rapprocher la facture fournisseur¶
- Toujours sur le détail de la commande, section Factures : saisissez le numéro de facture, le montant HT, la taxe et éventuellement le taux de TVA, puis Enregistrer la facture.
- Jigi calcule automatiquement un rapprochement à trois voies (commande / réception / facture) et affiche un statut de correspondance :
- OK — les montants correspondent.
- Tolérance — écart mineur accepté.
- Écart ou Litigieuse — écart significatif ou facture mise en litige.
- Actions disponibles selon le statut de la facture : Approuver, Régler (marque la facture payée) ou Mettre en litige (avec motif).
- La commande passe au statut Facturée puis Payée au fil de ces étapes.
Qui peut faire quoi¶
| Permission requise | Rôles concernés |
|---|---|
supplies.request |
EMPLOYEE, MANAGER, ACCOUNTANT, ORG_ADMIN |
supplies.manage |
EMPLOYEE, MANAGER, ACCOUNTANT, ORG_ADMIN |
| Rôle / permission | Voir ses demandes | Créer / soumettre / annuler une demande | Approuver / rejeter | Voir les commandes | Créer, envoyer, réceptionner, facturer, payer une commande |
|---|---|---|---|---|---|
supplies.request (tout collaborateur habilité) |
✅ | ✅ | ✅ (si désigné approbateur dans le circuit) | ✅ (lecture) | ❌ |
supplies.manage (équipe Achats / Comptabilité) |
✅ | ✅ | ✅ | ✅ | ✅ |
Approbation = étape de workflow, pas une permission dédiée
Il n'existe pas de permission supplies.approve séparée : l'approbation d'une demande est gérée par le moteur de workflow générique — seul l'utilisateur désigné comme approbateur de l'étape active peut agir, quel que soit son rôle, dès lors qu'il détient supplies.request.
Détails techniques
Entités (schéma supplies) : PurchaseRequest, AutoApprovalRule, PurchaseOrder, PurchaseOrderLine, PurchaseReceipt, PurchaseReceiptLine, VendorInvoice, DepartmentBudget.
Statuts :
PurchaseRequestStatus:DRAFT,PENDING_APPROVAL,APPROVED,REJECTED,CANCELLED,ORDERED.PurchaseOrderStatus:DRAFT,SENT,ACKNOWLEDGED,RECEIVED,INVOICED,PAID,CANCELLED.MatchStatus(rapprochement facture) :PENDING,OK,TOLERANCE,MISMATCH,DISPUTED.InvoiceStatus: cycle de vie de la facture jusqu'au paiement.
Endpoints principaux (/supplies/...) :
GET|POST /supplies/purchase-requests,/{id}/submit,/{id}/approve,/{id}/reject,/{id}/cancel,/pending-approvals.GET|POST /supplies/purchase-orders,/{id}/send,/{id}/acknowledge,/{id}/receive,/{id}/cancel,/{id}/pdf,/payment-file.POST /supplies/purchase-orders/{id}/invoices,GET .../invoices/{invoiceId}/match,POST .../dispute,.../approve,.../pay.
Numérotation : PurchaseRequestService.nextRequestNumber génère DA-{année}-{0001, 0002, …} par tenant.
Auto-approbation : AutoApprovalRule (par catégorie ou générale) — si le montant estimé est inférieur ou égal au seuil, PurchaseRequestService.isAutoApprovable court-circuite le workflow.
Garde budgétaire : BudgetService.checkBudget bloque la soumission si la dépense ferait dépasser 100 % du budget alloué (DepartmentBudget, par exercice/catégorie/département). L'approbation appelle commitBudget, l'annulation uncommitBudget.
Workflow : intégration via WorkflowEngine — PurchaseRequestService implémente WorkflowCompletionCallback (onApproved / onRejected) pour finaliser la demande à l'issue du circuit défini pour l'entité PURCHASE_REQUEST.
Notifications : PURCHASE_REQUEST_SUBMITTED, PURCHASE_REQUEST_APPROVED, PURCHASE_REQUEST_REJECTED.
Audit : chaque transition publie un évènement via SupplyAuditHelper sur le topic audit.supplies (supply_request.created/submitted/approved/rejected/cancelled).
Cas d'erreur et FAQ¶
Ma demande est bloquée à la soumission avec un message de budget dépassé, que faire ? Le budget alloué à votre département/catégorie pour l'exercice concerné est atteint ou serait dépassé. Contactez l'équipe Achats pour ajuster le budget (page Fournisseurs & prestataires → onglet Budgets) ou révisez le montant estimé de votre demande.
Pourquoi ma demande a-t-elle été approuvée instantanément sans passer par mon manager ? Une règle d'auto-approbation est probablement configurée pour votre catégorie ou votre plage de montant — les petites dépenses peuvent être approuvées automatiquement pour fluidifier le processus.
Puis-je modifier une demande déjà soumise ? Non. Une demande En attente d'approbation ne peut plus être éditée ; seule l'annulation est possible. Annulez-la et recréez-en une si les informations doivent changer.
Le rapprochement de ma facture indique « Écart », que dois-je faire ? Cela signifie que le montant facturé diffère significativement du montant commandé/reçu au-delà de la tolérance configurée. Utilisez le bouton Mettre en litige en indiquant le motif, puis contactez le fournisseur pour une facture corrective.
Une commande peut-elle être annulée après réception partielle ? Non, l'annulation n'est possible que tant que la commande est au statut Brouillon, Envoyée ou Accusée. Une fois entièrement Reçue, seule la voie de la facture (litige) reste disponible.