Checkpoint: Améliorations Factures BAP : suppression colonne Abonnement, mode d'export configurable (navigateur/dossier), génération PDF annoté avec zone blanche (CAPEX/OPEX | BAP | Destinataire + signature du service) lors du clic BAP, historique BAP dans le menu Traçabilité, table bapHistory en DB.

This commit is contained in:
Manus
2026-04-12 05:57:02 -04:00
parent edf7cc704d
commit 5f7c8c7c7f
12 changed files with 2261 additions and 39 deletions

View File

@@ -132,8 +132,15 @@ export default function InvoicesBAP() {
});
const validateBAPMutation = trpc.invoices.validateBAP.useMutation({
onSuccess: () => {
toast.success("Facture validée BAP avec succès !");
onSuccess: (data) => {
if (data.exportMode === 'browser' && data.pdfUrl) {
toast.success("Facture validée BAP ! Ouverture du PDF annoté...", { duration: 3000 });
window.open(data.pdfUrl, '_blank');
} else if (data.exportMode === 'folder' && data.exportPath) {
toast.success(`Facture validée BAP ! PDF enregistré dans : ${data.exportPath}`, { duration: 6000 });
} else {
toast.success("Facture validée BAP avec succès !");
}
utils.invoices.list.invalidate();
},
onError: (error) => {
@@ -475,7 +482,6 @@ export default function InvoicesBAP() {
<TableHead>Service</TableHead>
<TableHead>Type achat</TableHead>
<TableHead>Ventilation</TableHead>
<TableHead>Abonnement</TableHead>
<TableHead>Score</TableHead>
<TableHead>Statut</TableHead>
<TableHead className="w-32">Actions</TableHead>
@@ -596,21 +602,6 @@ export default function InvoicesBAP() {
<option value="__ADD_NEW__" className="font-semibold text-blue-600"> Ajouter...</option>
</select>
</TableCell>
<TableCell className="text-sm">
<select
value={invoice.isSubscription ? "OUI" : "NON"}
onChange={(e) => {
updateFieldMutation.mutate({
id: invoice.id,
data: { isSubscription: e.target.value === "OUI" ? 1 : 0 },
});
}}
className="w-full px-2 py-1 border rounded text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
>
<option value="NON">NON</option>
<option value="OUI">OUI</option>
</select>
</TableCell>
<TableCell>
<div className="flex items-center gap-2">
{getQualityBadge(invoice.qualityScore)}