结算模块设计

结算模块设计

结算模块表结构

复制代码
结算模块核心表(24张)
├── 应付款管理(4张)
│   ├── 应付款表 (finance_accounts_payable)               # 核心负债记录
│   ├── 应付暂估表 (finance_accrued_payable)              # 已收货未开票
│   ├── 应付暂估调整表 (finance_accrued_adjustment)       # 暂估差异调整
│   └── 应付对账表 (finance_payable_reconciliation)       # 供应商账务核对
├── 付款计划管理(7张)
│   ├── 付款条件模板表 (finance_payment_term_template)    # 标准付款条件
│   ├── 供应商付款条件表 (finance_vendor_payment_terms)   # 供应商特定条件
│   ├── 合同付款条款表 (finance_contract_payment_terms)   # 合同特殊条款
│   ├── 付款计划主表 (finance_payment_schedule)           # 主计划
│   ├── 付款计划明细表 (finance_payment_schedule_detail)  # 计划明细
│   ├── 付款计划调整表 (finance_payment_schedule_adjustment) # 调整记录
│   └── 付款计划规则表 (finance_payment_rule_engine)      # 自动化规则
├── 付款执行管理(10张)
│   ├── 付款指令表 (finance_payment_instruction)          # 付款指令
│   ├── 付款批次表 (finance_payment_batch)                # 批量处理
│   ├── 银行接口日志表 (finance_bank_interface_log)       # 银行交互记录
│   ├── 银行交易明细表 (finance_bank_transaction)         # 银行流水
│   ├── 支票管理表 (finance_check_management)             # 支票管理
│   ├── 承兑汇票主表 (finance_bill_of_exchange)           # 汇票信息
│   ├── 承兑汇票执行表 (finance_bill_execution)           # 汇票流转记录
│   ├── 付款异常处理表 (finance_payment_exception)        # 异常管理
│   ├── 银行对账表 (finance_bank_reconciliation)          # 银行对账
│   └── 付款执行审计表 (finance_payment_audit)            # 审计追踪
├── 账务处理 (2张)
│   ├── 会计分录表 (finance_gl_entry)                    # 会计凭证记录
│   └── 科目映射表 (finance_account_mapping)             # 业务科目映射
└── 辅助与配置表(1张)
    └── 供应商账龄分析表 (finance_vendor_aging_analysis)  # 分析报表

完整业务流程

复制代码
采购申请 → 询价报价 → 比价决策 → 生成订单 → 收货入库 
    ↓(如有预付款)
预付款申请 → 预付款执行
    ↓
应付暂估(已收货未开票)
    ↓
发票验证(收到供应商发票)
    ↓
暂估冲销(冲销暂估,生成正式应付款)
    ↓(如有折扣)
供应商折扣处理
    ↓
应付款生成(记录正式负债)
    ↓(如有质保金)
质保金分离处理
    ↓
付款计划(根据条件制定付款计划)
    ↓
付款审批(多级审批流程)
    ↓
付款指令生成(将计划转为可执行指令)
    ↓
付款批次处理(批量优化处理)
    ↓
付款执行(银行转账/支票/汇票/跨境)
    ↓
银行对账(核对银行流水)
    ↓
账务处理(生成会计凭证)
    ↓
供应商应付对账(定期与供应商核对)
    ↓(如需)
供应链金融处理
    ↓
账龄分析与风险管理

关键表关系

sql 复制代码
-- 核心表关系
-- 一张发票对应一笔应付款(一对一)
ALTER TABLE finance_accounts_payable
ADD CONSTRAINT fk_payable_invoice 
FOREIGN KEY (invoice_id) REFERENCES finance_purchase_invoice(id);

-- 一笔应付款可对应多个付款计划(一对多)
ALTER TABLE finance_payment_schedule
ADD CONSTRAINT fk_schedule_payable 
FOREIGN KEY (payable_id) REFERENCES finance_accounts_payable(id);

-- 一个付款计划可生成多个付款指令(一对多)
ALTER TABLE finance_payment_instruction
ADD CONSTRAINT fk_instruction_schedule 
FOREIGN KEY (schedule_id) REFERENCES finance_payment_schedule(id);

-- 一个付款批次包含多个付款指令(一对多)
ALTER TABLE finance_payment_instruction
ADD CONSTRAINT fk_instruction_batch 
FOREIGN KEY (batch_id) REFERENCES finance_payment_batch(id);

-- 承兑汇票主表与执行表的关联(一对多)
ALTER TABLE finance_bill_execution
ADD CONSTRAINT fk_execution_bill 
FOREIGN KEY (bill_id) REFERENCES finance_bill_of_exchange(id);

一、应付款管理

1. 应付款表 (finance_accounts_payable)

