Analyser les dépenses par projet ou région
Ventile les dépenses selon un champ analytique personnalisé (projet, région…), mois par mois, sans mélanger les champs entre eux.
Finance Analyst📆 MensuelIntermédiaireLecture seule
Demandez-le comme ça
Quelle est la dépense par région sur les 12 derniers mois, mois par mois ?
Quand l'utiliser
Quand vous voulez la dépense par projet, par région ou par tout autre axe analytique propre à l'entreprise.
Ce que ça produit
Total société, part affectée et part non affectée sur le champ, puis tableau par valeur avec montant, part, reste à payer et mois le plus élevé.
Comment ça se déroule
- 1Liste vos axes analytiques et vous laisse choisir
- 2Récupère les valeurs de l'axe choisi
- 3Ventile les dépenses par valeur, mois par mois
- 4Écarte les valeurs des autres axes pour ne rien mélanger
- 5Calcule la part de dépenses non affectée à cet axe
Ce qui vous protège
- Ce skill ne fait que lire : il ne modifie rien dans Spendesk
- Il agit avec vos permissions et votre rôle, jamais au-delà
- L'assistant ne peut ni approuver ni payer
▸Détail technique85/100 · 3 outils
Analyse des dépensesRapportsget_analytical_fieldsget_analytical_field_valuesspendesk_analyze_spend
# Analyse des dépenses par champ analytique
## Le piège central : `analyticalCode` mélange tous les champs
`spendesk_analyze_spend` avec `groupBy: ["analyticalCode"]` renvoie **les valeurs de tous les champs analytiques dans une seule liste** — valeurs de vos champs personnalisés, mais aussi catégories de dépenses. Une ligne ne dit pas à quel champ sa valeur appartient.
Vérifié en direct : sur 12 mois, la liste mêlait « France » (champ Region), « IT & Technical fees » (catégorie de dépense) et « GM Budget » (champ Supplier Budget). La somme des lignes dépassait largement le total réel (EUR 113 720,26), parce qu'un même payable porte une valeur par champ et est donc compté une fois par champ. Les pourcentages `share` sont calculés sur cette somme gonflée.
**Règle : ne jamais additionner ni comparer des lignes `analyticalCode` sans les avoir d'abord restreintes à un seul champ.**
## Étape 1 — Choisir le champ
```json
{ "tool": "get_analytical_fields", "params": {} }
```
Renvoie les champs avec `id`, `name`, `type`. Les champs archivés sont inclus : ne garder que ceux dont `archivedAt` est `null`. Le champ des catégories de dépenses n'est pas dans cette liste (il se lit avec `get_expense_categories`).
Si l'utilisateur n'a pas nommé le champ, lister les champs actifs et demander lequel analyser.
## Étape 2 — Récupérer les valeurs de ce champ
```json
{ "tool": "get_analytical_field_values", "params": { "fieldId": "<id du champ>" } }
```
Garder la liste des `id` de valeurs : c'est elle qui sert à isoler le champ. Les valeurs archivées sont incluses (`archivedAt` non nul) — les conserver pour l'historique, mais les signaler.
## Étape 3 — Analyser, puis ne garder que les lignes du champ
```json
{
"tool": "spendesk_analyze_spend",
"params": {
"fromDate": "YYYY-MM-DD",
"toDate": "YYYY-MM-DD",
"groupBy": ["analyticalCode", "month"],
"limit": 50
}
}
```
- Mettre `analyticalCode` **en premier** dans `groupBy` : c'est la seule position où les lignes ne portent que les montants de la valeur concernée.
- Monter `limit` à 50 : avec la valeur par défaut (10), les valeurs du champ voulu peuvent se retrouver noyées dans la ligne « Others ».
- Dans la réponse, **ne garder que les lignes dont `id` figure dans la liste de l'étape 2**. Ignorer les autres.
- Période maximale : 366 jours. Au-delà, découper et ne combiner qu'une fois tous les appels réussis.
## Étape 4 — Calculer la part non affectée
Le total du champ (somme des lignes gardées) est inférieur ou égal à `summary.totalAmount`. L'écart correspond aux dépenses **sans valeur sur ce champ** : le présenter explicitement comme « non affecté », c'est souvent l'information la plus utile pour le FP&A.
Recalculer les pourcentages soi-même, sur le total du champ ou sur `summary.totalAmount` — ne pas reprendre `share`.
## Variante — filtrer sur une valeur précise
`filters.analyticalCodes: ["<id de valeur>"]` restreint aux payables qui portent cette valeur sur au moins une ligne. Attention : `summary.totalAmount` et toute autre dimension comptent alors ces payables **en entier**, y compris leurs lignes sur d'autres valeurs. Seules les lignes `analyticalCode` (placé en premier) sont exactes.
## Format de sortie recommandé
```
Dépenses par <nom du champ> — du <date> au <date>
Total société : X EUR — dont affecté sur ce champ : Y EUR (Z %) — non affecté : W EUR
| <Champ> | Montant | Part | Dont reste à payer | Mois le plus élevé |
```
Les montants sont en devise fonctionnelle, TTC, sur la date du document (pas la date comptable). Le MCP ne lit pas les budgets : pour un écart au budget par projet, l'utilisateur fournit les chiffres.
## Exemples de prompts utilisateur
- "Quelle est la dépense par région sur les 12 derniers mois, mois par mois ?"
- "Combien avons-nous dépensé sur le projet Tech ce trimestre, et quelle part n'est rattachée à aucun projet ?"
- "Compare les dépenses par projet entre le T2 et le T3"
Comment installer ce skill
/
- 1Télécharger le fichier
s72-analyse-par-champ-analytique.mdvia le bouton ci-dessus. - 2Placer le fichier dans le répertoire
.claude/de votre projet (ou~/.claude/pour une installation globale).cp s72-analyse-par-champ-analytique.md .claude/s72-analyse-par-champ-analytique.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_analytical_fields, get_analytical_field_values, spendesk_analyze_spend.Skills similaires
★ Top