繁體中文 English Tiếng Việt ภาษาไทย

Tạo dữ liệu phiếu nhập kho hoàn công lệnh sản xuất

stockin.data.create
POST JSON Đồng bộ

1. Thông tin cơ bản

MụcMô tả
Tên API tiếng TrungTạo dữ liệu phiếu nhập kho hoàn công lệnh sản xuất
Tên API tiếng AnhWork Order Stock-In Data Create
CROSS API Codestockin.data.create
Dịch vụ ESB tương ứng/sendTransForm (thông thường) hoặc /outsourcingPurchaseStockinCreate (TRANSTYPE=59)
Hướng gọiMES → ERP
Thời điểm gọi1. 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ínhSau 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 RequestJSON (Content-Type: application/json)
Đồng bộ/Bất đồng bộGọi đồng bộ
Kiểm soát giao dịchCầ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

2. Quy trình nghiệp vụ

Hệ thống MES Hệ thống ERP 1. Xuất trạm cuối 2. Tổ hợp dữ liệu (TransOrderDataToJson) 4. Ghi lại TL011/TL012 3a. Kiểm tra lệnh SX (Số lượng/Trạng thái) 3b. Tạo phiếu nhập kho (TB001/TB002) 3c. Cập nhật tồn kho (Tăng thành phẩm) Vị trí chương trình: TransOrderDataToJson.java:648 → SendFormSbyJson → XmlToERP_handler
Tương ứng mã nguồn
  • Định tuyến: TransOrderDataToJson.java:648
  • Tổ hợp JSON: SendFormSbyJson.transferFormToJson()
  • Ánh xạ trường: SendFormElementbyJson.getTransferFormHead/Body()
  • Truyền HTTP: XmlToERP_handler.sendToErpByESB()

Logic phán đoán loại nhập kho

TRANSTYPE = 59 ? Phiếu nhập hàng gia công outsourcingPurchaseStockinCreate Phiếu điều chuyển/Nhập kho thông thường generateTransferForm / sendTransForm Không

3. Quy cách Request

Định dạng truyền tải: JSON
Content-Type: application/json (HttpClient.java:25)

3.1 Cấu trúc ngoài

TrườngLoạiBắt buộcMô tảNguồn MES
companyIDstringYMã công tyCOMPANYID
userIdstringYNhân viên thao tácCONFIRMER
doActionstringY2=Phiếu điều chuyểnDOACTION
docasestringY1=Thêm mới, 2=Sửa, 3=XóaDOCASE
headobjectYDữ liệu header-
linearrayYChi tiết-

3.2 Header (head) - getTransferFormHead()

TrườngLoạiĐộ dàiBắt buộcMô tảNguồn MES
transferTypestring10YLoại phiếu điều chuyểnTRANSTYPE
transferCodestring30NSố phiếu điều chuyển (cần khi sửa)TO008
datestring10YNgày chứng từ YYYY-MM-DDTRANSDATE
moveOutTypestring2YLoại xuất (1=Trạm làm việc, 2=Kho, 3=Phòng ban)OUTTYPE
moveOutCodestring20YMã xuấtOUTDEPID
moveOutNamestring50NTên xuấtOUTDEPNAME
moveInTypestring2YLoại nhậpINTYPE
moveInCodestring20YMã nhập (Kho)INDEPID
moveInNamestring50NTên nhậpINDEPNAME
factoryCodestring10YMã nhà máyFACTORYID
confirmationCodestring20NMã xác nhậnCONFIRMCODE
remarkstring255NGhi chúCOMMENT
orderDatestring10NNgày đơn hàngDOCUMENTDATE
eMESTransferTypestring10YLoại MESTRANSTYPE
eMESTransferCodestring30YSố MESTRANSNO
source_nostring50YSố nguồn (Loại MES-Số)eMESTransferType + "-" + eMESTransferCode
operator_nostring20NNhân viên thao táccreate (CONFIRMER)

