เช็คจ่าย ตั้งแต่จ่ายเช็ค-เช็คผ่าน-คืน-ขาดสิทธิ์-เปลี่ยนเช็ค ลงบัญชีอย่างไร
ตอบสั้น: จ่ายเช็คในแท็บจ่ายชำระ → Cr เช็คจ่าย 2112 แล้วตามด้วยเอกสาร 451 เช็คผ่าน (Dr 2112 / Cr ธนาคาร), 453 เช็คคืน และ 452 ขาดสิทธิ์ (Dr ธนาคาร / Cr เจ้าหนี้), 456 เปลี่ยนเช็ค (Dr 2112 / Cr เจ้าหนี้) สถานะใน cb_chq_list คำนวณใหม่จากเอกสารล่าสุด
รายละเอียด
ดู วงจรเช็ครับ/เช็คจ่าย บัตรเครดิต และโอนเงินระหว่างบัญชี (Cheque Lifecycle & Bank Transfer), เช็คจ่าย: ผ่าน/ขาดสิทธิ์/คืน/เปลี่ยน (Paid Cheque Lifecycle), เช็คจ่ายยกมา (Paid Cheque Beginning Balance), เช็ครับ/เช็คจ่าย และสถานะเช็ค (cheque / cb_chq_list.status / chq_type)
จ่ายเช็ค แถวเช็คในแท็บชำระเก็บเป็น cb_trans_detail doc_type 2 และสร้างแถว cb_chq_list (เช็คจ่ายใช้สมุดบัญชีของบริษัท) GL ฝั่งจ่ายลง Cr 2112 (แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์")
สถานะ (chequeStatusSQL, chq_type 2) จับคู่ด้วย chq_number (456 ที่ไม่มีเลขเช็ค ใช้ item_code แทน)
| เอกสาร | สถานะ |
|---|---|
| จ่ายในแท็บชำระ / 406 เช็คจ่ายยกมา | 0 เช็คในมือ |
| 451 เช็คผ่าน | 2 |
| 453 เช็คคืน | 3 |
| 452 เช็คขาดสิทธิ์ | 4 |
| 456 เปลี่ยนเช็ค | 7 |
เลือกเช็คได้เมื่อ (chequeCandidateWhere)
- 451, 452: สถานะ 0 หรือ 3 (และสมุดบัญชีตรง
pass_book_codeถ้าระบุ) - 453: สถานะ 2 (ผ่านแล้วเท่านั้น)
- 456: สถานะ 0 หรือ 3 และเจ้าหนี้เดียวกัน
GL เส้นมาตรฐาน (เช็คจ่าย = 2112/2111, ธนาคาร = erp_pass_book.account_code_1 ไม่มีใช้ 1112/1113/1111)
- 451 ผ่าน: Dr เช็คจ่าย / Cr ธนาคาร
- 453 คืน: Dr ธนาคาร / Cr เจ้าหนี้ (ตั้งหนี้กลับ หลังธนาคารตัดเงินไปแล้ว)
- 452 ขาดสิทธิ์: Dr ธนาคาร / Cr เจ้าหนี้
- 456 เปลี่ยนเช็ค: Dr เช็คจ่าย / Cr เจ้าหนี้
- 406 ยกมา: ไม่มี case ใน GL เส้นมาตรฐาน
ข้อควรระวัง
- 452 เลือกได้ทั้งเช็คสถานะ 0 (ยังไม่ผ่าน) แต่ GL ลง Dr ธนาคาร ไม่ได้ล้าง 2112 ถ้าเช็คยังไม่เคยผ่าน ยอดเช็คจ่ายจะค้างและธนาคารเกิน ควรตรวจกับ C# ก่อนใช้
- ใน else branch ของ 451/456 มีเงื่อนไข
transFlag == 453ซึ่งไม่มีวันเป็นจริง เพราะ 453 ถูกจับไปก่อนแล้ว (service.go:2318-2321) - 456 ลงแค่ 2 บรรทัด การลงเช็คใบใหม่ ไม่ชัดจากโค้ดเส้นมาตรฐาน
- เอกสารเช็คไม่มีการตรวจงวดบัญชี (บันทึก/แก้/ลบเอกสารไม่ได้ ขึ้นว่า "ได้ถูกปิดงวดไปแล้ว หรือยังไม่ได้กำหนดงวดบัญชี" แก้อย่างไร)
- รหัสเอกสารที่มีรูปแบบ GL ใช้รูปแบบแทน (ตั้งรูปแบบการลงบัญชี (GL) ในรูปแบบเอกสารยังไง และระบบใช้เมื่อไร)
ดูเพิ่ม
- เช็ครับ ตั้งแต่รับ-นำฝาก-ผ่าน-คืน-ขาดสิทธิ์ ลงบัญชีและเปลี่ยนสถานะอย่างไร
- แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์"
- รับชำระหนี้ (239) / จ่ายชำระหนี้ (19) ลงบัญชี GL ยังไง เช็ค โอน ภาษีหัก ไปไหน
- เงินสด ธนาคาร และวงจรเช็ค (Cash, Bank & Cheque Lifecycle)
- ทะเบียนเช็ค/บัตรเครดิต/กระเป๋าเงิน (cb_chq_list)
ที่มาในโค้ด
backend/internal/application/process/service.go:1861แท็บจ่ายชำระ เช็ค = 2112backend/internal/application/process/service.go:2311GL เช็คจ่าย 451-456;:2312บัญชี 2112/2111backend/internal/application/process/service.go:2318else branch (เงื่อนไข 453 ไม่ถูกใช้)backend/internal/application/process/cheque.go:32chequeStatusSQLchq_type 2backend/internal/application/process/cheque.go:220chequeCandidateWhere451/452/453/456backend/internal/application/process/trans.go:1338payStmtsเขียนแถวเช็ค/cb_chq_listbackend/internal/application/process/cheque_forward.go:10เช็คจ่ายยกมา 406