Thai Honda - Smart Factory - Feature #25669 (Resolved): [Call System][Call Monitor] Document Runn...

Benjamaporn Kueaduang
2026-02-12T09:05:25Z

Logic สำหรับ Generate เลขเอกสาร (Document Number) โดยอ้างอิงตาราง sys_doc_number
รองรับการ:

แยก Running ตาม doc_type

แยก Running ตามรายเดือน (date_format)

Reset เลขใหม่เมื่อขึ้นเดือนใหม่

ป้องกันเลขซ้ำกรณีมี concurrent request

Database Reference

Table: public.sys_doc_number
prefix = ตัวอักษรนำหน้า (เช่น REQ, INV)
doc_type = ประเภทเอกสาร
date_format = ค่าเดือน/ปี เช่น 0226, 0326 (เก็บเป็นค่า ไม่ใช่ format function)
running_length = จำนวนหลักของ running
doc_number = เลข running ปัจจุบันที่ตัดในแต่ละเดือน

Business Logic
Step 1: รับค่า doc_type

ระบบต้องรับค่า doc_type ของเอกสารที่กำลังสร้าง

Step 2: คำนวณค่าเดือนปัจจุบัน กรณีต้องสร้าง record ที่ 2 จาก record ตั้งต้นเดิม

ระบบต้องคำนวณ current_month_format
เช่น MMYY → 0326

Step 3: ค้นหา record
ค้นหาใน sys_doc_number โดยใช้เงื่อนไข:

doc_type

date_format = current_month_format

Step 4: กรณีไม่พบ record (เดือนใหม่)

ให้ระบบ:
Insert record ใหม่

กำหนดค่า:

prefix (ตาม doc_type)

running_length (ตาม config)

date_format = current_month_format

doc_number = 1

Step 5: กรณีพบ record (เดือนปัจจุบัน)

ให้ระบบ:

Update doc_number = doc_number + 1

Update updated_date

นำค่ามาประกอบเป็นเลขเอกสาร

ตัวอย่าง:

เดิม: REQ-0226209
ใหม่: REQ-0226210

Output Format
ระบบต้องแสดงเลขเอกสารตามรูปแบบ: prefix + '-' + date_format + running (padding ตาม running_length)

ไม่มี “-” คั่นก่อน running

running ต้องเติม 0 ตาม running_length

ตัวอย่าง
prefix = REQ
date_format = 0226
running_length = 3
doc_number = 1

ผลลัพธ์: REQ-0226001