字段名称 数据类型 说明
id INT 主键,唯一标识
payable_no VARCHAR(50) 应付款编号(如:AP2024010001)
vendor_id INT 外键,关联供应商表 (pms_vendor)
order_id INT 外键,关联采购订单表 (pms_purchase_order)
invoice_id INT 外键,关联采购发票表 (finance_purchase_invoice)
payable_amount DECIMAL(15,2) 应付金额
paid_amount DECIMAL(15,2) 已付金额
remaining_amount DECIMAL(15,2) 未付金额(计算字段:payable_amount - paid_amount)
currency VARCHAR(10) 币种(默认:CNY)
exchange_rate DECIMAL(10,4) 汇率(相对本位币)
original_amount DECIMAL(15,2) 原币金额
due_date DATE 应付到期日
payment_terms VARCHAR(200) 付款条件
early_payment_discount DECIMAL(5,2) 提前付款折扣率(%)
discount_due_date DATE 折扣有效期截止日
overdue_days INT 逾期天数
overdue_interest_rate DECIMAL(5,2) 逾期利率(%)
overdue_interest DECIMAL(15,2) 逾期利息
payment_status ENUM('unpaid', 'partial', 'paid', 'overdue', 'disputed', 'cancelled') 付款状态
accounting_period VARCHAR(10) 会计期间(如:2024-01)
department_id INT 责任部门ID
cost_center VARCHAR(50) 成本中心
gl_account VARCHAR(50) 总账科目
sub_ledger VARCHAR(50) 子账科目
matching_status ENUM('unmatched', 'partial', 'matched') 发票匹配状态
matching_amount DECIMAL(15,2) 已匹配金额
is_checked BOOLEAN 是否已对账
checked_by INT 对账人ID
checked_at DATETIME 对账时间
approver_id INT 付款审批人ID
approved_at DATETIME 付款审批时间
is_withholding_tax BOOLEAN 是否代扣代缴税款
withholding_tax_rate DECIMAL(5,2) 代扣税率(%)
withholding_tax_amount DECIMAL(15,2) 代扣税额
is_prepayment BOOLEAN 是否预付款
prepayment_percentage DECIMAL(5,2) 预付比例(%)
is_settled BOOLEAN 是否已结清
settled_at DATETIME 结清时间
remark TEXT 备注
created_at DATETIME 创建时间
updated_at DATETIME 更新时间
deleted_at DATETIME 软删除时间

2. 应付暂估表 (finance_accrued_payable)

应付暂估是指货物已收到但发票尚未收到时,根据合理的估计金额计入应付账款。这是权责发生制会计原则的要求,确保费用与收入在正确的会计期间匹配。

复制代码
采购申请 → 询价报价 → 比价决策 → 生成订单 → 收货入库 → **应付暂估** → 发票验证 → **暂估冲销** → 应付款生成 → 付款计划 → 付款审批 → 付款执行 → 账务处理 → 对账核销
字段名称 数据类型 说明
id INT 主键,唯一标识
accrued_no VARCHAR(50) 暂估单号
order_id INT 关联采购订单ID
vendor_id INT 供应商ID
accrued_amount DECIMAL(15,2) 暂估金额
accrued_date DATE 暂估日期
reversal_date DATE 冲销日期
reversal_amount DECIMAL(15,2) 冲销金额
status ENUM('active', 'reversed', 'adjusted') 状态
accounting_period VARCHAR(10) 会计期间
created_at DATETIME 创建时间

3. 应付暂估调整表(finance_accrued_adjustment)

字段名称 数据类型 说明
id INT 主键,唯一标识
adjustment_no VARCHAR(50) 调整单号,格式:AA2024010001
accrued_id INT 关联应付暂估ID
payable_id INT 关联正式应付款ID(调整后生成)
invoice_id INT 关联发票ID(如果因发票调整)
order_id INT 关联采购订单ID
vendor_id INT 供应商ID
adjustment_type ENUM('price_difference', 'quantity_difference', 'exchange_rate', 'tax_rate', 'discount', 'freight', 'other', 'write_off') 调整类型
adjustment_reason ENUM('invoice_mismatch', 'price_change', 'quantity_variance', 'exchange_fluctuation', 'tax_correction', 'discount_applied', 'freight_adjustment', 'quality_issue', 'settlement_discount', 'early_payment', 'other') 调整原因
original_accrued_amount DECIMAL(15,2) 原始暂估金额
adjustment_amount DECIMAL(15,2) 调整金额(正数为增加,负数为减少)
adjusted_amount DECIMAL(15,2) 调整后金额
details JSON 调整明细
tax_adjustment DECIMAL(15,2) 税额调整
tax_rate_adjusted DECIMAL(5,2) 调整后税率
reference_document VARCHAR(200) 参考单据
reference_document_date DATE 参考单据日期
quality_issue_level ENUM('minor', 'major', 'critical') 质量问题等级
deduction_penalty DECIMAL(15,2) 扣款/罚款金额
adjustment_status ENUM('draft', 'submitted', 'approved', 'rejected', 'processed', 'cancelled') 调整状态
submitted_by INT 提交人
submitted_at DATETIME 提交时间
approver_id INT 审批人
approved_at DATETIME 审批时间
rejection_reason VARCHAR(500) 拒绝原因
gl_entry_id INT 关联会计分录ID
accounting_period VARCHAR(10) 会计期间(YYYY-MM)
is_reversal BOOLEAN 是否为冲销调整
reversal_adjustment_id INT 冲销的调整单ID
attachment_urls JSON 附件路径列表
remarks TEXT 备注
created_by INT 创建人
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

