Détail complet d'une facture (get_payable_by_id)

Obtient le détail complet d'une facture spécifique par son ID via get_payable_by_id. Inclut les codes comptables, le fournisseur résolu et les champs analytiques.

↓ Télécharger le skill (.md)
87/100·🔍 Ponctuel·DébutantControllerAP Manager
RéconciliationExport ERPget_payable_by_id

🎯 But du skill

Obtient le détail complet d'une facture spécifique par son ID via get_payable_by_id. Inclut les codes comptables, le fournisseur résolu et les champs analytiques.

📊 Ce que ça produit

Fiche complète de la facture : montant, fournisseur, codes comptables, analytiques et historique des actions.

Bénéfice

Avant

Navigation dans plusieurs écrans Spendesk pour reconstituer le détail complet d'une facture.

Après

Fiche complète d'une facture en un seul appel, avec toutes les métadonnées.



# Détail complet d'une facture (get_payable_by_id)

## Flux : get_payables → ID → get_payable_by_id

Ne pas chercher par numéro de facture directement — résoudre d'abord l'ID via `get_payables` :

### Étape 1 — Trouver l'ID de la facture

```json
{
  "companyId": "<companyId>",
  "filters": {
    "field": "documentaryEvidenceNumber",
    "operator": "=",
    "value": "INV-2026-001"
  },
  "pageSize": 5
}
```

Ou via description :
```json
{ "field": "description", "operator": "contains", "value": "CBS Consultant" }
```

→ Extraire l'`id` de la payable retournée (ex : `5c902f76-c87e-59a6-8bb8-4e70fbd1dd39`)

### Étape 2 — Détail enrichi

```json
{
  "id": "5c902f76-c87e-59a6-8bb8-4e70fbd1dd39"
}
```

## Ce que get_payable_by_id ajoute vs get_payables

| Information | get_payables | get_payable_by_id |
|-------------|--------------|-------------------|
| Nom du fournisseur | ❌ (seulement supplierId) | ✅ `counterparty.name` |
| Code compte comptable | ❌ (seulement expenseAccountId) | ✅ `lineItems[].expenseAccount.code + description` |
| Code compte TVA | ❌ (seulement taxAccountId) | ✅ `lineItems[].vatAccount.code + description` |
| Nom des analytiques | ❌ (seulement fieldEntityValueId) | ✅ `analyticalProperties[].valueName` |
| Nom du cost center | ❌ (dans analyticalFieldAssociations) | ✅ `costCenterName` (à la racine) |
| Nom de l'équipe | ❌ | ✅ `teamName` |
| Amortissement | ❌ | ✅ `amortisation` (null si absent) |
| Code AP fournisseur | ❌ | ✅ `counterparty.accountPayable.generalAccountCode` |

Exemple de réponse enrichie :
```json
{
  "counterparty": {
    "id": "76r950em3qde5o",
    "type": "supplier",
    "name": "Think Software",                          // ← nom résolu
    "accountPayable": {
      "generalAccountCode": "Think Software",          // ← code AP
      "auxiliaryAccountCode": ""
    }
  },
  "lineItems": [{
    "expenseAccount": {
      "code": "622800",
      "description": "622800 - Autres honoraires et intermédiaires"  // ← compte résolu
    },
    "vatAccount": { "code": "445660", "rate": 20 },   // ← TVA résolue
    "analyticalProperties": [{
      "fieldName": "Analytic codes",
      "valueName": "Banking investments"               // ← analytique résolu
    }],
    "costCenterName": "X-old Banking"                  // ← cost center résolu
  }],
  "teamName": "Banking"
}
```

## ⚠️ Nommage différent entre get_payables et get_payable_by_id

Les deux endpoints utilisent des noms de champs différents pour les mêmes données :

| Concept | get_payables | get_payable_by_id |
|---------|--------------|-------------------|
| Statut comptable | `state` | `bookkeepingStatus` |
| Lignes de détail | `itemLines[]` | `lineItems[]` |
| Date d'entrée Spendesk | `firstCreatedAt` | `createdAt` |
| Date d'export ERP | `firstExportedAt` | `exportedAt` |
| ID utilisateur | `memberId` | `userId` |
| Date d'échéance | `dueDate` | `invoiceDueDate` |
| Date du document | `creationDate` (datetime) | `payableDate` (date) |

→ Si votre code traite les deux types de réponse, adapter les noms de champs selon l'endpoint appelé.

## Ce qui est ABSENT de get_payable_by_id

`get_payable_by_id` ne retourne pas :
- `spendingAmount` / `spendingCurrency` / `spendingExchangeRate` — pour la devise de dépense originale, utiliser `get_payables`
- `documentaryEvidence` complet (validité, compliances) — `invoiceNumber` est à la racine mais la structure de validation n'y est pas
- `kind` field (`expense` vs `reversal`)

## Quand utiliser lequel ?

| Besoin | Tool recommandé |
|--------|-----------------|
| Lister + filtrer les factures | `get_payables` |
| Noms résolus (fournisseur, comptes, analytiques) | `get_payable_by_id` |
| Devise de dépense originale (spendingAmount) | `get_payables` |
| Amortissement / codes GL complets | `get_payable_by_id` |

## Exemples de prompts

- "Montre-moi le détail complet de la facture CBS Consultant avec les codes comptables"
- "Quel est le code de charge de la facture Docusign ?"
- "Affiche les analytiques et le cost center de la facture INV-2026-001"

Comment installer ce skill

/
  1. 1
    Télécharger le fichier s20-detail-complet-facture.md via le bouton ci-dessus.
  2. 2
    Placer le fichier dans le répertoire .claude/ de votre projet (ou ~/.claude/ pour une installation globale).
    cp s20-detail-complet-facture.md .claude/s20-detail-complet-facture.md
  3. 3
    Utiliser dans Claude Codele 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_payable_by_id.

Skills similaires

★ Top
95/100·🔍 Ponctuel·Expert

Audit de couverture MCP — Gap analysis automatisée

Sonde tous les outils MCP disponibles, re-évalue la couverture des 50 cas d'usages persona, détecte les nouveaux champs ou outils, et régénère le rapport d'analyse des gaps.

CFOControllerAP Manager
90/100·📅 Hebdo·Débutant

Demandes de carte via get_requests

Explique comment utiliser get_requests pour les demandes de carte et pourquoi les remboursements de frais n'y apparaissent pas. Évite une source de confusion fréquente entre deux workflows distincts.

ControllerFinance Analyst
90/100·🔍 Ponctuel·Intermédiaire

Cost centers actifs vs archivés

Distingue les centres de coût actifs des archivés via le bon usage de get_cost_centers. Évite le piège de la convention de nommage isArchived vs isActive qui est contre-intuitive.

ControllerFinance Analyst