Skip to main content

Inventaire et stocks

Modèle serveur

_utils/by_module/classes/InventoryProduct.js représente un produit d'inventaire. Il gère les entrées de stock, achats, ventes, méthode FIFO/non-FIFO et post-traitement selon le type de stock.

Fonctions structurantes

  • deserialize() / serialize();
  • buyItem(quantity, price, billUid);
  • sellItem(quantity, deleteEntry);
  • addInventoryEntry(...);
  • initializeInventoryProduct(...);
  • postProcessInventoryEntries(...);
  • getSellReport(quantity);
  • helpers de recherche/déduction par bill ou balance.

Modèle Unity

Assets/Src/UI/SimByModule/Data/Runtime/InventoryProduct.cs désérialise isFIFO, sellPrice, numDecimals et la liste InventoryEntries. Il expose notamment le prix de vente et le coût d'achat courant.

Flux

flowchart LR
STATIC[products / module settings] --> CREATE[Create Module Type Data]
CREATE --> INV[InventoryProduct]
BILL[Purchase/Sale Bills] --> INV
INV --> ENTRIES[Inventory entries]
ENTRIES --> COST[Cost of goods / stock]
COST --> REPORT[End Stock of Goods Report]
COST --> AK[Answer Key / accounts]

Permanent vs periodic stock

Les constantes By Module distinguent permanent_stock et periodic_stock. Les préférences de module et les traitements de fin de période déterminent comment l'inventaire influence les comptes et rapports.

Report de fin de stock

Le serveur possède EndStockOfGoodsReportBill, qui conserve les variations de stock. Côté Unity, BillDataEndStockOfGoodsReport représente ces données.

Tests

tests/unit/by_module_tests/classes_tests/inventory.test.js couvre la classe d'inventaire. Les changements qui touchent l'inventaire via les bills doivent aussi passer les tests bills + answer key.