4. 应付对账表 (finance_payable_reconciliation)

字段名称 数据类型 说明
id INT 主键,唯一标识
reconciliation_no VARCHAR(50) 对账单号
vendor_id INT 供应商ID
reconciliation_date DATE 对账日期
period_start DATE 期间开始日期
period_end DATE 期间结束日期
opening_balance DECIMAL(15,2) 期初余额
current_purchases DECIMAL(15,2) 本期采购
current_payments DECIMAL(15,2) 本期付款
current_adjustments DECIMAL(15,2) 本期调整
closing_balance DECIMAL(15,2) 期末余额
vendor_confirmed BOOLEAN 供应商是否确认
vendor_confirmed_at DATETIME 供应商确认时间
discrepancy_amount DECIMAL(15,2) 差异金额
discrepancy_reason TEXT 差异原因
status ENUM('draft', 'confirmed', 'disputed', 'resolved') 状态
reconciled_by INT 对账人ID
remark TEXT 备注

二、付款计划管理

付款计划的生成主要基于以下场景:

触发时机 生成规则 示例
发票验证通过 根据发票付款条件生成 发票金额10万,付款条件"货到30天"
预付款申请 根据采购合同预付款条款 合同约定预付30%
收货暂估应付 已收货未收到发票时的暂估 暂估金额,收到发票后冲销
分期付款约定 根据合同分期付款计划 分三期付款:30%-40%-30%

1. 付款条件模板表 (finance_payment_term_template)

字段名称 数据类型 说明 示例值
id INT 主键 1
template_code VARCHAR(50) 模板代码 NET_30
template_name VARCHAR(100) 模板名称 货到30天付款
term_type ENUM('simple', 'discount', 'installment', 'mixed', 'custom') 条件类型 discount
payment_rules JSON 付款规则定义 {"base_days": 30, "discount_days": 10, "discount_rate": 2}
description VARCHAR(500) 描述 10天内付款享受2%折扣,否则30天内全额付款
is_default BOOLEAN 是否为默认模板 true
status ENUM('active', 'inactive') 状态 active

payment_rules JSON结构示例:

json 复制代码
// 简单付款条件
{"base_days": 30, "payment_methods": ["bank_transfer"]}

// 现金折扣条件
{
  "base_days": 30,
  "discount_days": 10,
  "discount_rate": 2,
  "discount_description": "2/10, Net 30"
}

// 分期付款条件
{
  "stages": [
    {"stage_name": "预付款", "percentage": 30, "trigger": "contract_signed", "days_after_trigger": 7},
    {"stage_name": "发货款", "percentage": 40, "trigger": "shipment_confirmed", "days_after_trigger": 0},
    {"stage_name": "验收款", "percentage": 30, "trigger": "acceptance_confirmed", "days_after_trigger": 30}
  ]
}

// 混合条件
{
  "advance_percentage": 20,
  "retention_percentage": 10,
  "retention_period": 365,
  "main_payment_days": 45
}

2. 供应商付款条件表 (finance_vendor_payment_terms)

字段名称 数据类型 说明
id INT 主键
vendor_id INT 供应商ID
payment_term_template_id INT 付款条件模板ID
effective_date DATE 生效日期
expiry_date DATE 失效日期
credit_limit DECIMAL(15,2) 信用额度
credit_days INT 信用期(天)
max_payment_amount DECIMAL(15,2) 单笔付款上限
payment_methods JSON 支持的付款方式
special_terms JSON 特殊条款
status ENUM('active', 'inactive') 状态

3. 合同付款条款表 (finance_contract_payment_terms)

字段名称 数据类型 说明
id INT 主键
contract_id INT 合同ID
vendor_id INT 供应商ID
payment_schedule JSON 付款计划定义
advance_payment JSON 预付款条款
retention_clause JSON 质保金/保留金条款
penalty_clause JSON 罚则条款
currency VARCHAR(10) 币种
exchange_rate_clause VARCHAR(500) 汇率条款
bank_account_info JSON 银行账户信息

4. 付款计划主表 (finance_payment_schedule)

字段名称 数据类型 说明
id INT 主键
schedule_no VARCHAR(50) 付款计划编号
payable_id INT 应付款ID
payment_term_type ENUM('invoice', 'contract', 'advance', 'retention') 付款计划类型
planned_amount DECIMAL(15,2) 计划金额
currency VARCHAR(10) 币种
exchange_rate DECIMAL(10,4) 汇率
local_amount DECIMAL(15,2) 本位币金额
base_date DATE 计算基准日(发票日/合同签订日等)
planned_payment_date DATE 计划付款日期
actual_payment_date DATE 实际付款日期
payment_trigger ENUM('date_based', 'event_based', 'manual') 付款触发方式
trigger_event VARCHAR(100) 触发事件
trigger_event_date DATE 触发事件发生日期
status ENUM('planned', 'pending', 'approved', 'paid', 'cancelled', 'merged', 'split') 状态
priority INT 付款优先级
cash_discount_eligible BOOLEAN 是否享受现金折扣
cash_discount_rate DECIMAL(5,2) 现金折扣率
cash_discount_amount DECIMAL(15,2) 现金折扣金额
cash_discount_deadline DATE 现金折扣截止日
overdue_interest_rate DECIMAL(5,2) 逾期利率
notes TEXT 备注
created_by INT 创建人
created_at DATETIME 创建时间

