| Mục | Mô tả |
|---|---|
| Tên API tiếng Trung | Tạo dữ liệu phiếu nhập kho hoàn công lệnh sản xuất |
| Tên API tiếng Anh | Work Order Stock-In Data Create |
| CROSS API Code | stockin.data.create |
| Dịch vụ ESB tương ứng | /sendTransForm (thông thường) hoặc /outsourcingPurchaseStockinCreate (TRANSTYPE=59) |
| Hướng gọi | MES → ERP |
| Thời điểm gọi | 1. Khi xuất trạm cuối cùng hoàn thành 2. Khi thực hiện nhập kho hoàn công hàng loạt 3. Khi kích hoạt nhập kho thủ công |
| Kịch bản nghiệp vụ chính | Sau khi sản xuất hoàn thành, nhập thành phẩm vào kho ERP được chỉ định, cập nhật số lượng tồn kho và trạng thái lệnh sản xuất trên ERP |
| Định dạng Request | JSON (Content-Type: application/json) |
| Đồng bộ/Bất đồng bộ | Gọi đồng bộ |
| Kiểm soát giao dịch | Cần thiết (MES và ERP cần đảm bảo tính nhất quán dữ liệu) |
| Ghi chú | TB001/TB002 trả về là loại/số chứng từ do ERP tạo, cần ghi lại vào TL011/TL012 |
TransOrderDataToJson.java:648SendFormSbyJson.transferFormToJson()SendFormElementbyJson.getTransferFormHead/Body()XmlToERP_handler.sendToErpByESB()Content-Type: application/json (HttpClient.java:25)
| Trường | Loại | Bắt buộc | Mô tả | Nguồn MES |
|---|---|---|---|---|
| companyID | string | Y | Mã công ty | COMPANYID |
| userId | string | Y | Nhân viên thao tác | CONFIRMER |
| doAction | string | Y | 2=Phiếu điều chuyển | DOACTION |
| docase | string | Y | 1=Thêm mới, 2=Sửa, 3=Xóa | DOCASE |
| head | object | Y | Dữ liệu header | - |
| line | array | Y | Chi tiết | - |
| Trường | Loại | Độ dài | Bắt buộc | Mô tả | Nguồn MES |
|---|---|---|---|---|---|
| transferType | string | 10 | Y | Loại phiếu điều chuyển | TRANSTYPE |
| transferCode | string | 30 | N | Số phiếu điều chuyển (cần khi sửa) | TO008 |
| date | string | 10 | Y | Ngày chứng từ YYYY-MM-DD | TRANSDATE |
| moveOutType | string | 2 | Y | Loại xuất (1=Trạm làm việc, 2=Kho, 3=Phòng ban) | OUTTYPE |
| moveOutCode | string | 20 | Y | Mã xuất | OUTDEPID |
| moveOutName | string | 50 | N | Tên xuất | OUTDEPNAME |
| moveInType | string | 2 | Y | Loại nhập | INTYPE |
| moveInCode | string | 20 | Y | Mã nhập (Kho) | INDEPID |
| moveInName | string | 50 | N | Tên nhập | INDEPNAME |
| factoryCode | string | 10 | Y | Mã nhà máy | FACTORYID |
| confirmationCode | string | 20 | N | Mã xác nhận | CONFIRMCODE |
| remark | string | 255 | N | Ghi chú | COMMENT |
| orderDate | string | 10 | N | Ngày đơn hàng | DOCUMENTDATE |
| eMESTransferType | string | 10 | Y | Loại MES | TRANSTYPE |
| eMESTransferCode | string | 30 | Y | Số MES | TRANSNO |
| source_no | string | 50 | Y | Số nguồn (Loại MES-Số) | eMESTransferType + "-" + eMESTransferCode |
| operator_no | string | 20 | N | Nhân viên thao tác | create (CONFIRMER) |
| Trường | Loại | Bắt buộc | Mô tả | Nguồn MES |
|---|---|---|---|---|
| moType | string | Y | Loại lệnh sản xuất | MOTYPE |
| moCode | string | Y | Số lệnh sản xuất | MONO |
| moveOutOpSeq | string | Y | Số thứ tự công đoạn xuất | OUTOPSEQ |
| moveOutOpId | string | Y | Công đoạn xuất | OUTOP |
| moveInOpSeq | string | N | Số thứ tự công đoạn nhập | INOPSEQ |
| moveInOpId | string | N | Công đoạn nhập | INOP |
| qty | decimal | Y | Số lượng | TRANSQTY |
| unit | string | Y | Đơn vị | UNIT |
| batchCode | string | Y | Số lô | LOTNO |
| state | string | Y | Trạng thái (PATTERN) | PATTERN |
| prodCode | string | Y | Mã sản phẩm | ITEMID |
| prodName | string | N | Tên sản phẩm | ITEMNAME |
| prodSpec | string | N | Quy cách | ITEMDESCRIPTION |
| acceptanceQty | decimal | N | Số lượng nghiệm thu | TL002 |
| scrapQty | decimal | N | Số lượng phế phẩm | SCRAPQTY |
| inspectionReturnQty | decimal | N | Số lượng trả kiểm | TL003 |
| moveInCode | string | N | Phòng ban nhập | INDEP |
| moveInLocation | string | N | Vị trí nhập | INSTORAGESPACE |
| useTime | decimal | N | Giờ công | LABORHOUR |
| useMachineTime | decimal | N | Giờ máy | MACHINEHOUR |
| remark | string | N | Ghi chú | NOTE |
| manufactureDualUnit | string | N | Đơn vị kép sản xuất | TWINUNIT |
| hasQty | string | N | Trạng thái nhập kho (stock_in_status) | HASQTY |
| Trường | Loại | Mô tả |
|---|---|---|
| code | int | 200=Thành công, khác=Thất bại |
| msg | string | Thông báo kết quả xử lý |
| TB001 | string | Loại ERP → Ghi vào TL011 |
| TB002 | string | Số ERP → Ghi vào TL012 |
| Trường | Mô tả |
|---|---|
| ISOK | true=Thành công, false=Thất bại |
| Msg | Thông báo xử lý |
| TB001 | Ghi vào TL011 |
| TB002 | Ghi vào TL012 |
| # | Mục kiểm tra | Quy tắc | Vị trí chương trình |
|---|---|---|---|
| 1 | Tồn tại dữ liệu chi tiết | SFT_TRANSORDER_LINE_GRID không được rỗng | TransOrderDataToJson.java:609 |
| 2 | Kiểm tra TO013 | = 1 mới gửi generateTransferForm | TransOrderDataToJson.java:612 |
| 3 | Kết nối ERP | SFTConfig.isHasERP() = true | TransOrderDataToJson.java:646 |
| 4 | Phán đoán TRANSTYPE | 59=Nhập hàng gia công, khác=Điều chuyển thông thường | TransOrderDataToJson.java:648 |
| 5 | Kiểm tra hoàn công lệnh SX | canUpdateERP_TA_OP_Status100() = true | TransOrderDataToJson.java:637 |
| Mã | Thông báo | Mô tả |
|---|---|---|
| E001 | Thiếu trường bắt buộc | Request thiếu trường cần thiết |
| E002 | Lệnh sản xuất không tồn tại | MOTYPE-MONO sai |
| E003 | Trạng thái lệnh SX không cho phép | Lệnh SX đã đóng hoặc hủy |
| E004 | Số lượng phải lớn hơn 0 | qty ≤ 0 |
| E005 | Số lượng vượt quá số dư | Vượt quá số lượng có thể nhập kho của lệnh SX |
| E006 | Kho không tồn tại | moveInCode không hợp lệ |
| E999 | Lỗi hệ thống | Timeout, lỗi kết nối |
| Return result parsing error! | Phân tích kết quả trả về thất bại | XmlToERP_handler.java:117 |
{
"companyID": "COMP01",
"userId": "EMP001",
"doAction": "2", // 2=Phiếu điều chuyển
"docase": "1", // 1=Thêm mới
"head": {
"transferType": "51",
"date": "2026-03-19",
"moveOutType": "1",
"moveOutCode": "WS001",
"moveOutName": "Trạm lắp ráp",
"moveInType": "2",
"moveInCode": "FG01",
"moveInName": "Kho thành phẩm",
"factoryCode": "P001",
"remark": "Nhập kho hoàn công bình thường",
"create": "EMP001", // → ERP: operator_no
"eMESTransferType": "51",
"eMESTransferCode": "T20260319001"
},
"line": [{
"moType": "5101",
"moCode": "20260319001",
"moveOutOpSeq": "0030",
"moveOutOpId": "OP030",
"qty": 100,
"unit": "PCS",
"batchCode": "LOT20260319001",
"state": "1",
"prodCode": "FG-A001-001",
"prodName": "Thành phẩm A",
"moveInCode": "FG01",
"moveInLocation": "A-01-01",
"hasQty": "1", // → ERP: stock_in_status
"remark": ""
}]
}
{
"code": 200,
"msg": "Tạo phiếu nhập kho thành công",
"TB001": "5101",
"TB002": "20260319001"
}
{
"code": 500,
"msg": "Lệnh sản xuất không tồn tại 5101-20260319999"
}