# FruitBank.Common Shared domain library for the FruitBank nopCommerce plugin. Contains entities, DTOs, interfaces, measurement helpers, SignalR tags, and constants for fruit & vegetable wholesale operations. ## Folder Structure | Folder | Purpose | |---|---| | [`Databases/`](Databases/README.md) | Local in-memory database abstraction for offline/cached data | | [`Dtos/`](Dtos/README.md) | Binary-serializable DTOs for Order, OrderItem, Product, StockQuantityHistory | | [`Entities/`](Entities/README.md) | Domain entities: Shipping, Partner, measurement pallets, inventory | | [`Enums/`](Enums/README.md) | MeasuringStatus and DocumentType enums | | [`Helpers/`](Helpers/README.md) | Measurement aggregation utilities | | [`Interfaces/`](Interfaces/README.md) | SignalR endpoint contracts, measurement traits, entity interfaces | | [`Loggers/`](Loggers/README.md) | SignalR client log writer | | [`Models/`](Models/README.md) | Authentication state, measurement view models | | [`Services/`](Services/README.md) | Measurement service base, credential persistence | | [`SignalRs/`](SignalRs/README.md) | SignalR method tags (numeric constants) | ## Key Files (Root) - **`FruitBankConstClient.cs`** — Global constants: BaseUrl, SignalR hubs, database table names, email templates, system settings. - **`DocumentType.cs`** — Enum: ShippingDocument, OrderConfirmation, Invoice. ## Key Domain Concepts - **Shipping = INBOUND** (supplier → warehouse), **Order = OUTBOUND** (warehouse → customer) - **"Pallet" = measurement record**, always created even for non-measurable products - **NetWeight = GrossWeight − PalletWeight − (TrayQuantity × TareWeight)** - See [`docs/GLOSSARY.md`](../docs/GLOSSARY.md) for full terminology