5. 付款计划明细表 (finance_payment_schedule_detail)

字段名称 数据类型 说明
id INT 主键
schedule_id INT 付款计划ID
item_type ENUM('invoice', 'po', 'contract', 'other') 关联项类型
item_id INT 关联项ID
allocated_amount DECIMAL(15,2) 分配金额
percentage DECIMAL(5,2) 分配百分比
description VARCHAR(200) 描述

6. 付款计划调整表 (finance_payment_schedule_adjustment)

字段名称 数据类型 说明
id INT 主键
schedule_id INT 付款计划ID
adjustment_type ENUM('date_change', 'amount_change', 'split', 'merge', 'cancel') 调整类型
old_value JSON 调整前值
new_value JSON 调整后值
reason VARCHAR(500) 调整原因
adjusted_by INT 调整人
adjusted_at DATETIME 调整时间

7. 付款计划规则表 (finance_payment_rule_engine)

字段名称 数据类型 说明
id INT 主键
rule_code VARCHAR(50) 规则代码
rule_name VARCHAR(100) 规则名称
rule_condition JSON 规则条件
rule_action JSON 规则动作
priority INT 优先级
description VARCHAR(500) 描述
is_active BOOLEAN 是否激活

付款计划自动生成流程

复制代码
1. 事件触发
   ├── 发票验证通过
   ├── 合同签订完成
   ├── 预付款申请批准
   ├── 收货单确认
   └── 手工触发

2. 确定付款条件
   ├── 检查合同是否有特殊条款
   ├── 检查供应商默认付款条件
   ├── 检查发票上的付款条件
   └── 使用系统默认条件

3. 计算付款计划
   ├── 确定付款金额
   ├── 计算付款日期
   ├── 计算现金折扣
   └── 确定付款方式

4. 验证和调整
   ├── 预算检查
   ├── 现金流预测
   ├── 信用额度检查
   └── 人工复核调整

5. 生成付款计划
   ├── 保存付款计划记录
   ├── 触发审批流程
   └── 发送通知

三、付款执行管理

1. 付款指令表 (finance_payment_instruction)

字段名称 数据类型 说明
id INT 主键
instruction_no VARCHAR(50) 付款指令编号
batch_id INT 付款批次ID
schedule_id INT 关联付款计划ID
application_id INT 付款申请ID
instruction_type ENUM('single', 'batch', 'urgent', 'scheduled') 指令类型
payment_method ENUM('bank_transfer', 'check', 'bank_draft', 'commercial_bill', 'cash', 'credit_card') 付款方式
payment_amount DECIMAL(15,2) 付款金额
currency VARCHAR(10) 币种
exchange_rate DECIMAL(10,4) 汇率
local_amount DECIMAL(15,2) 本位币金额
payer_bank_id INT 付款银行ID
payer_account_no VARCHAR(100) 付款账号
payee_bank_id INT 收款银行ID
payee_account_no VARCHAR(100) 收款账号
payee_name VARCHAR(200) 收款人名称
purpose VARCHAR(500) 付款用途
execution_date DATE 计划执行日期
actual_execution_date DATE 实际执行日期
status ENUM('draft', 'authorized', 'generated', 'transmitted', 'executed', 'confirmed', 'failed', 'cancelled') 指令状态
authorized_by INT 授权人
authorized_at DATETIME 授权时间
generated_by INT 指令生成人
generated_at DATETIME 生成时间
transmitted_by INT 传输人(银行接口操作)
transmitted_at DATETIME 传输时间
executed_by INT 执行人
executed_at DATETIME 执行时间
confirmed_by INT 确认人
confirmed_at DATETIME 确认时间
cancelled_by INT 取消人
cancelled_at DATETIME 取消时间
cancellation_reason VARCHAR(500) 取消原因
security_level ENUM('normal', 'high', 'critical') 安全等级
is_manual BOOLEAN 是否手工操作
manual_reason VARCHAR(500) 手工操作原因
reference_no VARCHAR(100) 业务参考号
remarks TEXT 备注
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

2. 付款批次表 (finance_payment_batch)

字段名称 数据类型 说明
id INT 主键
batch_no VARCHAR(50) 付款批次号
batch_date DATE 批次日期
batch_type ENUM('daily', 'weekly', 'monthly', 'special') 批次类型
total_amount DECIMAL(15,2) 批次总金额
total_instructions INT 总指令数
currency VARCHAR(10) 主要币种
preparer_id INT 批次准备人
approver_id INT 批次审批人
approval_status ENUM('pending', 'approved', 'rejected') 审批状态
approval_date DATETIME 审批时间
execution_status ENUM('pending', 'processing', 'partial', 'completed', 'failed') 执行状态
execution_date DATE 执行日期
bank_file_generated BOOLEAN 是否已生成银行文件
bank_file_name VARCHAR(200) 银行文件名
bank_file_path VARCHAR(500) 银行文件路径
bank_upload_status ENUM('not_uploaded', 'uploading', 'uploaded', 'failed') 银行上传状态
bank_upload_time DATETIME 银行上传时间
bank_response_status ENUM('pending', 'accepted', 'rejected', 'partial') 银行响应状态
bank_response_time DATETIME 银行响应时间
reconciliation_status ENUM('not_started', 'in_progress', 'completed', 'exceptions') 对账状态
remarks TEXT 备注

