Deposco (warehouse)
Book orders are shipped by United Fulfillment Solutions (UFS), whose warehouse management system is Deposco. The backend turns paid store orders into Deposco Sales Orders and polls Deposco for everything else, because Deposco has no webhooks.
| Code | deposco/ (client.py, orders.py, payloads.py, sync.py, inventory.py, history.py, tasks.py). No models of its own; writes store.WarehouseOrder, WarehouseOrderLine, InventoryLevel, InventorySnapshot |
| Runbook | deposco/README.md (account quirks, order mapping, refunds, before-go-live) |
| Env | DEPOSCO_USERNAME, DEPOSCO_PASSWORD, DEPOSCO_CODE (all three enable it; DEPOSCO_ENABLED=0 forces off), DEPOSCO_BASE_URL (default sandbox), DEPOSCO_BUSINESS_UNIT, DEPOSCO_ORDER_PREFIX (distinct per environment!), DEPOSCO_ORDER_SOURCE, DEPOSCO_SHIP_VIA_MAP (JSON), DEPOSCO_TIMEOUT, DEPOSCO_MIN_REQUEST_INTERVAL, DEPOSCO_SYNC_INTERVAL_MINUTES, DEPOSCO_SYNC_MAX_AGE_DAYS, DEPOSCO_INVENTORY_SYNC_MINUTES |
| API | Deposco legacy v1 REST, HTTP Basic auth, company code in the URL (company ufs, business unit emw) |
Flow
- Proof of payment: only
paidorders are submitted. - Inventory drives the storefront:
Product.stock_countcomes from Deposco;STORE_LOW_STOCK_THRESHOLDflags low items in the admin app. - Order history imports orders from every channel (not just the website) so the admin app's sales charts and the CRM's purchase history are complete.
deposco_link_contactslinks those to contacts. - Problems (SKU missing, rejected order) raise
notify_deposco_problem, which emailsSTORE_ORDER_NOTIFY_RECIPIENTS. Staff can resubmit or refresh an order from the admin app (/rest/store/staff/orders/<id>/resubmit|refresh/).
Shipping economics
Historic Deposco shipments (FulfillmentShipment, imported by import_fulfillment_shipments and refreshed by the history sync) are the default source of shipping prices at checkout (SHIPPING_RATE_SOURCE=fulfillment). See Shipping.
Environments
| Dev | Prod | |
|---|---|---|
DEPOSCO_BASE_URL | sandbox (default) | live |
DEPOSCO_ORDER_PREFIX | a dev-specific prefix so sandbox orders are recognisable | production prefix |
Never point dev at the live Deposco account.
Commands
manage.py deposco_check # credentials and SKU presence
manage.py deposco_submit_order <id> # submit one order by hand
manage.py deposco_sync # run the order sync now
manage.py deposco_sync_inventory
manage.py deposco_import_orders # all-channel history
manage.py deposco_link_contacts