Kế toán
Kế toán đa công ty trên một schema, thoát khỏi đống Excel.
- Năm
- 2026
- Khách hàng
- Private group
- Vai trò
- Làm một mình
- Thời gian
- 2 tháng
Case study
Đề bài
Một nhóm công ty nhỏ giữ sổ sách bằng Excel, cùng một danh sách đối tác, mặt hàng và tài khoản được chép đi chép lại trong từng file. Mục tiêu là một hệ thống ôm nhiều công ty cùng lúc, nơi một con số nhập vào một chỗ sẽ hiện ra ở đúng mọi chỗ cần — và không hiện ở chỗ không được phép.
Cách làm
Một app Next.js trên Postgres với schema Prisma 31 model phủ một domain kế toán thật chứ không phải bản rút gọn: công ty và thành viên, đối tác, hệ thống tài khoản, hoá đơn và dòng hoá đơn, thanh toán kèm phân bổ, kho và tồn theo kỳ, định mức nguyên vật liệu, tài sản cố định với bút toán khấu hao, phòng ban, nhân sự và bảng lương — cùng một nhật ký thao tác phủ lên tất cả.
Đa công ty được ép ở tầng dữ liệu chứ không phải ở giao diện. Mọi truy vấn đều bị giới hạn theo công ty, nên "đang xem công ty nào" không bao giờ là một quyết định lúc render.
Chỗ khó
Phân bổ thanh toán. Tiền hiếm khi về đúng một khoản cho đúng một hoá đơn — nó về thành một số tròn trả một phần cho vài hoá đơn, đôi khi vắt qua nhiều tháng. Mô hình hoá phân bổ thành bản ghi riêng thay vì một trường trên phiếu thanh toán mới là thứ khiến việc thanh toán từng phần, và báo cáo công nợ dựng trên đó, thật sự đúng.
Nhập liệu cũng quan trọng: sổ cái và định mức đi vào bằng bảng tính, nên script import là một phần của sản phẩm chứ không phải một lần chuyển đổi rồi thôi.
Stack
- Next.js
- TypeScript
- Prisma
- PostgreSQL
- TanStack Table
- ExcelJS
- Tailwind CSS
- Docker