3. 银行接口日志表 (finance_bank_interface_log)

字段名称 数据类型 说明
id INT 主键
instruction_id INT 付款指令ID
batch_id INT 付款批次ID
interface_type ENUM('upload', 'query', 'callback') 接口类型
bank_code VARCHAR(50) 银行编码
request_data JSON 请求数据
response_data JSON 响应数据
request_time DATETIME 请求时间
response_time DATETIME 响应时间
status ENUM('success', 'failure', 'timeout') 接口状态
error_code VARCHAR(50) 错误代码
error_message TEXT 错误信息
retry_count INT 重试次数
last_retry_time DATETIME 最后重试时间

4. 银行交易明细表 (finance_bank_transaction)

字段名称 数据类型 说明
id INT 主键
instruction_id INT 付款指令ID
batch_id INT 付款批次ID
transaction_no VARCHAR(100) 银行交易流水号
bank_code VARCHAR(50) 银行编码
channel ENUM('online_banking', 'api', 'file', 'manual') 交易渠道
transaction_date DATETIME 交易时间
transaction_type ENUM('payment', 'collection', 'transfer', 'fee') 交易类型
amount DECIMAL(15,2) 交易金额
currency VARCHAR(10) 币种
payer_account VARCHAR(100) 付款方账号
payer_name VARCHAR(200) 付款方名称
payee_account VARCHAR(100) 收款方账号
payee_name VARCHAR(200) 收款方名称
status ENUM('pending', 'processing', 'success', 'failed', 'reversed') 交易状态
failure_reason VARCHAR(500) 失败原因
reversal_reason VARCHAR(500) 冲销原因
reversed_by INT 冲销人
reversed_at DATETIME 冲销时间
fee_amount DECIMAL(15,2) 手续费金额
balance_after DECIMAL(15,2) 交易后余额
attachment_url VARCHAR(500) 附件URL(银行回单)
remarks TEXT 备注

5. 支票管理表 (finance_check_management)

字段名称 数据类型 说明
id INT 主键
check_no VARCHAR(50) 支票号码
instruction_id INT 付款指令ID
check_type ENUM('cashier', 'bank', 'traveler') 支票类型
bank_account_id INT 银行账户ID
check_amount DECIMAL(15,2) 支票金额
payee_name VARCHAR(200) 收款人名称
issue_date DATE 签发日期
effective_date DATE 生效日期
expiry_date DATE 有效期至
status ENUM('blank', 'issued', 'cashed', 'cancelled', 'lost', 'expired') 支票状态
issued_by INT 签发人
issued_at DATETIME 签发时间
cashed_by VARCHAR(200) 兑现人
cashed_at DATETIME 兑现时间
cancelled_by INT 作废人
cancelled_at DATETIME 作废时间
cancellation_reason VARCHAR(500) 作废原因
lost_reported_by INT 挂失人
lost_reported_at DATETIME 挂失时间
remarks TEXT 备注

6. 承兑汇票主表(finance bill_of_exchange)

7. 承兑汇票执行表 (finance_bill_execution)

字段名称 数据类型 说明
id INT 主键
bill_no VARCHAR(50) 汇票编号
instruction_id INT 付款指令ID
bill_type ENUM('bank_acceptance', 'commercial_acceptance') 汇票类型
face_amount DECIMAL(15,2) 票面金额
issue_date DATE 出票日期
drawer_name VARCHAR(200) 出票人名称
drawer_account VARCHAR(100) 出票人账号
payee_name VARCHAR(200) 收款人名称
payee_account VARCHAR(100) 收款人账号
acceptor_name VARCHAR(200) 承兑人名称
acceptor_account VARCHAR(100) 承兑人账号
acceptance_date DATE 承兑日期
due_date DATE 到期日期
issuance_status ENUM('draft', 'issued', 'delivered', 'accepted', 'cancelled') 签发状态
delivered_to VARCHAR(200) 交付对象
delivered_by INT 交付人
delivered_at DATETIME 交付时间
delivery_method ENUM('handover', 'mail', 'courier') 交付方式
tracking_no VARCHAR(100) 快递单号
accepted_by VARCHAR(200) 接受人
accepted_at DATETIME 接受时间
cancelled_by INT 作废人
cancelled_at DATETIME 作废时间
cancellation_reason VARCHAR(500) 作废原因
attachment_url VARCHAR(500) 附件URL(汇票扫描件)
remarks TEXT 备注

8. 付款异常处理表 (finance_payment_exception)

