สร้างข้อมูลใบรับเข้าคลังสินค้าสำเร็จ

stockin.data.create
POST JSON ซิงโครนัส

1. ข้อมูลพื้นฐาน

รายการคำอธิบาย
ชื่อ API ภาษาไทยสร้างข้อมูลใบรับเข้าคลังสินค้าสำเร็จ
ชื่อ API ภาษาอังกฤษWork Order Stock-In Data Create
รหัส CROSS APIstockin.data.create
บริการ ESB ที่เกี่ยวข้อง/sendTransForm (ทั่วไป) หรือ /outsourcingPurchaseStockinCreate (TRANSTYPE=59)
ทิศทางการเรียกMES → ERP
เวลาที่เรียก1. เมื่อ CheckOut สถานีสุดท้ายของใบสั่งผลิตเสร็จสิ้น
2. เมื่อดำเนินการรับเข้าคลังแบบชุด
3. เมื่อทริกเกอร์รับเข้าคลังด้วยตนเอง
สถานการณ์ธุรกิจหลักหลังการผลิตเสร็จสิ้น รับสินค้าสำเร็จเข้าคลังสินค้าที่กำหนดใน ERP อัปเดตจำนวนสต็อกและสถานะใบสั่งผลิตใน ERP
รูปแบบ RequestJSON (Content-Type: application/json)
ซิงโครนัส/อะซิงโครนัสเรียกแบบซิงโครนัส
การควบคุมธุรกรรมจำเป็น (MES และ ERP ต้องรักษาความสอดคล้องของข้อมูล)
หมายเหตุTB001/TB002 ที่ส่งกลับคือประเภท/หมายเลขเอกสารที่ ERP สร้าง ต้องบันทึกลงใน TL011/TL012

2. กระบวนการทางธุรกิจ

ระบบ MES ระบบ ERP 1. CheckOut สุดท้าย 2. ประกอบข้อมูล (TransOrderDataToJson) 4. บันทึกกลับ TL011/TL012 3a. ตรวจสอบใบสั่งผลิต (จำนวน/สถานะ) 3b. สร้างใบรับเข้า (TB001/TB002) 3c. อัปเดตสต็อก (เพิ่มสินค้าสำเร็จ) ตำแหน่งโปรแกรม: TransOrderDataToJson.java:648 → SendFormSbyJson → XmlToERP_handler
การเชื่อมโยงโค้ด
  • การตัดสินใจเส้นทาง: TransOrderDataToJson.java:648
  • การประกอบ JSON: SendFormSbyJson.transferFormToJson()
  • การแมปฟิลด์: SendFormElementbyJson.getTransferFormHead/Body()
  • การส่ง HTTP: XmlToERP_handler.sendToErpByESB()

ตรรกะการตัดสินใจประเภทการรับเข้า

TRANSTYPE = 59 ? ใบรับสินค้าจ้างผลิต outsourcingPurchaseStockinCreate ใช่ ใบโอน/ใบรับเข้าทั่วไป generateTransferForm / sendTransForm ไม่ใช่

3. ข้อกำหนด Request

รูปแบบการส่ง: JSON
Content-Type: application/json (HttpClient.java:25)

3.1 โครงสร้างชั้นนอก

ฟิลด์ประเภทจำเป็นคำอธิบายแหล่ง MES
companyIDstringYรหัสบริษัทCOMPANYID
userIdstringYพนักงานผู้ดำเนินการCONFIRMER
doActionstringY2=ใบโอนDOACTION
docasestringY1=เพิ่ม, 2=แก้ไข, 3=ลบDOCASE
headobjectYข้อมูลส่วนหัว-
linearrayYรายละเอียดรายการ-

3.2 ส่วนหัว (head) - getTransferFormHead()

ฟิลด์ประเภทความยาวจำเป็นคำอธิบายแหล่ง MES
transferTypestring10YประเภทใบโอนTRANSTYPE
transferCodestring30Nหมายเลขใบโอน (ต้องระบุเมื่อแก้ไข)TO008
datestring10Yวันที่เอกสาร YYYY-MM-DDTRANSDATE
moveOutTypestring2Yประเภทการย้ายออก (1=สถานีงาน, 2=คลังสินค้า, 3=แผนก)OUTTYPE
moveOutCodestring20Yรหัสย้ายออกOUTDEPID
moveOutNamestring50Nชื่อย้ายออกOUTDEPNAME
moveInTypestring2Yประเภทการย้ายเข้าINTYPE
moveInCodestring20Yรหัสย้ายเข้า (คลังสินค้า)INDEPID
moveInNamestring50Nชื่อย้ายเข้าINDEPNAME
factoryCodestring10YรหัสโรงงานFACTORYID
confirmationCodestring20NรหัสยืนยันCONFIRMCODE
remarkstring255NหมายเหตุCOMMENT
orderDatestring10Nวันที่สั่งซื้อDOCUMENTDATE
eMESTransferTypestring10Yประเภทใบ MESTRANSTYPE
eMESTransferCodestring30Yหมายเลขใบ MESTRANSNO
source_nostring50Yหมายเลขต้นทาง (ประเภท MES-หมายเลข)eMESTransferType + "-" + eMESTransferCode
operator_nostring20Nพนักงานผู้ดำเนินการcreate (CONFIRMER)

3.3 รายละเอียด (line) - getTransferFormBody() - อาร์เรย์

