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

delivery.schema.ts
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

14-09-2025

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.

21-07-2025

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.

10-04-2025

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.

Last updated: 14-09-2025
Copyright © 2025 Stockmate
All rights reserved