OrderStatus 指令
只有在收到後端系統傳來的 Update_WCS_OrderStatus、Update_NC_OrderStatus 或「訂單狀態更新」訊息時,才會使用 OrderStatus 指令。
此指令會更新現有訂單的狀態資訊。
參數
- sequenceNumber
- 字串。作為序列化用的 WCS 訂單狀態 sequenceNumber。
- lastUpdateTimestamp:
- 採時間戳記格式的字串。作為序列化用的 WebSphere Commerce 訂單狀態前次更新時間戳記。
- versioning: 可為字串 "TRUE" 或 "FALSE"。預設值為 FALSE。
- 若為 TRUE,則會啟用版本化。
下列參數是對應 ORDSTAT 表格中的直欄。
- orderId: 整數。
- WebSphere Commerce 訂單參考號碼;將視 ORDSTAT 表格之 ORDERS_ID 直欄中的定義而定。此為
參照 ORDERS 表格中之 ORDERS_ID 直欄的外來鍵。
- merchantOrderNumber: 字串,為必要的。
- 在後端系統中產生的訂單號碼;視 OSMORDER 直欄中的定義而定。
- currency: 字串
- 表示價格的 ISO 4217 貨幣類型;視 OSCPCUR 直欄中的定義而定。
- priceTotal: BigDecimal(20,4)
- 訂單的合計產品價格;視 OSPRTOT 直欄中的定義而定。
- taxTotal: BigDecimal(20,4)
- 訂單的稅金總額;視 OSTXTOT 直欄中的定義而定。
- shippingTotal: BigDecimal(20,4)
- 訂單的貨運費總額;視 OSSHTOT 直欄中的定義而定。
- shipingTaxTotal: BigDecimal(20,4)
- 訂單運費的總稅金;視 OSSHTXTOT 直欄中的定義而定。
- orderStatus: 字串
- 訂單的狀態;視 OSSTATUS 直欄中的定義而定。
- placeDateTime: 時間戳記
- 實際下單的日期;視 OSPLTIME 直欄中的定義而定。
- requestShipDateTime: 時間戳記
- 所要求的訂單出貨日期;視 OSRSTIME 直欄中的定義而定。
- scheduleShipDateTime: 時間戳記
- 所排定的訂單出貨日期;視 OSSSTIME 直欄中的定義而定。
- actualShipDateTime: 時間戳記
- 實際的訂單出貨日期;視 OSASTIME 直欄中的定義而定。
- invoiceDateTime: 時間戳記
- 訂單的發票日期;視 OSINVTIME 直欄中的定義而定。
- invoiceValue: BigDecimal(20,4)
- 訂單發票的淨值;視 OSINVVAL 直欄中的定義而定。
- shipCondition: 字串
- 此代碼用以指出是否接受部份的訂單出貨;
視 OSSCOND 直欄中的定義而定。SC':完整出貨,'SP':部份出貨。
- shippingModeFlag: 字串
- 此代碼用以指出出貨地址與出貨模式是用在訂單層次或訂單項目層次上;
視 OSSMFLAG 直欄中的定義而定。O':訂單層次;'I':項目層次。
- comment: 字串
- 訂單狀態的相關備註;定義於 OSCMNT 直欄中。
- field1: 整數
- 訂單狀態自訂欄位 1;視 FIELD1 直欄中的定義而定。
- field2: BigDecimal(15,2)
- 訂單狀態自訂欄位 2;視 FIELD2 直欄中的定義而定。
- field3: 字串
- 訂單狀態自訂欄位 3;視 FIELD3 直欄中的定義而定。
- items: 向量或雜湊表。
- 每一個雜湊表各代表一個項目的參數。
規則
- 訂單的第一個訂單狀態必須有指定 orderId 與 merchantOrderNumber。
- 檢查 orderId 中指定的訂單是否存在於 ORDERS 表格中。
- 若有提供序列化資訊(像是 sequenceNumber 與 lastUpdateTimestamp)參數,
則會檢查這些值是否比 ORDSTAT 表格中的還新,
若不是,則不會進行更新。
- 使用所有提供的資訊,建立或更新 ORDSTAT 表格中之列。
- 若有啟用版本化,
且這是訂單的第一個訂單狀態,
則會在 ORDSTAT 表格中建立新列,
否則,則會建立最新訂單狀態複本,並將其版本 (OSVERNBR) 設為現有版本數最大值 +1。
此外會建立新列,
並填入所有提供的資訊,並將其 OSVERNBR
值設為 0。
- 將 ORDERS 表格之 STATUS 直欄中的值更新為 'G'。
異常狀況
- 指定的 orderId 在 ORDERS 表格中不是一個有效的訂單號碼。
- 在特定訂單的第一個訂單狀態中並未指定 orderId 或 merchantOrderNumber。
- 在後續的訂單狀態更新中,orderId 與 merchantOrderNumber
和特定訂單之 ORDSTAT 表格中的不符。
- 有提供序列化資訊,但訂單狀態訊息卻不同步。