Master Data ที่มีอยู่แล้ว (15 Tables)
ตารางพื้นฐานที่มี schema ใน schema-pg.ts แล้ว
กลุ่มที่ 1: โครงสร้างองค์กร (Organization Structure)
ข้อมูลบริษัท: ชื่อ, เลขผู้เสียภาษี, ที่อยู่, logo, fiscal year start
ผู้ใช้ระบบ: ชื่อ, อีเมล, password hash, บทบาท
สิทธิ์ผู้ใช้ต่อบริษัท: user x company x role (RBAC)
สาขาของบริษัท: ชื่อสาขา, ที่อยู่, เลขประจำตัวผู้เสียภาษี
กลุ่มที่ 2: บัญชี (Accounting Master)
ผังบัญชี Thai GAAP: รหัสบัญชี, ชื่อบัญชี, หมวดหมู่ (asset/liability/equity/revenue/expense), normalBalance
งวดบัญชีรายเดือน/รายปี + period lock status
ศูนย์ต้นทุน: รหัส, ชื่อ, สถานะ (สำหรับวิเคราะห์ต้นทุนแยกตามแผนก/โครงการ)
โครงการ: รหัส, ชื่อ, วันเริ่ม-สิ้นสุด, งบประมาณ (สำหรับ Job Costing)
งบประมาณรายบัญชี: ระบุจำนวนเงินต่องวดต่อบัญชี
กลุ่มที่ 3: คู่ค้า (Business Partners)
ลูกค้า: ชื่อ, เลขผู้เสียภาษี, ที่อยู่, เบอร์โทร, อีเมล, creditTerms
เจ้าหนี้การค้า: ชื่อ, เลขผู้เสียภาษี, ประเภท (บุคคล/นิติ), WHT rate
กลุ่มที่ 4: สินค้าและคลังสินค้า (Products & Inventory)
สินค้า/บริการ: ชื่อ, SKU, ราคาซื้อ, ราคาขาย, unitOfMeasure, VAT rate
คลังสินค้า: ชื่อคลัง, ที่อยู่, สถานะ
กลุ่มที่ 5: ธนาคารและทรัพย์สิน (Banking & Assets)
บัญชีธนาคาร: ชื่อธนาคาร, เลขที่บัญชี, GL account, current balance
ทะเบียนทรัพย์สิน: ชื่อ, วันที่ซื้อ, ราคาทุน, method, อายุการใช้งาน
กลุ่มที่ 6: พนักงานและเงินเดือน (HR & Payroll)
พนักงาน: ชื่อ, ตำแหน่ง, เลข ปชช., วันเริ่มงาน, เงินเดือน
Master Data ที่ควรมีเพิ่ม (12 รายการ)
สิ่งที่โปรแกรมบัญชีอันดับ 1 ของไทยจำเป็นต้องมี
ความสำคัญสูง (Critical) - 5 รายการ
1. ธนาคาร (Banks)
รายชื่อธนาคารพาณิชย์ทั้งหมดในประเทศไทย พร้อมรหัสธนาคาร (Bank Code) สำหรับ use ในระบบ e-Payment, PromptPay, โอนเงินอัตโนมัติ
- ระบบ bank_accounts มี bankName เป็น string ธรรมดา - ไม่มี master data ของธนาคารจริง
- ต้องใช้ Bank Code สำหรับ e-Payment, โอนเงินผ่านระบบ banking API
- PromptPay ต้องใช้ Bank Code + เลขผู้เสียภาษี/ปชช.
- Standard chart of accounts แต่ละธนาคารมี GL code ต่างกัน
id
code (เช่น "002" = KrungThai)
nameTh
nameEn
swiftCode
logoUrl
supportsPromptPay
2. แผนก (Departments)
โครงสร้างองค์กร - แผนก/ฝ่ายงาน สำหรับจัดกลุ่มพนักงาน, ต้นทุน, และวิเคราะห์กำไรขาดทุนแยกตามแผนก
- ตอนนี้ employees มี field department เป็น string - ไม่มี FK ไป master data
- ต้องใช้สำหรับรายงาน P&L แยกตามแผนก (Departmental P&L)
- ใช้ใน expense allocation (กระจายค่าใช้จ่ายร่วมแยกตามสัดส่วนแผนก)
- ใช้ใน cost center mapping
id
code
name
parentId (hierarchy)
headEmployeeId
isActive
3. วิธีการชำระเงิน (Payment Methods)
ประเภทวิธีชำระเงิน: เงินสด, เช็ค, โอนเงิน, PromptPay, QR Code, บัตรเครดิต, บัตรเดบิต
- ตอนนี้ไม่มี master data วิธีชำระเงิน - เลือกได้เฉพาะ bank account
- ต้องใช้สำหรับ cash management report
- ต้องใช้สำหรับ bank reconciliation - จับคู่ transaction ตาม payment method
- e-Tax ต้องระบุวิธีชำระเงิน
id
code
name (เงินสด/เช็ค/โอน/PromptPay)
type (cash/bank/credit/electronic)
defaultAccountId (GL)
isActive
4. อัตราภาษี (Tax Rates)
Master data อัตราภาษีทั้งหมด: VAT 7%, WHT 1%, 2%, 3%, 5%, 10%, 15%, เงินได้ types 40(1)-40(6)
- ตอนนี้อัตราภาษี hardcode ใน tax-engine.ts - ไม่ได้อยู่ใน database
- กฎหมายภาษีเปลี่ยนบ่อย (เช่น VAT อาจเพิ่ม/ลด) - ต้องปรับได้โดยไม่ต้องแก้โค้ด
- WHT rate แต่ละประเภทเงินได้ต่างกัน - ต้อง update ได้ตามประกาศสรรพากร
- ต้องใช้ versioning - เก็บประวัติว่าอัตราไหนใช้ช่วงไหน
id
type (VAT/WHT/PIT/CIT)
code (เช่น "WHT_40_1")
name
rate (percent)
effectiveFrom
effectiveTo
isActive
5. สกุลเงิน (Currencies)
สกุลเงินที่รองรับ: THB, USD, EUR, JPY, CNY, GBP ฯลฯ + Exchange Rate history
- companies มี field baseCurrency แต่ไม่มี master data สกุลเงินจริง
- Multi-currency transaction ต้องใช้ exchange rate ณ วันทำรายการ
- GL gain/loss on exchange ต้องคำนวณจาก rate history
- รายงานงบการเงินต้องแปลงสกุลเงินได้
currencies: id, code (THB), nameTh, nameEn, symbol, decimalPlaces
exchange_rates: id, fromCurrency, toCurrency, rate, effectiveDate
ความสำคัญปานกลาง (Important) - 4 รายการ
6. หน่วยนับ (Units of Measure)
หน่วยสินค้า: ชิ้น, กล่อง, ลัง, กก., ลิตร, หน, ม., ตร.ม. ฯลฯ + Conversion factors
7. กลุ่มสินค้า (Product Categories)
จัดกลุ่มสินค้า/บริการ: อาหาร, เครื่องดื่ม, วัสดุสำนักงาน, ค่าบริการ, ฯลฯ
8. วันหยุด (Holidays)
วันหยุดนักขัตฤกษ์ + วันหยุดบริษัท สำหรับคำนวณเงินเดือน (วันทำงานจริง, OT rate, ลา)
9. ตำแหน่งงาน (Positions / Job Titles)
ตำแหน่งงาน: ผู้จัดการ, พนักงานบัญชี, พนักงานขาย, พนักงานคลัง ฯลฯ
ควรพิจารณา (Nice-to-Have) - 3 รายการ
10. นโยบายการเงิน (Financial Policies)
นโยบายบัญชี: depreciation method default, rounding rules, fiscal year, consolidation rules
11. ใบอนุญาต/สัญญา (Licenses / Contracts)
ใบอนุญาตประกอบธุรกิจ, สัญญาเช่า, สัญญาจ้าง ที่มีวันหมดอายุ
12. กลุ่มลูกค้า/เจ้าหนี้ (Customer/Vendor Groups)
จัดกลุ่มคู่ค้า: ลูกค้า VIP, ลูกค้าต่างประเทศ, เจ้าหนี้รายใหญ่, เจ้าหนี้ท้องถิ่น
Master Data ที่มีอยู่แล้ว ควรปรับปรุง (8 รายการ)
สิ่งที่ schema มีอยู่แล้วแต่ต้องเพิ่ม fields/relationships
1. customers - ควรเพิ่ม:
groupName
taxType (vat-register / non-vat)
paymentTerms
creditLimit
defaultAccountId (GL)
priceLevel
2. vendors - ควรเพิ่ม:
groupName
taxType (vat-register / non-vat)
paymentTermsDays
creditLimit
defaultAccountId (GL)
bankName / bankAccount
3. bank_accounts - ควรเพิ่ม:
FK → banks (master data ธนาคาร)
accountName (ชื่อบัญชีตามธนาคาร)
accountType (savings/current/foreign)
currencyCode
openingBalance
swiftCode
4. employees - ควรเพิ่ม:
FK → departments
FK → positions
socialSecurityId
taxGroupId
providentFundRate
terminationDate
5. products - ควรเพิ่ม:
FK → product_categories
FK → units_of_measure
barcode
reorderLevel
standardCost
incomeAccountId + expenseAccountId (GL mapping)
6. accounts (COA) - ควรเพิ่ม:
taxType (VAT-INPUT, VAT-OUTPUT, WHT-PAYABLE, NONE)
isCashFlowStatement ( Operating/Investing/Financing )
isBalanceSheet / isIncomeStatement
exchangeGainAccountId / exchangeLossAccountId
7. assets - ควรเพิ่ม:
FK → employees (ผู้รับผิดชอบ)
FK → warehouses (สถานที่เก็บ)
assetCode (รหัสทรัพย์สิน)
serialNumber
warrantyExpiry
disposalDate / disposalAmount
8. companies - ควรเพิ่ม:
registrationType (จำกัดมหาชน/จำกัด/บุคคลธรรมดา)
industry / businessType
website
phone / email
taxBranchId (สำนักงานสรรพากร)
Priority Matrix: ลำดับความสำคัญ
| ลำดับ | Master Data | ประเภท | ผลกระทบ | EFFORT |
|---|---|---|---|---|
| 1 | ธนาคาร (Banks) | Critical | e-Payment, PromptPay, Bank Recon | 2-3 days |
| 2 | อัตราภาษี (Tax Rates) | Critical | Tax engine, WHT, VAT calculation | 3-4 days |
| 3 | วิธีชำระเงิน (Payment Methods) | Critical | Payment processing, Cash report | 1-2 days |
| 4 | แผนก (Departments) | Critical | Dept P&L, Expense allocation, Payroll | 2-3 days |
| 5 | สกุลเงิน (Currencies) | Critical | Multi-currency, FX gain/loss | 3-4 days |
| 6 | หน่วยนับ (UoM) | Important | Inventory accuracy, Stock conversion | 1 day |
| 7 | กลุ่มสินค้า (Product Categories) | Important | Sales report by category | 1 day |
| 8 | วันหยุด (Holidays) | Important | Payroll daily rate, OT calculation | 1 day |
| 9 | ตำแหน่งงาน (Positions) | Important | HR reports, Headcount analysis | 1 day |
| 10 | Customer/Vendor Groups | Nice | Segmented reporting | 1 day |
| 11 | นโยบายการเงิน | Nice | Default rules, Config | 1-2 days |
| 12 | ใบอนุญาต/สัญญา | Nice | Alerts, Compliance | 2 days |