กลุ่มตารางบัญชีแยกประเภท (gl_*)
รวมตารางที่ขึ้นต้น gl_ ทั้งหมดที่ปรากฏใน SQL ของ backend/internal (FROM / JOIN / INTO / UPDATE / DELETE FROM ไม่รวมไฟล์ test) ตารางส่วนใหญ่เป็นตารางเดิมของระบบ SMLERP (C#) ที่ DB ลูกค้ามีอยู่แล้ว โค้ดชุดนี้ ไม่สร้างตารางหลัก (gl_journal, gl_chart_of_account ฯลฯ ไม่มี CREATE TABLE ในรีโป) สร้างเองเฉพาะ 5 ตารางมิติรายวัน gl_journal_*_list กฎเขียนผ่านเกตเวย์: ตารางที่ตรง gl_journal(_\w+)? ถือเป็น "ตารางเงิน" ห้ามเขียนผ่านหน้า master ทั่วไป ยกเว้น gl_journal_book ที่เป็น master จริง (write_policy.go:27) ภาพรวมการลงบัญชีดู การลงบัญชี Dr/Cr มาตรฐานแยกตามชนิดเอกสาร (Standard GL Posting) และ เครื่องมือลงบัญชีตามรูปแบบ GL (GL Template Engine)
ตารางหลักของ GL (มีโน้ตแยก)
| ตาราง | บทบาท | สร้างที่ / ผู้เขียนหลัก | โน้ต |
|---|---|---|---|
gl_journal |
หัวรายวัน 1 แถวต่อเอกสาร (ทุกระบบลงที่นี่) | ตารางเดิม; เขียนโดยเอนจิน GL, JV, ยกเลิก, ค่าเสื่อม, ปิดบัญชี | หัวสมุดรายวันทั่วไป (gl_journal) |
gl_journal_detail |
บรรทัดเดบิต/เครดิตของรายวัน | ตารางเดิม; เขียนพร้อมหัว | รายการบัญชีแยกประเภท (gl_journal_detail) |
gl_chart_of_account |
ผังบัญชี | ตารางเดิม; หน้า master master_detail_specs.go:95-137; เพิ่มคอลัมน์ tax_type, account_close, cash_flow_group ตอนเริ่มระบบ (service.go:842-844, pool.go:60-62) |
ผังบัญชี (gl_chart_of_account) |
gl_journal_vat_buy |
ทะเบียนภาษีซื้อ | ตารางเดิม; เขียนโดยแท็บภาษีของเอกสาร/JV | ทะเบียนภาษีซื้อ (gl_journal_vat_buy) |
gl_journal_vat_sale |
ทะเบียนภาษีขาย | ตารางเดิม; ดัชนี UPPER(vat_number) สร้างตอนเริ่มระบบ (service.go:928) |
ทะเบียนภาษีขาย (gl_journal_vat_sale) |
gl_wht_list |
หัวใบหัก ณ ที่จ่าย | ตารางเดิม; เขียนโดยแท็บ WHT | หัวเอกสารหัก ณ ที่จ่าย (gl_wht_list) |
gl_wht_list_detail |
บรรทัดประเภทเงินได้ของใบหัก | ตารางเดิม | รายการหัก ณ ที่จ่ายแยกประเภทเงินได้ (gl_wht_list_detail) |
gl_journal_book |
master สมุดรายวัน | ตารางเดิม; หน้า master มาตรฐาน | สมุดรายวัน (gl_journal_book) |
ตารางปิดบัญชีและสรุปยอด
| ตาราง | บทบาท | ผู้เขียน / ผู้อ่านในโค้ดนี้ |
|---|---|---|
gl_trans |
หัวเอกสารปิดบัญชี (GL close, trans_flag 1998/1999) ช่วงวันที่ from_date/to_date, account_period, account_year, close_to_account |
เขียนโดย insertGLCloseDoc workflow.go:903; ลบก่อนบันทึกซ้ำ workflow.go:845; อ่านเลือกชนิด workflow.go:874 |
gl_trans_detail |
บรรทัดสรุปยอดของเอกสารปิดบัญชี (ฝั่งยอดคงเหลือ) | เขียน workflow.go:920; ลบ workflow.go:845; เป็นตัวกันลบบัญชีใน master (master_detail_specs.go:128) |
gl_account_close |
เอกสารปิดบัญชีต้นทุนขาย: doc_no, doc_date, from_date, to_date, product_next_amount, purchase_amount, sale_cost, sale_cost_account |
อ่านอย่างเดียวในรายงาน "ปิดบัญชีต้นทุนขาย" report_menu_gl_fa.go:1667 ไม่มี writer ในรีโปนี้ |
gl_account_close_detail |
ตั้งค่าบัญชีที่ใช้ปิดบัญชี | ปรากฏเป็นตัวกันลบบัญชีเท่านั้น (ข้อความ "ถูกใช้ในการตั้งค่าปิดบัญชี" master_detail_specs.go:129) ไม่มี SQL อื่น |
gl_journal_summary |
หัวเอกสารสรุปยอดบัญชี (doc_no, doc_date) |
อ่านอย่างเดียวในรายงานสรุปยอด report_menu_gl_fa.go:1675, :1772 ไม่มี writer ในรีโปนี้ |
gl_journal_summary_detail |
ยอดต่อบัญชี: ยอดยกมา (balance_debit/credit), ประจำงวด (debit_amount/credit_amount), ปรับปรุง (adjust_debit/credit), ยอดรวม (total_debit/credit) |
อ่านอย่างเดียว (รายงานสรุปยอด และรายงานการเงิน GLFA_FINANCIAL) report_menu_gl_fa.go:1675, :1772 |
ตารางมิติรายวัน (โค้ดนี้สร้างเอง)
ห้าตารางนี้มี DDL ซ้ำสองที่ ทั้งคู่ใช้ CREATE TABLE IF NOT EXISTS: companySchemaSQL ที่ pool.go:78-127 (รันตอนเปิด pool ของฐานบริษัท pool.go:217) และ erpSchemaSQL ที่ service.go:860-927 (service.go:796, รันที่ service.go:962) โครงสร้างเหมือนกัน: doc_no, doc_date, account_code, line_number, <x>_code, allocate_persent NUMERIC(18,4), amount NUMERIC(18,4), roworder SERIAL PRIMARY KEY
| ตาราง | มิติ (<x>_code) |
ผู้อ่าน / หมายเหตุ |
|---|---|---|
gl_journal_side_list |
side_code (ฝ่าย/หน่วยงาน ตรงกับ erp_side_list) |
รายงานแยกมิติ report_menu_gl_fa.go:1607 |
gl_journal_depart_list |
แผนก (erp_department_list) |
รายงานบัญชีกำไรขาดทุนแยกสาขา/แผนก glfaBranchDept report_menu_gl_fa.go:572-586 (ยอดติดลบเมื่อเป็นบรรทัดเดบิต) และรายงานแยกมิติ :1607 |
gl_journal_project_list |
โครงการ (erp_project_list) |
รายงานแยกมิติ report_menu_gl_fa.go:1607; อยู่ในรายการเปลี่ยนรหัสผังบัญชี workflow.go:164 |
gl_journal_allocate_list |
การจัดสรร (erp_allocate_list) |
รายงานแยกมิติ report_menu_gl_fa.go:1608 |
gl_journal_job_list |
งาน (erp_job_list) |
รายงานแยกมิติ report_menu_gl_fa.go:1608 |
ตัวเอนจิน GL ยังไม่เขียนแถวพวกนี้: คอมเมนต์ที่ gl_template.go:1007 ระบุว่ายังไม่มีแถวแบ่งมิติ ข้อมูลที่อยู่ในตารางจึงน่าจะมาจากระบบ C# เดิม (ไม่ชัดจากโค้ด) ส่วน account_code ของทั้งห้าตารางถูกอัปเดตตอนเปลี่ยนรหัสผังบัญชี (workflow.go:163-168)
ตารางตั้งค่ามิติของผังบัญชี
gl_chart_of_account_{side,depart,allocate,job,project}_list ผูกบัญชีหนึ่งกับมิติที่อนุญาต: คอลัมน์ side_code→erp_side_list, department_code→erp_department_list, allocate_code→erp_allocate_list, job_code→erp_job_list, project_code→erp_project_list (master_detail_specs.go:106-110) คอลัมน์ project_code/allocate_code ถูกขยายเป็น VARCHAR(25) ตอนเริ่มระบบ (service.go:857-858, pool.go:75-76) เขียนผ่านหน้า master ของผังบัญชี ดู ผังบัญชี (gl_chart_of_account)
master อื่นของ GL
| ตาราง | บทบาท | ที่มา |
|---|---|---|
gl_account_group |
กลุ่มบัญชี | ผังบัญชีอ้าง account_group (master_detail_specs.go:119), รายงานผังบัญชี join ชื่อ report_menu_gl_fa.go:712, allow-list write_policy_legacy.go:22 |
gl_cash_flow_group |
กลุ่มกระแสเงินสด | ผังบัญชีอ้าง cash_flow_group (master_detail_specs.go:120), allow-list |
gl_account_type |
ประเภทบัญชี | อยู่ใน allow-list อย่างเดียว (write_policy_legacy.go:22) ไม่มี SQL อื่นในโค้ด (เนื้อหาไม่ชัดจากโค้ด; ประเภทบัญชี 0-4 ถูกกำหนดเป็นค่าคงที่ในโค้ดแทน ดู ผังบัญชี (gl_chart_of_account)) |
gl_tax_group |
กลุ่มภาษี (code, name_1, tax_rate, remark) |
แท็บภาษีอ้างรหัสกลุ่มภาษี (journaltax.go:31); ระบุไว้ใน catalog ของเกตเวย์ gateway.go:993, :1411; allow-list write_policy_legacy.go:23 |
gl_tax_type |
ประเภทภาษี (code, name_1, tax_rate, remark) |
gateway.go:993, :1412; allow-list write_policy_legacy.go:23 |
gl_recurring |
แม่แบบรายการประจำ (code, gl_desc, xmlstring) |
อ่านอย่างเดียวโดย gl_recurring.go:51 (รายการให้เลือก; เลือกแล้วเติม book_code คำอธิบาย และบรรทัดบัญชีของ JV จาก xmlstring gl_recurring.go:12-13); ไม่มี writer ในรีโปนี้ |
ชื่อ gl_ ที่ไม่ใช่ตาราง (กันสับสน)
gl_book,gl_description: คอลัมน์ของ erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน (สมุดรายวันและข้อความอธิบายของ GL ที่เอกสารแต่ละรูปแบบลงบัญชี)gl_no_decimal: คอลัมน์ของ erp_option — ตัวเลือกระบบ (สวิตช์ + ทศนิยมของบริษัท) (จำนวนทศนิยมของ GL)gateway.go:1635gl_doc_format: ชื่อไฟล์แม่แบบ GL เริ่มต้นgl_doc_format.json(gl_template_defaults.go:14) ไม่ใช่ตารางที่ SQL อ่าน ตารางจริงที่เก็บเงื่อนไขคือ erp_doc_format_gl — เทมเพลตลงบัญชี GL ต่อรูปแบบเอกสารgl_template,gl_template_rules,gl_template_defaults: ชื่อไฟล์/ชุดตรรกะของเอนจินแม่แบบ (เครื่องมือลงบัญชีตามรูปแบบ GL (GL Template Engine)) ไม่ใช่ตารางgl_design_report: ชื่อแบบฟอร์มรายงานในข้อความ (report_menu_gl_fa.go:1768)
ที่มาในโค้ด
backend/internal/platform/db/pool.go:16companySchemaSQL(DDL ฐานบริษัท)backend/internal/platform/db/pool.go:78DDLgl_journal_*_listbackend/internal/application/process/service.go:796erpSchemaSQLbackend/internal/application/process/service.go:860DDLgl_journal_*_list(ชุดที่สอง)backend/internal/application/process/master_detail_specs.go:106ตารางมิติของผังบัญชีbackend/internal/application/process/workflow.go:163รายการเปลี่ยนรหัสผังบัญชีbackend/internal/application/process/workflow.go:845ลบก่อนบันทึกปิดบัญชีซ้ำbackend/internal/application/process/workflow.go:889insertGLCloseDocbackend/internal/application/process/report_menu_gl_fa.go:572glfaBranchDeptอ่านมิติแผนกbackend/internal/application/process/report_menu_gl_fa.go:1667gl_account_closebackend/internal/application/process/report_menu_gl_fa.go:1675gl_journal_summary(_detail)backend/internal/application/process/gl_recurring.go:51gl_recurringbackend/internal/application/process/gl_template.go:1007คอมเมนต์ยังไม่เขียนแถวมิติbackend/internal/domain/query/write_policy.go:27ข้อยกเว้นgl_journal_bookbackend/internal/domain/query/write_policy_legacy.go:22allow-list