fix: expliciter le résultat des imports manuels
This commit is contained in:
@@ -17,6 +17,7 @@ import {
|
||||
} from "lucide-react";
|
||||
import { toast } from "sonner";
|
||||
import { useLocation } from "wouter";
|
||||
import { parseImportResultSummary } from "@shared/importResultSummary";
|
||||
|
||||
interface UploadedFile {
|
||||
name: string;
|
||||
@@ -24,6 +25,9 @@ interface UploadedFile {
|
||||
status: "pending" | "processing" | "completed" | "error";
|
||||
progress?: string;
|
||||
invoicesDetected?: number;
|
||||
importedCount?: number;
|
||||
duplicateCount?: number;
|
||||
errorCount?: number;
|
||||
}
|
||||
|
||||
export default function Upload() {
|
||||
@@ -66,11 +70,15 @@ export default function Upload() {
|
||||
prev.map((f) => {
|
||||
if (f.sourceFileId !== sf.id) return f;
|
||||
if (f.status === sf.processingStatus) return f;
|
||||
const summary = parseImportResultSummary(sf.processingProgress);
|
||||
return {
|
||||
...f,
|
||||
status: (sf.processingStatus ?? "pending") as UploadedFile["status"],
|
||||
progress: sf.processingProgress ?? undefined,
|
||||
invoicesDetected: sf.totalInvoicesDetected ?? undefined,
|
||||
importedCount: summary?.importedCount,
|
||||
duplicateCount: summary?.duplicateCount,
|
||||
errorCount: summary?.errorCount,
|
||||
};
|
||||
})
|
||||
);
|
||||
@@ -165,6 +173,10 @@ export default function Upload() {
|
||||
const processingCount = uploadedFiles.filter(
|
||||
(f) => f.status === "processing" || f.status === "pending"
|
||||
).length;
|
||||
const importedInvoiceCount = uploadedFiles.reduce(
|
||||
(total, file) => total + (file.importedCount ?? 0),
|
||||
0,
|
||||
);
|
||||
|
||||
return (
|
||||
<DashboardLayout>
|
||||
@@ -282,8 +294,11 @@ export default function Upload() {
|
||||
<div>
|
||||
<CardTitle>Fichiers importés</CardTitle>
|
||||
<CardDescription>
|
||||
{completedCount > 0 && (
|
||||
<span className="text-green-600 font-medium">{completedCount} terminé(s) </span>
|
||||
{completedCount > 0 && importedInvoiceCount > 0 && (
|
||||
<span className="text-green-600 font-medium">{importedInvoiceCount} facture(s) créée(s) </span>
|
||||
)}
|
||||
{completedCount > 0 && importedInvoiceCount === 0 && (
|
||||
<span className="text-amber-700 font-medium">{completedCount} terminé(s), aucune facture créée </span>
|
||||
)}
|
||||
{processingCount > 0 && (
|
||||
<span className="text-blue-600 font-medium">{processingCount} en cours </span>
|
||||
@@ -294,7 +309,7 @@ export default function Upload() {
|
||||
</CardDescription>
|
||||
</div>
|
||||
<div className="flex gap-2">
|
||||
{completedCount > 0 && (
|
||||
{importedInvoiceCount > 0 && (
|
||||
<Button
|
||||
size="sm"
|
||||
onClick={() => setLocation("/invoices")}
|
||||
@@ -332,10 +347,16 @@ export default function Upload() {
|
||||
{f.status === "processing" && (
|
||||
<p className="text-xs text-muted-foreground">{f.progress || "Traitement en cours..."}</p>
|
||||
)}
|
||||
{f.status === "completed" && f.invoicesDetected !== undefined && (
|
||||
<p className="text-xs text-green-600">
|
||||
{f.invoicesDetected} facture(s) détectée(s)
|
||||
</p>
|
||||
{f.status === "completed" && f.importedCount !== undefined && (
|
||||
f.importedCount > 0 ? (
|
||||
<p className="text-xs text-green-600">
|
||||
{f.importedCount} facture(s) créée(s)
|
||||
</p>
|
||||
) : (
|
||||
<p className="text-xs text-amber-700">
|
||||
Aucune facture créée{f.duplicateCount ? ` : ${f.duplicateCount} doublon(s) ou facture(s) supprimée(s)` : ""}
|
||||
</p>
|
||||
)
|
||||
)}
|
||||
{f.status === "error" && (
|
||||
<p className="text-xs text-red-500">{f.progress || "Erreur de traitement"}</p>
|
||||
|
||||
Reference in New Issue
Block a user