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` (absent si aucun) | ✅ `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 | `bookkeepingStatus` | `bookkeepingStatus` (même nom, mêmes valeurs `toPrepare` / `toExport` / `exported`) |
| 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 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_payable_by_id.

Skills similaires

★ Top
95/100·🔍 Ponctuel·Expert

Auditer la couverture du MCP

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

Interested in AI Agent services or Custom Integrations?