ReturnItemAdd 指令
這個指令會新增產品到退貨商品授權 (RMA) 中。

參數值
- http://host_name/path/
- (必要)WebSphere Commerce Server 和架構路徑的完整名稱。
- forUser
- 將代替其執行指令之使用者的登入 ID;只有具備處理訂單權限的人才可指定這個參數。
- forUserId
- 與 forUser 相同,但卻是 USERS 表格中之內部使用者 ID 所指的使用者。
- creditAdjustment_i
- 調整產品退款金額的額度。
這個數目的格式必須符合 java.math.BigDecimal 物件的規則。
這個數目的小數位數必須使用句點。
這個金額會放置在 RMAITEM
表格的 ADJUSTMENT 直欄中。這是一個選用的參數,只有在指定了 forUserId 參數時才有效。
- langId
- 設定或重設在階段作業期間的屬意語言;
有關商店的支援語言可在 STORELANG 表格中找到。
- storeId
- (必要)商店的參考號碼。
- orderItemId_i
- (必要)OrderItem ID(如果可用的話)。
如果要傳回不是動態套件之一部份的元件,或要從 OrderItem 傳回整個套件,就必須指定這個參數的值。
如果要傳回有 OrderItem 的動態套件的一部份,就必須指定這個參數及 catEntryId_i 參數的值。
- catEntryId_i
- (必要)退回的型錄項目。這個值必須是產品或項目。
其它型錄項目值都不在支援範圍內,且會呼叫 BAD_MISSING_CMD_PARAMETER 異常狀況。
如果要傳回不是 OrderItem 的元件,就必須指定這個參數的值。
如果要傳回有 OrderItem 的動態套件的一部份,就必須指定這個參數及 orderItem_i 參數的值。
- attrName_i
- 產品定義的任何獨特屬性。
- attrValue_i
- 產品屬性的值。
- RMAId
- 退貨項目要加入其中的現有 RMA 的識別碼。
如果要建立新的 ,請以 "**" 為值。
如果沒有指定這個參數的值,就會以 ** 為預設值。
- quantity_i
- (必要)退回的數量。
- UOM_i
- quantity_i 的度量單位。這個值應該符合
QTYUNIT 表格中的主要鍵。
如果沒有指定的話,則會使用 CATENTSHIP
表格中,CATENTRY_ID 與 OrderItem 相同的那一列的 QUANTITYMEASURE 直欄值,
且 quantity_i 參數值會乘以 CATENTSHIP
表格中相同列的 NOMINALQUANTITY 直欄。
- comment_i
- 退貨項目的相關備註。
- reason_i
- (必要)購物者所提供的退貨原因。
這個值可以在 RTNREASON 表格的 CODE 直欄中找到,原因為 'B' 或 'C'。
- outRMAName
- 要傳遞給重新導向 URL 的「名稱-值」配對所用的名稱。
在鏈結指令時,這個參數非常有用。
如果沒有指定這個參數,就會使用 RMAId 參數的值。
- URL
- (必要)當指令順利完成時所要呼叫的 URL。
- forUserId
- 將代替其執行指令之使用者的登入 ID;只有具備客戶服務代表安全職務的人員可指定這個參數。
使用者由 USERS 表格中所找到的內部使用者 ID 來識別。
範例
下列範例會在一個新的 RMA 中新增 5 個訂單項目 15。
退貨的原因碼是 DEFECT。RMA 建立好後就會顯示出來。
http://myhostname/webapp/wcs/stores/servlet/ReturnItemAdd?
orderItemId_1=15&quantity_1=5&reason_1=DEFECT&RMAId=**&storeId=1
&URL=ReturnDisplay
規則
- 如果 RMAId 設為 "**",則會建立一個新的 RMA。
新 RMA 的貨幣會設為依據訂單項目的其中一個退貨項目的貨幣。
如果沒有訂單項目被退回(亦即,只退回型錄項目),則貨幣會設為客戶的購物貨幣。
新 RMA 的交易 ID 會設為退回的其中一個訂單項目的交易 ID。
如果沒有退回訂單項目,則會使用在指令環境定義 (method getCurrentTradingAgreements())
中找到的第一個交易 ID。RMA 的 memberId 會設為指令環境定義中的使用者 ID。
- 如果 RMAId 不是設為 "**",請開啟現有的 RMA,驗證其是否隸屬於目前的商店。
- RMA 的 PREPARED 旗號設為 'N'。
- 如果有指定 forUser 或 forUserId 參數,RMA 的起始狀態必須是
'EDT'、'PND'、'APP',然後狀態會設為 'EDT'。不然的話,RMA 的起始狀態必須是
'PRC',然後狀態會變更為 'PRC'。
- 這個指令可以用 OrderItems 和型錄項目的清單來呼叫。
每個都會用下列方式來處理:
- 如果 OrderItem 要新增到 RMA 中,會發生下列情況:
- 呼叫 CheckReturnItemInCorrectStateCmd
作業指令,驗證訂單項目是在可退貨狀態。
- 檢查 OrderItem 的貨幣是否和 RMA 的貨幣相同。
- 檢查訂單項目的交易 ID 是否和 RMA 的交易 ID 相同。
- 檢查這個訂單項目是否具有退貨條款。
- 檢查和訂單項目的交易 ID 以及成員 ID 連結的條款,
是否和 RMA 連結的條款相容(相同的條款)。
和 RMA 連結的條款,是根據 RMA 的交易 ID,以及現有的退貨訂單項目的成員 ID,
或 RMA 的成員 ID(如果所有退貨項目都是型錄項目)得出。
- 如果有指定 catEntryId(部份套件退回),則呼叫作業指令
ResolveSkuCmd 來解析型錄項目 ID 與項目規格 ID。
- 如果這是部份套件退回,則呼叫作業指令
CalculateReturnItemCreditForCatEntryCmd,
如果不是,則呼叫作業指令
CalculateReturnItemCreditCmd。
- 新增一個項目到 RMA 中,並將 RMA 項目分解成 RMA 項目元件。
如果這是一個套件,則從與訂單項目連結的 OICOMPLIST
表格建立元件記錄。不然的話,針對退貨項目建立一個元件。
- 如果種類登錄要新增到 RMA 中,會發生下列情況:
- 呼叫作業指令 ResolveSkuCmd 來解析型錄項目 ID 與項目規格 id。
- 退貨項目的貨幣會設為 RMA 的貨幣。
- 呼叫 CalculateReturnItemCreditForCatEntryCmd 作業指令,計算退款金額。
- 對於所有項目,都會呼叫作業指令 AutoApproveReturnItemCmd
來檢查項目是否可以自動核准。退貨項目狀態會根據自動核准,設為 'PND' 或 'APP'。
- 度量單位的處理方式類似於 OrderItemAdd 指令。含指定度量單位的數量會轉換成正常化的數量,這個數量是 CATENTSHIP 表格指定的名目數量的倍數。
- 若要退回不屬於動態套件一部份的元件,
或 OrderItem 的整個套件時,指令會取得 orderItemId_i
參數的值,並針對套件在 RMAITEM
表格中新增一個登錄,及在 RMAITEMCMP
表格中新增多個登錄,不然的話,就新增一個登錄至 RMAITEMCMP 表格中。
當套件的元件被加入 RMAITEMCMP 表格時,將不會記錄標示為選用的(OICOMPLIST
表格的 REQUIRED 直欄設為 'N')元件。
- 如果要退回的動態套件部份含有 OrderItem,指令會採用
orderItemId_i 參數以及 catEntryId_i 參數的值,並分別在
RMAITEM 表格以及 RMAITEMCMP 表格中各新增一個項目。
- 如果要傳回不是 OrderItem 的元件,指令會採取 caeEneIyd_i 的值,並新增一個項目到 RMAITEM 表格中,新增一個項目到 RMAITEMCMP 表格中。
- 屬於產品或項目的型錄項目才可以退回。
- 當順利完成時,設定為重新導向至指定的 URL。
- 呼叫作業指令 ExtendReturnItemAddCmd。
異常狀況
- 如果訂單項目的貨幣和 RMA 的貨幣不相同,即會產生 ECApplicationException,
其中包含訊息 _ERR_ITEM_RMA_CURRENCY_MISMATCH。
- 如果訂單項目不處於正確的狀態(由 CheckReturnItemInCorrectStateCmd
作業指令判斷),則會產生 ECApplicationException,其中包含訊息
_ERR_ORD_ITEM_NOT_RETURNABLE。
- 如果 RMA 狀態不是設定為 'PRC'(如果沒有使用 forUser 或 forUserId
參數),或沒有設定為 'EDT'、'PND'、'APP'(如果沒有使用 forUser 或
forUserId 參數),則會產生 ECApplicationException,其中包含訊息
_ERR_RMA_IN_INVALID_STATE_FOR_COMMAND。
- 如果訂單項目的交易 ID 和 RMA 的交易 ID 不相同,即會產生
ECApplicationException,其中包含訊息 _ERR_ITEM_RMA_TRADING_MISMATCH。
- 如果這個訂單項目沒有退貨條款存在,則會產生
ECApplicationException,其中包含訊息 _ERR_NO_RETURN_TERMCOND。
- 如果訂單項目的條款和 RMA 連結的條款不相同,即會產生
ECApplicationException,其中包含訊息 _ERR_ITEM_RMA_TERMS_MISMATCH。