字段名称 数据类型 说明
id INT 主键
exception_no VARCHAR(50) 异常编号
instruction_id INT 付款指令ID
exception_type ENUM('bank_rejection', 'account_error', 'amount_mismatch', 'payee_error', 'duplicate_payment', 'fraud_suspected', 'system_error') 异常类型
severity ENUM('low', 'medium', 'high', 'critical') 严重程度
description TEXT 异常描述
detected_by INT 发现人
detected_at DATETIME 发现时间
assigned_to INT 分配给
priority ENUM('low', 'medium', 'high', 'urgent') 优先级
resolution_status ENUM('new', 'investigating', 'pending_correction', 'resolved', 'escalated', 'closed') 处理状态
resolution_action ENUM('retry', 'cancel', 'modify', 'reverse', 'investigate') 处理措施
resolution_details TEXT 处理详情
resolved_by INT 处理人
resolved_at DATETIME 处理时间
downtime_minutes INT 影响时长(分钟)
financial_impact DECIMAL(15,2) 财务影响金额
root_cause TEXT 根本原因
preventive_action TEXT 预防措施
follow_up_required BOOLEAN 是否需要跟进
follow_up_date DATE 跟进日期

9. 银行对账表 (finance_bank_reconciliation)

字段名称 数据类型 说明
id INT 主键
reconciliation_no VARCHAR(50) 对账编号
reconciliation_date DATE 对账日期
period_start DATE 期间开始
period_end DATE 期间结束
reconciliation_type ENUM('daily', 'weekly', 'monthly', 'ad_hoc') 对账类型
bank_account_id INT 银行账户ID
opening_balance DECIMAL(15,2) 期初余额
closing_balance_system DECIMAL(15,2) 系统期末余额
closing_balance_bank DECIMAL(15,2) 银行期末余额
total_debits_system DECIMAL(15,2) 系统借方总额
total_credits_system DECIMAL(15,2) 系统贷方总额
total_debits_bank DECIMAL(15,2) 银行借方总额
total_credits_bank DECIMAL(15,2) 银行贷方总额
difference_amount DECIMAL(15,2) 差异金额
reconciliation_status ENUM('pending', 'in_progress', 'matched', 'unmatched', 'adjusted') 对账状态
matched_items INT 已匹配项目数
unmatched_items INT 未匹配项目数
adjusted_items INT 已调整项目数
reconciled_by INT 对账人
reconciled_at DATETIME 对账时间
reviewed_by INT 复核人
reviewed_at DATETIME 复核时间
remarks TEXT 备注

10. 付款执行审计表 (finance_payment_audit)

字段名称 数据类型 说明
id INT 主键
audit_no VARCHAR(50) 审计编号
audit_date DATE 审计日期
audit_period VARCHAR(20) 审计期间
audit_type ENUM('regular', 'special', 'post_payment', 'compliance') 审计类型
auditor_id INT 审计人
instruction_id INT 付款指令ID
audit_focus ENUM('authorization', 'amount', 'payee', 'supporting_docs', 'timing', 'duplicate') 审计重点
findings TEXT 审计发现
risk_level ENUM('low', 'medium', 'high', 'critical') 风险等级
recommendations TEXT 审计建议
management_response TEXT 管理层回应
action_plan TEXT 行动计划
due_date DATE 整改截止日期
follow_up_status ENUM('open', 'in_progress', 'completed', 'overdue') 跟进状态
closure_date DATE 关闭日期
remarks TEXT 备注

数据流转:从付款计划到付款执行

复制代码
付款计划(finance_payment_schedule)
    ↓(根据付款计划创建付款申请)
付款申请(finance_payment_application)
    ↓(多级审批流程)
付款审批
    ↓(审批通过后生成付款指令)
付款指令(finance_payment_instruction)
    ↓(组织为批次执行)
付款批次(finance_payment_batch)
    ↓(根据付款方式执行)
    ├── 银行转账 → 银行交易明细(finance_bank_transaction)
    ├── 支票支付 → 支票管理(finance_check_management)
    ├── 承兑汇票 → 承兑汇票执行(finance_bill_execution)
    └── 其他支付方式
    ↓(执行完成生成记录)
付款执行记录(finance_payment_record)
    ↓(银行流水核对)
银行对账(finance_bank_reconciliation)
    ↓(财务凭证处理)
财务入账(finance_gl_entry)
    ↓(供应商定期核对)
应付对账(finance_payable_reconciliation)

四、账务处理

1. 会计分录表 (finance_gl_entry)

字段名称 数据类型 说明
id INT 主键,唯一标识
entry_id INT 关联分录ID
line_no INT 行号
account_code VARCHAR(50) 科目代码
account_name VARCHAR(100) 科目名称
account_type ENUM('asset', 'liability', 'equity', 'revenue', 'expense', 'cost') 科目类型
debit_credit ENUM('debit', 'credit') 借贷方向
amount DECIMAL(15,2) 金额
currency VARCHAR(10) 币种
exchange_rate DECIMAL(10,4) 汇率
local_amount DECIMAL(15,2) 本位币金额(计算字段:amount * exchange_rate)
auxiliary_accounts JSON 辅助核算信息
cost_center VARCHAR(50) 成本中心
department_code VARCHAR(50) 部门代码
project_code VARCHAR(50) 项目代码
vendor_id INT 供应商ID
customer_id INT 客户ID
employee_id INT 员工ID
business_item VARCHAR(200) 业务事项
quantity DECIMAL(15,4) 数量
unit_price DECIMAL(15,4) 单价
tax_rate DECIMAL(5,2) 税率
tax_amount DECIMAL(15,2) 税额
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

