#tables#cb
รายละเอียดรับ/จ่ายเงิน cb_trans_detail
บรรทัดย่อยของ หัวสรุปการรับ/จ่ายเงิน (cb_trans) — หนึ่งแถวต่อหนึ่งรายการ ของช่องทางรับ/จ่าย ชนิดของรายการแยกด้วย doc_type (ไม่ใช่คนละตาราง) ความหมายของ trans_number และ amount เปลี่ยนไปตาม doc_type จึงต้องอ่านคู่กันเสมอ.
รหัส doc_type
| doc_type | รายการ | trans_number เก็บอะไร |
ผู้เขียน |
|---|---|---|---|
| 1 | เงินโอน | passbook (pass_book_code) หรือเลขอ้างอิง |
trans.go:1405-1425; POS pos_bill.go:496 |
| 2 | เช็ค | เลขที่เช็ค | pay tab trans.go:1506-1530; เช็คยกมา 405/406 cheque_forward.go:39-48 (ใช้ doc_type 2 คงที่) |
| 3 | บัตรเครดิต | เลขบัตร/slip | pay tab; POS pos_bill.go:497 |
| 4 | เบิกจ่ายเงินสดย่อย | รหัสวงเงินสดย่อย (วงเงินสดย่อย (cb_petty_cash)) | อ่านที่ report_menu_cb.go:667-681 |
| 5 | ใช้เงินล่วงหน้า (advance) | เลขเอกสารเงินล่วงหน้าที่ตัดใช้ | trans_deposit.go:121-137 |
| 6 | ใช้เงินมัดจำ (deposit) | เลขเอกสารมัดจำที่ตัดใช้ | trans_deposit.go:121-137 (กลุ่มที่ useDocType 5/6 ที่ trans_deposit.go:40-43) |
| 11 | ค่าใช้จ่ายอื่น | รหัสจากรายการตั้งค่า | pay_other.go:64-86,119-126 (payExpenseDocType = 11) |
| 12 | รายได้อื่น | รหัสจากรายการตั้งค่า | pay_other.go:26-27,119-126 (payIncomeDocType = 12) |
| 21 | PromptPay / e-Wallet / QR | เลขอ้างอิง (หรือ passbook) | trans.go:1426-1440; POS pos_bill.go:498 |
ภาพรวมแท็บชำระเงินและความหมายทางบัญชี: แท็บรับ/จ่ายเงิน และการชำระหนี้ตามบิล (Payment Tab & Bill Settlement), เช็ค/โอนข้ามบัญชี: วงจรเช็ครับ/เช็คจ่าย บัตรเครดิต และโอนเงินระหว่างบัญชี (Cheque Lifecycle & Bank Transfer), มัดจำ/ล่วงหน้า: เงินมัดจำและเงินล่วงหน้า (Deposits & Advances).
คอลัมน์สำคัญ
| column | ความหมาย | ใช้ที่ไหน |
|---|---|---|
doc_no, trans_flag |
key ร่วมกับ หัวสรุปการรับ/จ่ายเงิน (cb_trans) และเอกสารเจ้าของ | ทุกที่ |
trans_type |
1 = ซื้อ/เจ้าหนี้, 2 = ขาย/ลูกหนี้ | trans.go:1510 |
doc_date, doc_time, line_number |
วัน-เวลา / ลำดับรายการ | trans.go:1510 |
doc_type |
ชนิดรายการ (ตารางบน) | ทุก INSERT |
pass_book_code |
สมุดบัญชีธนาคารของบริษัท (erp_pass_book — สมุดเงินฝาก/บัญชีธนาคารของบริษัท) | trans.go:1510; cheque_forward.go:39 |
bank_code, bank_branch |
ธนาคาร/สาขา — ถ้าไม่ระบุ ดึงจาก erp_pass_book ของ passbook นั้น |
trans.go:1510-1516 (COALESCE จาก erp_pass_book); erp_bank / erp_bank_branch — ธนาคารและสาขาธนาคาร |
trans_number |
เลขเช็ค/เลขโอน/รหัสเงินสดย่อย/เลขเอกสารตัดใช้ (ตามชนิด) | ทุก INSERT |
trans_number_type (และ ap_ar_type) |
สำหรับเช็ค: 1 = เช็ครับ, 2 = เช็คจ่าย | trans.go:1394; cheque_forward.go:39-41 |
ap_ar_type, ap_ar_code |
ฝั่งและรหัสลูกหนี้/เจ้าหนี้ (ทะเบียนลูกหนี้/ลูกค้า (ar_customer) / ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier)) | trans.go:1510; trans_deposit.go:133 |
amount, sum_amount |
จำนวนเงินของรายการ (sum_amount คือยอดรวมที่ใช้ตอนตัดบัญชี; มัดจำเก็บ sum_amount = ยอดเอกสารต้นทาง, amount = ยอดที่ตัดใช้) |
trans.go:1510; trans_deposit.go:133-137 |
chq_date, chq_due_date |
วันที่เช็ค / วันครบกำหนด (หรือวันที่โอน) | trans.go:1510; cheque_forward.go:39 |
doc_date_ref |
วันที่ของเอกสารที่ตัดใช้ (มัดจำ/ล่วงหน้า) | trans_deposit.go:133 |
remark |
หมายเหตุรายการ | trans.go:1520, pay_other.go:123 |
no_approved, credit_card_type, charge |
เลขอนุมัติ / ประเภทบัตร (หรือ passbook ของ PromptPay) / ค่าธรรมเนียม | trans.go:1520 (ถ้ามีคอลัมน์ extra ใน DB — hasExtraCols) |
chq_on_hand, external_chq |
เช็คอยู่ในมือ / เช็คจากภายนอก — ถูกอ่านตอนสร้างทะเบียนเช็ค | trans.go:1543-1555 (chqListFromPaySQL) |
status |
เช็คยกมาใส่ 0 (ความหมายอื่น "ไม่ชัดจากโค้ด") | cheque_forward.go:39 |
last_status |
0 = ใช้งาน, 1 = ยกเลิก (INSERT ด้วย 0 แล้วตามเอกสารเจ้าของ) | doc_flow.go:262; รายงาน CB กรอง cbmParentOK (report_menu_cb.go:154) |
ความสัมพันธ์
- หัว: หัวสรุปการรับ/จ่ายเงิน (cb_trans) (
doc_no + trans_flag) - เช็ค/บัตร (doc_type 2, 3) → สรุปเข้า ทะเบียนเช็ค/บัตรเครดิต/กระเป๋าเงิน (cb_chq_list) ด้วย
chqListFromPaySQLโดยcb_chq_list.doc_ref = cb_trans_detail.doc_noและdoc_line_number = line_number - passbook → erp_pass_book — สมุดเงินฝาก/บัญชีธนาคารของบริษัท → ธนาคาร erp_bank / erp_bank_branch — ธนาคารและสาขาธนาคาร
- เงินสดย่อย (doc_type 4) → วงเงินสดย่อย (cb_petty_cash) ผ่าน
trans_number = cb_petty_cash.code - มัดจำ/ล่วงหน้า (5, 6) → เอกสาร หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) (
d.doc_no = trans_number, ตรวจที่trans_deposit.go:133-137)
ใครเขียน / ใครอ่าน
- เขียน:
trans.go:1506-1535(pay tab ทุกเอกสาร),pay_other.go:123(11/12),trans_deposit.go:133(5/6),pos_bill.go:504-509(POS 1/3/21),cheque_forward.go:39(405/406) - ลบ: ทุก plan ที่ลบ-สร้างใหม่ตาม (doc_no, trans_flag) —
docs.go:491,trans_deposit.go:121(ลบเฉพาะdoc_type = useDocType),cheque_forward.go:21 - อัปเดตสถานะ:
doc_flow.go:262 - อ่าน: GL template (
gl_template.go:852-854ดึงธนาคาร/ประเภทบัตรผ่านcb_chq_list), รายงาน CB (report_menu_cb.go:154,667-681,757), เครดิตลูกหนี้ — ยอดมัดจำที่ใช้แล้ว (trans_credit.go:223-227orderAdvanceSQL: อ่านcb_trans_detail.amountที่trans_number = dp.doc_noกับlast_status = 0), flow graph (doc_flow_graph.go:598)
ข้อควรระวัง
- แยกทุกรายการด้วย
doc_type— เงินสดย่อย (4) ไม่ใช่เช็คแม้อยู่ในตารางเดียวกัน; รายงานเช็คกรองdoc_type IN (2,3). - รายการ doc_type 5/6 ถูกลบแยกจากรายการอื่น (กรอง
doc_type) เพื่อไม่ทับแท็บชำระปกติ (trans_deposit.go:121). - คอลัมน์
no_approved,credit_card_type,charge,remarkมีสองโหมด INSERT (hasExtraCols) แสดงว่าบางฐานข้อมูลยังไม่มีคอลัมน์เหล่านี้ — ตรวจโครงสร้างก่อนใช้ (trans.go:1506-1530). - ตารางเงิน: แก้ได้ผ่าน
/api/processเท่านั้น (write_policy.go:24). last_statusต้องตามเอกสารเจ้าของเสมอ ไม่เช่นนั้นรายงานเงินสดย่อย/เช็คจะนับเอกสารที่ยกเลิก (รายงาน CB ใช้เงื่อนไข parent OKreport_menu_cb.go:154).
ที่มาในโค้ด
backend/internal/application/process/trans.go:1392-1440,1506-1535,1543-1555backend/internal/application/process/pay_other.go:26-27,50-86,119-126backend/internal/application/process/trans_deposit.go:28-56,121-137backend/internal/application/process/pos_bill.go:495-509backend/internal/application/process/cheque_forward.go:5-50backend/internal/application/process/doc_flow.go:262backend/internal/application/process/report_menu_cb.go:154,667-681,757backend/internal/application/process/gl_template.go:852-854backend/internal/application/process/trans_credit.go:223-247backend/internal/domain/query/write_policy.go:24