# 会计

符合 COSIF 标准的会计，包括复式记账日记账、会计科目表、成本中心和会计事件。

## 前提条件

- 了解巴西银行会计标准 (COSIF)
- 拥有会计权限的管理员访问
- 熟悉复式记账

## COSIF 会计科目表

FluxiQ PIX 实现了 BCB Circular 4010 规定的 44 个 COSIF 账户，在迁移 #18 中种子化。

### API 端点

| 方法 | 路径 | 描述 |
|------|------|------|
| GET | `/api/v1/accounting/chart-of-accounts` | 列出所有 44 个 COSIF 账户 |
| GET | `/api/v1/accounting/journal-entries` | 带滚动余额的日记账分录 |
| GET | `/api/v1/accounting/events` | 会计事件列表 |
| POST | `/api/v1/accounting/events` | 创建事件（自动创建日记账分录） |
| GET | `/api/v1/accounting/cost-centers` | 列出成本中心（带搜索） |
| POST | `/api/v1/accounting/cost-centers` | 创建成本中心 |
| PUT | `/api/v1/accounting/cost-centers/:id` | 更新成本中心 |
| POST | `/api/v1/accounting/cost-centers/:id/toggle-status` | 切换启用/停用 |

## 复式记账日记账

每个会计事件自动创建包含借方和贷方的日记账分录：

```mermaid
graph LR
    EVENT[会计事件<br/>例如 PIX 贷记转账] --> JOURNAL[日记账分录]
    JOURNAL --> DEBIT[借方<br/>账户 A]
    JOURNAL --> CREDIT[贷方<br/>账户 B]
    DEBIT --> BAL_A[滚动余额 A]
    CREDIT --> BAL_B[滚动余额 B]
```

### 示例：PIX 贷记转账

| 账户 | 借方 | 贷方 |
|------|------|------|
| 1.1.1.00.00 - PIX 应收款 | R$ 100.00 | -- |
| 4.1.1.00.00 - PIX 收入 | -- | R$ 100.00 |

## 成本中心

迁移 #18 中种子化了 6 个成本中心：

| 代码 | 名称 |
|------|------|
| CC001 | PIX 运营 |
| CC002 | 清算 |
| CC003 | DICT 管理 |
| CC004 | 合规 |
| CC005 | 技术 |
| CC006 | 行政管理 |

每个日记账分录可以分配到一个成本中心，用于费用追踪和报告。

## 模式

### ChartOfAccounts

| 字段 | 类型 | 描述 |
|------|------|------|
| `id` | UUID | 主键 |
| `code` | string | COSIF 账户代码（例如 "1.1.1.00.00"） |
| `name` | string | 账户名称 |
| `type` | string | ASSET、LIABILITY、EQUITY、REVENUE、EXPENSE |
| `parent_id` | UUID | 父账户（用于层级结构） |
| `is_active` | boolean | 激活状态 |

### JournalEntry

| 字段 | 类型 | 描述 |
|------|------|------|
| `id` | UUID | 主键 |
| `account_id` | UUID | 关联 chart_of_accounts |
| `event_id` | UUID | 关联 accounting_events |
| `debit_amount` | decimal | 借方金额（分） |
| `credit_amount` | decimal | 贷方金额（分） |
| `running_balance` | decimal | 计算的滚动余额 |
| `cost_center_id` | UUID | 可选关联 cost_centers |

### AccountingEvent

| 字段 | 类型 | 描述 |
|------|------|------|
| `id` | UUID | 主键 |
| `event_type` | string | 事件类型（例如 "pix_credit_transfer"） |
| `reference_id` | string | 交易/实体引用 |
| `description` | string | 可读描述 |
| `amount` | decimal | 事件金额 |

## 序列化

API 响应使用 camelCase JSON 键（控制器中 snake_case -> camelCase 转换）：

```json
{
  "data": [{
    "id": "uuid",
    "accountCode": "1.1.1.00.00",
    "accountName": "PIX Receivables",
    "debitAmount": 10000,
    "creditAmount": 0,
    "runningBalance": 150000,
    "costCenter": "CC001"
  }]
}
```

## 预期结果

配置会计后：

- 44 个 COSIF 账户可在会计科目表中使用
- 复式记账日记账分录从会计事件自动创建
- 每个账户计算滚动余额
- 6 个成本中心用于费用分类
- 所有金额以分为单位（整数）确保精度
