สมอง SML

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

#faq#payment#cash-bank#cheque#gl#wht

แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์"

ตอบสั้น: ยอดรวมแต่ละช่องทางเก็บใน cb_trans และแถวย่อยใน cb_trans_detail (โอน 1, เช็ค 2, บัตร 3, PromptPay 21, ค่าใช้จ่ายอื่น 11, รายได้อื่น 12) ตอนบันทึก ผลรวมช่องทาง + ภาษีถูกหัก + รายได้อื่น ต้องเท่ายอดสุทธิ + ค่าใช้จ่ายอื่น ถ้าไม่เท่าจะขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์" GL แยกบรรทัดตามช่องทาง

รายละเอียด

ดู แท็บรับ/จ่ายเงิน และการชำระหนี้ตามบิล (Payment Tab & Bill Settlement), การรับ/จ่ายเงินในเอกสาร เงินสด โอน เช็ค บัตร (payment tenders / cb_trans / doc_type), หัวสรุปการรับ/จ่ายเงิน (cb_trans), รายละเอียดรับ/จ่ายเงินแยกรายการ (cb_trans_detail)

แท็บเปิดเมื่อ (payTabEnabled) เอกสารที่ไม่มีช่องเงินสด/เงินเชื่อ เปิดเสมอ ที่มีช่องนี้:

การเก็บ (payStmts)

ตรวจยอด (payCompleteCheck, checkPayTotal)

GL (payTenders ใน buildStandardGLLines)

ช่องทาง ฝั่งรับเงิน (Dr) ฝั่งจ่ายเงิน (Cr)
เงินสด 1111/1110/1100 เดียวกัน
โอน + wallet ธนาคาร ธนาคาร
เช็ค 1122 2112
บัตร ลูกหนี้ (รอขึ้นเงิน 461) ธนาคาร
ภาษีถูกหัก 1153/1154/1152/2122 2122/2123/2120
  • แยกบรรทัดเฉพาะเมื่อผลรวมช่องทาง (ปัด 2) เท่ายอดเงิน ไม่เท่าลงเงินสดบรรทัดเดียว
  • มีแค่ภาษีถูกหักโดยไม่มีช่องทางอื่น เงินสด = ยอด − ภาษีหัก
  • ธนาคารใช้สมุดบัญชีจาก ic_trans_detail.item_code / cb_trans_detail.pass_book_code / ic_trans.pass_book_code ถ้ามี

จ่ายเกินยอดค้าง (payExceedsBalance) ใบรับ/จ่ายชำระคำนวณยอดค้างใหม่จากหนี้ที่เก็บจริง ยอดค้าง 0 แต่จ่าย ≠ 0 ถูกปฏิเสธ (รับชำระหนี้ (239) / จ่ายชำระหนี้ (19) ลงบัญชี GL ยังไง เช็ค โอน ภาษีหัก ไปไหน)

ข้อควรระวัง

  • คอมเมนต์ของ payExceedsBalance เขียนว่ายอดค้างศูนย์ "is not checked" แต่โค้ดคืน pay != 0 คือปฏิเสธ (pay_check.go:261-270)
  • total_tax_at_pay เก็บ 2 ตำแหน่งตายตัว (pay_check.go:78)
  • ชื่อคอลัมน์ cb_trans.tranfer_amount สะกดแบบนี้ในฐานข้อมูล
  • แท็บรับชำระลงเช็คที่ 1122 แต่เอกสารนำฝากเช็คใช้ 1122-00 ก่อน
  • บัตรฝั่งรับเงินลง Dr บัญชีลูกหนี้ (ไม่ใช่บัญชีบัตรแยก)

ดูเพิ่ม

ที่มาในโค้ด

  • backend/internal/application/process/pay_check.go:36 payTabEnabled; :57 payCompleteCheck (:78 ภาษีหัก 2 ตำแหน่ง)
  • backend/internal/application/process/pay_check.go:86 sumPayTenderRows; :110 payTenders; :131 payAllTenders
  • backend/internal/application/process/pay_check.go:142 checkPayTotal (ข้อความ :151); :263 payExceedsBalance
  • backend/internal/application/process/pay_other.go:43 payCashFlags; :60 parsePayOther
  • backend/internal/application/process/trans.go:1331 payReceiveFlags; :1338 payStmts
  • backend/internal/application/process/service.go:1860 payTenders GL; :1861 เช็คจ่าย 2112; :1865 เช็ครับ 1122
  • backend/internal/application/process/service.go:2329 บัตร 461/462/463