← กลับไปรายการ API

สร้างใบรับสินค้าเสีย

POST MES → ERP
wo.scrap.data.create

เมื่อ CheckOut ใบสั่งผลิตมีจำนวนสินค้าเสีย ระบบจะส่งข้อมูลรับสินค้าเสียไป ERP เพื่อสร้างใบรับสินค้าเสียเข้าคลัง หลังจาก ERP ส่งหมายเลขใบรับเข้ากลับมา MES จะบันทึกหมายเลขลงใน SFT_TRANSORDER_LINE

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

ชื่อ API
wo.scrap.data.create
ชื่องานภายใน
woScrapDataCreate
รูปแบบการส่งข้อมูล
JSON (Content-Type: application/json)
หมายเลขโครงการ
0189144
รหัส API
api-2191
TRANSORDERTYPE
58 (รับสินค้าเสียเข้าคลัง)

เวลาที่ทริกเกอร์

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

พารามิเตอร์คำขอ

HEAD ข้อมูลส่วนหัว

ฟิลด์ แหล่ง MES ฟิลด์ ERP ประเภท จำเป็น คำอธิบาย
หมายเลขประเภทใบ transferType doc_type_no String จำเป็น ประเภทใบรับสินค้าเสีย
หมายเลขใบโอน eMESTransferType-eMESTransferCode source_no String จำเป็น หมายเลขใบโอน MES (ประเภท-หมายเลข)
วันที่สร้าง date create_date Date จำเป็น วันที่รับเข้าคลัง (yyyy-MM-dd)
สถานีงาน CheckOut moveOutCode workstation_no String จำเป็น รหัสสถานีงาน CheckOut
รหัสโรงงาน factoryCode factory_no String จำเป็น รหัสโรงงาน
พนักงาน create operator_no String ไม่จำเป็น พนักงานผู้ดำเนินการ
หมายเหตุ remark remark String ไม่จำเป็น หมายเหตุส่วนหัว

LINE รายละเอียด

ฟิลด์ แหล่ง MES ฟิลด์ ERP ประเภท จำเป็น คำอธิบาย
หมายเลขใบสั่งผลิต moType-moCode wo_no String จำเป็น ประเภทใบสั่งผลิต-หมายเลขใบสั่งผลิต
รหัสสินค้า prodCode item_no String จำเป็น รหัสสินค้า
จำนวนสินค้าเสีย SCRAPQTY scrap_qty Numeric จำเป็น จำนวนเสีย
หน่วย unit unit_no String จำเป็น หน่วยจำนวน
คลังสินค้าย้ายเข้า moveInCode warehouse_no String จำเป็น รหัสคลังสินค้ารับเข้า
ตำแหน่งจัดเก็บ moveInLocation location_no String ไม่จำเป็น ตำแหน่งจัดเก็บ
หมายเลขล็อต batchCode lot_no String ไม่จำเป็น หมายเลขล็อต
หมายเหตุ remark remark String ไม่จำเป็น หมายเหตุรายละเอียด

ตัวอย่างคำขอ

รูปแบบ 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>

รูปแบบการตอบกลับ

การตอบกลับสำเร็จ (code=200)

{
  "code": 200,
  "msg": "สร้างใบรับสินค้าเสียสำเร็จ",
  "ERPMessage": {
    "description": "ประมวลผลสำเร็จ",
    "doc_no": "58-20260319001"
  }
}

การตอบกลับล้มเหลว (code=500)

{
  "code": 500,
  "msg": "สร้างใบรับสินค้าเสียล้มเหลว",
  "ERPMessage": {
    "description": "ไม่พบรหัสคลังสินค้า"
  }
}

คำอธิบายฟิลด์การตอบกลับ

ฟิลด์ ประเภท คำอธิบาย
code Integer 200=สำเร็จ, 500=ล้มเหลว
msg String ข้อความประมวลผล
ERPMessage.doc_no String หมายเลขใบรับสินค้าเสียจาก ERP (ประเภท-หมายเลข)

ตรรกะการบันทึกกลับ 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

ตารางข้อมูลที่เกี่ยวข้อง

ตารางข้อมูล คำอธิบาย ฟิลด์สำคัญ
SftTransorder ส่วนหัวใบโอน TRANSTYPE, TRANSNO, TO007, TO008, TO013
SftTransorderLine รายละเอียดใบโอน TRANSORDERTYPE(=58), SCRAPQTY, TL011, TL012
SFT_WS_RUN บันทึกการดำเนินการสถานีงาน บันทึก CheckOut แหล่งจำนวนสินค้าเสีย
ตารางอ้างอิงประเภท TRANSORDERTYPE
58รับสินค้าเสียเข้าคลัง
59รับสินค้าจ้างผลิตเข้าคลัง
อื่นๆใบโอนทั่วไป

ตำแหน่งโค้ด

ฟังก์ชัน เส้นทางไฟล์ หมายเลขบรรทัด/เมธอด
คำนวณสินค้าเสียขณะ CheckOut SFT_core/src/com/dci/sft/update/CheckOut.java doCheckOut()
สร้างใบโอน SFT_core/src/com/dci/sft/jsonMappingHibernate/TransOrderDataToJson.java 595-900
การตัดสินใจเส้นทาง API SFT_ERPIntegrate/src/com/dci/sft/erp/XmlToERP_handler.java 94-98
ประกอบพารามิเตอร์ XML SFT_ERPIntegrate/src/com/dci/sft/erp/webservice/SendFormS.java 1752-1810

การจัดการข้อผิดพลาด

สถานการณ์ข้อผิดพลาด สาเหตุ วิธีจัดการ
ไม่พบรหัสคลังสินค้า ไม่มีคลังสินค้านี้ในระบบ 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...}