Menu
Commandes + Cmd SAV & INFO Contacts Comptes pro Chiffrages Idées Messages
Utilisateur
Darsy
Messages
Chargement...
Nouvelle conversation
Sélectionnez un ou plusieurs participants :
Source : docs/25-stock/99-technique.md — ce document se lit aussi dans le dépôt, sans serveur.

Stock — le côté technique


Les fichiers

RôleFichier
Écranpublic/erp/stocks.php + public/erp/assets/js/pages/stocks-2.js
API stocksrc/Http/Controllers/StockController.php
API valorisationsrc/Http/Controllers/StockValuationController.php
Donnéessrc/Repository/StockRepository.php
L'état d'une référencesrc/Stock/EtatDeStock.php
Le verdict d'une commandesrc/Stock/EtatDeCommande.php
Le CUMPsrc/Finance/ValorisationStock.php
Le coût dans la margeFinance\Marge::coutDuStockUtilise()
Le cataloguesrc/Woo/WooProductRepository.php

Les tables

TableContenu
stock_itemsUne fiche par référence : nature, seuil, notes. Clé (woo_product_id, woo_variation_id), un produit simple portant 0.
stock_movementsLe grand livre. quantite signée, warehouse_id, motif, bill_id, prix_unitaire_ht, woo_order_id.
stock_item_suppliersLes fournisseurs d'un produit : leur SKU, prix négocié, dernier prix payé, principal.
warehousesLes entrepôts : code court, nom, actif, position.

Migrations 036 → 039.

La 036 a été réécrite après avoir tourné — une faute — et la 037 rattrape. Une migration appliquée quelque part est de l'histoire : on la corrige avec la suivante, on ne la réécrit jamais. Voir l'en-tête de migrations/036_stocks.sql.

Les pièges connus

si.nature et l'alias categorie

Quand bills.categorie est arrivée, un GROUP BY categorie dans Marge a cessé de grouper par catégorie de fournisseur — MySQL donne raison à la colonne, pas à l'alias. Les frais de période étaient faux sans que rien ne le dise.

Deux sources pour les onglets

« Produits » et « Non stocké » listent le catalogue de la boutique ; les autres listent ce que Darsy sait, sans passer par la boutique.

Paginer sur le catalogue pour n'en garder que 3 % rendait des pages presque vides.

SQLite ne vérifie ni les clés étrangères ni les ENUM

Le banc de test répond des requêtes, pas du schéma. La suite MySQL est la seule à en répondre.


Les tests

tests/Unit/EtatDeStockTest.php (les cinq états), tests/Unit/MouvementsDeStockTest.php (les invariants, les transferts), tests/Unit/ValorisationStockTest.php (le CUMP, cas par cas), tests/Unit/EtatDeCommandeTest.php, tests/Unit/CatalogueProduitsTest.php, tests/Unit/FraisDePeriodeTest.php (le stock dans la marge).