# Attestation impôts — prototype Documents automatiques

## Endpoints

### Lister les signataires actifs

```http
GET /api/impressions/signataires
```

L'utilisateur doit posséder l'habilitation `impressions:read`.

### Générer l'attestation

```http
POST /api/impressions/attestation-impots
Content-Type: application/json

{
  "cos": 1234,
  "signataireId": 7
}
```

La réponse `200` contient directement le fichier `.docx` à télécharger.

Le backend vérifie :

- l'habilitation `impressions:read` ;
- le périmètre salarié de l'utilisateur ;
- le contrat le plus récent du salarié, qu'il soit actif ou terminé ;
- l'existence d'un signataire actif ;
- la présence des données indispensables au document.

## Exemple frontend

```ts
const response = await fetch(
  `${process.env.NEXT_PUBLIC_API_URL}/api/impressions/attestation-impots`,
  {
    method: "POST",
    credentials: "include",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${localStorage.getItem("token")}`,
    },
    body: JSON.stringify({ cos, signataireId }),
  },
);

if (!response.ok) {
  const error = await response.json();
  throw new Error(error.message ?? "La génération a échoué");
}

const blob = await response.blob();
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = `attestation-impots-${cos}.docx`;
link.click();
URL.revokeObjectURL(url);
```

## Fichiers principaux

- `public/templates/documents/ATTESTATION_Impots_RH_Connect.docx`
- `src/services/impressions.service.ts`
- `src/app/api/impressions/signataires/route.ts`
- `src/app/api/impressions/attestation-impots/route.ts`
- `src/validators/impressions.ts`

Après modification du schéma Prisma, régénérer le client avant le build :

```bash
npx prisma generate
```
