ตัวอย่างการตอบกลับ
{
"Conversionunit": [
{
"item_no": "ITEM-001",
"conversion_unit": "BOX",
"molecular": "1",
"denominator": "500",
"remark": "500 ชิ้นต่อกล่อง",
"tran_status": "AU"
}
]
}
ตรรกะการประมวลผล
การออกแบบ Primary Key รวม
ใช้ ITEM_NO (รหัสสินค้า) +
CONVERSION_UNIT (หน่วยแปลง) เป็น Primary Key รวม
รหัสสินค้าเดียวกันสามารถตั้งค่าหลายหน่วยแปลงได้ เช่น:
• ITEM-001 + BOX (กล่อง)
• ITEM-001 + CTN (ลังกระดาษ)
• ITEM-001 + PAL (พาเลท)
การป้องกันตัวส่วน
ตัวส่วนอัตราแปลง (DENOMINATOR) ไม่สามารถเป็น 0 ได้ โปรแกรมจะตั้งค่าเป็น 1 อัตโนมัติ:
IF denominator = 0 THEN denominator = 1
บันทึก EAI_PARAMETER
หลังจากการซิงค์ครั้งแรกสำเร็จ ระบบจะสร้างบันทึกในตาราง EAI_PARAMETER
การรันครั้งต่อไปจะใช้ LAST_SUCCESS_TIME เป็นพารามิเตอร์ data_time โดยอัตโนมัติ
SQL อัปเดตฐานข้อมูล
ตรวจสอบเพิ่มหรือแก้ไข
SELECT COUNT(1) FROM ITEM_CONVERSION_UNIT
WHERE ITEM_NO = N'{item_no}' AND CONVERSION_UNIT = N'{conversion_unit}'
-- count > 0 → UPDATE, count = 0 → INSERT
INSERT (เพิ่มหน่วยแปลง)
INSERT INTO ITEM_CONVERSION_UNIT (
ITEM_NO, CONVERSION_UNIT,
CONVERSION_RATE_MOLECULAR, CONVERSION_RATE_DENOMINATOR,
REMARK, TRAN_STATUS, SYNC_TIME, CREATE_TIME, UPDATE_TIME
) VALUES (
:ITEM_NO,
:CONVERSION_UNIT,
:molecular,
:denominator,
:remark,
:tran_status,
N'{เวลาปัจจุบัน}',
N'{เวลาปัจจุบัน}',
N'{เวลาปัจจุบัน}'
)
UPDATE (แก้ไขหน่วยแปลง)
UPDATE ITEM_CONVERSION_UNIT SET
CONVERSION_RATE_MOLECULAR = :molecular,
CONVERSION_RATE_DENOMINATOR = :denominator,
REMARK = :remark,
TRAN_STATUS = :tran_status,
UPDATE_TIME = N'{เวลาปัจจุบัน}'
WHERE ITEM_NO = :ITEM_NO AND CONVERSION_UNIT = :CONVERSION_UNIT
ค่าเริ่มต้นของฟิลด์
ถ้า ERP ไม่ส่งคืนฟิลด์ต่อไปนี้ จะใช้ค่าเริ่มต้นอัตโนมัติ:
• CONVERSION_RATE_MOLECULAR = 1
• CONVERSION_RATE_DENOMINATOR = 1 (ไม่สามารถเป็น 0)
• REMARK = '' (สตริงว่าง)
• TRAN_STATUS = '' (สตริงว่าง)