Project

General

Profile

Feature #25669

[Call System][Call Monitor] Document Running Logic (Monthly by sys_doc_number)

Added by Benjamaporn Kueaduang 2 months ago. Updated about 2 months ago.

Status:
Resolved
Priority:
Normal
Start date:
02/12/2026
Due date:
% Done:

0%

Estimated time:

Description

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

History

#1

Updated by Benjamaporn Kueaduang 2 months ago

เปลี่ยน date_format เป็น YYMM ป้องกันปัญหาการ sort จากเลขเอกสารที่เป็น string

เวลาเรียงแบบตัวอักษร (String Sort)
มันจะเรียงตามตัวแรก -> 1 มาก่อน 0 ทำให้ปี/เดือนปนกัน

#2

Updated by kittipong banawitit about 2 months ago

  • Status changed from New to In Progress
#3

Updated by kittipong banawitit about 2 months ago

  • Status changed from In Progress to Resolved
  • Assignee changed from kittipong banawitit to Benjamaporn Kueaduang

Also available in: Atom PDF