#faq#gl#troubleshoot#balance#validation
บันทึกเอกสารแล้วขึ้น GL ไม่สมดุล (debit credit do not balance) แก้ยังไง
ตอบสั้น: ข้อความ "GL journal debit and credit totals do not balance: debit=… credit=…" มาจากการลงบัญชีมาตรฐาน เมื่อผลรวม Dr ≠ Cr ที่ 2 ตำแหน่ง หรือยอดเป็น 0 ระบบยกเลิกการบันทึกทั้งเอกสาร ตรวจยอดหัวเอกสาร ยอดแท็บชำระเงิน และรูปแบบ GL
รายละเอียด
มีจุดตรวจสมดุล 3 จุด
- เส้นมาตรฐาน
ValidateAndBalanceJournal(lines, 2): ต้องมีบรรทัด, Dr = Cr หลังปัด HALF_UP 2 ตำแหน่ง และยอดรวม > 0 ไม่ผ่าน → error ประเภท validation ข้อความขึ้นต้นdoc <เลขที่>:และ transaction ย้อนกลับ (บันทึก/ลบเอกสารแล้วข้อมูลไม่ครบหรือเหลือครึ่ง ๆ กลาง ๆ ได้ไหม (atomic transaction ทำงานอย่างไร)) - รูปแบบ GL (ตั้งรูปแบบการลงบัญชี (GL) ในรูปแบบเอกสารยังไง และระบบใช้เมื่อไร): ไม่สมดุล → ไม่ error แต่เก็บคำเตือน "รายการบัญชีตามรูปแบบ GL (…) ไม่สมดุล เดบิต … เครดิต …" แล้วลองเส้นมาตรฐานต่อ
- ข้อมูลรายวัน JV: "ยอดเดบิต (…) และเครดิต (…) ไม่เท่ากัน" (บันทึกรายวันทั่วไป (JV) เองยังไง แก้ GL ที่ระบบลงอัตโนมัติผ่าน JV ได้ไหม)
สาเหตุที่เป็นไปได้ตามโค้ด
- บรรทัดทั้งหมดเป็น 0 (ระบบตัดบรรทัด 0 ทิ้ง) หรือยอดรวม 0 → ไม่ผ่านเงื่อนไขยอดรวม > 0
- เส้นมาตรฐานสร้าง Dr/Cr จากยอดชุดเดียวกัน (base = total − vat) ส่วนยอดแท็บชำระเงินที่ไม่ตรง ระบบใช้เงินสดบรรทัดเดียวแทน จึงไม่ทำให้ไม่สมดุล แต่บัญชีอาจผิด (แท็บรับ/จ่ายเงิน และการชำระหนี้ตามบิล (Payment Tab & Bill Settlement)) กรณีไม่สมดุลอื่นของแต่ละ flag ไม่ชัดจากโค้ด
- รูปแบบ GL ขาดแถวหรือ action ผิด → ไม่สมดุลแล้วตกไปเส้นมาตรฐาน ตั้ง action 90 เพื่อชดเชยเศษเล็ก
ตรวจย้อนหลัง ใช้ "ตรวจสอบความถูกต้อง" (menu_gl_check_data) ที่จอประมวลผลระบบ (จอประมวลผลระบบ: คำนวณสต๊อก ผ่านรายการ ปิดงวด ค่าเสื่อม เปลี่ยนรหัส (SystemProcessWorkbenchScreen)) ตรวจ: รายวันย่อยที่ไม่มีผังบัญชี, ใช้ผังบัญชีหลัก, รายวันที่ Dr ≠ Cr, ไม่พบหัวเอกสาร, ไม่พบสมุดรายวัน, เอกสารที่ยังไม่ลงบัญชี และรับ/จ่ายชำระที่ยังไม่ลงบัญชี
ข้อควรระวัง
- เส้นมาตรฐานไม่ตรวจว่ารหัสบัญชีมีในผังจริง: ถ้าไม่พบรหัสในลิสต์
resolveChartAccountคืนรหัสแรกของลิสต์ (ไม่ใช่ 9999) GL จะสมดุลแต่ใช้รหัสที่ไม่มีในผัง ใช้ข้อตรวจ "รายวันย่อยที่ไม่มีผังบัญชี" หาได้ - ข้อความ error ของเส้นมาตรฐานเป็นภาษาอังกฤษ ส่วนคำเตือนของรูปแบบ GL ไม่แสดงบนหน้าจอ
ดูเพิ่ม
- บทเรียนบั๊กลงบัญชี GL และความสมดุล (GL Posting & Balance Bugs)
- ต้องกดประมวลผลลงบัญชี (Rebuild GL) ใหม่เมื่อไร มันลบอะไรทิ้งบ้าง
- ยอดในรายงานไม่ตรงกับงบทดลอง (สต็อก ลูกหนี้ เจ้าหนี้) ต้องเช็กอะไรบ้าง
- การลงบัญชี Dr/Cr มาตรฐานแยกตามชนิดเอกสาร (Standard GL Posting)
ที่มาในโค้ด
backend/internal/application/process/service.go:29ErrUnbalancedJournalbackend/internal/application/process/service.go:508ValidateAndBalanceJournalbackend/internal/application/process/service.go:1614เรียกตรวจ แล้วห่อ KindValidationbackend/internal/application/process/gl_template.go:1046รูปแบบ GL ไม่สมดุล → เส้นมาตรฐานbackend/internal/application/process/docs.go:286ตรวจ Dr = Cr ของ JVbackend/internal/application/process/workflow.go:554GLCheckรายการตรวจbackend/internal/application/process/service.go:1755resolveChartAccount