#tables#ap-ar#group
กลุ่มตาราง ap_* / ar_* / ap_ar_*
ตารางฝั่ง เจ้าหนี้ (AP) / ลูกหนี้ (AR) ที่ปรากฏในโค้ด backend (backend/internal/**/*.go ไม่รวม _test) แบ่งสองแบบที่ นโยบายเขียนต่างกัน:
- ตารางเงิน (
ap_ar_trans*,ap_ar_debt_*,ap_ar_deposit_money,ap_ar_pay_bill(_detail)) — เขียนได้เฉพาะผ่าน/api/processไม่ผ่านเกตเวย์ query ตรง ๆ (write_policy.go:24moneyTablePattern); บันทึกเอกสารแบบลบแล้วใส่ใหม่ตาม (doc_no,trans_flag) ในธุรกรรมเดียว (docs.go:483-495). ดู ลำดับการบันทึกเอกสาร (Transaction Save Flow), ตัวกระจายคำขอของ process (Process dispatcher) - ตาราง master (
ar_*,ap_*ที่เหลือ รวมap_ar_transport_label) — อยู่ใน allow-list เขียนแบบ legacy (write_policy_legacy.go:11-14,31-33); ชื่อap_ar_transport_labelถูกออกแบบให้ไม่โดน regex ตารางเงิน (write_policy.go:23). ดู ข้อมูลหลักแบบหัว-รายการ รหัสอัตโนมัติ และเลย์เอาต์รายการ (Master-detail, code auto-run, DataList)
ตัวแยกฝั่งเจ้าหนี้/ลูกหนี้ในตารางเอกสาร: trans_type 1 = เจ้าหนี้/ซื้อ, 2 = ลูกหนี้/ขาย. รหัสเอกสาร: 213 วางบิลเจ้าหนี้, 235 วางบิลลูกหนี้, 19 จ่ายชำระเจ้าหนี้, 239 รับชำระลูกหนี้ (รหัสชนิดเอกสาร trans_flag และทิศทางสต็อก (Trans Flag Map)). ตัวเลขการอ้างอิง (n) ด้านล่างคือจำนวนครั้งที่ชื่อตารางปรากฏใน SQL (FROM/JOIN/INTO/UPDATE/DELETE FROM) ของ backend/internal.
ตารางที่มีโน้ตแยก
ar_customer→ ทะเบียนลูกหนี้/ลูกค้า (ar_customer) — ทะเบียนลูกหนี้/ลูกค้า (n≈95 มากที่สุดของกลุ่ม; ถูก join ในแทบทุกรายงานขาย/ลูกหนี้)ar_customer_detail→ รายละเอียดเงื่อนไขลูกหนี้ (ar_customer_detail) — เครดิต ภาษี กลุ่มราคา บัญชีลูกหนี้ (n≈22)ap_supplier→ ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier) — ทะเบียนเจ้าหนี้/ผู้ขาย (n≈35)ap_supplier_detail→ รายละเอียดเงื่อนไขเจ้าหนี้ (ap_supplier_detail) — เงื่อนไขซื้อ/ภาษี/บัญชีเจ้าหนี้ (n≈4)ap_ar_trans→ หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans) — หัวเอกสารวางบิล/จ่าย-รับชำระ (n≈41; ตารางเงิน)ap_ar_trans_detail→ รายการบรรทัดใบวางบิล/ชำระหนี้ (ap_ar_trans_detail) — รายการบิลที่วาง/ชำระ + รายการมัดจำ + ตัวบ่งชี้ปรับสต็อก (n≈44; ตารางเงิน)ar_dealer→ ข้อมูลตัวแทนจำหน่าย/จุดขายของลูกหนี้ (ar_dealer) — ข้อมูลตัวแทนจำหน่ายผูกลูกหนี้ (n≈6; ความหมายเชิงธุรกิจไม่ชัดจากโค้ด)ap_ar_transport_label→ ที่อยู่จัดส่ง/ป้ายขนส่งของเจ้าหนี้-ลูกหนี้ (ap_ar_transport_label) — ที่อยู่จัดส่ง/ป้ายขนส่ง แยกฝั่งด้วยar_ap_type(n≈5)ar_credit_pay_bill→ ตารางวันนัดวางบิล-รับเงินตามเครดิต (ar_credit_pay_bill) — ตารางแปลงวันเครดิตเป็นวันครบกำหนดตามรอบวางบิล (n≈3; เปิดด้วยerp_option.use_credit_pay_bill_calc, erp_option — ตัวเลือกระบบ (สวิตช์ + ทศนิยมของบริษัท))
ตารางอื่นที่อ่านในโค้ด (ยังไม่มีโน้ตแยก)
ar_group,ar_group_sub— ชื่อกลุ่มลูกค้าหลัก/ย่อย อ่านเฉพาะเพื่อแสดงชื่อและจับราคาตามกลุ่ม (price_info.go:58-60;report_menu_ap_ar.go:936-937) — ดู เครื่องมือหาราคาและแก้ราคา (Price engine / price center / modify price)ar_type— ชื่อประเภทลูกหนี้ (report_menu_ap_ar.go:936-937)ar_dimension— ชื่อมิติลูกหนี้ ผูกกับar_customer_detail.dimension_*(report_menu_so_po.go:872)
ตารางที่ปรากฏเฉพาะในรายการสิทธิ์เขียน/รายการชื่อ (ไม่พบ SQL อ่าน-เขียนใน backend)
ชื่อเหล่านี้อยู่ใน write_policy_legacy.go:11-14,31-33 หรือ write_policy.go:24 เท่านั้น — เป็นตาราง master/ตารางเงินที่หน้าจอ legacy หรือ frontend จัดการผ่านเส้นทาง generic; ความหมายคอลัมน์ "ไม่ชัดจากโค้ด":
- ฝั่งเจ้าหนี้:
ap_contactor,ap_item_by_supplier,ap_dimension,ap_group,ap_group_sub,ap_supplier_connected,ap_type - ฝั่งลูกหนี้:
ar_contactor,ar_item_by_customer,ar_customer_cashier_list,ar_customer_connected,ar_contact_group,ar_credit_approve,ar_credit_group,ar_keep_chq_condition,ar_keep_money_condition,ar_logistic_area,ar_pay_bill_condition,ar_paybill_area,ar_sale_area - ตารางเงินตาม pattern:
ap_ar_debt_*,ap_ar_deposit_money,ap_ar_pay_bill,ap_ar_pay_bill_detail(write_policy.go:24) — ไม่พบ SQL ที่ใช้ตรง ๆ ใน backend
ระบบอื่นที่ใช้ตารางกลุ่มนี้
- CRM — อ่าน
ar_customer,ar_customer_detail(credit defaultcrm/handler.go:199-207) และap_ar_transด้วยtrans_flag41/43 (crm/handler.go:177-178) ซึ่งไม่ตรงชุดรหัส 235/239 ที่ฝั่ง process ใช้ (docs.go:528) → ระวังตัวเลขไม่ตรงกัน - Dashboard — นับ
ar_customer, รวมap_supplier.debt_balanceเป็นเจ้าหนี้ค้างชำระ (dashboard/handler.go:126-131) - AI / MCP gateway — อ่านอย่างเดียว: นับลูกค้า/ผู้ขาย (
ai/handler.go:118-125), บริบทขาย-ลูกหนี้ (ai/context_sales_ar.go;application/process/ai_copilot.go), คำอธิบายตารางให้เครื่องมือ (mcp/gateway.go:1406-1440) — คำอธิบายคอลัมน์ในนั้นไม่ใช่ schema จริง - autocare — seed ใส่ตัวอย่างเจ้าหนี้ลงในตาราง
ap_supplierและลูกหนี้ลงในar_customer(autocare/seed.go:291-302) แล้วใช้ master เดียวกับระบบบัญชี; procure — อ่านap_supplier(code, name_1, telephone) มาแสดง (procure/handler.go:1912) - POS / WMS / TMS — ไม่พบ SQL ที่แตะตารางกลุ่มนี้โดยตรงใน backend ที่อ่าน → ใช้ผ่าน process engine เท่านั้น
ข้อควรระวัง
- ไม่มี DDL สร้างตารางหลักใน repo (มีแต่
ALTER ... IF NOT EXISTS:service.go:817-856,platform/db/pool.go:37-74) — คอลัมน์ในโน้ตทุกตัวมาจาก INSERT/SELECT/struct ที่อ่าน ไม่ใช่จาก schema - รหัสลูกหนี้/เจ้าหนี้เป็น varchar(25); เปลี่ยนรหัสต้องผ่านเครื่องมือเปลี่ยนรหัส (
workflow.go:105-158) เพราะรหัสถูกอ้างในตารางเอกสารจำนวนมาก - ตารางเอกสารฝั่งขาย-ซื้อ (หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans), รายการสินค้าในเอกสาร (ic_trans_detail)) และฝั่งเงินสด/เช็ค (กลุ่มตาราง cb_* — เงินสด ธนาคาร เช็ค และเงินสดย่อย) ผูกกับ
cust_code/ap_ar_codeของกลุ่มนี้ด้วยรหัส ไม่มี FK - ภาพรวมการลงบัญชีและภาษี: การลงบัญชี Dr/Cr มาตรฐานแยกตามชนิดเอกสาร (Standard GL Posting), ทะเบียนภาษีซื้อ/ภาษีขาย และภาษีหัก ณ ที่จ่าย (VAT Register & WHT)
ที่มาในโค้ด
backend/internal/domain/query/write_policy.go:23-24backend/internal/domain/query/write_policy_legacy.go:11-14,31-33backend/internal/application/process/docs.go:483-495,528backend/internal/application/process/price_info.go:58-60backend/internal/application/process/report_menu_ap_ar.go:936-937backend/internal/application/process/report_menu_so_po.go:872backend/internal/adapter/inbound/http/crm/handler.go:177-178,199-207backend/internal/adapter/inbound/http/dashboard/handler.go:126-131backend/internal/adapter/inbound/http/ai/handler.go:118-125backend/internal/adapter/inbound/http/mcp/gateway.go:1406-1440backend/internal/adapter/inbound/http/procure/handler.go:1912backend/internal/adapter/inbound/http/autocare/seed.go:291-302backend/internal/application/process/service.go:817-856,backend/internal/platform/db/pool.go:37-74