以下是使用JavaScript实现财务五大附注账的代码示例。五大附注账通常包括:现金流量表、资产负债表、利润表、所有者权益变动表和财务报表附注。代码采用模块化设计,包含核心账簿类和五大账簿的实现:
// 账簿基类 - 定义通用财务账簿结构
class FinancialLedger {
constructor(name) {
this.name = name; // 账簿名称
this.entries = []; // 所有分录记录
this.balance = 0; // 当前余额
}
// 添加新分录
addEntry(date, description, debit = 0, credit = 0) {
const entry = {
date,
description,
debit,
credit,
balance: this.balance + debit - credit
};
this.entries.push(entry);
this.balance = entry.balance;
return entry;
}
// 生成报表
generateReport() {
return {
name: this.name,
totalEntries: this.entries.length,
currentBalance: this.balance,
entries: [...this.entries]
};
}
}
// ===== 五大附注账具体实现 =====
// 1. 现金流量账簿
class CashFlowLedger extends FinancialLedger {
constructor() {
super("现金流量表");
this.categories = {
operating: [], // 经营活动
investing: [], // 投资活动
financing: [] // 筹资活动
};
}
addEntry(date, description, amount, category) {
const debit = amount > 0 ? amount : 0;
const credit = amount < 0 ? -amount : 0;
const entry = super.addEntry(date, description, debit, credit);
if (this.categories[category]) {
this.categories[category].push(entry);
}
return entry;
}
}
// 2. 资产负债账簿
class BalanceSheetLedger extends FinancialLedger {
constructor() {
super("资产负债表");
this.assets = []; // 资产项
this.liabilities = []; // 负债项
this.equity = []; // 所有者权益
}
addAssetEntry(date, description, value) {
const entry = super.addEntry(date, description, value, 0);
this.assets.push(entry);
return entry;
}
addLiabilityEntry(date, description, value) {
const entry = super.addEntry(date, description, 0, value);
this.liabilities.push(entry);
return entry;
}
}
// 3. 利润账簿
class IncomeStatementLedger extends FinancialLedger {
constructor() {
super("利润表");
this.revenues = []; // 收入项
this.expenses = []; // 费用项
}
addRevenueEntry(date, description, amount) {
const entry = super.addEntry(date, description, amount, 0);
this.revenues.push(entry);
return entry;
}
addExpenseEntry(date, description, amount) {
const entry = super.addEntry(date, description, 0, amount);
this.expenses.push(entry);
return entry;
}
}
// 4. 所有者权益账簿
class EquityLedger extends FinancialLedger {
constructor() {
super("所有者权益变动表");
this.investments = []; // 股东投资
this.drawings = []; // 股东提款
}
}
// 5. 财务附注账簿
class NotesLedger extends FinancialLedger {
constructor() {
super("财务报表附注");
this.disclosures = []; // 披露事项
}
addDisclosure(date, description, details) {
const entry = {
date,
description,
details,
type: "disclosure"
};
this.disclosures.push(entry);
this.entries.push(entry);
return entry;
}
}
// ===== 使用示例 =====
// 创建五大账簿实例
const cashFlow = new CashFlowLedger();
const balanceSheet = new BalanceSheetLedger();
const incomeStatement = new IncomeStatementLedger();
const equityStatement = new EquityLedger();
const financialNotes = new NotesLedger();
// 添加现金流量记录
cashFlow.addEntry("2023-06-01", "销售商品收款", 50000, "operating");
cashFlow.addEntry("2023-06-05", "购买设备", -20000, "investing");
// 添加资产负债记录
balanceSheet.addAssetEntry("2023-06-01", "银行存款", 30000);
balanceSheet.addLiabilityEntry("2023-06-10", "短期借款", 10000);
// 添加利润记录
incomeStatement.addRevenueEntry("2023-06-15", "主营业务收入", 25000);
incomeStatement.addExpenseEntry("2023-06-20", "广告费用", 5000);
// 生成报表
console.log("现金流量表:", cashFlow.generateReport());
console.log("资产负债表:", balanceSheet.generateReport());
关键功能说明:
-
账簿基类
FinancialLedger- 提供基础账簿结构
- 实现分录添加和余额计算
- 支持报表生成功能
-
五大专用账簿:
- 现金流量表:跟踪经营/投资/筹资活动现金流
- 资产负债表:管理资产/负债/所有者权益
- 利润表:记录收入与费用
- 所有者权益表:追踪股东权益变动
- 财务附注:存储会计政策和重要事项说明
-
核心特性:
- 借贷自动平衡计算
- 交易分类管理
- 历史记录追溯
- 结构化数据输出
使用建议:
- 初始化五大账簿实例
- 按业务发生顺序添加分录
- 使用
generateReport()获取结构化数据 - 可扩展添加审计跟踪、历史快照等功能
- 前端可配合Vue/React实现可视化展示
此实现遵循会计基本原则,采用模块化设计便于扩展,可根据实际业务需求调整分类规则和报表格式。
JS实现财务五大附注账

被折叠的 条评论
为什么被折叠?



