JavaScript实现财务五大附注账

JS实现财务五大附注账

以下是使用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());

关键功能说明:

  1. 账簿基类 FinancialLedger

    • 提供基础账簿结构
    • 实现分录添加和余额计算
    • 支持报表生成功能
  2. 五大专用账簿

    • 现金流量表:跟踪经营/投资/筹资活动现金流
    • 资产负债表:管理资产/负债/所有者权益
    • 利润表:记录收入与费用
    • 所有者权益表:追踪股东权益变动
    • 财务附注:存储会计政策和重要事项说明
  3. 核心特性

    • 借贷自动平衡计算
    • 交易分类管理
    • 历史记录追溯
    • 结构化数据输出

使用建议:

  1. 初始化五大账簿实例
  2. 按业务发生顺序添加分录
  3. 使用generateReport()获取结构化数据
  4. 可扩展添加审计跟踪、历史快照等功能
  5. 前端可配合Vue/React实现可视化展示

此实现遵循会计基本原则,采用模块化设计便于扩展,可根据实际业务需求调整分类规则和报表格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值