App. Docs
Delivery
Inbound consignment grouping purchase orders
Deliveries are inbound consignment records for shops and e‑commerce. A delivery can contain order items from multiple suppliers (no supplier is set on the delivery itself), letting you combine purchase orders shipped together by a consignor.
Setup
- Navigate to Deliveries and click “New Delivery”. Order Number is auto‑generated on first save (future: optional overwrite with external IDs from supplier records). Set Estimated Arrival and Location. Optionally set Freight Mode, Delivery Cost, and Delivery Credit.
- Add Order Items. For each, pick a Variant, enter Quantity and confirmed Unit Cost. Set the Sale Threshold and Delivery Thresholdto drive when items can be offered for sale and when receiving steps occur.
- Upload Documents (invoices, packing lists) to the delivery. These are stored as attachments.
- Save. As items are received, Stock records are created per order item according to your Stock Status sequence and thresholds.
Workflow
Combine purchase orders
Deliveries can include items from different suppliers. There’s no supplier set at the delivery level to support combined consignments.
Order items → stock
Each order item receives into one or more stock records based on thresholds and your status sequence.
Documents
Attach invoices, ASN, and packing lists to the delivery for easy reference and audit.
Timeline (early)
A simple event trail is shown for key updates. More detail will be added over time.
Multiple stocks per variant
By default, the same variant can’t be added twice via Add Items on the delivery edit page. To add an additional stock for the same variant, open the order item row menu and choose Add alternative stock. This duplicates the order item line, allowing separate stocks for the same variant with different custom fields or expiry dates, etc.
Attributes
1type PurchaseOrder = {
2 // Identity & audit
3 id: string; // uuid
4 modifiedAt?: Date;
5 modifiedById?: string; // uuid
6 modifiedByEmail?: string;
7 modifiedByEndpoint?: string;
8
9 // Company scoping
10 companyId: string; // uuid
11 company: Company;
12
13 // Core
14 orderNumber?: string;
15 note?: string;
16 customFields?: Json; // user-defined fields
17 createdAt: Date;
18 estimatedArrival?: Date;
19
20 // Costs & credits
21 deliveryCost?: decimal;
22 deliveryCredit?: decimal;
23
24 // Relations
25 orderItems: OrderItem[];
26 attachments: File[]; // documents uploaded to the delivery
27 locationId?: string; // uuid
28 location?: Location | null;
29 freightModeId?: string; // uuid
30 freightMode?: FreightMode | null;
31}
Order item thresholds
Each order item carries a Sale Threshold and a Delivery Threshold. They work with your company’s Stock Status sequence (e.g., ON_ORDER steps like “In Production”) to move quantities toward availability.
- Submitted (Sale Completed): Once submitted, the order item is locked — it cannot be edited or deleted. It may also advance to a subsequent ON_ORDER status if your sequence includes additional steps (e.g., “In Production”).
- Delivered: On delivery, related stocks move to an AVAILABLE-type status. Stocks become usable at this point (transferable/actionable). Prior to this, they are not actionable.
- Undo: Both thresholds can be undone via per-item menus or bulk actions when a step was completed in error.
FAQ
Changelog
feat(delivery): show current AVAILABLE quantities on order items
- Displays available stock per variant in the delivery order items table to clarify why quantities were chosen.
perf(deliveries): virtual pagination on main deliveries table
- Improved performance and scrolling on large datasets by switching to virtualized pagination.
- Simplified the table to show a concise delivery summary; removed rarely-used expandable subrows to reduce clicks.
feat(naming): rename frontend entity Delivery (server model PurchaseOrder)
- More approachable naming for everyone; “Purchase Order” can be unclear outside e‑commerce. Clarifies purpose as inbound consignment while retaining server naming for compatibility.