@fidt/fml-engine
v1.0.0
Published
FML is a financial modeling language for financial planning and analysis.
Downloads
61
Readme
Introduction
Overview
Financial Modelling Language là DSL (Domain Specific Language) nhằm xây dựng bộ công thức tính toán cho Financial Statement của một cá nhân.
Các file source code của FML sẽ được lưu với extension .fml
Mô hình tính toán
Cách engine chạy
Engine FML sẽ chạy qua từng chu kỳ tính toán (Period), cụ thể ở đây là hàng tháng. Ở từng chu kỳ, engine sẽ chạy qua từng item, bao gồm Tài sản Asset
, Nợ Liabilities
, Thu nhập Income
, Chi phí Expense
, Giao dịch tài sản/nợ Transaction
và tham chiếu với code fml
đã được viết để dựa vào đó tính toán ra giá trị, các hiệu ứng của từng item với các item khác.
Các item tự động tính toán
Một số item sau sẽ được engine FML tự động tính toán
NetAsset
: Tài sản ròng, tính theo công thứcNetAsset = Sum(Asset) - Sum(Liabilities)
NetIncome
: Thu nhập ròng, tính theo công thứcNetIncome = Sum(Income) - Sum(Expense)
NetCashflow
: Dòng tiền ròng, tính theo công thứcNetCashflow = CashflowOperation + CashflowFinance + CashflowInvestment
Cash
: Tiền mặt, tính theo công thứcCash = LastPeriod(Cash) + NetCashflow
Cộng dồn từ period thấp lên period cao
Engine FML sẽ thực hiện quy tắc cộng dồn từ period thấp lên period cao (từ tháng lên quý, từ tháng lên 6 tháng, từ tháng lên năm) theo nguyên lý sau:
- Đối với
Asset
,Liabilities
: sử dụng giá trị của kỳ cuối cùng ở period thấp làm giá trị của period cao - Đối với
Income
,Expense
: cộng các giá trị của các kỳ ở period thấp làm giá trị của period cao
Syntax grammar
Comment
Sử dụng //
để comment line và /**/
để comment block
Top level block
Để bắt đầu viết các công thức tính dành cho tài sản (Asset), nợ (Liabilities), Thu nhập (Income), Chi phí (Expense), Giao dịch tài sản/nợ (Transaction), viết như dưới đây và viết code bên dưới
Asset {
// Code tính tài sản
}
Liabilities {
// Code tính nợ
}
Income {
// Code tính thu nhập
}
Expense {
// Code tính chi phí
}
Transaction {
// Code tính giao dịch tài sản/nợ
}
Variable và scope
Variable được tạo ra bằng operator gán giá trị (assignment operator). Variable sẽ có scope global trong lần tính toán của item và period hiện tại. Khi engine FML di chuyển qua line item hoặc period tiếp theo, variable sẽ được reset
Global variable
Assumptions
Class Assumptions
là một global variable
FirstPeriod
Kỳ bắt đầu chạy Financial modelling, là ngày cuối của tháng chốt sổ của profile
CurrentPeriod
Ngày cuối cùng của kỳ hiện tại đang chạy
Các operation cụ thể
Truy cập attribute của một item
Ví dụ:
Asset.Type // Truy cập attribute `Type` của `Asset` đang được tính toán
Asset.Amount.Value // Truy cập attribute lồng nhau
Asset.Tags[0] // Truy cập element đầu tiên của attribute `Tags` của `Asset` đang được tính toán
Matching
Ví dụ
case Asset.Type { // Các tình huống của tài sản
"Tiền mặt" -> {
// Code xử lý tình huống tài sản là Tiền mặt
}
"Tiền gửi" -> {
// Code xử lý tình huống tài sản là Tiền gửi
}
Other -> {
// Tình huống khác
}
}
Branching
Ví dụ
if (Asset.Amount > 10) {
} else {
}
Operator
Logic operator
A and B // phép toán AND
A or B // phép toán OR
A is null // kiểm tra giá trị null
not A // đảo nghịch của A
A > B // So sánh A lớn hơn B
A >= B // So sánh A lớn hơn hoặc bằng B
A < B // So sánh A nhỏ hơn B
A <= B // So sánh A nhỏ hơn hoặc bằng B
A == B // So sánh A bằng B
A != B // So sánh A khác B
Math operator
A * B // phép toán nhân
A / B // phép toán chia
A + B // phép toán cộng
A - B // phép toán trừ
A mod B // phép toán lấy phần dư
A div B // phép toán lấy phần nguyên
Assignment operator
A = 1 // gán giá trị 1 vào biến A. Nếu biến A chưa tồn tại thì sẽ tự tạo ra biến A
Asset.Amount = 100 // Gán giá trị 100 vào attribute `Amount` của `Asset` hiện tại cho kỳ hiện tại
Optional Chaining
Tương tự Javascript, FML hỗ trợ optional chaining
A = Asset.Attribute1?.Attribute2
// Tương đương với
if (Asset.Attribute1 is not null) {
A = Asset.Attribute1.Attribute2
} else {
A = null
}
Các hàm built-in
AddAsset(asset: Asset, reference: Item)
: Thêm tài sảnAddLiability(liability: Liability, reference: Item)
: Thêm nợAddIncome(value: number, reference: Item)
: Thêm thu nhậpAddExpense(value: number, reference: Item)
: Thêm chi phíAddCashflowOperation(value: number, reference: Item)
: Thêm dòng tiền từ thu nhập và chi tiêuAddCashflowFinance(value: number, reference: Item)
: Thêm dòng tiền từ tài chínhAddCashflowInvestment(value: number, reference: Item)
: Thêm dòng tiền từ đầu tưRemoveAsset(asset: Asset, reference: Item)
: Xóa tài sảnRemoveLiability(liability: Liability, reference: Item)
: Xóa nợRemoveIncome(value: number, reference: Item)
: Xóa thu nhậpRemoveExpense(value: number, reference: Item)
: Xóa chi phíRemoveCashflowOperation(value: number, reference: Item)
: Xóa dòng tiền từ thu nhập và chi tiêuRemoveCashflowFinance(value: number, reference: Item)
: Xóa dòng tiền từ tài chínhRemoveCashflowInvestment(value: number, reference: Item)
: Xóa dòng tiền từ đầu tưLastPeriod(item: Item, period: number): Item
: Chọn giá trị của item tại chu kỳ trước hoặc sau chu kỳ hiện tại.period
là số chu kỳLastValue(item: Item)
: Lấy giá trị gần nhất phía trước có giá trị != 0, nếu không tìm thấy trả về nullGetParam(item: Item, param: string)
: Lấy param từ params list- Interface liên quan đến hàm
getParam
export interface Assumption { nane: string target_param: string filter: Filter[] param_value: number } export interface Filter { field: string value: string operator: ">" | "<" | ">=" | "<=" | "=" | "<>" } export interface Param { name: string }
- Interface liên quan đến hàm
Example
Asset {
case Asset.Type {
"Tiền mặt" -> {
// Nếu là tiền mặt thì giá trị không thay đổi
Asset.Amount = LastPeriod(Asset.Amount, 1)
}
"Tiền gửi tiết kiệm" -> {
// Nếu là tiền gửi tiết kiệm thì tăng theo lãi suất gửi tiết kiệm từ `Assumptions`
Asset.Amount = LastPeriod(Asset.Amount, 1) * ( 1 + Assumptions.CashGrowthPerYear / 12 )
}
Other -> {
// Nếu là tài sản khác thì không thay đổi giá trị
Asset.Amount = LastPeriod(Asset.Amount, 1)
}
}
}
Liability {
case Liability.Type {
"Trả góp" -> {
// Tính tiền trả lãi
InterestPayment = LastPeriod(Liability.Principal, 1) * Liability.InterestRate / 12
// Tính tiền trả gốc
PrincipalPalPayment = Liability.PaymentAmount - InterestPayment
// Tính gốc còn lại
Liability.Principal = LastPeriod(Liability.Principal, 1) - PrincipalPayment
}
Other -> {
Liability.Principal = LastPeriod(Liability.Principal, 1)
}
}
}
Modelling
Thông tin về các class
Asset
Thông tin chung
Định nghĩa theo Typescript
type TaiSan = {
/**
* Quyền sở hữu
*/
quyen_so_huu: string | any;
/**
* Loại
*/
loai_tai_san: string;
/**
* Tên
*/
ten_tai_san: string;
/**
* Giá trị theo 1 đơn vị
*/
gia_tri_theo_1_don_vi: number;
/**
* Số lượng
*/
so_luong: number;
/**
* Tỉ trọng
*/
ty_trong: number;
/**
* Gía trị
*/
tong_gia_tri: number;
/**
* Ghi chú
*/
ghi_chu?: string;
id?: string;
w_updated_time?: Date;
w_updated_user?: any;
};
Tài sản vốn góp
Định nghĩa theo Typescript
export default interface VonGop extends TaiSan {
ten_doanh_nghiep: string;
mst: string;
loai_hinh_doanh_nghiep: LoaiHinhDoanhNghiep | string;
chu_doanh_nghiep: boolean | string;
ty_le_so_huu: number | string;
thu_nhap_tu_doanh_nghiep: number | string;
gia_tri_cong_ty: number | string;
von_dieu_le: number | string;
tong_doanh_thu: number | string;
loi_nhuan_sau_thue: number | string;
nganh_nghe_kinh_doanh: NganhNgheKinhDoanh | string;
dia_chi: string;
phan_tram_tang_truong_doanh_thu: number | string;
thoi_diem_thanh_lap: Date | string;
so_luong_nhan_vien: number | string;
mo_ta_ngan_ve_hoat_dong_kinh_doanh: string;
}
Enum liên quan đến VonGop
export enum LoaiHinhDoanhNghiep {
CongTyTNHH = 'cong_ty_tnhh',
CongTyCoPhan = 'cong_ty_co_phan',
DoanhNghiepTuNhan = 'doanh_nghiep_tu_nhan',
}
export enum NganhNgheKinhDoanh {
KinhDoanh = 'kinh_doanh',
ITPhanMem = 'it_phan_mem',
HanhChinhVanPhong = 'hanh_chinh_van_phong',
GiaoDucDaoTao = 'giao_duc_dao_tao',
TuVan = 'tu_van',
MarketingTruyenThongQuangCao = 'marketing_truyen_thong_quang_cao',
VanTaiKhoVan = 'van_tai_kho_van',
KeToanKiemToan = 'ke_toan_kiem_toan',
}
Bất động sản
Định nghĩa theo Typescript
export default interface BatDongSan extends TaiSan {
thoi_diem_mua: Date | string;
da_co_so: boolean;
da_hoan_cong: boolean;
thong_tin_cho_thue: ThongTinChoThue;
}
Enum và Interface liên quan đến BatDongSan
export interface ThongTinChoThue {
/**
* Giá thuê/cho thuê
*/
gia_thue: number;
/**
* Tần suất thanh toán
*/
tan_suat_thanh_toan: TanSuatThanhToan | string;
/**
* Thời điểm cho thuê
*/
thoi_diem_cho_thue: Date | string;
/**
* Mức tăng cho thuê theo % (tháng, quý, năm)
*/
muc_tang_cho_thue_theo_phan_tram: MucTangChoThueTheoPhanTram;
/**
* Ghi chú
*/
ghi_chu: string;
}
export enum TanSuatThanhToan {
HangTuan = 'hang_tuan',
HangThang = 'hang_thang',
Hangquy = 'hang_quy',
HangNam = 'hang_nam',
}
export enum MucTangChoThueTheoPhanTram {
Thang = 'thang',
Quy = 'quy',
Nam = 'nam',
}
export enum Huong {
Dong = 'dong',
Tay = 'tay',
Nam = 'nam',
Bac = 'bac',
DongBac = 'dong_bac',
DongNam = 'dong_nam',
TayBac = 'tay_bac',
TayNam = 'tay_nam',
}
export enum HinhThucSoHuu {
Chung = 'chung',
Rieng = 'rieng',
}
Nhà
Định nghĩa theo Typescript
export default interface Nha extends BatDongSan {
/**
* Tên dự án
*/
ten_du_an: string;
/**
* Địa chỉ
*/
dia_chi: string;
/**
* Diện tích xây dựng / sàn
*/
dien_tich_xay_dung: string;
/**
* Diện tích đất
*/
dien_tich_dat: string;
/**
* Giá trị nội thất
*/
gia_tri_not_that: number;
/**
* Hướng
*/
huong: Huong;
/**
* Số phòng ngủ
*/
so_phong_ngu: number;
/**
* Số phòng tắm
*/
so_phong_tam: number;
/**
* Số tầng
*/
so_tang: number;
/**
* Tình trạng đúc: Đúc thật/Đúc giả
*/
tinh_trang_duc: TinhTrangDuc;
/**
* Hình thức sở hữu (chung, riêng)
*/
hinh_thuc_so_huu: HinhThucSoHuu;
/**
* Thời hạn sử dụng đất đến ngày …/…/... (có thời hạn)
* nếu null thì thời hạn sử dụng không giới hạn.
*/
thoi_han_su_dung_den_ngay: Date | string | null;
}
Enum và Interface liên quan đến Nha
export enum TinhTrangDuc {
DucThat = 'duc_that',
DucGia = 'duc_gia',
}
Căn hộ
Định nghĩa theo Typescript
export default interface CanHo extends BatDongSan {
/**
* Tên nhà chung cư / Tên dự án
*/
ten_du_an: string;
/**
* Địa chỉ
*/
dia_chi: string;
/**
* Diện tích sàn (thông thủy, tim tường)
*/
dien_tich_san: string;
/**
* Thời hạn sử dụng đất đến ngày …/…/... (có thời hạn)
* nếu null thì thời hạn sử dụng không giới hạn.
*/
thoi_han_su_dung_den_ngay: Date | string | null;
/**
* Hình thức sở hữu (chung, riêng)
*/
hinh_thuc_so_huu: HinhThucSoHuu;
/**
* block/building
*/
block_building: string;
/**
* Tầng thứ
*/
tang_thu: number;
/**
* Giá trị nội thất (đơn vị vnđ)
*/
gia_tri_noi_that: number;
/**
* Hướng
*/
huong: Huong;
/**
* Số phòng ngủ
*/
so_phong_ngu: number;
/**
* Số phòng tắm
*/
so_phong_tam: number;
/**
* view quan cảnh
*/
view_quan_canh: string;
}
Enum và Interface liên quan đến CanHo
Công trình xây dựng khác
Định nghĩa theo Typescript
export default interface CongTrinh extends BatDongSan {
/**
* Diện tích xây dựng, sàn
*/
dien_tich_xay_dung: number;
/**
* Hình thức sở hữu (chung, riêng)
*/
hinh_thuc_so_huu: HinhThucSoHuu;
/**
* Hạng mục công trình
*/
hang_muc_cong_trinh: string;
/**
* Thời hạn sử dụng đất đến ngày …/…/... (có thời hạn)
* nếu null thì thời hạn sử dụng không giới hạn.
*/
thoi_han_su_dung_den_ngay: Date | string | null;
}
Thửa đất
Định nghĩa theo Typescript
export default interface ThuaDat extends BatDongSan {
/**
* Tên dự án
*/
ten_du_an: string;
/**
* Địa chỉ
*/
dia_chi: string;
/**
* thửa đát số
*/
thua_dat_so: number | string;
/**
* Tờ bản đồ số
*/
to_ban_do_so: number | string;
/**
* Mục đích sử dụng
*/
muc_dich_su_sung: string;
/**
* Mục đích sử dụng
*/
dien_tich_thua_dat: string;
/**
* Hình thức sở hữu (chung, riêng)
*/
hinh_thuc_su_huu: HinhThucSoHuu;
/**
* Thời hạn sử dụng đất đến ngày …/…/... (có thời hạn)
* nếu null thì thời hạn sử dụng không giới hạn.
*/
thoi_han_su_dung_den_ngay: Date | string | null;
/**
* Nguồn gốc sử dụng
*/
nguon_goc_su_dung: string;
}
Chứng chỉ quỹ
Định nghĩa theo Typescript
export default interface ChungChiQuy extends TaiSan {
/**
* Tên quỹ
*/
ten_quy: string;
/**
* Mã quỹ
*/
ma_quy: string;
/**
* Loại quỹ
*/
loai_quy: string;
/**
* Thời điểm mua
*/
thoi_diem_mua: Date | string;
/**
* Công ty quản lý quỹ
*/
cong_ty_quan_ly_quy: string;
}
Cổ phiếu
Định nghĩa theo Typescript
export default interface CoPhieu extends TaiSan {
ma_co_phieu: string;
thoi_diem_mua: Date | string;
giao_dich_tai_cong_ty_chung_khoan: string;
}
Ngoại tệ
Định nghĩa theo Typescript
export default interface NgoaiTe extends TaiSan {
/**
* Loại ngoại tệ
*/
loai_ngoai_te: string;
/**
* Thời điểm mua
*/
thoi_diem_mua: Date | string;
}
Tiền gửi
Định nghĩa theo Typescript
export default interface TienGui extends TaiSan {
/**
* Số tiền gửi
*/
so_tien_gui: number;
/**
* Tên ngân hàng gửi
*/
ten_ngan_hang_gui: string;
/**
* Lãi suất (theo năm)
*/
lai_suat: number;
/**
* Thời điểm gửi tiền
*/
thoi_diem_gui_tien: Date | string;
/**
* Kỳ hạn
*/
ky_han: KyHanTienGui | string;
/**
* Thời điểm đáo hạn
*/
thoi_diem_dao_han: Date | string;
/**
* Loại tiền tệ
*/
loai_tien_te: LoaiTienTe | string;
/**
* Tên chi nhánh
*/
ten_chi_nhanh: string;
/**
* Hình thức gửi tiền
*/
hinh_thuc_gui_tien: HinhThucGuiTien | string;
/**
* Hình thức đáo hạn
*/
hinh_thuc_dao_han: HinhThucDaoHan | string;
}
Enum và Interface liên quan đến TienGui
export enum KyHanTienGui {
Tuan = 'tuan',
Thang = 'thang',
}
export enum HinhThucGuiTien {
TaiQuay = 'tai_quay',
Online = 'online',
}
export enum HinhThucDaoHan {
TaiTucTuDong = 'tai_tuc_tu_dong',
TaiLucTheoYeuCau = 'tai_luc_theo_yeu_cau',
}
Tiền hoàn hợp đồng bảo hiểm
Định nghĩa theo Typescript
export default interface TienHoanHopDongBaoHiem extends TaiSan {
/**
* Mã hợp đồng
*/
ma_hop_dong: string;
/**
* Thời điểm hoàn lại
*/
thoi_diem_hoan_lai: Date | string;
/**
* Số tiền hoàn lại
*/
so_tien_hoan_lai: number;
/**
* Tên sản phẩm
*/
ten_san_pham: string;
}
Trái phiếu
Định nghĩa theo Typescript
export default interface TraiPhieu extends TaiSan {
/**
* Mã trái phiếu
*/
ma_trai_phieu: string;
/**
* Tên tổ chức phát hành
*/
ten_to_chuc_phat_hanh: string;
/**
* Loại trái phiếu
*/
loai_trai_phieu: LoaiTraiPhieu | string;
/**
* Thời điểm mua/đặt lệnh
*/
thoi_diem_mua: Date | string;
/**
* Thời điểm phát hành
*/
thoi_diem_phat_hanh: Date | string;
/**
* Thời điểm đáo hạn
*/
thoi_hiem_dao_han: Date | string;
/**
* Tiền tệ
*/
tien_te: LoaiTienTe | string;
/**
* Kỳ hạn
*/
ky_han: TanSuatNhan | string;
/**
* Thời điểm trả lại
*/
thoi_diem_tra_lai: Date | string;
/**
* Lợi suất coupon / cố định (%)
*/
loi_suat_coupon: number;
/**
* Lợi suất thực nhận (%)
*/
loi_xuat_thuc_nha: number;
/**
* Dòng tiền thực nhận khi đầu tư
*/
dong_tien_thuc_nhan_khi_dau_thu: number;
/**
* Số lượng trái phiếu sở hữu
*/
so_luong_trai_phieu_so_hu: number;
/**
* Giá mua (theo 1 đơn vị) (VNĐ)
*/
gia_mua: number;
/**
* Tổng giá trị sở hữu (VNĐ)
*/
tong_tra_tru_so_huu: number;
/**
* Kỳ trả lãi coupon | (Tần suất nhận)
*/
ky_tra_lai_coupon: TanSuatNhan;
/**
* Mã giấy tờ gốc
*/
ma_giay_to_goc: string;
/**
* Tên tổ chức bảo lãnh
*/
ten_to_chuc_bao_lanh: string;
}
Enum và Interface liên quan đến TraiPhieu
export enum LoaiTraiPhieu {
TraiPhieuChinhPhu = 'trai_phieu_chinh_phu',
TraiPhieuChinhQuyenDiaPhuong = 'trai_phieu_chinh_quyen_dia_phuong',
TraiPhieuDoanhNghiep = 'trai_phieu_doanh_nghiep',
}
export enum TanSuatNhan {
LienTiep12Thang = 'lien_tiep_12_thang',
KyHan3Thang = '3_thang',
KyHan6Thang = '6_thang',
KyHan12Thang = '12_thang',
}
Vàng
Định nghĩa theo Typescript
export default interface Vang extends TaiSan {
/**
* Trọng lượng
*/
trong_luong: number;
/**
* Giá trị khi mua
*/
gia_tri_khi_mua: number;
/**
* Tên danh nghiệp bán vàng
*/
ten_doanh_nghiep_ban_vang: string;
/**
* Thời điểm mua
*/
thoi_diem_mua: Date | string;
/**
* Hàm lượng vàng
*/
tuoi_ham_luong_vang: string | number;
/**
* Xuất xứ
*/
xuat_xu: XuatXuVang | string;
}
Enum và Interface liên quan đến Vang
export enum XuatXuVang {
TrongNuoc = 'trong_nuoc',
NuocNgoai = 'nuoc_ngoai',
}
Liability
Thông tin chung
Định nghĩa theo Typescript
export default interface No {
id: string;
so_tien_vay: number;
lai_suat: number;
ky_han: number;
hinh_thuc_vay: HinhThucVay;
hinh_thuc_tra_lai: HinhThucTraLai;
ngay_vay: Date | string;
ngay_dao_han: Date | string;
ghi_chu?: string;
}
Enum và Interface liên quan đến 'No'
export enum LoaiNo {
NganHan = 'no_ngan_han',
TrungHan = 'no_trung_han',
DaiHan = 'no_dai_han',
ThauChi = 'thau_chi',
Khac = 'khac'
}
export enum LoaiLaiSuat{
CoDinh = "co_dinh",
ThaNoi = "tha_noi"
}
export enum TanSuatTraNo{
HangThang = "hang_thang",
HangQuy = "hang_quy",
HangNuaNam = "hang_nua_nam",
HangNam = "hang_nam"
}
export enum HinhThucVay{
TheChap = "the_chap",
TinChap = "tin_chap",
TheTinDung = "the_tin_dung",
VayNgoai = "vay_ngoai",
VayNguoiThan = "vay_nguoi_than"
}
export enum HinhThucTraLai{
DuNoGiamGian = "du_no_giam_dan",
DuNoBanDau = "du_no_ban_dau_goc"
}
Income
Thông tin chung
Định nghĩa theo Typescript
export default interface ThuNhap {
/**
* ID thu nhập
*/
id?: string;
/**
* ID deal
*/
deal_id?: string;
/**
* Nguồn thu nhập
*/
nguon_thu_nhap?: string;
/**
* Loại thu nhập
*/
loai_thu_nhap: LoaiThuNhap;
/**
* Thu nhập
*/
thu_nhap: ChiTietThuNhap | string;
/**
* Số tiền
*/
so_tien: number;
/**
* Tần suất
*/
tan_suat: TanSuat;
/**
* Thời điểm bắt đầu
*/
thoi_diem_bat_dau: Date | string;
/**
* Thu nhập dự kiến sẽ thay đổi đáng kể
*/
thu_nhap_du_kien_se_thay_doi_dang_ke: boolean;
/**
* Thu nhập sau thuế
*/
thu_nhap_sau_thue: boolean;
/**
*
* Bao gồm tăng theo giá trị hoặc phần trăm nhất định theo từng năm
*/
loai_muc_tang?: LoaiMucTang;
/**
* Mức tăng là số tiền được tăng hoặc % được tăng
*/
muc_tang: number;
/**
* Thời hạn
*/
thoi_han: number;
/**
* Loại thời hạn
*/
loai_thoi_han: LoaiThoiHan;
/**
* Tổng thu nhập 1 năm (Auto nhảy giá
* trị, dựa vào SỐ TIỀN VÀ TẦN SUẤT, từ
* đó cho ra kết quả trong 1 năm)
*/
tong_thu_nhap_1_nam: number;
/**
* Thu nhập gắn với loại tài sản
*/
gan_voi_loai_tai_san: LoaiTaiSan | string;
/**
* Thu nhập gắn với tài sản
*/
gan_voi_tai_san: Partial<TaiSan> | string;
/**
* Ghi chú
*/
ghi_chu: string;
w_updated_user: any;
w_updated_time: Date;
thoi_diem_ket_thuc_dropdown_value: string;
thoi_diem_ket_thuc_value: string | Date;
thoi_diem_ket_thuc: any;
}
Exppense
Thông tin chung
Định nghĩa theo Typescript
export default interface ChiTieu {
/**
* ID chi tiêu
*/
id?: string;
/**
* ID deal
*/
deal_id?: string;
/**
* Nguồn chi tiêu
*/
nguon_chi_tieu: string;
/**
* Loại chi tiêu
*/
loai_chi_tieu: LoaiChiTieu;
/**
* Loại chi phí
*/
loai_chi_phi: LoaiChiPhi | string;
/**
* Thời hạn
*/
thoi_han: number;
/**
* Loại thời hạn
*/
loai_thoi_han: LoaiThoiHan;
/**
* Số tiền
*/
so_tien: number;
/**
* Tần suất
*/
tan_suat: TanSuat;
/**
* Thời điểm bắt đầu
*/
thoi_diem_bat_dau: Date | string;
/**
* Tổng chi tiêu 1 năm
*/
tong_chi_tieu_1_nam: number;
/**
* Chi tiêu gắn với loại tài sản
*/
gan_voi_loai_tai_san: LoaiTaiSan;
/**
* Chi tiêu gắn với tài sản
*/
gan_voi_tai_san: TaiSan | string;
/**
* Chi tiêu gắn với khoản vay
*/
gan_voi_khoan_vay: No | string;
/**
* Ghi chú
*/
ghi_chu: string;
w_updated_user: any;
w_updated_time: Date;
thoi_diem_ket_thuc_dropdown_value: string;
thoi_diem_ket_thuc_value: string | Date;
thoi_diem_ket_thuc: any;
}
Transaction
Thông tin chung
export default interface GiaoDich {
id?: string;
deal_id?: string;
tai_san?: TaiSan | string;
no?: No | string;
thoi_diem_giao_dich: Date | string;
doi_tuong_giao_dich: DoiTuongGiaoDich;
loai_giao_dich: LoaiGiaoDich;
gia_tri_giao_dich: number;
hinh_thuc_ban?: HinhThucBan;
gia_tri_tai_san_theo_mot_don_vi?: number;
so_luong?: number;
ghi_chu?: string;
}
Enum và Interface liên quan đến GiaoDich
export enum DoiTuongGiaoDich {
TaiSan = 'tai_san',
No = 'no',
}
export enum LoaiGiaoDich {
ThemTaiSanHienCo = 'them_tai_san_hien_co',
MuaTaiSan = 'mua_tai_san',
BanTaiSan = 'ban_tai_san',
ThemTaiSanTienGui = 'them_tai_san_tien_gui',
ThemTaiSanChoVayTien = 'them_tai_san_cho_vay_tien',
VayNo = 'vay_no',
TraTruocHan = 'tra_truoc_han',
}
export enum HinhThucBan {
ToanPhan = 'toan_phan',
MotPhan = 'mot_phan',
}
Insurance
Bảo hiểm nhân thọ
export interface BaoHiemSucKhoe {
nguoiCapNhat: string | null;
thoiDiemCapNhat: string | null;
id?: number | null;
deal_id: string | null;
doanhNghiepBH: string | null;
tenSP: string | null;
benMuaBH: string | null;
loaiTruVaTangPhi: string | null;
phiHangNam: number | null;
tanSuatDongPhi: string | null;
nguoiDuocBH: string | null;
phamViDiaLy: string | null;
thoiHanHopDong: string | null;
thoiGianCho: string | null;
laSanPhamBoTroBHNT: boolean;
hopDongBHNT: string | null;
nguoiDuocBH_benefit: string | null;
phiHangNam_benefit: number | null;
tanSuatDongPhi_benefit: string | null;
dongChiTra: boolean;
baoLanhVienPhi: boolean;
tuVongThuongTatDoTaiNan: number | null;
tuVongThuongTatKhongDoTaiNan: number | null;
chiPhiDieuTriTaiNan: number | null;
dieuTriNoiTru: number | null;
namVien: number | null;
troCapNamVien: number | null;
chiPhiPhauThuat: number | null;
coLoaiTruPhiCayGhep: boolean;
cayGhepNoiTang: number | null;
coLoaiTriPhiCayGhepNoiTang: boolean;
chiPhiDieuTriTruocNhapVien: number | null;
chiPhiDieuTriSauRaVien: number | null;
chiPhiChamSocTaiNha: number | null;
chiPhiVanChuyen: number | null;
chiPhiMaiTang: number | null;
phucHoiChucNang: number | null;
troCapBenhVienCong: number | null;
khac: string | null;
sanPhamBoTro: any[];
tyLeDongChiTra: number | null;
khachHang: string | null;
}
Bảo hiểm sức khỏe
export interface BaoHiemSucKhoe {
nguoiCapNhat: string | null;
thoiDiemCapNhat: string | null;
id?: number | null;
deal_id: string | null;
doanhNghiepBH: string | null;
tenSP: string | null;
benMuaBH: string | null;
loaiTruVaTangPhi: string | null;
phiHangNam: number | null;
tanSuatDongPhi: string | null;
nguoiDuocBH: string | null;
phamViDiaLy: string | null;
thoiHanHopDong: string | null;
thoiGianCho: string | null;
laSanPhamBoTroBHNT: boolean;
hopDongBHNT: string | null;
nguoiDuocBH_benefit: string | null;
phiHangNam_benefit: number | null;
tanSuatDongPhi_benefit: string | null;
dongChiTra: boolean;
baoLanhVienPhi: boolean;
tuVongThuongTatDoTaiNan: number | null;
tuVongThuongTatKhongDoTaiNan: number | null;
chiPhiDieuTriTaiNan: number | null;
dieuTriNoiTru: number | null;
namVien: number | null;
troCapNamVien: number | null;
chiPhiPhauThuat: number | null;
coLoaiTruPhiCayGhep: boolean;
cayGhepNoiTang: number | null;
coLoaiTriPhiCayGhepNoiTang: boolean;
chiPhiDieuTriTruocNhapVien: number | null;
chiPhiDieuTriSauRaVien: number | null;
chiPhiChamSocTaiNha: number | null;
chiPhiVanChuyen: number | null;
chiPhiMaiTang: number | null;
phucHoiChucNang: number | null;
troCapBenhVienCong: number | null;
khac: string | null;
sanPhamBoTro: any[];
tyLeDongChiTra: number | null;
khachHang: string | null;
}