#tables#cb#group
กลุ่มตาราง cb_*
ตารางฝั่ง เงินสด-ธนาคาร (Cash Book): ช่องทางรับ/จ่ายเงินของเอกสาร, ทะเบียนเช็ค/บัตร, และเงินสดย่อย. ใน SQL ของ backend/internal (ไม่รวม _test) พบ เพียง 4 ตาราง — ไม่มีตาราง cb_* อื่นปรากฏในโค้ด backend หรือใน frontend/account (จำนวนการอ้างชื่อ: cb_trans ~100, cb_chq_list ~84, cb_trans_detail ~78, cb_petty_cash ~8).
นโยบายเขียน: cb_trans, cb_trans_detail, cb_chq_list เป็นตารางเงิน — เขียนได้เฉพาะผ่าน /api/process (write_policy.go:24 moneyTablePattern); cb_petty_cash เป็น master อยู่ใน allow-list legacy (write_policy_legacy.go:16).
ตารางที่มีโน้ตแยก
cb_trans→ หัวสรุปการรับ/จ่ายเงิน (cb_trans) — หัวสรุปแท็บรับ/จ่ายเงินของเอกสาร: ยอดเงินสด/โอน/เช็ค/บัตร/ค่าใช้จ่ายอื่น และpay_type(1 = รับ, 2 = จ่าย); คอลัมน์สะกดtranfer_amountตามของจริงcb_trans_detail→ รายละเอียดรับ/จ่ายเงินแยกรายการ (cb_trans_detail) — รายการช่องทางรับ/จ่ายทีละบรรทัด แยกด้วยdoc_type(1 โอน, 2 เช็ค, 3 บัตรเครดิต, 4 เงินสดย่อย, 5 ใช้เงินล่วงหน้า, 6 ใช้มัดจำ, 11 รายจ่ายอื่น, 12 รายได้อื่น, 21 PromptPay/ e-wallet)cb_chq_list→ ทะเบียนเช็ค/บัตรเครดิต/กระเป๋าเงิน (cb_chq_list) — ทะเบียนเช็ค/บัตร/e-wallet (chq_type1 เช็ครับ, 2 เช็คจ่าย, 3 บัตร, 21 wallet) — สร้างจากcb_trans_detailและstatusคำนวณจากเอกสารเช็ค ไม่กรอกเองcb_petty_cash→ วงเงินสดย่อย (cb_petty_cash) — master เงินสดย่อย (รหัส, ชื่อ, ผังบัญชี) ยอดคงเหลือในรายงานคำนวณจากความเคลื่อนไหว
ความสัมพันธ์หลัก
cb_trans1 : Ncb_trans_detailด้วย (doc_no,trans_flag);cb_trans_detaildoc_type 2/3/21 สร้างแถวในcb_chq_list(chqListFromPaySQL,trans.go:1543)- คู่ค้า:
cb_trans.ap_ar_codeและcb_chq_list.ap_ar_codeชี้ ทะเบียนลูกหนี้/ลูกค้า (ar_customer) / ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier) ในกลุ่ม กลุ่มตาราง ap_* / ar_* / ap_ar_* — เจ้าหนี้ ลูกหนี้ และใบวางบิล-รับ/จ่ายชำระ - เอกสารต้นทาง: ใบขาย/ซื้อ/โพสบิล หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans); เอกสารรับ-จ่ายชำระ หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans); สมุดเงินฝาก erp_pass_book — สมุดเงินฝาก/บัญชีธนาคารของบริษัท; ธนาคาร erp_bank / erp_bank_branch — ธนาคารและสาขาธนาคาร
- ลงบัญชี: หัวสมุดรายวันทั่วไป (gl_journal) (เงินสดย่อยดึงผังบัญชีจาก
cb_petty_cash.chart_of_accountที่gl_template.go:202) — การลงบัญชี Dr/Cr มาตรฐานแยกตามชนิดเอกสาร (Standard GL Posting), เครื่องมือลงบัญชีตามรูปแบบ GL (GL Template Engine)
ใครเขียน (ที่เห็นในโค้ด)
- แท็บรับ/จ่ายของเอกสาร:
trans.go:1380(บันทึกเอกสารทั่วไป) และลบก่อนบันทึกใหม่ที่docs.go:491-493; POSpos_bill.go:421-490; ขายสินทรัพย์fa_sale.go:558; รายได้/รายจ่ายอื่นpay_other.go:123; มัดจำ/เงินล่วงหน้าtrans_deposit.go:121-133; เช็คส่งต่อ/โอนcheque_forward.go:20-39; ปรับยอดภาษี ณ จุดจ่ายpay_check.go:78; ซิงก์status/last_statusตามเอกสารต้นทางdoc_flow.go:263-264,service.go:721-722— ภาพรวม แท็บรับ/จ่ายเงิน และการชำระหนี้ตามบิล (Payment Tab & Bill Settlement), เงินมัดจำและเงินล่วงหน้า (Deposits & Advances) cb_chq_list.status: คำนวณใหม่โดยchequeStatusSQL(cheque.go:32-65) ผ่าน handler โอน/คืนเช็ค (adapter/inbound/http/process/cheque_handler.go:14; ฝั่ง servicecheque_forward.go) — วงจรเช็ครับ/เช็คจ่าย บัตรเครดิต และโอนเงินระหว่างบัญชี (Cheque Lifecycle & Bank Transfer)- ยกเลิก/แก้เอกสาร: ลบแล้วสร้างใหม่ตามกฎ การลบ แก้ไข และล็อกเอกสาร (Transaction Delete / Edit Guards), ยกเลิกและอนุมัติเอกสาร (Document cancel / approve)
ใครอ่าน
- รายงาน CB และเงินสดย่อย:
report_menu_cb.go(เงินสดย่อย:692-723, สถานะเช็ค:152) — เครื่องมือรายงานฝั่ง Backend (Report engine / RunReport) - ตรวจวงเงินเครดิตลูกค้าจากเช็ครับที่ยังไม่เคลียร์:
creditChqSQL(trans_save_rules.go:610) - ผังเอกสาร/ย้อนดูต้นทาง-ปลายทาง:
doc_flow.go,doc_flow_graph.go; รูปประกอบเอกสารdoc_picture.go
ระบบอื่นที่ใช้ตารางกลุ่มนี้
- Dashboard — รวม
cb_trans.total_net_amountเป็น "กระแสเงิน" และcb_chq_list.amountเป็นยอดเช็ค (dashboard/handler.go:130-131) โดยรวมทั้งตาราง ไม่กรองสถานะหรือประเภท - MCP gateway / AI — เปิดให้ AI อ่าน
cb_chq_list(chq_number, doc_no, amount, status)(mcp/gateway.go:993,2180) และใส่คำอธิบายcb_transในคู่มือเครื่องมือ (mcp/gateway.go:1420) - autocare — ใบกำกับภาษีขายของ autocare โพสเป็น
ic_transflag 44 +cb_trans(ตามคอมเมนต์autocare/handler.go:2261) — ใช้ตารางเดียวกับระบบบัญชี - POS — โพสบิลเงินสด/โอน/เช็ค/บัตรลง
cb_trans+cb_trans_detailflag 44 (pos_bill.go:312,421-490) - Frontend — แท็บรับ/จ่ายใช้ doc_type จาก
TransPayTendersGrid.tsx:11-39, รายการเช็คของหน้าข้อมูลซื้อ-ขายreport/BuySaleInformationScreen.tsx:130, ตัวเลือก lookupcb_petty_cashที่master/SmlLookupModal.tsx:106
ข้อควรระวัง
- ไม่มี DDL ของตารางใน repo — คอลัมน์ทั้งหมดในโน้ตมาจาก INSERT/SELECT ที่อ่าน
cb_trans.total_net_amount=total_amount+total_expense_other; dashboard ใช้ผลรวมทั้งตารางจึงปนทั้งรับและจ่าย (pay_type1/2) — อย่าอ่านเป็นยอดสุทธิcb_chq_list.statusห้าม UPDATE ตรง — ถูกคำนวณใหม่จากเอกสารที่เกี่ยวข้อง; ตัวเลขchq_type= 21 ไม่พบจุด INSERT ใน backend ที่อ่าน- เงินสดย่อยตัดจ่ายด้วย
doc_type = 4ในcb_trans_detail(trans_number= รหัสเงินสดย่อย);cb_petty_cash.balance_moneyเป็นเพียงยอดยกมา — ยอดคงเหลือคำนวณจากbalance_money+ ความเคลื่อนไหวตอนออกรายงาน (report_menu_cb.go:692-737) ไม่ใช่ค่าที่เอกสารอัปเดต
ที่มาในโค้ด
backend/internal/domain/query/write_policy.go:24backend/internal/domain/query/write_policy_legacy.go:16backend/internal/application/process/trans.go:1380,1543backend/internal/application/process/docs.go:491-493backend/internal/application/process/pay_other.go:123,pay_check.go:78,trans_deposit.go:121-133,cheque_forward.go:20-39,doc_flow.go:263-264,service.go:721-722backend/internal/application/process/pos_bill.go:312,421-490backend/internal/application/process/fa_sale.go:558backend/internal/application/process/cheque.go:32-65backend/internal/application/process/gl_template.go:202backend/internal/application/process/report_menu_cb.go:152,692-723backend/internal/application/process/trans_save_rules.go:610backend/internal/adapter/inbound/http/process/cheque_handler.go:14backend/internal/adapter/inbound/http/dashboard/handler.go:130-131backend/internal/adapter/inbound/http/mcp/gateway.go:993,1420,2180backend/internal/adapter/inbound/http/autocare/handler.go:2261frontend/account/transaction/TransPayTendersGrid.tsx:11-39frontend/account/report/BuySaleInformationScreen.tsx:130frontend/account/master/SmlLookupModal.tsx:106