#faq#period#year-end#gl#closing
ปิดบัญชีสิ้นงวด/สิ้นปี (โอนรายได้-ค่าใช้จ่ายเข้ากำไรสะสม) ทำอย่างไร ระบบลงบัญชีอะไร
ตอบสั้น: ใช้เมนูประมวลผลสิ้นงวด (1998) หรือประมวลผลสิ้นปี (1999) ระบบรวมยอดคงเหลือของบัญชีรายได้/ค่าใช้จ่าย (account_type 3, 4) ในช่วงวันที่ แล้วกลับรายการทุกบัญชี ยอดสุทธิ (กำไร/ขาดทุน) ลงบัญชีที่ผู้ใช้เลือกเป็น "บัญชีที่ปิดเข้า" ไม่มีรหัสกำไรสะสมตายตัวในโค้ด
รายละเอียด
ดู งวดบัญชี ปิดงวด/ปิดปี และประมวลผล GL ใหม่ (Period & Year Close, GL Rebuild) และ งวดบัญชีและด่านตรวจงวดปิด (Accounting Period Guard)
เมนู (ทุกเมนูไปที่จอ gl_close_period)
menu_gl_end_of_period"ประมวลผลสิ้นงวด" → โหมด period (1998)menu_gl_end_of_year"ประมวลผลสิ้นปี" และmenu_close_account_process"ประมวลผลกำไร/ขาดทุน และต้นทุนขาย" → โหมด year (1999)- เมนูอยู่หมวด "③ ตรวจสอบ ผ่านรายการ สอบถามบัญชี และปิดงวด" เฉพาะผู้ดูแล (adminOnly)
ช่วงวันที่ (resolveCloseDates)
- period: อ่าน
date_start,date_endของงวดที่เลือก ไม่พบ → "ไม่พบงวดบัญชีที่ %d" - year: min(
date_start) ถึง max(date_end) ของperiod_yearไม่พบ → "ไม่พบงวดบัญชีของปี %d" - หรือส่งช่วงวันที่เอง
การคำนวณ (computeGLClose, glCloseFromSums)
- ยอดต่อบัญชี = SUM(debit − credit) ของ
gl_journal_detail(หัวสมุดรายวันทั่วไป (gl_journal)) ในช่วงวันที่ - ยอดเดบิตคงเหลือ → Cr บัญชีนั้น, ยอดเครดิตคงเหลือ → Dr บัญชีนั้น (ปัด 2 ตำแหน่ง)
- กำไร = เครดิต − เดบิต; กำไร > 0 → Cr บัญชีที่ปิดเข้า, ขาดทุน → Dr บัญชีที่ปิดเข้า
การบันทึก (GLClose)
- กดดูตัวอย่างก่อน (ไม่บันทึก) จอถามยืนยันก่อนบันทึกจริง
- ต้องระบุเลขที่เอกสาร (≤ 25 ตัว), สมุดรายวัน, บัญชีที่ปิดเข้า
checkGLCloseDoc: สมุดต้องมีจริง, บัญชีที่ปิดเข้าต้องเป็นบัญชีย่อย (status= 0) ไม่ใช่ → "ไม่พบบัญชีที่ปิดเข้า X (ต้องเป็นบัญชีย่อย)", เลขที่ถูกใช้กับเอกสารอื่น → conflict- ลบเอกสารปิดเลขเดิม (
gl_trans,gl_trans_detail,gl_journal,gl_journal_detail) แล้วสร้างใหม่ จึงรันซ้ำเลขเดิมได้ - ไม่มียอด → "ไม่มียอดรายได้/ค่าใช้จ่ายในช่วงวันที่ ..."
- เขียน
gl_journaljournal_type 2, trans_direct 1, วันที่ = วันสุดท้ายของช่วง และบันทึก process log
ข้อควรระวัง
- งานนี้ไม่ตรวจว่างวดเปิดอยู่ และไม่เปลี่ยน
statusของงวด การปิดงวดต้องแก้ที่เมนู 1.8.1 เอง (บันทึก/แก้/ลบเอกสารไม่ได้ ขึ้นว่า "ได้ถูกปิดงวดไปแล้ว หรือยังไม่ได้กำหนดงวดบัญชี" แก้อย่างไร) - ยอดรวมใช้
gl_journal_detailทุกแถวในช่วง ไม่กรองis_passและรวมเอกสารปิดเลขอื่นในช่วงเดียวกันด้วย ถ้าปิดรายงวด (1998) ไปแล้ว ยอดสิ้นปีจะเหลือเฉพาะส่วนที่ยังไม่ปิด - ปัด 2 ตำแหน่งตายตัว (
closeLine) ไม่อ่านgl_no_decimal gl_trans_detailเก็บฝั่งยอดคงเหลือ (สลับ Dr/Cr กับgl_journal_detail)- 1999 อยู่ใน
journalFlagsของหน้าจอ JV (period.go:131) (บันทึกรายวันทั่วไป (JV) เองยังไง แก้ GL ที่ระบบลงอัตโนมัติผ่าน JV ได้ไหม) - ไม่พบโค้ดปิดต้นทุนขาย/สต็อกในงานนี้ แม้ชื่อเมนูมีคำว่า "ต้นทุนขาย"
ดูเพิ่ม
- งวดบัญชี ปิดงวด/ปิดปี และประมวลผล GL ใหม่ (Period & Year Close, GL Rebuild)
- บันทึก/แก้/ลบเอกสารไม่ได้ ขึ้นว่า "ได้ถูกปิดงวดไปแล้ว หรือยังไม่ได้กำหนดงวดบัญชี" แก้อย่างไร
- บันทึกรายวันทั่วไป (JV) เองยังไง แก้ GL ที่ระบบลงอัตโนมัติผ่าน JV ได้ไหม
- ต้องกดประมวลผลลงบัญชี (Rebuild GL) ใหม่เมื่อไร มันลบอะไรทิ้งบ้าง
- erp_account_period — งวดบัญชี (เปิด/ปิดงวด)
ที่มาในโค้ด
backend/internal/application/process/workflow.go:723resolveCloseDates(:741ไม่พบงวดของปี)backend/internal/application/process/workflow.go:754closeLineปัด 2backend/internal/application/process/workflow.go:766computeGLClose(account_type IN (3, 4))backend/internal/application/process/workflow.go:791glCloseFromSumsbackend/internal/application/process/workflow.go:817GLClose(1998/1999, ลบแล้วสร้างใหม่)backend/internal/application/process/workflow.go:868checkGLCloseDoc;:891insertGLCloseDocfrontend/account/process/SystemProcessWorkbenchScreen.tsx:149เลือกโหมด year/period;:530runGLClosefrontend/account/tabs/screenRegistry.tsx:1163เมนูที่ไปจอgl_close_periodfrontend/src/config/smlMenu.json:9638menu_gl_end_of_period;:9652menu_gl_end_of_year;:9666menu_close_account_process