ภาพรวมพจนานุกรมข้อมูล: ตารางฐานข้อมูล
ขอบเขต: ตารางที่ backend/ (Go) และ frontend/account/ ใช้จริง ระบบอื่น (autocare_, wms_, pos_, tms_, market_, procure_, crm_ ฯลฯ) ไม่ได้อธิบายรายละเอียด — ใช้โดยระบบอื่น ถ้าต้องดูให้เปิดโค้ดระบบนั้น
ข้อเท็จจริงที่ใช้ร่วมกันทุกตาราง
- ไม่มี DDL ใน repo สำหรับตารางหลักเดิม (
ic_,gl_,ap_,ar_,cb_,as_,erp_) เพราะพอร์ตมาจาก C# SMLERP ฐานข้อมูลมีอยู่ก่อน มีเพียงerpSchemaSQL(service.go:796-946) ที่เพิ่มคอลัมน์/ดัชนี/ตารางบางตัว (เช่นic_opposite_unit) — คอลัมน์ในโน้ตทุกใบอนุมานจาก INSERT/SELECT และ struct ในโค้ด - เอกสารทุกชนิดใช้คีย์ (
doc_no,trans_flag) และdoc_noถูกแปลงเป็นตัวพิมพ์ใหญ่ก่อนบันทึก รหัสtrans_flagทั้งหมดดู รหัสชนิดเอกสาร trans_flag และทิศทางสต็อก (Trans Flag Map) - บันทึกเอกสาร = ลบของเดิมแล้วสร้างใหม่ใน transaction เดียว จากนั้นคำนวณสถานะเอกสาร ซีเรียล สต๊อก/ต้นทุน และสมุดรายวัน ตามลำดับ (ลำดับการบันทึกเอกสาร (Transaction Save Flow)) จึงห้ามใช้
roworderเป็นคีย์ถาวร - ค่าที่ derive ไม่ควรแก้ตรง:
ic_inventory.balance_qty/average_cost,ic_trans_detail.average_cost/sum_of_cost,ic_serial,last_status/used_status/doc_successของหัวเอกสาร (การคำนวณยอดสต็อกคงเหลือใหม่ (Stock Balance Rebuild), ต้นทุนสินค้าแบบถัวเฉลี่ยเคลื่อนที่ (Moving Average Cost)) - ตารางเงิน (
ap_ar_transฯลฯ) แก้ได้ผ่านงานประมวลผลเท่านั้น ส่วน master จำนวนหนึ่งแก้ผ่าน/query/execตาม legacy write allow-list (ADR-0011) ดู ข้อมูลหลักแบบหัว-รายการ รหัสอัตโนมัติ และเลย์เอาต์รายการ (Master-detail, code auto-run, DataList), ตัวกระจายคำขอของ process (Process dispatcher) - ค่าเงิน/จำนวนที่กระทบเงินเป็น decimal ส่งเป็น string (กฎเหล็กข้อ 20)
- มาตรฐานลงบัญชี: การลงบัญชี Dr/Cr มาตรฐานแยกตามชนิดเอกสาร (Standard GL Posting); ข้อยกเว้นสต๊อกพิเศษ: เอกสารสต็อกพิเศษ: ยอดยกมา ปรับปรุง Lot และตรวจนับ (Opening Stock, Lot Adjust, Stock Count)
ตระกูลตาราง (7 กลุ่ม)
| กลุ่ม | prefix | โน้ตกลุ่ม | ตารางหลักที่มีโน้ต |
|---|---|---|---|
| สินค้า/คลัง/สต๊อก/เอกสารซื้อ-ขาย | ic_ |
กลุ่มตาราง ic_ (สินค้า คลัง สต๊อก เอกสารซื้อ-ขาย) | 20 ตาราง/ชุด |
| บัญชีแยกประเภท | gl_ |
กลุ่มตารางบัญชีแยกประเภท (gl_*) | 8 ตาราง |
| เจ้าหนี้/ลูกหนี้/วางบิล | ap_, ar_, ap_ar_ |
กลุ่มตาราง ap_* / ar_* / ap_ar_* — เจ้าหนี้ ลูกหนี้ และใบวางบิล-รับ/จ่ายชำระ | 9 ตาราง |
| เงินสด/ธนาคาร/เช็ค | cb_ |
กลุ่มตาราง cb_* — เงินสด ธนาคาร เช็ค และเงินสดย่อย | 4 ตาราง |
| สินทรัพย์ถาวร | as_ |
กลุ่มตารางสินทรัพย์ถาวร (as_*) | 5 ตาราง |
| ตั้งค่า/ข้อมูลหลักบริษัท | erp_ |
กลุ่มตาราง erp_* — ข้อมูลตั้งค่า/ข้อมูลหลักของบริษัท | 12 ตาราง/ชุด |
| ตัวตน สิทธิ์ ระบบ | sml_ |
กลุ่มตาราง sml_* — ตัวตน สิทธิ์ และตารางระบบ | 5 ตาราง/ชุด |
ความสัมพันธ์ (ER-style)
เอกสารสินค้า (ic)
ic_trans1:nic_trans_detailผ่าน (doc_no,trans_flag) — หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) → รายการสินค้าในเอกสาร (ic_trans_detail)ic_trans1:1ic_trans_shipmentผ่าน (doc_no,trans_flag) — ข้อมูลการจัดส่งของเอกสาร (ic_trans_shipment)ic_trans_detail1:nic_trans_serial_numberผ่านdoc_line_number=line_number— เลขเครื่อง/Serial ตามรายการเอกสาร (ic_trans_serial_number)ic_trans_serial_numbern:1ic_serialผ่าน (ic_code,serial_number) — ทะเบียน Serial Number สินค้า (ic_serial) (derive)ic_trans_detail→ic_trans_detail_lotผ่าน (doc_no,trans_flag,line_number) เฉพาะยอดยกมา/ใบปรับล็อต — ยอดสินค้าตามล็อต (ic_trans_detail_lot)ic_trans.cust_code→ ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier) เมื่อtrans_type1, 4; → ทะเบียนลูกหนี้/ลูกค้า (ar_customer) เมื่อtrans_type2, 5 (gl_template.go:768-769)ic_trans_detail.item_code→ ทะเบียนสินค้า (ic_inventory).code;unit_code→ หน่วยนับที่ใช้ของสินค้า (ic_unit_use) / ข้อมูลหน่วยนับ (ic_unit); (wh_code,shelf_code) → คลังสินค้า (ic_warehouse) / พื้นที่เก็บสินค้า (ic_shelf)ic_trans72 (โอนคลัง) 1:1ic_trans70 (หัวคู่ที่สร้างใหม่ทุกครั้ง) และบรรทัดคู่ n / n+1 ในic_trans_detailic_hidden_cost_process1:n_refและ_itemผ่านdoc_no; สร้างใบปรับต้นทุนic_transflag 66 (doc_ref= เลขที่ต้นทุนแฝง) — ต้นทุนแฝง/ต้นทุนนำเข้า (ic_hidden_cost_process, _ref, _item)
สินค้า (master)
ic_inventory1:1ic_inventory_detailผ่านic_code— ทะเบียนสินค้า (ic_inventory), รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail)ic_inventory1:n บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode) (แล้ว 1:n ส่วนลดตามบาร์โค้ด (ic_inventory_barcode_price)), ราคาขายสินค้าตามเงื่อนไข (ic_inventory_price), หน่วยนับที่ใช้ของสินค้า (ic_unit_use), หน่วยนับตรงข้าม/หน่วยขนาน (ic_opposite_unit), ต้นทุนมาตรฐานสินค้า (ic_standard_cost)ic_inventory(ชุด,item_type3) 1:nic_inventory_set_detailผ่านic_set_code→ic_code— รายการย่อยสินค้าชุด (ic_inventory_set_detail)ic_wh_shelfเชื่อม ทะเบียนสินค้า (ic_inventory) กับ คลังสินค้า (ic_warehouse) + พื้นที่เก็บสินค้า (ic_shelf) — สินค้ากับคลังและที่เก็บ (ic_wh_shelf);ic_shelfn:1ic_warehouseผ่านic_shelf.whcode(ชื่อไม่มี underscore)- สวิตช์
erp_option.enable_all_ic_wh_shelf/perm_wh_shelfควบคุมการใช้ic_wh_shelfและสิทธิ์ผ่านerp_user_group_wh_shelf— erp_option — ตัวเลือกระบบ (สวิตช์ + ทศนิยมของบริษัท), erp_user_group / erp_user_group_detail / erp_user_group_approve / erp_user_group_wh_shelf — กลุ่มผู้ใช้ในบริษัท, สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf)
บัญชีแยกประเภท (gl)
gl_journal1:ngl_journal_detailผ่าน (doc_no,doc_date,book_code) — หัวสมุดรายวันทั่วไป (gl_journal), รายการบัญชีแยกประเภท (gl_journal_detail)gl_journal_detail.account_code→ ผังบัญชี (gl_chart_of_account);book_code→ สมุดรายวัน (gl_journal_book)- เอกสารต้นทาง (หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans), หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans), หัวสรุปการรับ/จ่ายเงิน (cb_trans), หัวเอกสารสินทรัพย์ (as_trans)) →
gl_journalผ่านdoc_no+trans_flagโดยกฎลงบัญชีมาจาก erp_doc_format_gl — เทมเพลตลงบัญชี GL ต่อรูปแบบเอกสาร ตาม erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน - ภาษี: ทะเบียนภาษีซื้อ (gl_journal_vat_buy) / ทะเบียนภาษีขาย (gl_journal_vat_sale) สร้างจากแท็บภาษีของเอกสาร; หัก ณ ที่จ่าย หัวเอกสารหัก ณ ที่จ่าย (gl_wht_list) 1:n รายการหัก ณ ที่จ่ายแยกประเภทเงินได้ (gl_wht_list_detail)
เจ้าหนี้/ลูกหนี้ (ap-ar)
- ทะเบียนลูกหนี้/ลูกค้า (ar_customer) 1:1 รายละเอียดเงื่อนไขลูกหนี้ (ar_customer_detail); ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier) 1:1 รายละเอียดเงื่อนไขเจ้าหนี้ (ap_supplier_detail) (ผ่าน
ar_code/ap_code=codeของแม่ตามลำดับ); ลูกหนี้ตัวแทน ข้อมูลตัวแทนจำหน่าย/จุดขายของลูกหนี้ (ar_dealer); ที่อยู่ขนส่ง ที่อยู่จัดส่ง/ป้ายขนส่งของเจ้าหนี้-ลูกหนี้ (ap_ar_transport_label); นัดวางบิล ตารางวันนัดวางบิล-รับเงินตามเครดิต (ar_credit_pay_bill) - หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans) 1:n รายการบรรทัดใบวางบิล/ชำระหนี้ (ap_ar_trans_detail) ผ่าน (
doc_no,trans_flag); บรรทัดอ้างเอกสารซื้อ-ขายใน หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) ผ่านbilling_no=ic_trans.doc_no - อนุมัติเครดิต: erp_credit_approved_logs / erp_credit_request — ขออนุมัติเครดิต
เงินสด/ธนาคาร (cb)
- หัวสรุปการรับ/จ่ายเงิน (cb_trans) (ยอดรวมตามช่องทาง) 1:n รายละเอียดรับ/จ่ายเงินแยกรายการ (cb_trans_detail) ผ่าน (
doc_no,trans_flag); เกิดจากแท็บรับ/จ่ายชำระของ หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) และ หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans) - เช็ค/บัตร: ทะเบียนเช็ค/บัตรเครดิต/กระเป๋าเงิน (cb_chq_list) (เอกสาร flag 405-418, 451-456, 461-463 อัปเดตสถานะ); บัญชีธนาคาร erp_pass_book — สมุดเงินฝาก/บัญชีธนาคารของบริษัท → erp_bank / erp_bank_branch — ธนาคารและสาขาธนาคาร; เงินสดย่อย วงเงินสดย่อย (cb_petty_cash)
สินทรัพย์ถาวร (as)
- ทะเบียนสินทรัพย์ (as_asset) 1:1 รายละเอียดสินทรัพย์ (as_asset_detail) ผ่าน
as_code; n:1 ประเภทสินทรัพย์ (as_asset_type) - หัวเอกสารสินทรัพย์ (as_trans) 1:n รายการเอกสารสินทรัพย์ (as_trans_detail) ผ่าน (
doc_no,trans_flag)
ตั้งค่า ผู้ใช้ และตัวตน
- sml_user_list — ผู้ใช้ล็อกอิน (Main Database ของ Tenant) (ล็อกอินใน Main Database) → sml_database_list_user_and_group — สิทธิ์เข้าบริษัท (Access Grant) → sml_database_list — ทะเบียนบริษัท (Company registry) (ทะเบียนบริษัท) ซึ่งชี้ไปยังฐานข้อมูลบริษัทที่เก็บตาราง
ic_/gl_/ap_/ar_/cb_/as_/erp_ - sml_google_account / sml_google_workspace_db / sml_google_workspace_member — ล็อกอิน Google และ Workspace (ล็อกอิน Google), sml_mcp_access_tokens / sml_mcp_token_databases / sml_mcp_token_audit — โทเคน MCP แบบอ่านอย่างเดียว (โทเคน MCP อ่านอย่างเดียว)
- ผู้ใช้/พนักงานในบริษัท erp_user — ผู้ใช้/พนักงานในฐานบริษัท + กลุ่มสิทธิ์ erp_user_group / erp_user_group_detail / erp_user_group_approve / erp_user_group_wh_shelf — กลุ่มผู้ใช้ในบริษัท (การตรวจสิทธิ์เมนูของ route process (Process route rights)); เลย์เอาต์รายการข้อมูล erp_user_datalist_config — เลย์เอาต์รายการข้อมูลหลักต่อผู้ใช้
- ตั้งค่าบริษัท: erp_option — ตัวเลือกระบบ (สวิตช์ + ทศนิยมของบริษัท), erp_company_profile — ข้อมูลบริษัท (แถวเดียว), erp_branch_list — ทะเบียนสาขา, erp_account_period — งวดบัญชี (เปิด/ปิดงวด), erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน, erp_doc_format_gl — เทมเพลตลงบัญชี GL ต่อรูปแบบเอกสาร
ดัชนีโน้ตทุกตาราง
ic: หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans), รายการสินค้าในเอกสาร (ic_trans_detail), เลขเครื่อง/Serial ตามรายการเอกสาร (ic_trans_serial_number), ทะเบียน Serial Number สินค้า (ic_serial), ยอดสินค้าตามล็อต (ic_trans_detail_lot), ข้อมูลการจัดส่งของเอกสาร (ic_trans_shipment), ต้นทุนแฝง/ต้นทุนนำเข้า (ic_hidden_cost_process, _ref, _item), ทะเบียนสินค้า (ic_inventory), รายละเอียดสินค้าเพิ่มเติม (ic_inventory_detail), บาร์โค้ดและราคาขายหน้าร้าน (ic_inventory_barcode), ส่วนลดตามบาร์โค้ด (ic_inventory_barcode_price), ราคาขายสินค้าตามเงื่อนไข (ic_inventory_price), รายการย่อยสินค้าชุด (ic_inventory_set_detail), ต้นทุนมาตรฐานสินค้า (ic_standard_cost), ข้อมูลหน่วยนับ (ic_unit), หน่วยนับที่ใช้ของสินค้า (ic_unit_use), หน่วยนับตรงข้าม/หน่วยขนาน (ic_opposite_unit), คลังสินค้า (ic_warehouse), พื้นที่เก็บสินค้า (ic_shelf), สินค้ากับคลังและที่เก็บ (ic_wh_shelf)
gl: หัวสมุดรายวันทั่วไป (gl_journal), รายการบัญชีแยกประเภท (gl_journal_detail), ผังบัญชี (gl_chart_of_account), สมุดรายวัน (gl_journal_book), ทะเบียนภาษีซื้อ (gl_journal_vat_buy), ทะเบียนภาษีขาย (gl_journal_vat_sale), หัวเอกสารหัก ณ ที่จ่าย (gl_wht_list), รายการหัก ณ ที่จ่ายแยกประเภทเงินได้ (gl_wht_list_detail)
ap-ar: ทะเบียนเจ้าหนี้/ผู้ขาย (ap_supplier), รายละเอียดเงื่อนไขเจ้าหนี้ (ap_supplier_detail), ทะเบียนลูกหนี้/ลูกค้า (ar_customer), รายละเอียดเงื่อนไขลูกหนี้ (ar_customer_detail), ข้อมูลตัวแทนจำหน่าย/จุดขายของลูกหนี้ (ar_dealer), หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans), รายการบรรทัดใบวางบิล/ชำระหนี้ (ap_ar_trans_detail), ที่อยู่จัดส่ง/ป้ายขนส่งของเจ้าหนี้-ลูกหนี้ (ap_ar_transport_label), ตารางวันนัดวางบิล-รับเงินตามเครดิต (ar_credit_pay_bill)
cb: หัวสรุปการรับ/จ่ายเงิน (cb_trans), รายละเอียดรับ/จ่ายเงินแยกรายการ (cb_trans_detail), ทะเบียนเช็ค/บัตรเครดิต/กระเป๋าเงิน (cb_chq_list), วงเงินสดย่อย (cb_petty_cash)
as: หัวเอกสารสินทรัพย์ (as_trans), รายการเอกสารสินทรัพย์ (as_trans_detail), ทะเบียนสินทรัพย์ (as_asset), รายละเอียดสินทรัพย์ (as_asset_detail), ประเภทสินทรัพย์ (as_asset_type)
erp: erp_option — ตัวเลือกระบบ (สวิตช์ + ทศนิยมของบริษัท), erp_user — ผู้ใช้/พนักงานในฐานบริษัท, erp_account_period — งวดบัญชี (เปิด/ปิดงวด), erp_company_profile — ข้อมูลบริษัท (แถวเดียว), erp_pass_book — สมุดเงินฝาก/บัญชีธนาคารของบริษัท, erp_bank / erp_bank_branch — ธนาคารและสาขาธนาคาร, erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน, erp_doc_format_gl — เทมเพลตลงบัญชี GL ต่อรูปแบบเอกสาร, erp_branch_list — ทะเบียนสาขา, erp_credit_approved_logs / erp_credit_request — ขออนุมัติเครดิต, erp_user_group / erp_user_group_detail / erp_user_group_approve / erp_user_group_wh_shelf — กลุ่มผู้ใช้ในบริษัท, erp_user_datalist_config — เลย์เอาต์รายการข้อมูลหลักต่อผู้ใช้
sml: sml_user_list — ผู้ใช้ล็อกอิน (Main Database ของ Tenant), sml_database_list — ทะเบียนบริษัท (Company registry), sml_database_list_user_and_group — สิทธิ์เข้าบริษัท (Access Grant), sml_google_account / sml_google_workspace_db / sml_google_workspace_member — ล็อกอิน Google และ Workspace, sml_mcp_access_tokens / sml_mcp_token_databases / sml_mcp_token_audit — โทเคน MCP แบบอ่านอย่างเดียว
โน้ตกลุ่ม: กลุ่มตาราง ic_ (สินค้า คลัง สต๊อก เอกสารซื้อ-ขาย), กลุ่มตารางบัญชีแยกประเภท (gl_*), กลุ่มตาราง ap_* / ar_* / ap_ar_* — เจ้าหนี้ ลูกหนี้ และใบวางบิล-รับ/จ่ายชำระ, กลุ่มตาราง cb_* — เงินสด ธนาคาร เช็ค และเงินสดย่อย, กลุ่มตารางสินทรัพย์ถาวร (as_*), กลุ่มตาราง erp_* — ข้อมูลตั้งค่า/ข้อมูลหลักของบริษัท, กลุ่มตาราง sml_* — ตัวตน สิทธิ์ และตารางระบบ
ตารางของระบบอื่น (ไม่อธิบายในชุดนี้)
ตารางขึ้นต้น autocare_, wms_, pos_, tms_, market_, procure_, crm_ ใช้โดยระบบอื่น (WMS, POS, TMS, ตลาด, จัดซื้อ, CRM) — ถ้า backend บัญชีแตะตารางเหล่านี้ มีแค่การตรวจว่ามีตารางหรือซิงก์ข้อมูล เช่น ic_wms_trans_detail (service.go:630) และ pos_ sync (pos_sync.go, pos_bill.go) ไม่ได้ถือเป็นส่วนหนึ่งของพจนานุกรมนี้
ความไม่สอดคล้องที่พบ (ไว้ตรวจเมื่อใช้งานจริง)
ic_inventory.item_type = 5: รายงานเรียก "สูตรการผลิต" แต่trans_set_item.go:8-10เรียก "สูตรสี" และแตกเป็นชุด — ทะเบียนสินค้า (ic_inventory)ic_shelfใช้คอลัมน์whcodeแต่ตารางอื่นใช้wh_code— พื้นที่เก็บสินค้า (ic_shelf)erp_doc_format_gl: โค้ดอ่านaccount_nameแต่กริดและเทสต์ใช้account_name2— erp_doc_format_gl — เทมเพลตลงบัญชี GL ต่อรูปแบบเอกสารerp_credit_approved_logs: ไม่พบ INSERT ใน Go (อ่านที่doc_flow.go:70,290) ส่วนerp_credit_requestถูกเขียนที่trans_credit.go:204-210— erp_credit_approved_logs / erp_credit_request — ขออนุมัติเครดิต- CRM อ่าน
ap_ar_transflag 41/43 ขณะฝั่ง process ใช้ 235/239 — หัวเอกสารใบวางบิล/ใบเสร็จ-จ่ายชำระหนี้ (ap_ar_trans) - ยอดตามล็อต: รายงานอ่าน
ic_trans_detail_lotแต่บันทึกเอกสารเว็บเขียนเฉพาะic_trans_detail.lot_number_1— ยอดสินค้าตามล็อต (ic_trans_detail_lot)
ที่มาในโค้ด
backend/internal/application/process/trans.go:657backend/internal/application/process/service.go:796backend/internal/application/process/stock_rebuild.go:18backend/internal/application/process/workflow.go:100