---
name: s32-get-requests-cartes-uniquement
scenario: S32
description: Utiliser get_requests pour les demandes de carte — et comprendre pourquoi les remboursements de frais n'y apparaissent pas
tags: [requests, cards, approval-workflow, expense-claims, scope]
when_to_use: Quand on veut voir les demandes en attente d'approbation — en sachant que seules les demandes de carte sont ici
risk: P1 — Un utilisateur cherchant les demandes de remboursement de frais ne les trouvera pas dans get_requests
---

# Instructions — Demandes de carte via get_requests

## ⚠️ Périmètre strict

`get_requests` retourne **uniquement** les demandes de carte :
- `single_purchase` — achat unique
- `subscription` — abonnement
- `multi_use_card` — carte multi-usage
- `multi_use_card_top_up` — rechargement carte
- `multi_use_card_end_date_change` — prolongation carte
- `card_load` — chargement carte physique

**NON inclus** (périmètre différent dans Spendesk) :
- Remboursements de frais (expense claims) → visibles dans `get_payables` avec `payableType=expenseClaim`
- Demandes de factures fournisseurs → visibles dans `get_payables` avec `payableType=invoicePurchase` + `bookkeepingStatus=toPrepare`

## Étape 1 — Identifier la compagnie

Appelle `list_companies`.

## Étape 2 — Récupérer les demandes

### Demandes en attente d'approbation
```json
{ "companyId": "...", "state": "pending" }
```

### Toutes les demandes (tous états)
```json
{ "companyId": "..." }
```

États disponibles : `pending` | `approved` | `refused` | `expired` | `cancelled` | `incomplete` | `draft` | `rejected_by_controller` | `supplier_disputed`

## Étape 3 — Interpréter les montants

Chaque request retourne :
- `requestedAmount` : montant en devise d'origine de la demande
- `amountInFunctionalCurrency` : montant en devise fonctionnelle de la compagnie → utiliser pour les comparaisons

⚠️ `isForeignCurrency=false` signifie **soit** que la devise est identique à la devise fonctionnelle **soit** que la demande n'a pas de montant (ex: prolongation de date). Toujours vérifier `requestedAmount != null` avant d'interpréter.

## Étape 4 — Filtrer par devise

Si l'utilisateur veut "les demandes en EUR inférieures à 100 EUR" :
- Passer `currency="EUR"` + `maxAmount=100`
- **Toujours informer** : les demandes soumises dans d'autres devises sont **exclues silencieusement** du résultat

## Étape 5 — Présenter les résultats

Pour chaque demande :
- Type de demande + état
- Montant demandé (avec devise)
- Demandeur (requesterId → résoudre via `get_users` si besoin)
- Description (free-text du demandeur, peut être null)
- Cost center (costCentreId, peut être null)

## Orientation si la question porte sur les remboursements

Si l'utilisateur cherche les remboursements de frais en attente :
→ "Les demandes de remboursement sont accessibles via les payables de type `expenseClaim` avec `bookkeepingStatus=toPrepare`."

Appelle `get_payables` avec :
```json
{
  "operator": "and",
  "subfilters": [
    { "field": "payableType", "operator": "=", "value": ["expenseClaim"] },
    { "field": "bookkeepingStatus", "operator": "=", "value": ["toPrepare"] }
  ]
}
```

## Exemple de prompt

- "Quelles demandes de carte sont en attente d'approbation ?" → state=pending
- "Montre les demandes d'abonnement approuvées ce mois-ci" → type=subscription, state=approved
- "Quelles demandes de remboursement sont en attente ?" → orienter vers get_payables
