建立委外收貨單資料

outsourcing.purchase.stockin.create
POST JSON 同步

1. 基本資訊

項目說明
API 中文名稱建立委外收貨單資料(託外進貨單)
CROSS API Codeoutsourcing.purchase.stockin.create
MES taskNameoutsourcingPurchaseStockinCreate
ESB 路徑/outsourcingPurchaseStockinCreate
DSMS 參考api-2062 / vid-4462
呼叫方向MES → ERP
觸發條件TRANSTYPE = "59"
Request 格式JSON (Content-Type: application/json)
傳輸方式HTTP POST via ESB
同步/非同步同步呼叫

2. 業務流程

委外站出站 判斷 TRANSTYPE = "59" 組裝 JSON 呼叫 ERP via ESB 回寫 TL011/TL012 程式位置: TransOrderDataToJson.java:648
程式碼對應
  • 路由判斷: TransOrderDataToJson.java:648
  • JSON 組裝: SendFormSbyJson.transferFormToJson()
  • 欄位映射: SendFormElementbyJson.getTransferFormHead/Body()
  • HTTP 傳送: XmlToERP_handler.sendToErpByESB()

3. Request 規格

傳輸格式: JSON
Content-Type: application/json (HttpClient.java:25)

3.1 外層結構

欄位型別必填說明MES 來源
companyIDstringY公司別COMPANYID
userIdstringY操作人員CONFIRMER
doActionstringY2=移轉單DOACTION
docasestringY1=新增DOCASE
headobjectY表頭資料-
linearrayY表身明細-

3.2 表頭(head)

欄位型別必填說明MES 來源
transferTypestringY移轉單別(59=委外)→ ERP: doc_type_noTRANSTYPE
datestringY單據日期 YYYY-MM-DD → ERP: receipt_dateTRANSDATE
moveOutTypestringY移出類型OUTTYPE
moveOutCodestringY移出代碼 → ERP: supplier_noOUTDEPID
moveInTypestringY移入類型INTYPE
moveInCodestringY移入代碼(倉庫)INDEPID
factoryCodestringY廠別FACTORYID
remarkstringN備註 → ERP: remarkCOMMENT
createstringN操作人員 → ERP: operator_noCONFIRMER
eMESTransferTypestringYMES 單別TRANSTYPE
eMESTransferCodestringYMES 單號TRANSNO
source_nostringY來源單號(MES單別-單號)eMESTransferType + "-" + eMESTransferCode

3.3 表身(line)- 陣列

欄位型別必填說明MES 來源
moTypestringY工單類別 (組合為 ERP: wo_no)MOTYPE
moCodestringY工單號碼 (組合為 ERP: wo_no)MONO
moveOutOpSeqstringY移出製程序OUTOPSEQ
moveOutOpIdstringY移出製程 → ERP: op_no (Head)OUTOP
qtydecimalY數量 → ERP: qtyTRANSQTY
unitstringY單位 → ERP: unit_noUNIT
batchCodestringY批號 → ERP: lot_noLOTNO
prodCodestringY品號 → ERP: item_noITEMID
acceptanceQtydecimalN驗收數量 → ERP: receipt_qtyTL002
inspectionReturnQtydecimalN驗退數量 → ERP: return_qtyTL003
scrapQtydecimalN報廢數量 → ERP: scrap_qtySCRAPQTY
valuationQtydecimalN計價數量 → ERP: valuation_qtyVALUATIONQTY
moveInLocationstringN移入儲位 → ERP: storage_spaces_noINSTORAGESPACE
remarkstringN備註 → ERP: body_remarkNOTE
outSourceTypestringN託工單別OUTORDERTYPE
outSourceCodestringN託工單號OUTORDERNO

4. Response 規格

欄位型別說明
codeint200=成功,其他=失敗
msgstring處理結果訊息
TB001stringERP 單別 → 回寫 TL011
TB002stringERP 單號 → 回寫 TL012

5. 檢核規則

#檢核項目規則程式位置
1TRANSTYPE 判斷= "59" 才用委外 APITransOrderDataToJson.java:648
2TO013 檢查= 1 時才送 ERPTransOrderDataToJson.java:612
3明細資料存在SFT_TRANSORDER_LINE_GRID 不可空TransOrderDataToJson.java:609
4ERP 連線SFTConfig.isHasERP() = trueTransOrderDataToJson.java:646

6. 錯誤代碼

代碼訊息說明
E001必填欄位缺失Request 缺少必要欄位
E002委外工單不存在MOTYPE-MONO 錯誤
E003委外工單狀態不允許工單已結案或取消
E004數量必須大於零qty ≤ 0
E005數量超過餘量超過委外工單可入庫量
E999系統錯誤Timeout、連線異常

7. JSON 範例

Request (MES JSON)

{
  "companyID": "COMP01",
  "userId": "EMP001",
  "doAction": "2",
  "docase": "1",
  "head": {
    "transferType": "59",        // → ERP: doc_type_no
    "date": "2026-03-19",        // → ERP: receipt_date
    "moveOutType": "1",
    "moveOutCode": "OS001",      // → ERP: supplier_no
    "moveInType": "2",
    "moveInCode": "FG01",
    "factoryCode": "P001",
    "remark": "委外進貨",        // → ERP: remark
    "create": "EMP001",         // → ERP: operator_no
    "eMESTransferType": "59",
    "eMESTransferCode": "T20260319001"
  },
  "line": [{
    "moType": "5101",
    "moCode": "20260319001",
    "moveOutOpSeq": "0020",
    "moveOutOpId": "OS-OP",       // → ERP Head: op_no
    "qty": 100,                    // → ERP: qty
    "unit": "PCS",               // → ERP: unit_no
    "batchCode": "LOT20260319001", // → ERP: lot_no
    "prodCode": "FG-A001-001",   // → ERP: item_no
    "acceptanceQty": 98,         // → ERP: receipt_qty (驗收數量)
    "inspectionReturnQty": 1,   // → ERP: return_qty (驗退數量)
    "scrapQty": 1,               // → ERP: scrap_qty (報廢數量)
    "valuationQty": 98,          // → ERP: valuation_qty (計價數量)
    "moveInLocation": "A-01-01", // → ERP: storage_spaces_no
    "remark": "品質良好",         // → ERP: body_remark
    "outSourceType": "5902",
    "outSourceCode": "20260319001"
  }]
}

Response (成功)

{
  "code": 200,
  "msg": "委外進貨單建立成功",
  "TB001": "5902",
  "TB002": "20260319001"
}

Response (失敗)

{
  "code": 500,
  "msg": "委外工單不存在 5101-20260319999"
}