เวลาที่ทริกเกอร์
CheckOut
การ CheckOut
กรอกจำนวนสินค้าเสีย
SCRAPQTY
> 0 ?
ใช่
สร้างใบโอนสินค้าเสีย
TRANSORDERTYPE=58
SftTransorderLine
ส่งไปยัง ERP
wo.scrap.data
.create
บันทึกหมายเลข
TL011/TL012
ไม่ใช่ → ข้ามการรับสินค้าเสีย
เงื่อนไขการตัดสินใจสำคัญ:
เฉพาะเมื่อ CheckOut มี SCRAPQTY > 0 (จำนวนสินค้าเสียมากกว่าศูนย์)
ระบบจึงจะสร้างใบโอน TRANSORDERTYPE=58 และเรียก ERP API รับสินค้าเสียเข้าคลัง
ตำแหน่งทริกเกอร์
หลังจาก CheckOut เสร็จสิ้น เมธอด TransOrderDataToJson.sentTransOrderDataAgain()
จะตรวจสอบประเภทใบโอน ถ้าเป็นรับสินค้าเสียจะเรียก woScrapDataCreate
ตัวอย่างคำขอ
รูปแบบ JSON ภายใน MES
{
"head": {
"transferType": "58",
"eMESTransferType": "SC",
"eMESTransferCode": "20260319001",
"date": "2026-03-19",
"moveOutCode": "WS001",
"factoryCode": "FACTORY01",
"create": "USER001",
"remark": "รับสินค้าเสียเข้าคลัง"
},
"line": [
{
"moType": "5101",
"moCode": "20260319001",
"prodCode": "ITEM-001",
"qty": "5",
"unit": "PCS",
"moveInCode": "WH-SCRAP",
"moveInLocation": "A01",
"batchCode": "BAT001",
"remark": "ข้อบกพร่องผิวหน้า"
}
]
}
รูปแบบ ERP XML (WFERP) - SendFormS.java:1773-1804
<parameters>
<parameter key="enterprise_no" type="string">รหัสบริษัท</parameter>
<parameter key="site_no" type="string">รหัสโรงงาน</parameter>
<parameter key="wo_scrap_data" type="data">
<data name="wo_scrap">
<row seq="1">
<!-- ======== Head ======== -->
<field name="doc_type_no" type="string">58</field>
<field name="source_no" type="string">SC-20260319001</field>
<field name="create_date" type="date">2026-03-19</field>
<field name="remark" type="string">รับสินค้าเสียเข้าคลัง</field>
<field name="workstation_no" type="string">WS001</field>
<field name="factory_no" type="string">FACTORY01</field>
<field name="shift_no" type="string"></field>
<field name="operator_no" type="string">USER001</field>
<!-- ======== Line ======== -->
<detail name="wo_scrap_detail">
<row>
<field name="seq" type="string"></field>
<field name="wo_no" type="string">5101-20260319001</field>
<field name="item_no" type="string">ITEM-001</field>
<field name="scrap_qty" type="numeric">5</field>
<field name="unit_no" type="string">PCS</field>
<field name="remark" type="string">ข้อบกพร่องผิวหน้า</field>
<field name="machine_no" type="string"></field>
<field name="warehouse_no" type="string">WH-SCRAP</field>
<field name="location_no" type="string">A01</field>
<field name="lot_no" type="string">BAT001</field>
<field name="damage_qty" type="numeric"></field>
<field name="stock_in_status" type="string"></field>
</row>
</detail>
</row>
</data>
</parameter>
</parameters>
ตรรกะการบันทึกกลับ ERP
หลังจาก ERP ส่งหมายเลขใบรับสินค้าเสียกลับมา MES จะบันทึกหมายเลขลงในรายละเอียดใบโอน:
ERP ส่งกลับ
doc_no
58-20260319001
แยกหมายเลข
TL011=58
TL012=20260319001
SFT_TRANSORDER_LINE
TL011 = 58
TL012 = 20260319001
TRANSORDERTYPE = 58
SQL สำหรับบันทึกกลับ
-- อัปเดต SFT_TRANSORDER_LINE
UPDATE SFT_TRANSORDER_LINE
SET TL011 = '58',
TL012 = '20260319001'
WHERE TRANSORDERTYPE = '58'
AND TRANSNO = :TRANSNO
AND SN = :SN
การจัดการข้อผิดพลาด
สถานการณ์ข้อผิดพลาด
สาเหตุ
วิธีจัดการ
ไม่พบรหัสคลังสินค้า
ไม่มีคลังสินค้านี้ในระบบ ERP
ตรวจสอบว่าคลังสินค้าเสียได้สร้างใน ERP แล้ว
ไม่พบรหัสสินค้า
ไม่มีรหัสสินค้านี้ในระบบ ERP
ตรวจสอบว่ารหัสสินค้าได้ซิงค์กับ ERP แล้ว
การเชื่อมต่อหมดเวลา
SocketTimeoutException
ตรวจสอบสถานะเซิร์ฟเวอร์ ERP ต้องส่งใหม่ด้วยตนเอง
บันทึก LOG
// ไฟล์ log: logs/ERPReturnErrorRec.log
[ERP_SEND_ERROR] taskName=woScrapDataCreate, errorType=SocketTimeoutException, errorMsg=Read timed out
[ERP_SEND_ERROR] เนื้อหาที่ส่ง={...JSON...}