สมอง SML

คลังความรู้ / ถาม-ตอบ

#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 จุด

  1. เส้นมาตรฐาน ValidateAndBalanceJournal(lines, 2): ต้องมีบรรทัด, Dr = Cr หลังปัด HALF_UP 2 ตำแหน่ง และยอดรวม > 0 ไม่ผ่าน → error ประเภท validation ข้อความขึ้นต้น doc <เลขที่>: และ transaction ย้อนกลับ (บันทึก/ลบเอกสารแล้วข้อมูลไม่ครบหรือเหลือครึ่ง ๆ กลาง ๆ ได้ไหม (atomic transaction ทำงานอย่างไร))
  2. รูปแบบ GL (ตั้งรูปแบบการลงบัญชี (GL) ในรูปแบบเอกสารยังไง และระบบใช้เมื่อไร): ไม่สมดุล → ไม่ error แต่เก็บคำเตือน "รายการบัญชีตามรูปแบบ GL (…) ไม่สมดุล เดบิต … เครดิต …" แล้วลองเส้นมาตรฐานต่อ
  3. ข้อมูลรายวัน 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 ไม่แสดงบนหน้าจอ

ดูเพิ่ม

ที่มาในโค้ด

  • backend/internal/application/process/service.go:29 ErrUnbalancedJournal
  • backend/internal/application/process/service.go:508 ValidateAndBalanceJournal
  • backend/internal/application/process/service.go:1614 เรียกตรวจ แล้วห่อ KindValidation
  • backend/internal/application/process/gl_template.go:1046 รูปแบบ GL ไม่สมดุล → เส้นมาตรฐาน
  • backend/internal/application/process/docs.go:286 ตรวจ Dr = Cr ของ JV
  • backend/internal/application/process/workflow.go:554 GLCheck รายการตรวจ
  • backend/internal/application/process/service.go:1755 resolveChartAccount