From c55ee2aabe5eabc7f3ffc5dbb6ccfe71ab15957e Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 4 Nov 2025 14:31:01 +0000 Subject: [PATCH] Update product sorting to show active items first MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modify the database query in `server/storage.ts` to prioritize active products (status not 'valides' and not processed/stock épuisé) to appear before processed, stock épuisé, or valides products in the results. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 427b5397-73ab-43e6-8938-8421d3c5aef4 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/LXHtbOp --- server/storage.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/server/storage.ts b/server/storage.ts index 7ca5d88..7dee56f 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -1948,14 +1948,17 @@ export class DatabaseStorage implements IStorage { query = query.where(and(...conditions)); } - // Tri intelligent : produits traités/validés en premier (grisés), puis produits actifs + // Tri intelligent : produits actifs (non grisés) EN PREMIER, puis lignes grisées en dernier const results = await query.orderBy( - // Priorité 1 : Produits traités/validés d'abord (affichés en grisé) + // Priorité : Actifs → Traités → Stock épuisé → Validés sql`CASE - WHEN ${dlcProducts.processedUntilExpiry} = true THEN 1 - WHEN ${dlcProducts.status} = 'valides' THEN 1 - WHEN ${dlcProducts.stockEpuise} = true THEN 1 - ELSE 2 + WHEN ${dlcProducts.status} != 'valides' + AND (${dlcProducts.processedUntilExpiry} IS NULL OR ${dlcProducts.processedUntilExpiry} = false) + AND (${dlcProducts.stockEpuise} IS NULL OR ${dlcProducts.stockEpuise} = false) THEN 1 + WHEN ${dlcProducts.processedUntilExpiry} = true THEN 2 + WHEN ${dlcProducts.stockEpuise} = true THEN 3 + WHEN ${dlcProducts.status} = 'valides' THEN 4 + ELSE 1 END`, // Priorité 2 : Date d'expiration (croissante) asc(dlcProducts.expiryDate)