From 01c005adea3e77eeb502ee0dd2327cb1cd7b10e5 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 6 Aug 2025 11:21:11 +0000 Subject: [PATCH] Display all product details for sales in history Modify the sales history component to correctly display the type, category, and quantity for each product within a sale, and update the storage to return sales with their associated products. Replit-Commit-Author: Agent Replit-Commit-Session-Id: a388004f-01c5-42b1-b1d1-f18daf8bdd0c Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/a388004f-01c5-42b1-b1d1-f18daf8bdd0c/pSitqax --- ...-4A6C-87FE-CBF9A60DA65C}_1754479206962.png | Bin 0 -> 32126 bytes client/src/components/SalesHistory.tsx | 46 +++++++++++++++--- server/storage.ts | 10 +++- 3 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 attached_assets/{524FAD15-7AEC-4A6C-87FE-CBF9A60DA65C}_1754479206962.png diff --git a/attached_assets/{524FAD15-7AEC-4A6C-87FE-CBF9A60DA65C}_1754479206962.png b/attached_assets/{524FAD15-7AEC-4A6C-87FE-CBF9A60DA65C}_1754479206962.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2fe22f134f487c0659abbad5aa47877c1d32ed GIT binary patch literal 32126 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 literal 0 HcmV?d00001 diff --git a/client/src/components/SalesHistory.tsx b/client/src/components/SalesHistory.tsx index 8baeac3..8939cff 100644 --- a/client/src/components/SalesHistory.tsx +++ b/client/src/components/SalesHistory.tsx @@ -554,15 +554,47 @@ export default function SalesHistory({ canDelete = false }: SalesHistoryProps) { {sale.nom} {sale.prenom} - {sale.typeArticle} + + {sale.products && sale.products.length > 0 ? ( +
+ {sale.products.map((product, index) => ( +
+ {product.typeArticle} +
+ ))} +
+ ) : ( + - + )} + - - {sale.categorie} - + {sale.products && sale.products.length > 0 ? ( +
+ {sale.products.map((product, index) => ( + + {product.categorie} + + ))} +
+ ) : ( + - + )} + + + {sale.products && sale.products.length > 0 ? ( +
+ {sale.products.map((product, index) => ( +
+ {product.quantite} +
+ ))} +
+ ) : ( + - + )} - {sale.quantite} {sale.modePaiement}
diff --git a/server/storage.ts b/server/storage.ts index 3da8d40..0d9cb85 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -520,7 +520,7 @@ class MemStorage implements IStorage { return newSale; } - async getSalesByStore(storeId: number, startDate?: string, endDate?: string): Promise { + async getSalesByStore(storeId: number, startDate?: string, endDate?: string): Promise<(Sale & { products: SaleProduct[] })[]> { let filteredSales = this.sales.filter(s => s.storeId === storeId); if (startDate) { @@ -534,7 +534,13 @@ class MemStorage implements IStorage { filteredSales = filteredSales.filter(s => s.timestamp && s.timestamp <= end); } - return filteredSales.sort((a, b) => (b.timestamp?.getTime() || 0) - (a.timestamp?.getTime() || 0)); + // Add products to each sale + const salesWithProducts = filteredSales.map(sale => ({ + ...sale, + products: this.saleProducts.filter(p => p.saleId === sale.id) + })); + + return salesWithProducts.sort((a, b) => (b.timestamp?.getTime() || 0) - (a.timestamp?.getTime() || 0)); } async getSaleWithProducts(id: number): Promise<(Sale & { products: SaleProduct[] }) | undefined> {