Skip to main content

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.

Codedeposco/ (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
Runbookdeposco/README.md (account quirks, order mapping, refunds, before-go-live)
EnvDEPOSCO_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
APIDeposco legacy v1 REST, HTTP Basic auth, company code in the URL (company ufs, business unit emw)

Flow​

  • Proof of payment: only paid orders are submitted.
  • Inventory drives the storefront: Product.stock_count comes from Deposco; STORE_LOW_STOCK_THRESHOLD flags 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_contacts links those to contacts.
  • Problems (SKU missing, rejected order) raise notify_deposco_problem, which emails STORE_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​

DevProd
DEPOSCO_BASE_URLsandbox (default)live
DEPOSCO_ORDER_PREFIXa dev-specific prefix so sandbox orders are recognisableproduction 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