Special Project — Delivery Workflow
Special Project — Delivery Workflow
Step-by-step user guide for recording cargo deliveries on a Special Project. When a leg is executed correctly, the Fulfillment tab updates automatically — Delivered, Remaining, and Deliveries reflect what moved on that programme.
For field-level detail on Packages and Deliveries, see Special Project — Fulfillment (Packages & Deliveries).
To open: Home > Special Projects > Project (DocType Special Project).
Planning vs execution (read this first)
| Document type | Role | Updates Fulfillment on submit? |
|---|---|---|
| Air Booking, Sea Booking, Transport Order, Project Order, Inbound Order | Planning — captures requirements and charges | No |
Air Shipment (series ASP-…), Sea Shipment, Transport Job, Project Job |
Execution — cargo actually moves | Yes |
Submitting a booking or order alone does not post a delivery. You must create and submit the matching execution document.
Step 1 — Set up packages
- Open the Special Project (e.g.
PROJ-0130). - On Details, set Customer.
- Open the Fulfillment tab.
- In Packages, add one row per item or part you are tracking (or seed from a linked Sales Quote Project Products).
- Enter Qty Required on each tracked row. Leave Include on Create unticked for tracked stock; tick it only for always-along rows (tool kits, dunnage) that ride every booking but are not counted in the delivery ledger.
- Save.
Step 2 — Add a service leg
- Open the Services tab.
- In Services, add a row:
- Lifecycle Stage — e.g. Logistics, On-Site
- Service Type — Air, Sea, Transport, Customs, Warehousing, or Special Project
- Activity Code / Activity Name — as needed for your programme
- Save.
Each Services row is one programme leg. After you create bookings from it, Order No and Job No on that row link to the planning and execution documents.
Step 3 — Create a booking or order
- On the Special Project, click Create → Booking / Order.
- In the dialog, each card represents one Services row. Expand the card for the leg you need, set any required parameters, then click Create when enabled.
- For Transport, Air, Sea, Inbound, or Project Order legs, the Shipment lines dialog opens. Enter the quantity to ship for each tracked package (leave 0 to skip a line). Always-along packages are not listed — they are appended automatically.
- For Project Order, enter Order Title when prompted.
- The system creates the planning document (Air Booking, Sea Booking, Transport Order, Project Order, etc.) and links Order No on the Services row.
When created from the Special Project, Project on the new document is set to the programme's ERPNext Project (same name as the Special Project when auto-created).
Step 4 — Create and submit the execution document
Complete the leg on the execution document, not the planning document.
Air leg
- Open the Air Booking created in Step 3 and Submit it if still draft.
- Click Create → Shipment on the Air Booking (or View Air Shipment if one already exists).
- Open the Air Shipment (e.g.
ASP-000325). Confirm Project points to the programme and Packages have quantity > 0. - Submit the Air Shipment.
Sea leg
- Submit the Sea Booking.
- Create the Sea Shipment from the booking (same pattern as air).
- Submit the Sea Shipment.
Transport leg
- Submit the Transport Order.
- Click Create → Transport Job on the Transport Order.
- Submit the Transport Job.
Programme task (site work, installation, etc.)
- From the Project Order, create a Project Job (or create a Project Job linked to the Special Project).
- Fill Materials Received with Warehouse Item, Qty Received, and optionally Package Row.
- Submit the Project Job.
Step 5 — Verify Fulfillment
- Re-open the Special Project → Fulfillment tab.
- Confirm:
- Deliveries — new Posted row(s) with Source Job No pointing to the execution document (e.g.
ASP-000000325,SF000000391). - Packages — Delivered and Remaining updated on the affected lines.
- Summary at the top of the tab — stage throughput and package table refreshed.
- Deliveries — new Posted row(s) with Source Job No pointing to the execution document (e.g.
- If totals look stale after bulk edits, use Packages → Refresh Delivery Funnel.
Regression check (issue #1107)
Use this after deploying a fix or when a submitted Shipment still shows no delivery on the programme:
| Document | Expected on PROJ-0130 |
|---|---|
Air Shipment ASP-000000325 |
Posted delivery for Materials-HCPI, qty 15, Source Job No = ASP-000000325 |
Sea Shipment SF000000391 |
Posted delivery for Hllwblck-HCPI, qty 1000, Source Job No = SF000000391 |
Desk: open Special Project PROJ-0130 → Fulfillment → confirm the rows above and updated Delivered / Remaining on the matching package lines.
Backfill (only if the Shipment was submitted before the fix and Deliveries are still empty):
bench --site <site> execute logistics.special_projects.special_project_packages.repost_freight_shipment_deliveries --args '["ASP-000000325"]'
bench --site <site> execute logistics.special_projects.special_project_packages.repost_freight_shipment_deliveries --args '["SF000000391"]'
Re-running is safe: existing Posted rows for the same shipment package line are skipped.
Step 6 — Repeat for further legs
For each additional wave, truck, flight, or site delivery:
- Add or reuse a Services row at the correct Lifecycle Stage.
- Create → Booking / Order → Shipment lines → planning document.
- Create and submit the execution document (Shipment / Transport Job / Project Job).
- Check Fulfillment again.
Troubleshooting
| Symptom | What to check |
|---|---|
| Deliveries empty after submit | Did you submit the execution doc (Shipment / Transport Job / Project Job), not just the booking or order? |
| No Shipment lines dialog | Add Packages on the Special Project first (or seed from Sales Quote). |
| Delivery still missing on a submitted Shipment | On the execution doc: Project = programme; Packages qty > 0; lines match Packages on the Special Project (same Warehouse Item / Commodity / Description, or Package Row set). If those checks pass but Deliveries stayed empty, check Error Log for package delivery post — a failed Special Project save (e.g. Services grid label sync) blocks posting; use the Regression check backfill commands after the fix is deployed. |
| Services row has Order No but no Job No | Execution document not created or not submitted yet. |
| Inbound Order leg | Receipt auto-posting from inbound/warehouse execution is not fully wired — coordinate with ops or use supported legs (Air/Sea/Transport/Project Job) until extended. |