2. 科目映射表 (finance_account_mapping)

字段名称 数据类型 说明
id INT 主键,唯一标识
mapping_code VARCHAR(50) 映射代码
mapping_name VARCHAR(100) 映射名称
business_type ENUM('purchase_invoice', 'purchase_payment', 'purchase_prepay', 'purchase_return', 'purchase_discount', 'purchase_freight', 'accrual', 'reversal', 'expense', 'asset_purchase', 'service_purchase', 'inventory', 'other') 业务类型
vendor_category_id INT 供应商类别ID
vendor_id INT 特定供应商ID
item_category_id INT 物料类别ID
item_id INT 特定物料ID
department_id INT 部门ID
amount_condition_type ENUM('none', 'range', 'greater_than', 'less_than') 金额条件类型
min_amount DECIMAL(15,2) 最小金额
max_amount DECIMAL(15,2) 最大金额
primary_accounts JSON 主科目映射
tax_accounts JSON 税金科目映射
auxiliary_accounts JSON 辅助科目映射
priority INT 优先级(数字越大优先级越高)
effective_date DATE 生效日期
expiry_date DATE 失效日期
is_active BOOLEAN 是否启用
auto_generate_entry BOOLEAN 是否自动生成分录
require_approval BOOLEAN 是否需要审批
approval_workflow_id INT 审批流程ID
validation_rules JSON 验证规则配置
created_by INT 创建人
created_at DATETIME 创建时间
updated_by INT 更新人
updated_at DATETIME 更新时间

五、辅助与配置

1. 供应商账龄分析表 (finance_vendor_aging_analysis)

字段名称 数据类型 说明
id INT 主键,唯一标识
vendor_id INT 供应商ID
analysis_date DATE 分析日期
total_payable DECIMAL(15,2) 应付总额
current_0_30 DECIMAL(15,2) 0-30天账龄金额
overdue_31_60 DECIMAL(15,2) 31-60天账龄金额
overdue_61_90 DECIMAL(15,2) 61-90天账龄金额
overdue_91_180 DECIMAL(15,2) 91-180天账龄金额
overdue_181_365 DECIMAL(15,2) 181-365天账龄金额
overdue_365_plus DECIMAL(15,2) 365天以上账龄金额
credit_limit DECIMAL(15,2) 信用额度
available_credit DECIMAL(15,2) 可用信用额度
average_payment_days INT 平均付款天数
payment_score DECIMAL(5,2) 付款评分
risk_level ENUM('low', 'medium', 'high', 'critical') 风险等级

六、数据流转

  1. 发票与应付款阶段

    复制代码
    供应商开具发票 → 财务验证发票录入finance_purchase_invoice
        ↓(验证通过)
    系统自动生成finance_accounts_payable应付款记录
        ↓(根据付款条件)
    系统生成finance_payment_schedule付款计划(付款建议)
        ↓(付款计划到期前触发)
    财务人员创建finance_payment_application付款申请
  2. 付款审批阶段

    复制代码
    付款申请提交 → 进入多级审批流程finance_payment_approval
        ↓(不同金额对应不同审批层级)
        ├── 小额:部门经理审批
        ├── 中额:部门经理+财务经理审批
        └── 大额:部门经理+财务经理+高管审批
        ↓(审批通过)
    审批状态更新,申请状态变为"approved"
        ↓(准备付款指令)
    根据审批结果生成finance_payment_instruction付款指令
  3. 付款执行阶段

    复制代码
    付款指令生成 → 组织为付款批次finance_payment_batch
        ↓(根据付款方式执行)
        ├── 银行转账 → 银行交易明细finance_bank_transaction + 银行接口日志finance_bank_interface_log
        ├── 支票支付 → 支票管理finance_check_management
        ├── 承兑汇票 → 承兑汇票执行finance_bill_execution
        └── 其他支付方式
        ↓(执行完成)
    生成finance_payment_record付款记录
        ↓(更新应付款状态)
    更新finance_accounts_payable的已付金额和状态
  4. 账务处理阶段

    复制代码
    付款执行完成 → 系统自动生成会计分录finance_gl_entry
        ↓(根据科目映射)
    按finance_account_mapping规则生成借贷分录
        ↓(凭证处理)
    会计凭证审核、过账
        ↓(银行对账)
    定期进行finance_bank_reconciliation银行对账
  5. 对账与核销阶段

    复制代码
    月末/季度末 → 生成finance_payable_reconciliation应付对账单
        ↓(发送供应商)
    与供应商确认对账结果 → 差异处理
        ↓(系统自动分析)
    系统生成finance_vendor_aging_analysis账龄分析 ← **表名明确**
        ↓(信用评估)
    基于账龄分析更新供应商信用评级
        ↓(长期差异处理)
    超期差异转入异常处理或坏账准备