3.3 Chi tiết (line) - getTransferFormBody() - Mảng

TrườngLoạiBắt buộcMô tảNguồn MES
moTypestringYLoại lệnh sản xuấtMOTYPE
moCodestringYSố lệnh sản xuấtMONO
moveOutOpSeqstringYSố thứ tự công đoạn xuấtOUTOPSEQ
moveOutOpIdstringYCông đoạn xuấtOUTOP
moveInOpSeqstringNSố thứ tự công đoạn nhậpINOPSEQ
moveInOpIdstringNCông đoạn nhậpINOP
qtydecimalYSố lượngTRANSQTY
unitstringYĐơn vịUNIT
batchCodestringYSố lôLOTNO
statestringYTrạng thái (PATTERN)PATTERN
prodCodestringYMã sản phẩmITEMID
prodNamestringNTên sản phẩmITEMNAME
prodSpecstringNQuy cáchITEMDESCRIPTION
acceptanceQtydecimalNSố lượng nghiệm thuTL002
scrapQtydecimalNSố lượng phế phẩmSCRAPQTY
inspectionReturnQtydecimalNSố lượng trả kiểmTL003
moveInCodestringNPhòng ban nhậpINDEP
moveInLocationstringNVị trí nhậpINSTORAGESPACE
useTimedecimalNGiờ côngLABORHOUR
useMachineTimedecimalNGiờ máyMACHINEHOUR
remarkstringNGhi chúNOTE
manufactureDualUnitstringNĐơn vị kép sản xuấtTWINUNIT
hasQtystringNTrạng thái nhập kho (stock_in_status)HASQTY

4. Quy cách Response

TrườngLoạiMô tả
codeint200=Thành công, khác=Thất bại
msgstringThông báo kết quả xử lý
TB001stringLoại ERP → Ghi vào TL011
TB002stringSố ERP → Ghi vào TL012

Kết quả xử lý nội bộ MES

TrườngMô tả
ISOKtrue=Thành công, false=Thất bại
MsgThông báo xử lý
TB001Ghi vào TL011
TB002Ghi vào TL012

5. Quy tắc kiểm tra

#Mục kiểm traQuy tắcVị trí chương trình
1Tồn tại dữ liệu chi tiếtSFT_TRANSORDER_LINE_GRID không được rỗngTransOrderDataToJson.java:609
2Kiểm tra TO013= 1 mới gửi generateTransferFormTransOrderDataToJson.java:612
3Kết nối ERPSFTConfig.isHasERP() = trueTransOrderDataToJson.java:646
4Phán đoán TRANSTYPE59=Nhập hàng gia công, khác=Điều chuyển thông thườngTransOrderDataToJson.java:648
5Kiểm tra hoàn công lệnh SXcanUpdateERP_TA_OP_Status100() = trueTransOrderDataToJson.java:637

6. Mã lỗi

Thông báoMô tả
E001Thiếu trường bắt buộcRequest thiếu trường cần thiết
E002Lệnh sản xuất không tồn tạiMOTYPE-MONO sai
E003Trạng thái lệnh SX không cho phépLệnh SX đã đóng hoặc hủy
E004Số lượng phải lớn hơn 0qty ≤ 0
E005Số lượng vượt quá số dưVượt quá số lượng có thể nhập kho của lệnh SX
E006Kho không tồn tạimoveInCode không hợp lệ
E999Lỗi hệ thốngTimeout, lỗi kết nối
Return result parsing error!Phân tích kết quả trả về thất bạiXmlToERP_handler.java:117

7. Ví dụ JSON

Request (MES JSON)

{
  "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": ""
  }]
}

Response (Thành công)

{
  "code": 200,
  "msg": "Tạo phiếu nhập kho thành công",
  "TB001": "5101",
  "TB002": "20260319001"
}

Response (Thất bại)

{
  "code": 500,
  "msg": "Lệnh sản xuất không tồn tại 5101-20260319999"
}