mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-21 22:18:08 +02:00
Gammes de l'API à valider dans la Grille, analyses pleine largeur, référence dans Meilleures ventes
- API /api/v1 : PUT /products/:codein/gamme et POST /gammes déposent une proposition (table gammes_a_valider) au lieu d'enregistrer. La Grille la charge comme modification non enregistrée (badge « API ») : Enregistrer la valide, Annuler la rejette. Lecture : champ gammeAValider, statut a_valider dans la réponse ; OpenAPI mise à jour. - Meilleures ventes, Ventes par mois, Publicités : plus de largeur max centrée, les pages occupent toute la largeur. - Meilleures ventes : colonne Référence (référence fournisseur), recherche et export Excel compris. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FaniLFvegAZNXFrFFSStqa
This commit is contained in:
21 files changed
+413
-73
No files matched your search
@@ -3,6 +3,7 @@
|
||||
import { z } from "zod";
|
||||
import { verifierSession } from "@/lib/authz";
|
||||
import { enregistrerGammes } from "./enregistrer-gammes";
|
||||
import { supprimerGammesAValider } from "@/lib/gammes-a-valider";
|
||||
|
||||
const SaveDraftsSchema = z.object({
|
||||
codeFournisseur: z.string(),
|
||||
@@ -15,6 +16,11 @@ const SaveDraftsSchema = z.object({
|
||||
codeGamme: z.string(),
|
||||
})
|
||||
),
|
||||
/**
|
||||
* Propositions de l'API examinées dans la Grille : validées (présentes dans
|
||||
* `changes`) ou écartées. Elles quittent la file « à valider ».
|
||||
*/
|
||||
gammesAValiderTraitees: z.array(z.string()).optional(),
|
||||
});
|
||||
|
||||
export async function saveDraftChanges(
|
||||
@@ -28,7 +34,7 @@ export async function saveDraftChanges(
|
||||
return { success: false, saved: 0, error: "Validation failed: " + parsed.error.message };
|
||||
}
|
||||
|
||||
const { codeFournisseur, nomFournisseur, magasin, changes } = parsed.data;
|
||||
const { codeFournisseur, nomFournisseur, magasin, changes, gammesAValiderTraitees = [] } = parsed.data;
|
||||
|
||||
const rawUserId = acces.utilisateur.id;
|
||||
const userId = rawUserId ? parseInt(rawUserId, 10) : null;
|
||||
@@ -36,6 +42,7 @@ export async function saveDraftChanges(
|
||||
|
||||
try {
|
||||
const saved = await enregistrerGammes({ codeFournisseur, nomFournisseur, magasin, changes, userId: finalUserId });
|
||||
await supprimerGammesAValider(codeFournisseur, gammesAValiderTraitees);
|
||||
return { success: true, saved };
|
||||
} catch (err) {
|
||||
const msg = err instanceof Error ? err.message : "Unknown error";
|
||||
|
||||
Reference in new issue
Block a user