---
name: s33-get-requests-currency-filter
scenario: S33
description: Utiliser le filtre currency de get_requests — et avertir explicitement que les demandes dans d'autres devises sont exclues silencieusement
tags: [requests, currency, filter, multi-currency, gotcha]
when_to_use: Quand on veut filtrer les demandes de carte par montant ou devise, en sachant que le filtre currency exclut les autres devises sans avertissement
risk: P1 — currency=EUR exclut silencieusement les demandes soumises en USD, GBP, etc. La réponse vide ne signale pas que des demandes existent dans d'autres devises.
---

# Instructions — Demandes de carte avec filtre devise

## ⚠️ Comportement du filtre currency

Quand `currency` est fourni dans `get_requests` :
- **Seules** les demandes soumises dans cette devise sont retournées
- Les demandes dans d'autres devises sont **exclues entièrement** — pas de conversion FX
- La réponse vide (`data: []`) ne distingue pas "aucune demande" de "demandes existantes dans d'autres devises"

Exemple confirmé en live :
- Toutes les demandes du compte sont en EUR
- `currency=GBP` → **0 résultats** (aucun avertissement)
- `currency=USD` → **0 résultats** (aucun avertissement)
- `currency=EUR` → 3 résultats
- Sans filtre currency → 3 résultats (toutes devises, FX vers fonctionnelle)

## Quand utiliser le filtre currency

**Cas valide** : l'utilisateur veut explicitement des demandes soumises en une devise précise.
```json
{ "companyId": "...", "currency": "GBP", "minAmount": 100 }
```
→ Toujours afficher : *"Résultats limités aux demandes soumises en GBP. Les demandes en EUR, USD ou autres devises ne sont pas incluses."*

**Cas à éviter** : l'utilisateur veut "toutes les demandes > 100 EUR"
→ Ne pas passer `currency=EUR` avec `minAmount=100` si des demandes en GBP existent — elles seraient exclues
→ Sans `currency` : `minAmount/maxAmount` filtrent en **devise fonctionnelle** via FX stocké (toutes devises incluses)

## Pattern recommandé : toujours informer

```
Résultats : N demandes trouvées en [devise].
⚠️ Les demandes soumises dans d'autres devises ne sont pas incluses dans ce résultat.
Pour une vue de toutes les devises, relancer sans filtre currency.
```

## Étape 1 — Appel sans filtre currency (vue complète)

```json
{
  "companyId": "...",
  "state": "pending"
}
```
→ Retourne toutes les demandes, `minAmount/maxAmount` en devise fonctionnelle.
→ `amountInFunctionalCurrency` = valeur comparable cross-devises.

## Étape 2 — Appel avec filtre currency (vue devise spécifique)

```json
{
  "companyId": "...",
  "currency": "GBP",
  "minAmount": 500
}
```
→ Retourne les demandes soumises en GBP avec `requestedAmount.amount >= 500 GBP`.
→ **Toujours avertir** l'utilisateur que les autres devises sont exclues.

## Étape 3 — Interpréter les résultats

Pour chaque demande :
- `requestedAmount` : montant en devise de soumission
- `amountInFunctionalCurrency` : équivalent en devise fonctionnelle (EUR pour ce compte)
- `isForeignCurrency=true` → soumis dans une devise différente de la fonctionnelle

## Exemple de prompt

- "Montre les demandes de carte en attente > 1000 EUR" → sans currency, minAmount=1000
- "Quelles demandes ont été soumises en USD ?" → currency=USD + informer sur l'exclusion
- "Toutes les demandes > 500, toutes devises confondues" → sans currency, minAmount=500 en fonctionnelle
