บันทึก/แก้/ลบเอกสารไม่ได้ ขึ้นว่า "ได้ถูกปิดงวดไปแล้ว หรือยังไม่ได้กำหนดงวดบัญชี" แก้อย่างไร
ตอบสั้น: วันที่เอกสารต้องอยู่ในงวดของ erp_account_period และงวดนั้นต้องมี status = 0 (เปิด) ถ้าไม่พบงวดหรืองวดปิด (1) ระบบปฏิเสธด้วยข้อความเดียวกัน แก้โดยเพิ่มงวด หรือเปลี่ยนสถานะงวดเป็นเปิดที่เมนู 1.8.1 กำหนดงวดบัญชี
รายละเอียด
ข้อความเต็ม: "วันที่เอกสาร dd/mm/yyyy ได้ถูกปิดงวดไปแล้ว หรือยังไม่ได้กำหนดงวดบัญชี กรุณาตรวจสอบ" ถ้าไม่ส่งวันที่ ระบบใช้วันนี้และขึ้นว่า "วันที่ปัจจุบัน" แทน ดู งวดบัญชีและด่านตรวจงวดปิด (Accounting Period Guard) และ งวดบัญชี ปิดงวด และสิ้นปี (account period / erp_account_period / checkOpenPeriod)
วิธีหางวด (readPeriodStatus) เลือกแถวแรกที่ date_start ≤ วันที่ ≤ date_end เรียงตาม period_number, roworder (erp_account_period — งวดบัญชี (เปิด/ปิดงวด)) วันที่รูปแบบผิด → "รูปแบบวันที่ไม่ถูกต้อง"
จุดที่ตรวจ
| งาน | ตรวจวันที่ไหน | ฟังก์ชัน |
|---|---|---|
| บันทึกเอกสารซื้อ/ขาย/คลัง | วันที่ใหม่ (ยกเว้น 521/522/523) | checkOpenPeriod |
| ลบเอกสาร | วันที่ที่เก็บไว้ในเอกสารเดิม | checkStoredDocPeriod |
| ยกเลิกเอกสาร | วันที่เอกสารเดิม + วันที่ยกเลิก (ยกเลิกการยกเลิก = วันที่ของใบยกเลิก) | checkCancelPeriod |
| JV / เอกสารเจ้าหนี้-ลูกหนี้ | บันทึก/ลบ | checkSaveDocPeriod, checkDeleteDocPeriod |
| ขายสินทรัพย์ 1802 | วันที่ใหม่, วันที่เดิมตอนแก้, วันที่ตอนลบ | fa_sale.go |
| ค่าเสื่อม 1801 | บันทึกไม่ตรวจ, ลบตรวจแบบผ่อน (ไม่พบงวด = ผ่าน) | checkPeriodNotClosed |
วิธีแก้
- เปิดเมนู 1.8.1 กำหนดงวดบัญชี (
menu_account_period) ตรวจว่ามีงวดครอบวันที่เอกสาร ใช้ปุ่ม "คำนวณงวดบัญชีอัตโนมัติ (12 งวด)" ได้ - ถ้างวดเป็น "1. ปิดงวดบัญชี (Closed)" และต้องการแก้จริง ให้เปลี่ยนเป็น "0. เปิดใช้งาน (Open)" ชั่วคราว แล้วปิดกลับ
- งวดซ้อนกัน: ระบบใช้แถวที่
period_numberน้อยสุด ตรวจให้ไม่มีช่วงวันที่ทับกัน
ข้อควรระวัง
- การปิดงวดคือแก้
statusด้วยมือที่หน้าจอนี้ ไม่มีงาน "ปิดงวด" แยก งานประมวลผลสิ้นงวด/สิ้นปีไม่ได้เปลี่ยน status (ปิดบัญชีสิ้นงวด/สิ้นปี (โอนรายได้-ค่าใช้จ่ายเข้ากำไรสะสม) ทำอย่างไร ระบบลงบัญชีอะไร) - เช็ค (
cb_chq_list) ไม่มีการตรวจงวด (คอมเมนต์period.go:107-108) - GL เส้นมาตรฐานหางวดโดยไม่ดู status ถ้าไม่พบงวดใส่
period_number= 0 (service.go:1586-1598) - GL ตามรูปแบบ: ถ้าไม่พบงวดหรืองวดปิด จะไม่ลงบัญชีตามรูปแบบเลย (0 บรรทัด) และขึ้นคำเตือน "ไม่พบงวดบัญชีที่เปิดอยู่ของวันที่ ..." เรื่องนี้เกิดได้ตอน rebuild GL ย้อนหลัง (ต้องกดประมวลผลลงบัญชี (Rebuild GL) ใหม่เมื่อไร มันลบอะไรทิ้งบ้าง)
- หน้าจอเอกสารทั่วไปตรวจเฉพาะวันที่ใหม่ตอนบันทึก (
trans_validate.go:44)
ดูเพิ่ม
- งวดบัญชีและด่านตรวจงวดปิด (Accounting Period Guard)
- งวดบัญชี ปิดงวด/ปิดปี และประมวลผล GL ใหม่ (Period & Year Close, GL Rebuild)
- ปิดบัญชีสิ้นงวด/สิ้นปี (โอนรายได้-ค่าใช้จ่ายเข้ากำไรสะสม) ทำอย่างไร ระบบลงบัญชีอะไร
- ยกเลิก แก้ไข ลบเอกสาร ต่างกันอย่างไร ผลต่อสต็อกและ GL
- ทำไมลบหรือแก้เอกสารไม่ได้ ขึ้น ห้ามแก้ไข หรือลบข้อมูล
ที่มาในโค้ด
backend/internal/application/process/period.go:17checkOpenPeriod;:27checkPeriodNotClosedbackend/internal/application/process/period.go:35readPeriodStatus(SQL:40-42)backend/internal/application/process/period.go:53periodErrorข้อความ:61backend/internal/application/process/period.go:68checkStoredDocPeriod;:95checkCancelPeriodbackend/internal/application/process/period.go:109checkSaveDocPeriod;:116checkDeleteDocPeriod;:128periodExemptFlagsbackend/internal/application/process/trans_validate.go:44บันทึก;:106ลบbackend/internal/application/process/fa_sale.go:422ลบ;:431วันที่ใหม่;:448วันที่เดิมbackend/internal/application/process/fa_depreciation.go:877ลบค่าเสื่อมbackend/internal/application/process/gl_template.go:1027GL ตามรูปแบบ ข้ามงวดปิดfrontend/src/config/schemas/masterDetailSchemas.ts:1563menu_account_period(status:1591-1592)