Liste les POs ouverts et identifie ceux dont la facturation approche ou dépasse le budget via get_purchase_orders
Analyse les purchase orders ouverts et signale ceux dont la facturation approche ou dépasse le budget approuvé. Essentiel pour le contrôle des engagements budgétaires.
83/100·📅 Hebdo·IntermédiaireProcurementCFO
Budget & POsget_purchase_orders
🎯 But du skill
Analyse les purchase orders ouverts et signale ceux dont la facturation approche ou dépasse le budget approuvé. Essentiel pour le contrôle des engagements budgétaires.
📊 Ce que ça produit
POs ouverts avec budget, montant facturé, pourcentage consommé et alerte de dépassement.
⚡ Bénéfice
Avant
Suivi manuel des POs dans Excel — dépassements budgétaires détectés trop tard.
Après
Monitoring des POs en temps réel avec alerte automatique de dépassement budgétaire.
# Instructions
## Use case
Récupérer les POs actifs et comparer le budget approuvé (`amount`) avec le montant déjà facturé (`billedAmount`) pour identifier les dépassements ou les POs sans facturation.
## Appel de base
```json
{
"companyId": "<COMPANY_ID>",
"status": ["open"],
"pageSize": 100
}
```
Note : `status` est un **tableau** de strings (contrairement à `list_cards.status` qui est une string simple).
## Champs financiers d'un PO
```json
{
"amount": { "amount": 2126789, "currency": "USD", "precision": 2 }, // budget approuvé : 21 267.89 USD
"billedAmount": { "amount": 1063384, "currency": "USD", "precision": 2 }, // total facturé : 10 633.84 USD
"deliveredAmount": { "amount": 0, "currency": "USD", "precision": 2 } // montant livré confirmé
}
```
- `amount` = plafond budgétaire approuvé
- `billedAmount` = somme des factures rattachées (toutes, y compris les avoirs)
- `deliveredAmount` = montant dont la réception a été confirmée (souvent 0 si le suivi livraison n'est pas utilisé)
- `netAmount` = `billedAmount` - avoirs (documenté dans la description du tool mais **absent de la réponse** — calculer manuellement si nécessaire)
## Calculer la consommation du budget
```
consommation (%) = billedAmount / amount × 100
dépassement = billedAmount > amount
budget restant = amount - billedAmount
```
## billingStatus — état de la facturation
| Valeur | Signification |
|--------|---------------|
| `lateInvoice` | PO ouvert mais aucune facture reçue (ou PO en retard de facturation) |
| `partiallyBilled` | Facturation partielle — des factures existent mais < budget total |
| `fullyBilled` | Budget entièrement consommé par les factures |
## Piège 1 — Les POs "open" peuvent avoir une endDate dépassée
Un PO reste en `status: "open"` même après la date de fin. Le MCP ne ferme pas automatiquement les POs expirés. Sur le compte démo, tous les POs ouverts ont une `endDate` en 2022 ou 2023 — ils sont ouverts depuis 2-3 ans.
```
PO-14 (Abonnement Oracle) : endDate 2022-07-31 → encore open en 2026
PO-22 (Coworking Lyon) : endDate 2022-12-31 → encore open en 2026
PO-82 (Banking offsite) : endDate 2022-11-18 → encore open en 2026
```
→ Toujours filtrer sur `endDate` si on veut uniquement les POs en cours de validité :
```json
{
"status": ["open"],
"endDateFrom": "2026-07-01"
}
```
## Piège 2 — netAmount absent de la réponse
La description du tool mentionne `netAmount = billedAmount - creditNotes` mais ce champ **n'est pas retourné** dans la réponse API. Si des avoirs ont été émis, `billedAmount` les intègre déjà. Pas de champ séparé pour distinguer montant brut et montant net.
## Piège 3 — Multi-devises entre POs
Les POs peuvent être en EUR ou USD (ou toute autre devise). Ne pas sommer les `amount` cross-devises pour obtenir un budget total consolidé. Les champs `amount`, `billedAmount`, `deliveredAmount` sont toujours dans la devise du PO.
## billingOverDeliveryStatus
Champ présent sur chaque PO : `"none"` / `"overBilled"` / `"underBilled"` — permet de détecter d'un coup d'œil les POs dont la facturation dépasse la livraison. Sur le compte démo : tous à `"none"`.
## deliveryStatus
| Valeur | Signification |
|--------|---------------|
| `noDeliveryExpected` | La réception de livraison n'est pas suivie pour ce PO |
| `partiallyDelivered` | Livraison partiellement confirmée |
| `fullyDelivered` | Livraison entièrement confirmée |
## invoices[] — factures liées
Chaque PO expose un tableau `invoices[]` avec chaque facture associée :
```json
{
"invoiceRequestId": "...",
"invoiceNumber": "INV6342",
"amount": { "amount": 533578, "currency": "USD", "precision": 2 },
"status": "paid",
"payableId": "697e453d-..." // peut être null si le mapping requestId→payableId a échoué
}
```
Pour obtenir le détail comptable d'une facture : `get_payable_by_id(payableId)` — voir [[s20-detail-complet-facture]].
## Exemples de prompts utilisateurs
- "Montre-moi les POs dont la facturation dépasse le budget approuvé"
- "Quels sont les POs ouverts avec des factures en retard (billingStatus = lateInvoice) ?"
- "Quel est le taux de consommation des POs actifs de Q3 2026 ?"
Comment installer ce skill
/
- 1Télécharger le fichier
s27-purchase-orders-budget.mdvia le bouton ci-dessus. - 2Placer le fichier dans le répertoire
.claude/de votre projet (ou~/.claude/pour une installation globale).cp s27-purchase-orders-budget.md .claude/s27-purchase-orders-budget.md - 3Utiliser dans Claude Code — le skill est automatiquement découvert. Décrivez votre besoin en langage naturel et Claude appliquera les instructions du skill.
💡 Assurez-vous que le MCP Spendesk est configuré dans votre
.claude/settings.json avec les outils get_purchase_orders.Skills similaires
★ Top
★ Top