/** * Types pour la gestion des stocks */ export enum StatutStock { ACTIF = 'ACTIF', INACTIF = 'INACTIF', OBSOLETE = 'OBSOLETE', SUPPRIME = 'SUPPRIME', EN_COMMANDE = 'EN_COMMANDE', EN_TRANSIT = 'EN_TRANSIT', EN_CONTROLE = 'EN_CONTROLE', QUARANTAINE = 'QUARANTAINE', DEFECTUEUX = 'DEFECTUEUX', PERDU = 'PERDU', RESERVE = 'RESERVE', EN_REPARATION = 'EN_REPARATION' } export enum CategorieStock { MATERIAUX_CONSTRUCTION = 'MATERIAUX_CONSTRUCTION', OUTILLAGE = 'OUTILLAGE', QUINCAILLERIE = 'QUINCAILLERIE', EQUIPEMENTS_SECURITE = 'EQUIPEMENTS_SECURITE', EQUIPEMENTS_TECHNIQUES = 'EQUIPEMENTS_TECHNIQUES', CONSOMMABLES = 'CONSOMMABLES', VEHICULES_ENGINS = 'VEHICULES_ENGINS', FOURNITURES_BUREAU = 'FOURNITURES_BUREAU', PRODUITS_CHIMIQUES = 'PRODUITS_CHIMIQUES', PIECES_DETACHEES = 'PIECES_DETACHEES', EQUIPEMENTS_MESURE = 'EQUIPEMENTS_MESURE', MOBILIER = 'MOBILIER', AUTRE = 'AUTRE' } export interface Stock { id: string; nom: string; description?: string; quantite: number; quantiteMin: number; quantiteMax: number; quantiteStock: number; quantiteReservee?: number; quantiteMinimum?: number; unite: string; prixUnitaire: number; coutMoyenPondere?: number; dateCreation: string; dateModification: string; actif: boolean; statut: StatutStock; categorie: CategorieStock; codeZone?: string; codeAllee?: string; codeEtagere?: string; emplacementStockage?: string; datePeremption?: string; articleDangereux?: boolean; coutDerniereEntree?: number; fournisseur?: { id: string; nom: string; }; } export interface StockMovement { id: string; type: 'ENTREE' | 'SORTIE'; quantite: number; dateMovement: string; motif: string; utilisateur: string; chantier?: { id: string; nom: string; }; } export interface StockAlert { id: string; type: 'STOCK_BAS' | 'STOCK_CRITIQUE' | 'PEREMPTION'; message: string; dateCreation: string; traite: boolean; } export interface StockStats { totalArticles: number; valeurTotale: number; articlesEnRupture: number; articlesEnAlerte: number; }