ฟิลด์ประเภทจำเป็นคำอธิบายแหล่ง MES
moTypestringYประเภทใบสั่งผลิตMOTYPE
moCodestringYหมายเลขใบสั่งผลิตMONO
moveOutOpSeqstringYลำดับขั้นตอนย้ายออกOUTOPSEQ
moveOutOpIdstringYขั้นตอนย้ายออกOUTOP
moveInOpSeqstringNลำดับขั้นตอนย้ายเข้าINOPSEQ
moveInOpIdstringNขั้นตอนย้ายเข้าINOP
qtydecimalYจำนวนTRANSQTY
unitstringYหน่วยUNIT
batchCodestringYหมายเลขล็อตLOTNO
statestringYสถานะ (PATTERN)PATTERN
prodCodestringYรหัสสินค้าITEMID
prodNamestringNชื่อสินค้าITEMNAME
prodSpecstringNข้อกำหนดสินค้าITEMDESCRIPTION
acceptanceQtydecimalNจำนวนที่รับTL002
scrapQtydecimalNจำนวนเสียSCRAPQTY
inspectionReturnQtydecimalNจำนวนคืนตรวจสอบTL003
moveInCodestringNแผนกย้ายเข้าINDEP
moveInLocationstringNตำแหน่งจัดเก็บINSTORAGESPACE
useTimedecimalNเวลาแรงงานLABORHOUR
useMachineTimedecimalNเวลาเครื่องจักรMACHINEHOUR
remarkstringNหมายเหตุNOTE
manufactureDualUnitstringNหน่วยคู่การผลิตTWINUNIT
hasQtystringNสถานะการรับเข้า (stock_in_status)HASQTY

4. ข้อกำหนด Response

ฟิลด์ประเภทคำอธิบาย
codeint200=สำเร็จ, อื่นๆ=ล้มเหลว
msgstringข้อความผลลัพธ์
TB001stringประเภทใบ ERP → บันทึกลง TL011
TB002stringหมายเลขใบ ERP → บันทึกลง TL012

ผลลัพธ์การประมวลผลภายใน MES

ฟิลด์คำอธิบาย
ISOKtrue=สำเร็จ, false=ล้มเหลว
Msgข้อความประมวลผล
TB001บันทึกลง TL011
TB002บันทึกลง TL012

5. กฎการตรวจสอบ

#รายการตรวจสอบกฎตำแหน่งโปรแกรม
1มีข้อมูลรายละเอียดSFT_TRANSORDER_LINE_GRID ต้องไม่ว่างTransOrderDataToJson.java:609
2ตรวจสอบ TO013= 1 ถึงจะส่ง generateTransferFormTransOrderDataToJson.java:612
3การเชื่อมต่อ ERPSFTConfig.isHasERP() = trueTransOrderDataToJson.java:646
4ตรวจสอบ TRANSTYPE59=รับสินค้าจ้างผลิต, อื่นๆ=ใบโอนทั่วไปTransOrderDataToJson.java:648
5ตรวจสอบการเสร็จสิ้นใบสั่งผลิตcanUpdateERP_TA_OP_Status100() = trueTransOrderDataToJson.java:637

6. รหัสข้อผิดพลาด

รหัสข้อความคำอธิบาย
E001ขาดฟิลด์ที่จำเป็นRequest ขาดฟิลด์ที่จำเป็น
E002ไม่พบใบสั่งผลิตMOTYPE-MONO ไม่ถูกต้อง
E003สถานะใบสั่งผลิตไม่อนุญาตใบสั่งผลิตถูกปิดหรือยกเลิกแล้ว
E004จำนวนต้องมากกว่าศูนย์qty ≤ 0
E005จำนวนเกินยอดคงเหลือเกินจำนวนที่สามารถรับเข้าได้
E006ไม่พบคลังสินค้าmoveInCode ไม่ถูกต้อง
E999ข้อผิดพลาดระบบTimeout, ข้อผิดพลาดการเชื่อมต่อ
Return result parsing error!แยกวิเคราะห์ผลลัพธ์ล้มเหลวXmlToERP_handler.java:117

7. ตัวอย่าง JSON

Request (MES JSON)

{
  "companyID": "COMP01",
  "userId": "EMP001",
  "doAction": "2",           // 2=ใบโอน
  "docase": "1",              // 1=เพิ่ม
  "head": {
    "transferType": "51",
    "date": "2026-03-19",
    "moveOutType": "1",
    "moveOutCode": "WS001",
    "moveOutName": "สถานีประกอบ",
    "moveInType": "2",
    "moveInCode": "FG01",
    "moveInName": "คลังสินค้าสำเร็จรูป",
    "factoryCode": "P001",
    "remark": "รับเข้าคลังปกติ",
    "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": "สินค้าสำเร็จรูป A",
    "moveInCode": "FG01",
    "moveInLocation": "A-01-01",
    "hasQty": "1",           // → ERP: stock_in_status
    "remark": ""
  }]
}

Response (สำเร็จ)

{
  "code": 200,
  "msg": "สร้างใบรับเข้าคลังสำเร็จ",
  "TB001": "5101",
  "TB002": "20260319001"
}

Response (ล้มเหลว)

{
  "code": 500,
  "msg": "ไม่พบใบสั่งผลิต 5101-20260319999"
}