备注

一、应付对账

1. 工作流程

步骤1:数据准备阶段
sql 复制代码
-- 1.1 从系统提取我方应付数据
SELECT 
    '我方数据' AS source,
    ap.payable_no,
    ap.due_date,
    CASE 
        WHEN ap.payment_status = 'paid' THEN '已付款'
        WHEN ap.payment_status = 'partial' THEN '部分付款'
        WHEN ap.payment_status = 'unpaid' THEN '未付款'
        ELSE ap.payment_status
    END AS status,
    ap.payable_amount AS original_amount,
    ap.paid_amount AS paid_amount,
    ap.remaining_amount AS balance,
    pi.invoice_no,
    pi.invoice_date,
    po.order_no,
    po.created_at AS order_date
FROM finance_accounts_payable ap --应付款
LEFT JOIN finance_purchase_invoice pi ON ap.invoice_id = pi.id --采购发票表
LEFT JOIN pms_purchase_order po ON ap.order_id = po.id --采购订单表
WHERE ap.vendor_id = 1001  -- ABC供应商
  AND (ap.payment_status != 'paid' OR 
       pi.invoice_date >= '2024-03-01')
ORDER BY ap.due_date;

-- 结果示例:
┌──────────┬─────────────┬────────────┬────────────┬──────────────┬─────────────┬──────────┐
│ payable_no  │ due_date   │ status     │ original   │ paid         │ balance     │ invoice  │
├──────────┼─────────────┼────────────┼────────────┼─────────────┼─────────────┼──────────┤
│ AP202401001 │ 2024-02-28 │ 未付款     │ 50,000.00  │ 0.00         │ 50,000.00   │ INV001   │
│ AP202402001 │ 2024-03-15 │ 部分付款   │ 30,000.00  │ 15,000.00    │ 15,000.00   │ INV002   │
│ AP202403001 │ 2024-04-10 │ 未付款     │ 25,000.00  │ 0.00         │ 25,000.00   │ INV003   │
└──────────┴─────────────┴────────────┴────────────┴─────────────┴─────────────┴──────────┘
合计:应付总额 105,000.00,已付 15,000.00,未付 90,000.00
步骤2:接收供应商对账单
复制代码
供应商ABC提供的对账单(Excel/PDF/纸质):
┌──────────────┬──────────────┬──────────────┬──────────────┐
│ 发票号       │ 发票日期     │ 发票金额     │ 备注         │
├──────────────┼──────────────┼──────────────┼──────────────┤
│ INV001       │ 2024-01-15   │ 50,000.00    │ 逾期         │
│ INV002       │ 2024-02-10   │ 30,000.00    │ 已收15,000   │
│ INV003       │ 2024-03-05   │ 25,000.00    │              │
│ INV004       │ 2024-03-20   │ 8,000.00     │ 新发票       │
└──────────────┴──────────────┴──────────────┴──────────────┘
供应商汇总:应付总额 113,000.00,已收 15,000.00,未收 98,000.00

2. 应付对账要核对的具体内容

四层核对体系

复制代码
第一层:总额核对
   └── 总应付余额是否一致

第二层:分项核对  
   ├── 每张发票金额
   ├── 每笔付款金额
   └── 每个调整项

第三层:时间性核对
   ├── 发票日期
   ├── 付款日期
   └── 到期日期

第四层:关联性核对
   ├── 发票vs订单vs收货
   ├── 付款vs银行流水
   └── 调整vs业务依据

3. 对账发现的常见差异类型及处理

差异类型 常见原因 处理方法 责任人
我方漏记发票 发票丢失、未处理、系统漏录 补录发票,生成应付款 应付会计
供应商漏记付款 银行延迟、记账错误 提供付款凭证,要求更新 供应商
金额不一致 折扣、罚款、汇率差异 核对合同条款,调整金额 采购/财务
时间性差异 在途款项、未达账项 确认时间点,下期对平 双方会计
重复记录 系统bug、人工重复录入 标记重复,冲销错误记录 系统管理员
科目错误 发票开错科目、分类错误 退回重开或调整科目 供应商/财务
相关推荐
派大鑫wink2 小时前
【Day1】Java 入门:开发环境搭建(JDK 安装 + IDEA 配置 + HelloWorld 实战)
java·开发语言·intellij-idea
magic_kid_20102 小时前
IDEA 中 Maven 多模块项目的某个模块未显示或无法导入的解决方案
java·maven·intellij-idea
LSL666_2 小时前
1 验证码
java·服务器·前端·redis·验证码
wniuniu_2 小时前
ceph中的crush map
java·运维·ceph
SunnyDays10112 小时前
Java 实现 RTF 转 Word:完整技术指南
java·rtf转word
博风2 小时前
飞书知识库备份
java·飞书
晴天sir2 小时前
关于使用poi-tl读取本地图片,转为base64编码批量插入word的解决方法
java·exception·poi-tl
白宇横流学长2 小时前
基于SpringBoot实现的零食销售商城设计与实现【源码+文档】
java·spring boot·后端
qq_336313932 小时前
Java基础-Stream流
java·开发语言·windows