Improve sales data exports to include individual product details

Fixes the sales history and CSV exports to accurately represent each product within a sale.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: e80fed01-7137-4997-b9af-dad57132d430
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/e80fed01-7137-4997-b9af-dad57132d430/KcImq5w
This commit is contained in:
michaelschal committed 2025-07-19 10:39:08 +00:00
1 parent e3cd2f890c
commit 933ea44342
3 files changed
+645 -27

No files matched your search

+32 -10
View File
@@ -121,16 +121,38 @@ export default function SalesHistory({ canDelete = false }: SalesHistoryProps) {
doc.text(period, 20, 35);
}
const tableData = filteredSales.map(sale => [
new Date(sale.timestamp).toLocaleDateString('fr-FR'),
sale.vendeur,
`${sale.nom} ${sale.prenom}`,
sale.typeArticle,
sale.categorie,
sale.quantite.toString(),
sale.modePaiement,
sale.gencode
]);
// Créer une ligne pour chaque produit de chaque vente
const tableData: string[][] = [];
filteredSales.forEach(sale => {
if (sale.products && sale.products.length > 0) {
// Pour chaque produit, créer une ligne avec les infos de la vente
sale.products.forEach(product => {
tableData.push([
new Date(sale.timestamp).toLocaleDateString('fr-FR'),
sale.vendeur,
`${sale.nom} ${sale.prenom}`,
product.typeArticle,
product.categorie,
product.quantite.toString(),
sale.modePaiement,
product.gencode || ''
]);
});
} else {
// Fallback pour les ventes sans produits (anciennes données)
tableData.push([
new Date(sale.timestamp).toLocaleDateString('fr-FR'),
sale.vendeur,
`${sale.nom} ${sale.prenom}`,
'N/A',
'N/A',
'0',
sale.modePaiement,
''
]);
}
});
autoTable(doc, {
head: [['Date', 'Vendeur', 'Client', 'Article', 'Cat.', 'Qty', 'Paiement', 'Code']],