# Entities

Domain entities for inbound/outbound goods tracking and inventory. All map to `fb`-prefixed database tables.

## Shipping (Inbound)

- **`Shipping.cs`** — Physical delivery event (truck arrival). Table: `fbShipping`.
- **`ShippingDocument.cs`** — Supplier delivery note/invoice. Table: `fbShippingDocument`.
- **`ShippingItem.cs`** — Product line on document with declared vs measured discrepancies. Table: `fbShippingItem`.
- **`ShippingItemPallet.cs`** — Measurement record for incoming goods. Table: `fbShippingItemPallet`.
- **`ShippingDocumentToFiles.cs`** — Many-to-many link: document ↔ file with DocumentType. Table: `fbShippingDocumentToFiles`.
- **`Partner.cs`** — External supplier with address and tax info. Table: `fbPartner`.

## Cargo / Logistics

- **`CargoPartner.cs`** — Freight/haulage partner (carrier). Distinct from `Partner` (supplier) — this is the transport side. Has `CargoTrucks` and `Shippings` collections. Table: `fbCargoPartner`.
- **`CargoTruck.cs`** — Individual truck belonging to a `CargoPartner` (`LicencePlate`, `CountryCode`, `IsTrailer` for trailers). Table: `fbCargoTruck`.

## Order (Outbound)

- **`OrderItemPallet.cs`** — Measurement record for outgoing goods with RevisorId for audit. Table: `fbOrderItemPallet`.

## Inventory

- **`StockTaking.cs`** — Inventory session record. Table: `fbStockTaking`.
- **`StockTakingItem.cs`** — Line item reconciling snapshot vs measured quantities. Table: `fbStockTakingItem`.
- **`StockTakingItemPallet.cs`** — Measurement record for inventory. Table: `fbStockTakingItemPallet`.
- **`StockQuantityHistoryExt.cs`** — Extended weight metadata for stock reconciliation.

## Shared

- **`MeasuringItemPalletBase.cs`** — Abstract base for all three measurement hierarchies. Defines NetWeight formula, validation methods, CreatorId/ModifierId tracking.
- **`Pallet.cs`** — Physical pallet type definition (name, size, weight). Table: `fbPallet`.
- **`Files.cs`** — Uploaded file with OCR-extracted RawText. Table: `fbFiles`.

## Critical: "Pallet" Naming

Despite the name, `XxxItemPallet` entities are **measurement records**, NOT physical pallets. They are ALWAYS created for every item. For non-measurable products, weights = 0.0 and only TrayQuantity is tracked.
