人财事物信息化 - bank_reconciliation_tool.py
代码文件功能解读
该代码文件是 ERPNext 的银行对账工具模块,用于处理银行交易与会计凭证(如付款、日记账)的自动匹配和手动对账操作。以下是各函数的详细解析:
get_bank_transactions(bank_account, from_date=None, to_date=None)
- 功能: 获取指定银行账户在日期范围内的未分配银行交易。
- 参数: 银行账户、起始日期、截止日期。
- 返回值: 符合条件的银行交易列表。
- 关联: 直接查询
Bank Transaction
文档,用于对账前的数据准备。
get_account_balance(bank_account, till_date, company)
- 功能: 计算银行账户在指定日期的系统余额。
- 流程:
- 获取银行账户对应的会计账户。
- 调用会计模块的余额计算函数。
- 关联: 依赖会计模块的
get_balance_on
和报表函数。
update_bank_transaction(bank_transaction_name, ...)
- 功能: 更新银行交易的参考信息(如参考号、对方)。
- 作用: 修正交易数据以提高自动匹配准确率。
- 关联: 直接修改
Bank Transaction
文档。
create_journal_entry_bts(...)
- 功能: 根据银行交易创建日记账(Journal Entry)。
- 关键逻辑:
- 处理多币种转换。
- 自动生成借贷方科目条目。
- 关联: 生成
Journal Entry
文档,影响会计模块。
create_payment_entry_bts(...)
- 功能: 创建付款凭证(Payment Entry)。
- 逻辑: 根据交易类型(收款/付款)设置付款方向。
- 关联: 生成
Payment Entry
文档,涉及付款流程。
auto_reconcile_vouchers(...)
- 功能: 自动对账入口函数。
- 流程:
- 检查交易数量,决定后台任务或即时处理。
- 调用
start_auto_reconcile
执行实际对账。
- 关联: 协调自动对账流程,使用任务队列。
start_auto_reconcile(...)
- 功能: 执行自动对账逻辑。
- 流程:
- 遍历每笔交易,获取匹配凭证 (
get_linked_payments
)。 - 调用
reconcile_vouchers
进行对账。 - 汇总结果生成提示信息 (
get_auto_reconcile_message
)。
reconcile_vouchers(bank_transaction_name, vouchers)
- 功能: 核心对账函数。
- 作用:
- 将凭证与银行交易关联。
- 更新已分配金额和交易状态。
- 关键方法:
add_payment_entries
,allocate_payment_entries
。
get_linked_payments(...)
- 功能: 获取与银行交易匹配的会计凭证。
- 流程:
- 调用
check_matching
筛选潜在匹配。 - 通过
subtract_allocations
调整已分配金额。
- 关联: 涉及多种凭证类型(付款、日记账等)。
check_matching(...)
- 功能: 协调匹配查询。
- 逻辑:
- 构建通用过滤条件(金额、类型等)。
- 调用
get_queries
获取各凭证类型的查询。
- 输出: 匹配凭证的排序列表。
get_queries(...)
和get_matching_queries(...)
- 功能: 生成不同凭证类型的数据库查询。
- 凭证类型:
- Payment Entry (
get_pe_matching_query
) - Journal Entry (
get_je_matching_query
) - 销售/采购发票 (
get_si_matching_query
,get_pi_matching_query
) - 其他银行交易 (
get_bt_matching_query
)
函数关系图
mermaid
graph TD Aauto_reconcile_vouchers --> Bstart_auto_reconcile B --> Cget_linked_payments C --> Dcheck_matching D --> Eget_queries E --> Fget_matching_queries F --> G生成具体查询 C --> Hsubtract_allocations B --> Ireconcile_vouchers I --> J更新Bank Transaction状态 K手动对账操作 --> Lcreate_journal_entry_bts/create_payment_entry_bts L --> I
与其他模块的联系
会计模块:
- 依赖
Journal Entry
和Payment Entry
文档类型。 - 使用
get_balance_on
,get_account_currency
等会计工具函数。
- 依赖
货币模块:
- 通过
get_exchange_rate
处理多币种转换。
- 通过
任务队列:
- 使用
frappe.enqueue
处理大规模对账任务。
- 使用
权限系统:
- 所有函数均有
@frappe.whitelist
装饰器,遵循ERPNext权限控制。
- 所有函数均有
总结
该模块实现了银行对账的核心功能,通过自动匹配算法将银行交易与会计凭证关联,支持手动创建凭证,并与ERPNext的会计、货币、任务队列等模块深度集成。各函数分工明确,共同完成从数据准备、匹配查询到实际对账的全流程。