Authoritative Tutorial: Kingdee Cloud Other Outbound Order Query Interface Field Handbook (P2-342)
What This Interface Solves
In retail and e-commerce supply chain integration, the "Other Outbound Order" (covering transfers, consumptions, scrapping, sample issues, and other non-sales outbound flows) is the key voucher that bridges Kingdee Cloud ERP with front-end e-commerce and OMS systems. Using this interface, you can row-by-row pull Kingdee's outbound details and precisely reconcile and write back against Guanyi Cloud sales orders, return orders, and platform order numbers, achieving voucher-level traceability. It addresses three pain points: ① bringing non-sales outbound flows into unified reconciliation; ② linking return outbound orders with sales orders bidirectionally; ③ filtering and incrementing under multi-org and multi-owner scenarios.
Interface Capability Overview
- Authentication: OAuth/Session auth under Kingdee Cloud private deployment. After the Qeasy adapter wraps it, only tenant and account book need to be configured; no manual token management.
- Request Method:
POST /kapi/v2/bill/query, with the underlying API beingexecuteBillQuery. - FormId: Fixed as
STK_MisDelivery(Other Outbound Order). - Request Structure:
otherRequestcontains five key parameters:Limit,StartRow,TopRowCount,FilterString, andFieldKeys. - Pagination: Traditional pagination based on
Limit/StartRow. Platform variables{{PAGINATION_PAGE_SIZE}}and{{PAGINATION_START_ROW}}are auto-injected. - Incremental Mode: The default filter
FApproveDate>='{{MINUTE_AGO_20|datetime}}' AND FStockDirect='GENERAL'rolls by approval date and pins the inventory direction. A cron schedule*/6 * * * *pulls every 6 minutes. - Response Structure: Row-by-row response.
FIDis the master key,FEntity_FEntryIDis the line key, andFBillNois the business document number.autoFillResponse:truelets the platform auto-fill.
Typical Field Mappings
| Field | Type | Meaning | Hands-on Notes |
|---|---|---|---|
| FID | string | Unique master ID of the outbound order | Master key, anchor for cross-system reconciliation |
| FEntity_FEntryID | string | Detail line master key | Declared as id in metadata; core for row-level deduplication |
| FBillNo | string | Document number | Declared as number in metadata; first choice for business reconciliation |
| FBillTypeID_FNumber | string | Document type code | Contains XSCKD01_SYS~XSCKD08_SYS; differentiate carefully |
| FDate | string | Business date | Different from approval date FApproveDate; use the latter for increments |
| FStockDirect | string | Inventory direction | Default GENERAL; pinned in the filter |
| FOwnerIdHead / FOwnerTypeIdHead | string | Owner code / type | Mandatory in multi-owner scenarios |
| F_UQRW_Base | string | Outbound warehouse code | Key for warehouse mapping with Guanyi |
| FMaterialId | string | Material code | Use nested form FMaterialId.FNumber to fetch |
| FStockOrgId / FPickOrgId | string | Stock org / Pick org | Used for data isolation in multi-org environments |
| F_UQRW_SONO | string | Guanyi sales order number | Links to sales delivery |
| F_UQRW_THDH | string | Guanyi return order number | Required for return outbound scenarios |
| F_352_pingtaidanhao | string | Platform order number | Anchor for e-commerce order tracing |
| F_UQRW_Text | string | Sales delivery number | Links to the sales delivery |
| F_UQRW_BaseProperty / F_UQRW_BaseProperty1 | string | Material / warehouse external code | Bridges cross-system coding |
How to Configure on Qeasy
On the Qeasy Data Integration platform, this interface is wrapped as a "Kingdee Cloud Query Adapter."
- Select the data source: Source = Kingdee Cloud; target left empty (Target = null write; pure query strategy).
- Configure FormId: Enter
STK_MisDeliveryin the adapter form; the platform auto-loads field metadata. - Set the filter: In
FilterString, writeFApproveDate>='{{MINUTE_AGO_20|datetime}}' AND FStockDirect='GENERAL'; platform variables auto-compute by execution time. - Configure pagination:
Limit={{PAGINATION_PAGE_SIZE}}(default 2000);StartRow={{PAGINATION_START_ROW}}. Qeasy's field mapper auto-maintains the cursor. - Declare metadata: In
metadata.json, declarenumber=FBillNo,id=FEntity_FEntryID,idCheck=true,autoFillResponse=true. - Schedule: Cron
*/6 * * * *, with an incremental window ofMINUTE_AGO_20to absorb a 20-minute approval lag.
Cross-Project Best Practices
- Row-by-row vs order-by-order: Row-level granularity is finer and fits multi-line returns or combo outbound, but data volume expands 5–10x; always assess storage and downstream consumer capacity.
- Approval date beats business date: Incremental field must be
FApproveDate, notFDate, otherwise orders will be missed. - Inventory direction filter is mandatory:
FStockDirect='GENERAL'is a hard Kingdee business rule; omitting it lets transfer and consignment noise leak in. - Business document number is the cross-system anchor: In Qeasy's field mapper, prefer
FBillNoas the idempotency key rather thanFID, because business users reconcile by document number. - Multi-org isolation: When the customer runs multiple stock orgs, append
FStockOrgId IN (...)toFilterString; otherwise data from the wrong org will leak in. - External codes first: Guanyi's material and warehouse codes usually live in
F_UQRW_BaseProperty*. Mapping via those fields is more direct and stable than usingFMaterialId.FNumber.
Pitfall Recap
- Pitfall 1 — Incremental "missed orders": Using
FDateas the incremental window causes orders with delayed approval to be skipped. The safe approach is to uniformly useFApproveDateand keep theMINUTE_AGO_20lag buffer. - Pitfall 2 — Misreading document type codes: XSCKD01_SYS through XSCKD08_SYS have overlapping meanings (standard outbound appears multiple times); filtering by string prefix is error-prone. Maintain an explicit enum table in Qeasy's field mapper.
- Pitfall 3 — Wrong nested field access:
FMaterialIdis an object; you must writeFMaterialId.FNumberto fetch the code. Qeasy's field mapper auto-expands nested fields, but hand-written scripts need care. - Pitfall 4 — Cursor not advancing: Hard-coding
StartRowcauses an infinite pagination loop — this is where things blow up. Always use the platform variable{{PAGINATION_START_ROW}}. - Pitfall 5 — Return-scenario mismatch: Return outbound orders must carry
F_UQRW_THDH. If Guanyi's return order is approved before Kingdee's outbound, you get "orphan" records; add fault-tolerant linking on the downstream side.
When to Use
Suitable for: Guanyi/OMS to Kingdee Cloud supply chain integration that needs row-level outbound detail for reconciliation, return linking, platform order matching, and filtering by inventory direction and org dimension in pure-query scenarios. Not suitable for: real-time push (sub-second latency), write-back into Kingdee, or non-STK_MisDelivery documents such as sales outbound orders or transfer orders.