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

Hủy phiếu nhập hàng gia công

outsourcing.process
HỦY JSON Đồng bộ

1. Thông tin cơ bản

MụcMô tả
Tên API tiếng TrungHủy phiếu nhập hàng gia công (Hoàn nguyên nhập hàng mua ngoài)
CROSS API Codeoutsourcing.process
MES taskNameoutsourcingProcess
Đường dẫn ESB/outsourcingProcess
Tham khảo DSMSapi-2058
Hướng gọiMES → ERP
Điều kiện kích hoạtTRANSORDERTYPE = "59" + TL011/TL012 không rỗng
Định dạng RequestJSON (Content-Type: application/json)
Phương thức truyềnHTTP POST qua ESB
Đồng bộ/Bất đồng bộGọi đồng bộ

Đối chiếu tham số source_type

source_typeMô tảTrường hợp sử dụng
0Hoàn nguyên xuất hàngHủy xuất trạm (gửi gia công)
1Hoàn nguyên nhận hàngHủy vào trạm (nhận gia công)
2Hoàn nguyên trả hàngHủy trả hàng

2. Quy trình nghiệp vụ

Hủy xuất trạm Kiểm tra TL011/TL012 Có giá trị không Phán đoán TRANSORDERTYPE = "59" outsourcingProcess Gọi ERP Hoàn nguyên nhập kho Hoàn thành Khác: cancelStockIn != "59" Vị trí chương trình: GeneralUpdater.java:1571-1605
Tương ứng mã nguồn
  • Phán đoán hủy: GeneralUpdater.java:1571-1605
  • Kiểm tra TL011/TL012: GeneralUpdater.java:1571
  • Phán đoán TRANSORDERTYPE: GeneralUpdater.java:1577
  • Tổ hợp JSON: transOrder.put("outsource_no", stock_in_no)
API liên quan
Hủy phiếu nhập hàng gia công (outsourcingProcess) và tạo phiếu nhập hàng gia công (outsourcingPurchaseStockinCreate) được sử dụng đi kèm nhau.
Khi hủy cần sử dụng TB001/TB002 mà ERP trả về sau khi tạo thành công (lưu trong TL011/TL012).

3. Quy cách Request

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

Trường Request (Parameter)

TrườngLoạiBắt buộcMô tảNguồn MES
enterprise_nostringYMã công tyCOMPANYID (sftcompany)
site_nostringYMã chi nhánhCOMPANYID (sftcompany)
source_nostringYSố nguồn (số phiếu nhập hàng gia công)outsource_no (TL011 + "-" + TL012)
source_typestringYLoại hoàn nguyên (0/1/2)"0" (Hoàn nguyên xuất hàng)
objective_doc_nostringYSố chứng từ mục tiêu (giống source_no)outsource_no

Cấu trúc outsourcing_info_data

TrườngLoạiBắt buộcMô tảNguồn MES
source_nostringNSố nguồnChuỗi rỗng
plot_nostringNSố lôChuỗi rỗng
purchase_seqnumericNSố thứ tự mua hàngChuỗi rỗng

Giải thích nguồn trường

outsource_no = SFT_TRANSORDER_LINE.TL011 + "-" + SFT_TRANSORDER_LINE.TL012

TL011/TL012 được ghi vào từ TB001/TB002 mà ERP trả về sau khi outsourcingPurchaseStockinCreate thành công.

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ý

Hành vi khi thành công

5. Quy tắc kiểm tra

