เช็ครับ ตั้งแต่รับ-นำฝาก-ผ่าน-คืน-ขาดสิทธิ์ ลงบัญชีและเปลี่ยนสถานะอย่างไร
ตอบสั้น: รับเช็คในแท็บรับชำระ → Dr เช็ครับ (1122) แล้วแต่ละขั้นเป็นเอกสารแยก: 410 นำฝาก, 411 ผ่าน, 412 คืน, 413 ขาดสิทธิ์, 416 เปลี่ยนเช็ค, 418 คืนเช็ค/ตั้งหนี้ใหม่ สถานะใน cb_chq_list ไม่ได้เก็บแยก ระบบคำนวณใหม่จากเอกสารล่าสุดของเช็คนั้นทุกครั้ง
รายละเอียด
ดู วงจรเช็ครับ/เช็คจ่าย บัตรเครดิต และโอนเงินระหว่างบัญชี (Cheque Lifecycle & Bank Transfer), เช็ครับ: นำฝาก/ผ่าน/คืน/ขาดสิทธิ์/เปลี่ยน/คืนเช็คตั้งหนี้ใหม่ (Received Cheque Lifecycle), เช็ครับ/เช็คจ่าย และสถานะเช็ค (cheque / cb_chq_list.status / chq_type), ทะเบียนเช็ค/บัตรเครดิต/กระเป๋าเงิน (cb_chq_list)
สถานะ (chequeStatusSQL) ใช้แถว ic_trans_detail ล่าสุดที่ยังไม่ยกเลิก (เรียง doc_date, doc_time, trans_flag มากก่อน) ไม่มีแถว = 0
| เอกสาร | สถานะ | ชื่อสถานะในรายงาน |
|---|---|---|
| รับในแท็บชำระ / 405 ยกมา | 0 | เช็คในมือ |
| 410 นำฝาก | 1 | เช็คนำฝาก |
| 411 ผ่าน | 2 | เช็คผ่าน |
| 412 คืน | 3 | เช็ครับคืน |
| 413 ขาดสิทธิ์ | 4 | เช็คยกเลิก (เมนูเรียกขาดสิทธิ์) |
| 414 (มีเฉพาะ backend) | 6 | เช็คคืนนำเข้าใหม่ |
| 416 เปลี่ยนเช็ค | 7 | เช็คเปลี่ยน |
| 418 คืนเช็ค/ตั้งหนี้ใหม่ | 8 | เช็คตั้งหนี้ใหม่ |
418 จับคู่เช็คด้วย item_code ส่วนอื่นใช้ chq_number
เลือกเช็คได้เมื่อ (chequeCandidateWhere)
- 410, 413: สถานะ 0 หรือ 3
- 411: สถานะ 1 (และสมุดบัญชีตรงกับใบนำฝากล่าสุด)
- 412: สถานะ 1 หรือ 2 (และสมุดตรงกับใบผ่านล่าสุด)
- 416, 418: สถานะ 0 หรือ 3 และลูกค้าเดียวกัน
GL เส้นมาตรฐาน (เช็ครับ = 1122-00/1122/1121, ระหว่างเรียกเก็บ = 1122-01/1122 ระบบสร้างผัง 1122-01 "เช็ครับระหว่างเรียกเก็บ" ให้ถ้ายังไม่มี)
- รับชำระ (239 ฯลฯ): Dr เช็ครับ 1122 / Cr ลูกหนี้ (แท็บรับ/จ่ายชำระ (เงินสด โอน เช็ค บัตร PromptPay ภาษีหัก) เก็บและลงบัญชีอย่างไร ทำไมขึ้น "ยอดการจ่ายเงินไม่สมบูรณ์")
- 410 นำฝาก: Dr ธนาคาร / Cr เช็ครับ (ถ้ามี 411 ของเช็คนี้แล้ว Dr 1122-01 แทน)
- 411 ผ่าน: Dr ธนาคาร / Cr 1122-01 และแก้บรรทัด Dr ของใบนำฝาก 410 เป็น 1122-01 (ถ้าไม่พบใบนำฝาก Cr เช็ครับ)
- 412 คืน: Dr เช็ครับ / Cr ธนาคาร
- 413, 414, 418: Dr ลูกหนี้ / Cr เช็ครับ
- 416 เปลี่ยนเช็ค: Dr ธนาคาร / Cr เช็ครับ
- 405 ยกมา: ไม่มี case ใน GL เส้นมาตรฐาน
cheque_forward.goแค่ลงทะเบียนเช็ค
ธนาคารใช้ erp_pass_book.account_code_1 ของสมุดบัญชีในเอกสาร ไม่มีใช้ 1112/1113/1111 (erp_pass_book — สมุดเงินฝาก/บัญชีธนาคารของบริษัท)
ข้อควรระวัง
- แท็บรับชำระลงเช็คที่ "1122" รหัสเดียว (
service.go:1865) แต่เอกสารนำฝาก/คืนใช้ "1122-00" ก่อน (service.go:2249) ถ้าผังมี 1122-00 ยอดจะค้างคนละบัญชี - บันทึก 411 ไปแก้ GL ของเอกสาร 410 อีกใบ (
service.go:2283) ถ้ายกเลิก/ลบ 411 ต้อง rebuild GL ของ 410 ด้วย (ต้องกดประมวลผลลงบัญชี (Rebuild GL) ใหม่เมื่อไร มันลบอะไรทิ้งบ้าง) - 416 ลง Dr ธนาคาร ไม่ได้ลงเช็คใบใหม่ การลงเช็คใหม่ ไม่ชัดจากโค้ดเส้นมาตรฐาน
- เอกสารเช็คไม่มีการตรวจงวดบัญชี (
period.go:107-108) - ถ้ารหัสเอกสารมีรูปแบบ GL ระบบใช้รูปแบบแทน (ตั้งรูปแบบการลงบัญชี (GL) ในรูปแบบเอกสารยังไง และระบบใช้เมื่อไร)
ดูเพิ่ม
- เช็คจ่าย ตั้งแต่จ่ายเช็ค-เช็คผ่าน-คืน-ขาดสิทธิ์-เปลี่ยนเช็ค ลงบัญชีอย่างไร
- วงจรเช็ครับ/เช็คจ่าย บัตรเครดิต และโอนเงินระหว่างบัญชี (Cheque Lifecycle & Bank Transfer)
- ทะเบียนเช็ครับ/เช็คจ่าย/บัตรเครดิตรับ (Cheque & Card Register)
- เงินสด ธนาคาร และวงจรเช็ค (Cash, Bank & Cheque Lifecycle)
- บทเรียนบั๊กการชำระเงิน เช็ค และช่องทางรับจ่าย (Payment, Cheque & Tender Bugs)
ที่มาในโค้ด
backend/internal/application/process/cheque.go:32chequeStatusSQL(คอมเมนต์:16-31)backend/internal/application/process/cheque.go:68RebuildChequeStatus;:329RebuildChequebackend/internal/application/process/cheque.go:220chequeCandidateWhere;:266ChequeCandidatesbackend/internal/application/process/service.go:2243GL เช็ครับ 410-418;:2249บัญชีเช็ครับbackend/internal/application/process/service.go:2283411 แก้ GL ของ 410backend/internal/application/process/service.go:1865แท็บรับชำระ เช็ค = 1122backend/internal/application/process/cheque_forward.go:10chequeForwardStmtsเช็คยกมา 405/406backend/internal/application/process/report_menu_cb.go:152ชื่อสถานะเช็ค