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
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.
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
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
Sử dụng //
để comment line và /**/
để comment 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 đượ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
Class Assumptions
là một global variable
Kỳ bắt đầu chạy Financial modelling, là ngày cuối của tháng chốt sổ của profile
Ngày cuối cùng của kỳ hiện tại đang chạy
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
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
}
}
Ví dụ
if (Asset.Amount > 10) {
} else {
}
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
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
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
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
}
-
AddAsset(asset: Asset, reference: Item)
: Thêm tài sản -
AddLiability(liability: Liability, reference: Item)
: Thêm nợ -
AddIncome(value: number, reference: Item)
: Thêm thu nhập -
AddExpense(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êu -
AddCashflowFinance(value: number, reference: Item)
: Thêm dòng tiền từ tài chính -
AddCashflowInvestment(value: number, reference: Item)
: Thêm dòng tiền từ đầu tư -
RemoveAsset(asset: Asset, reference: Item)
: Xóa tài sản -
RemoveLiability(liability: Liability, reference: Item)
: Xóa nợ -
RemoveIncome(value: number, reference: Item)
: Xóa thu nhập -
RemoveExpense(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êu -
RemoveCashflowFinance(value: number, reference: Item)
: Xóa dòng tiền từ tài chính -
RemoveCashflowInvestment(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ề null -
GetParam(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
-
AddDisplayLine(path: string, name: string): path
: Thêm display line và trả về path của Display Line được thêm. -
AddValueToDisplayLine(path: string, value: number, ref: Item)
: Thêm giá trị vào display line
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)
}
}
}
Đị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;
};
Đị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',
}
Đị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 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',
}
Đị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
Đị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;
}
Đị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;
}
Đị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;
}
Đị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;
}
Đị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;
}
Đị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',
}
Đị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;
}
Đị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',
}
Đị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',
}
Đị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"
}
Đị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;
}
Đị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;
}
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',
}
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;
}
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;
}