| 項目 | 說明 |
|---|---|
| API 中文名稱 | 建立委外收貨單資料(託外進貨單) |
| CROSS API Code | outsourcing.purchase.stockin.create |
| MES taskName | outsourcingPurchaseStockinCreate |
| ESB 路徑 | /outsourcingPurchaseStockinCreate |
| DSMS 參考 | api-2062 / vid-4462 |
| 呼叫方向 | MES → ERP |
| 觸發條件 | TRANSTYPE = "59" |
| Request 格式 | JSON (Content-Type: application/json) |
| 傳輸方式 | HTTP POST via ESB |
| 同步/非同步 | 同步呼叫 |
TransOrderDataToJson.java:648SendFormSbyJson.transferFormToJson()SendFormElementbyJson.getTransferFormHead/Body()XmlToERP_handler.sendToErpByESB()Content-Type: application/json (HttpClient.java:25)
| 欄位 | 型別 | 必填 | 說明 | MES 來源 |
|---|---|---|---|---|
| companyID | string | Y | 公司別 | COMPANYID |
| userId | string | Y | 操作人員 | CONFIRMER |
| doAction | string | Y | 2=移轉單 | DOACTION |
| docase | string | Y | 1=新增 | DOCASE |
| head | object | Y | 表頭資料 | - |
| line | array | Y | 表身明細 | - |
| 欄位 | 型別 | 必填 | 說明 | MES 來源 |
|---|---|---|---|---|
| transferType | string | Y | 移轉單別(59=委外)→ ERP: doc_type_no | TRANSTYPE |
| date | string | Y | 單據日期 YYYY-MM-DD → ERP: receipt_date | TRANSDATE |
| moveOutType | string | Y | 移出類型 | OUTTYPE |
| moveOutCode | string | Y | 移出代碼 → ERP: supplier_no | OUTDEPID |
| moveInType | string | Y | 移入類型 | INTYPE |
| moveInCode | string | Y | 移入代碼(倉庫) | INDEPID |
| factoryCode | string | Y | 廠別 | FACTORYID |
| remark | string | N | 備註 → ERP: remark | COMMENT |
| create | string | N | 操作人員 → ERP: operator_no | CONFIRMER |
| eMESTransferType | string | Y | MES 單別 | TRANSTYPE |
| eMESTransferCode | string | Y | MES 單號 | TRANSNO |
| source_no | string | Y | 來源單號(MES單別-單號) | eMESTransferType + "-" + eMESTransferCode |
| 欄位 | 型別 | 必填 | 說明 | MES 來源 |
|---|---|---|---|---|
| moType | string | Y | 工單類別 (組合為 ERP: wo_no) | MOTYPE |
| moCode | string | Y | 工單號碼 (組合為 ERP: wo_no) | MONO |
| moveOutOpSeq | string | Y | 移出製程序 | OUTOPSEQ |
| moveOutOpId | string | Y | 移出製程 → ERP: op_no (Head) | OUTOP |
| qty | decimal | Y | 數量 → ERP: qty | TRANSQTY |
| unit | string | Y | 單位 → ERP: unit_no | UNIT |
| batchCode | string | Y | 批號 → ERP: lot_no | LOTNO |
| prodCode | string | Y | 品號 → ERP: item_no | ITEMID |
| acceptanceQty | decimal | N | 驗收數量 → ERP: receipt_qty | TL002 |
| inspectionReturnQty | decimal | N | 驗退數量 → ERP: return_qty | TL003 |
| scrapQty | decimal | N | 報廢數量 → ERP: scrap_qty | SCRAPQTY |
| valuationQty | decimal | N | 計價數量 → ERP: valuation_qty | VALUATIONQTY |
| moveInLocation | string | N | 移入儲位 → ERP: storage_spaces_no | INSTORAGESPACE |
| remark | string | N | 備註 → ERP: body_remark | NOTE |
| outSourceType | string | N | 託工單別 | OUTORDERTYPE |
| outSourceCode | string | N | 託工單號 | OUTORDERNO |
| 欄位 | 型別 | 說明 |
|---|---|---|
| code | int | 200=成功,其他=失敗 |
| msg | string | 處理結果訊息 |
| TB001 | string | ERP 單別 → 回寫 TL011 |
| TB002 | string | ERP 單號 → 回寫 TL012 |
| # | 檢核項目 | 規則 | 程式位置 |
|---|---|---|---|
| 1 | TRANSTYPE 判斷 | = "59" 才用委外 API | TransOrderDataToJson.java:648 |
| 2 | TO013 檢查 | = 1 時才送 ERP | TransOrderDataToJson.java:612 |
| 3 | 明細資料存在 | SFT_TRANSORDER_LINE_GRID 不可空 | TransOrderDataToJson.java:609 |
| 4 | ERP 連線 | SFTConfig.isHasERP() = true | TransOrderDataToJson.java:646 |
| 代碼 | 訊息 | 說明 |
|---|---|---|
| E001 | 必填欄位缺失 | Request 缺少必要欄位 |
| E002 | 委外工單不存在 | MOTYPE-MONO 錯誤 |
| E003 | 委外工單狀態不允許 | 工單已結案或取消 |
| E004 | 數量必須大於零 | qty ≤ 0 |
| E005 | 數量超過餘量 | 超過委外工單可入庫量 |
| E999 | 系統錯誤 | Timeout、連線異常 |
{
"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"
}]
}
{
"code": 200,
"msg": "委外進貨單建立成功",
"TB001": "5902",
"TB002": "20260319001"
}
{
"code": 500,
"msg": "委外工單不存在 5101-20260319999"
}