feat: add partial shipment support (Phase 3)
- Add shipped_quantity field to OrderItem for tracking partial fulfillment
- Add partially_shipped order status for orders with partial shipments
- Add fulfill_item method for shipping individual items with quantities
- Add get_shipment_status method for detailed shipment tracking
- Add vendor API endpoints for partial shipment operations:
- GET /orders/{id}/shipment-status - Get item-level shipment status
- POST /orders/{id}/items/{item_id}/ship - Ship specific item quantity
- Automatic status updates: partially_shipped when some items shipped,
shipped when all items fully shipped
- Migration to add shipped_quantity column with upgrade for existing data
- Update documentation with partial shipment usage examples
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -925,6 +925,7 @@ class OrderService:
|
||||
stats = {
|
||||
"pending": 0,
|
||||
"processing": 0,
|
||||
"partially_shipped": 0,
|
||||
"shipped": 0,
|
||||
"delivered": 0,
|
||||
"cancelled": 0,
|
||||
@@ -989,6 +990,9 @@ class OrderService:
|
||||
# Update timestamps based on status
|
||||
if order_update.status == "processing" and not order.confirmed_at:
|
||||
order.confirmed_at = now
|
||||
elif order_update.status == "partially_shipped":
|
||||
# partially_shipped doesn't set shipped_at yet
|
||||
pass
|
||||
elif order_update.status == "shipped" and not order.shipped_at:
|
||||
order.shipped_at = now
|
||||
elif order_update.status == "delivered" and not order.delivered_at:
|
||||
@@ -1256,6 +1260,7 @@ class OrderService:
|
||||
"total_orders": 0,
|
||||
"pending_orders": 0,
|
||||
"processing_orders": 0,
|
||||
"partially_shipped_orders": 0,
|
||||
"shipped_orders": 0,
|
||||
"delivered_orders": 0,
|
||||
"cancelled_orders": 0,
|
||||
|
||||
Reference in New Issue
Block a user