繁體中文 English Tiếng Việt ภาษาไทย
← Quay lại danh sách API

Tạo phiếu nhập kho phế phẩm

POST MES → ERP
wo.scrap.data.create

Khi xuất trạm lệnh sản xuất nếu có số lượng phế phẩm, gửi dữ liệu nhập kho phế phẩm đến hệ thống ERP để tạo phiếu nhập kho phế phẩm. Sau khi ERP trả về số phiếu nhập kho, MES sẽ ghi lại số phiếu vào SFT_TRANSORDER_LINE.

Thông tin cơ bản

Tên API
wo.scrap.data.create
Tên tác vụ nội bộ
woScrapDataCreate
Định dạng truyền tải
JSON (Content-Type: application/json)
Số dự án
0189144
Mã API
api-2191
TRANSORDERTYPE
58 (Nhập kho phế phẩm)

Thời điểm kích hoạt

Xuất trạm CheckOut Nhập SL phế phẩm SCRAPQTY > 0 ? Tạo phiếu điều chuyển TRANSORDERTYPE=58 SftTransorderLine Gửi đến ERP wo.scrap.data .create Ghi lại số phiếu TL011/TL012 Không → Bỏ qua nhập kho phế phẩm
Điều kiện phán đoán quan trọng: Chỉ khi xuất trạm với SCRAPQTY > 0 (số lượng phế phẩm lớn hơn 0), hệ thống mới tạo phiếu điều chuyển TRANSORDERTYPE=58 và gọi API nhập kho phế phẩm của ERP.
Vị trí kích hoạt
Sau khi hoàn thành xuất trạm, phương thức TransOrderDataToJson.sentTransOrderDataAgain() phán đoán loại phiếu điều chuyển, nếu là nhập kho phế phẩm thì gọi woScrapDataCreate.

Tham số yêu cầu

HEAD Dữ liệu header

Trường Nguồn MES Trường ERP Loại Bắt buộc Mô tả
Mã loại transferType doc_type_no String Bắt buộc Loại phiếu nhập kho phế phẩm
Số phiếu điều chuyển eMESTransferType-eMESTransferCode source_no String Bắt buộc Số phiếu điều chuyển MES (Loại-Số)
Ngày tạo date create_date Date Bắt buộc Ngày nhập kho (yyyy-MM-dd)
Trạm xuất moveOutCode workstation_no String Bắt buộc Mã trạm xuất
Mã nhà máy factoryCode factory_no String Bắt buộc Mã nhà máy
Nhân viên thao tác create operator_no String Tùy chọn Nhân viên thao tác
Ghi chú remark remark String Tùy chọn Ghi chú header

LINE Chi tiết

Trường Nguồn MES Trường ERP Loại Bắt buộc Mô tả
Số lệnh SX moType-moCode wo_no String Bắt buộc Loại lệnh SX-Số lệnh SX
Mã sản phẩm prodCode item_no String Bắt buộc Mã sản phẩm
Số lượng phế phẩm SCRAPQTY scrap_qty Numeric Bắt buộc Số lượng phế phẩm
Đơn vị unit unit_no String Bắt buộc Đơn vị số lượng
Kho nhập moveInCode warehouse_no String Bắt buộc Mã kho nhập
Vị trí moveInLocation location_no String Tùy chọn Vị trí nhập kho
Số lô batchCode lot_no String Tùy chọn Số lô
Ghi chú remark remark String Tùy chọn Ghi chú chi tiết

Ví dụ yêu cầu

Định dạng JSON nội bộ MES

{
  "head": {
    "transferType": "58",
    "eMESTransferType": "SC",
    "eMESTransferCode": "20260319001",
    "date": "2026-03-19",
    "moveOutCode": "WS001",
    "factoryCode": "FACTORY01",
    "create": "USER001",
    "remark": "Nhập kho phế phẩm"
  },
  "line": [
    {
      "moType": "5101",
      "moCode": "20260319001",
      "prodCode": "ITEM-001",
      "qty": "5",
      "unit": "PCS",
      "moveInCode": "WH-SCRAP",
      "moveInLocation": "A01",
      "batchCode": "BAT001",
      "remark": "Khuyết tật bề mặt"
    }
  ]
}

