FruitBankHybridApp/docs/GLOSSARY.md

4.1 KiB
Raw Blame History

Glossary / Fogalomtár

For core framework glossary see: GLOSSARY.md (in AyCode.Core repo) For UI framework glossary see: GLOSSARY.md (in AyCode.Blazor repo)

Domain terminology for the FruitBank system. Read this before making changes.

Business Domain

English Magyar Definition
Shipping Beszállítás INBOUND delivery: supplier → warehouse. A truck arrival event.
Order Megrendelés OUTBOUND delivery: warehouse → customer.
Pallet (XxxItemPallet) Mérési rekord A measurement record, NOT a physical pallet. Always created, even for non-measurable products.
Partner Partner / Beszállító External supplier providing goods.
ShippingDocument Szállítólevél Supplier's delivery note or invoice, linked to a Shipping.
ShippingItem Szállítólevél tétel Product line on a shipping document. Tracks declared vs measured discrepancies.
StockTaking Leltározás Inventory session that freezes logical stock and reconciles with physical count.
GenericAttribute Generikus attribútum nopCommerce polymorphic key-value store. KeyGroup = owner type, EntityId = owner ID.

Measurement System

Term Definition
IsMeasurable Product-level flag. If false: weights = 0.0, only TrayQuantity matters. A Pallet record is still created.
NetWeight GrossWeight PalletWeight (TrayQuantity × TareWeight) — universal formula across all three hierarchies.
TrayQuantity Always recorded, regardless of measurability. Count of trays/crates.
GrossWeight Total weight including pallet and packaging. 0.0 if not measurable.
PalletWeight Weight of the physical pallet. 0.0 if goods arrive without one.
TareWeight Weight of a single tray/crate. Used in NetWeight calculation.
AverageWeight Per-pallet average: NetWeight / TrayQuantity. Validated against threshold.
MeasuringStatus NotStarted(0) → Started(10) → Finnished(20) → Audited(30). Note: "Finnished" is intentional.
RevisorId Quality auditor's Customer ID. OrderItemPallet becomes "Audited" when RevisorId > 0.

Three Measurement Hierarchies

All share MeasuringItemPalletBase with the same NetWeight formula:

Flow Parent Pallet Record Extra
Inbound (Shipping) ShippingItem ShippingItemPallet Declared vs measured discrepancy
Outbound (Order) OrderItemDto OrderItemPallet RevisorId for audit
Inventory (StockTaking) StockTakingItem StockTakingItemPallet QuantityDiff for stock adjustment

nopCommerce Entities

These are NOT custom FruitBank entities — they come from nopCommerce:

  • Customer, Order, OrderItem, OrderNote, Product, GenericAttribute

FruitBank extends them via:

  • DTOs (OrderDto, OrderItemDto, ProductDto) that wrap nopCommerce entities with measurement properties
  • GenericAttributes for storing custom values (IsMeasurable, Tare, AverageWeight, etc.)

Common Traps

Trap Correct Behavior
"Pallet" = physical pallet It's a measurement record. Always created.
Shipping = outgoing Shipping = INBOUND. Order = OUTBOUND.
Fix "Finnished" spelling Intentional legacy typo. Do NOT fix.
IsMeasurable=false means no Pallet Pallet is always created, weights just = 0.0
NetWeight is stored It's calculated: GrossWeight PalletWeight (TrayQuantity × TareWeight)
GenericAttribute is simple It's polymorphic: KeyGroup determines which entity type owns the record

UI / Grid Components

For MgGrid framework terms (MgGridBase, MgGridWithInfoPanel, MgGridToolbarBase, MgGridDataColumn, MgGridInfoPanel, IMgGridBase, etc.) see GLOSSARY.md (in AyCode.Blazor repo) and AyCode.Blazor.Components/docs/MGGRID.md (in AyCode.Blazor repo).

Term Definition
FruitBankGridBase Project-level adapter: fixes TSignalRDataSource=SignalRDataSourceObservable, TId=int, TLoggerClient=LoggerClient. Adds per-user layout, master/detail defaults. See FruitBankHybrid.Shared/Components/Grids/README.md.