#Mục kiểm traQuy tắcVị trí chương trình
1TL011 không rỗngPhải có loại ERPGeneralUpdater.java:1571
2TL012 không rỗngPhải có số ERPGeneralUpdater.java:1571
3TRANSORDERTYPE = "59"Phán đoán loại đơn gia côngGeneralUpdater.java:1577
4Chứng từ gốc tồn tạiChứng từ phía ERP phải tồn tạiKiểm tra phía ERP
5Trạng thái chứng từ cho phép hủyChưa hạch toán mới có thể hoàn nguyênKiểm tra phía ERP
Quan trọng: Khi TL011/TL012 rỗng sẽ không gọi ERP
Trong logic chương trình, chỉ khi cả TL011TL012 đều không rỗng mới gọi outsourcingProcess.
Nếu rỗng, hành động hủy xuất trạm chỉ thực hiện ở phía MES, phía ERP không bị ảnh hưởng.

6. Mã lỗi

Thông báoMô tả
E001Thiếu trường bắt buộcoutsource_no hoặc source_type rỗng
E002Phiếu nhập hàng gia công không tồn tạiChứng từ tương ứng outsource_no không tồn tại
E003Chứng từ đã hạch toán không thể hủyChứng từ ERP đã hạch toán, không thể hoàn nguyên
E004Chứng từ đã bị hủyHủy trùng lặp
E005source_type không chính xácGiá trị không nằm trong phạm vi 0/1/2
E999Lỗi hệ thốngTimeout, lỗi kết nối

7. Ví dụ JSON

Request (JSON nội bộ MES)

{
  "companyID": "COMP01",
  "userId": "EMP001",
  "outsource_no": "5902-20260319001",
  "source_type": "0"
}

Định dạng XML ERP (Truyền thực tế)

<!-- SendFormS.java:1727-1752 -->
<parameters>
  <parameter key="enterprise_no" type="string">COMP01</parameter>
  <parameter key="site_no" type="string">COMP01</parameter>
  <parameter key="source_no" type="string">5902-20260319001</parameter>
  <parameter key="source_type" type="numeric">0</parameter>
  <parameter key="objective_doc_no" type="string">5902-20260319001</parameter>

  <parameter key="outsourcing_info_data" type="data">
    <data name="outsourcing_info">
      <row seq="1">
        <field name="source_no" type="string"></field>
        <field name="plot_no" type="string"></field>
        <field name="purchase_seq" type="numeric"></field>
      </row>
    </data>
  </parameter>
</parameters>

Response (Thành công)

{
  "code": 200,
  "msg": "Hoàn nguyên phiếu nhập hàng gia công thành công"
}

Response (Thất bại)

{
  "code": 500,
  "msg": "Chứng từ đã hạch toán không thể hủy 5902-20260319001"
}

8. Giải thích rủi ro Race Condition

Vấn đề đã biết: TL011/TL012 rỗng khi hủy xuất trạm

Khi người dùng hủy xuất trạm trước khi ERP trả về, do TL011/TL012 chưa được ghi lại, outsourcingProcess sẽ không được gọi.
Điều này dẫn đến dữ liệu MES và ERP không nhất quán.

Ví dụ dòng thời gian

16:29:46 MES xuất trạm Gửi ERP 16:31:08 Hủy xuất trạm TL011/TL012 rỗng! 16:31:49 ERP trả về 5902-20260310069 Chứng từ ERP chưa bị hủy

Nguyên nhân vấn đề

// GeneralUpdater.java:1571
if(!SftTransorderLine.getTl011().equals("") && !SftTransorderLine.getTl012().equals("")){
    // Chỉ khi TL011/TL012 không rỗng mới gọi outsourcingProcess
    // Nếu hủy trước khi ERP trả về, if này là false, bỏ qua gọi ERP
}

Đề xuất xử lý

Phương ánMô tảẢnh hưởng
Xử lý ngayVô hiệu phiếu nhập hàng gia công đó trên ERP thủ côngCần can thiệp thủ công
Cơ chế chờChờ ERP trả về hoàn thành khi hủy xuất trạmCần sửa chương trình
Cơ chế khóaCấm thao tác hủy khi đang xuất trạmCần sửa chương trình
So sánh định kỳLên lịch so sánh trạng thái chứng từ MES và ERPCần thêm chức năng mới