Định dạng XML ERP (WFERP) - SendFormS.java:1773-1804

<parameters>
  <parameter key="enterprise_no" type="string">Mã công ty</parameter>
  <parameter key="site_no" type="string">Mã nhà máy</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">Nhập kho phế phẩm</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">Khuyết tật bề mặt</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>

Định dạng phản hồi

Phản hồi thành công (code=200)

{
  "code": 200,
  "msg": "Tạo phiếu nhập kho phế phẩm thành công",
  "ERPMessage": {
    "description": "Xử lý thành công",
    "doc_no": "58-20260319001"
  }
}

Phản hồi thất bại (code=500)

{
  "code": 500,
  "msg": "Tạo phiếu nhập kho phế phẩm thất bại",
  "ERPMessage": {
    "description": "Mã kho không tồn tại"
  }
}

Mô tả trường phản hồi

Trường Loại Mô tả
code Integer 200=Thành công, 500=Thất bại
msg String Thông báo xử lý
ERPMessage.doc_no String Số phiếu nhập kho phế phẩm từ ERP (Loại-Số)

Logic ghi lại ERP

Sau khi ERP trả về số phiếu nhập kho phế phẩm, MES sẽ ghi lại số phiếu vào chi tiết phiếu điều chuyển:

ERP trả về doc_no 58-20260319001 Phân tích số TL011=58 TL012=20260319001 SFT_TRANSORDER_LINE TL011 = 58 TL012 = 20260319001 TRANSORDERTYPE = 58

SQL ghi lại

-- Cập nhật SFT_TRANSORDER_LINE
UPDATE SFT_TRANSORDER_LINE
SET TL011 = '58',
    TL012 = '20260319001'
WHERE TRANSORDERTYPE = '58'
  AND TRANSNO = :TRANSNO
  AND SN = :SN

Bảng dữ liệu liên quan

Bảng dữ liệu Mô tả Trường quan trọng
SftTransorder Header phiếu điều chuyển TRANSTYPE, TRANSNO, TO007, TO008, TO013
SftTransorderLine Chi tiết phiếu điều chuyển TRANSORDERTYPE(=58), SCRAPQTY, TL011, TL012
SFT_WS_RUN Bản ghi thực thi trạm làm việc Bản ghi xuất trạm, nguồn số lượng phế phẩm
Đối chiếu loại TRANSORDERTYPE
58Nhập kho phế phẩm
59Nhập kho gia công
KhácPhiếu điều chuyển thông thường

Vị trí mã nguồn

Chức năng Đường dẫn file Số dòng/Phương thức
Tính toán phế phẩm khi xuất trạm SFT_core/src/com/dci/sft/update/CheckOut.java doCheckOut()
Tạo phiếu điều chuyển SFT_core/src/com/dci/sft/jsonMappingHibernate/TransOrderDataToJson.java 595-900
Định tuyến API SFT_ERPIntegrate/src/com/dci/sft/erp/XmlToERP_handler.java 94-98
Tổ hợp tham số XML SFT_ERPIntegrate/src/com/dci/sft/erp/webservice/SendFormS.java 1752-1810

Xử lý lỗi

Tình huống lỗi Nguyên nhân Cách xử lý
Mã kho không tồn tại ERP không có kho này Xác nhận kho phế phẩm đã được tạo trong ERP
Mã sản phẩm không tồn tại ERP không có mã sản phẩm này Xác nhận mã sản phẩm đã đồng bộ với ERP
Hết thời gian kết nối SocketTimeoutException Kiểm tra trạng thái máy chủ ERP, cần gửi lại thủ công

Ghi LOG

// File log: logs/ERPReturnErrorRec.log

[ERP_SEND_ERROR] taskName=woScrapDataCreate, errorType=SocketTimeoutException, errorMsg=Read timed out
[ERP_SEND_ERROR] Nội dung gửi={...JSON...}