# StockFlow ERD

## Phạm vi

ERD này là bản đồng bộ theo `database/schema.sql` và các migration hiện hành. Hệ thống có 24 bảng nghiệp vụ và audit, cùng 2 view báo cáo.

## Mermaid ERD

```mermaid
erDiagram
  USERS ||--o{ IMPORT_RECEIPTS : creates
  USERS ||--o{ EXPORT_RECEIPTS : creates
  USERS ||--o{ TRANSFER_RECEIPTS : creates
  USERS ||--o{ STOCK_CHECKS : creates
  USERS ||--o{ ADJUSTMENT_RECEIPTS : creates
  USERS ||--o{ VAT_INVOICES : creates
  USERS ||--o{ INVENTORY_TRANSACTIONS : creates
  USERS ||--o{ AUDIT_LOGS : performs
  USERS ||--o{ DEBT_OPENING_BALANCES : creates
  USERS ||--o{ DEBT_LEDGER_ENTRIES : creates
  CATEGORIES ||--o{ PRODUCTS : classifies
  UNITS ||--o{ PRODUCTS : measures
  WAREHOUSES ||--o{ INVENTORY : stores
  PRODUCTS ||--o{ INVENTORY : stocked
  WAREHOUSES ||--o{ IMPORT_RECEIPTS : receives
  WAREHOUSES ||--o{ EXPORT_RECEIPTS : dispatches
  WAREHOUSES ||--o{ TRANSFER_RECEIPTS : source
  WAREHOUSES ||--o{ TRANSFER_RECEIPTS : destination
  SUPPLIERS ||--o{ IMPORT_RECEIPTS : supplies
  CUSTOMERS ||--o{ EXPORT_RECEIPTS : receives
  CUSTOMERS ||--o{ DEBT_OPENING_BALANCES : owes
  CUSTOMERS ||--o{ DEBT_LEDGER_ENTRIES : owes
  SUPPLIERS ||--o{ DEBT_OPENING_BALANCES : payable
  SUPPLIERS ||--o{ DEBT_LEDGER_ENTRIES : payable
  IMPORT_RECEIPTS ||--o{ IMPORT_DETAILS : contains
  EXPORT_RECEIPTS ||--o{ EXPORT_DETAILS : contains
  TRANSFER_RECEIPTS ||--o{ TRANSFER_DETAILS : contains
  STOCK_CHECKS ||--o{ STOCK_CHECK_DETAILS : contains
  ADJUSTMENT_RECEIPTS ||--o{ ADJUSTMENT_DETAILS : contains
  VAT_INVOICES ||--o{ VAT_INVOICE_DETAILS : contains
  PRODUCTS ||--o{ IMPORT_DETAILS : item
  PRODUCTS ||--o{ EXPORT_DETAILS : item
  PRODUCTS ||--o{ TRANSFER_DETAILS : item
  PRODUCTS ||--o{ STOCK_CHECK_DETAILS : item
  PRODUCTS ||--o{ ADJUSTMENT_DETAILS : item
  PRODUCTS ||--o{ VAT_INVOICE_DETAILS : item
  WAREHOUSES ||--o{ INVENTORY_TRANSACTIONS : affects
  PRODUCTS ||--o{ INVENTORY_TRANSACTIONS : affects

  USERS { INT user_id PK; VARCHAR username UK; ENUM role; VARCHAR full_name }
  CATEGORIES { INT category_id PK; VARCHAR category_code UK; VARCHAR category_name }
  UNITS { INT unit_id PK; VARCHAR unit_code UK; VARCHAR unit_name }
  PRODUCTS { INT product_id PK; VARCHAR product_code UK; INT category_id FK; INT unit_id FK; DECIMAL minimum_stock }
  WAREHOUSES { INT warehouse_id PK; VARCHAR warehouse_code UK; VARCHAR warehouse_name }
  SUPPLIERS { INT supplier_id PK; VARCHAR supplier_code UK; VARCHAR supplier_name }
  CUSTOMERS { INT customer_id PK; VARCHAR customer_code UK; VARCHAR customer_name }
  INVENTORY { INT inventory_id PK; INT warehouse_id FK; INT product_id FK; DECIMAL quantity }
  INVENTORY_TRANSACTIONS { BIGINT transaction_id PK; INT warehouse_id FK; INT product_id FK; ENUM transaction_type; DECIMAL quantity_change }
  AUDIT_LOGS { BIGINT audit_id PK; INT user_id FK; VARCHAR action; VARCHAR resource; VARCHAR resource_id; JSON metadata }
  DEBT_OPENING_BALANCES { BIGINT opening_balance_id PK; SMALLINT fiscal_year; DATE effective_date; ENUM partner_type; VARCHAR category; VARCHAR budget_chapter; VARCHAR budget_type; VARCHAR budget_section; VARCHAR budget_item; DECIMAL debit_amount; DECIMAL credit_amount; ENUM status }
  DEBT_LEDGER_ENTRIES { BIGINT debt_entry_id PK; DATE entry_date; ENUM partner_type; VARCHAR category; DECIMAL debit_amount; DECIMAL credit_amount; ENUM entry_source; ENUM status }
```

## Views

- `vw_inventory_summary`: tồn, tồn khả dụng, hỏng, cũ và trạng thái `IN_STOCK`, `LOW_STOCK`, `OUT_OF_STOCK`.
- `vw_stock_card`: lịch sử biến động tồn theo kho, sản phẩm và chứng từ tham chiếu.

## Migration

- `001_add_inventory_conditions.sql`: bổ sung điều kiện tồn kho và trường kiểm kê.
- `002_align_full_stockflow_schema.sql`: đồng bộ mô hình chứng từ, khách hàng, chuyển kho, điều chỉnh và VAT.
- `003_add_audit_logs.sql`: bổ sung audit log thao tác thay đổi dữ liệu.
- `004_add_debt_reporting.sql`: bổ sung số dư đầu kỳ, sổ phát sinh công nợ, nhóm phải thu/phải trả và trạng thái xác nhận.
- `005_add_debt_opening_dimensions.sql`: bổ sung các trường Chương/Loại/Khoản/Mục tùy chọn cho báo cáo công nợ đầu năm.
