人财事物信息化 - bank_reconciliation_tool.py

代码文件功能解读

该代码文件是 ERPNext 的银行对账工具模块,用于处理银行交易与会计凭证(如付款、日记账)的自动匹配和手动对账操作。以下是各函数的详细解析:


  1. get_bank_transactions(bank_account, from_date=None, to_date=None)
    • 功能: 获取指定银行账户在日期范围内的未分配银行交易。
    • 参数: 银行账户、起始日期、截止日期。
    • 返回值: 符合条件的银行交易列表。
    • 关联: 直接查询 Bank Transaction 文档,用于对账前的数据准备。

  1. get_account_balance(bank_account, till_date, company)
    • 功能: 计算银行账户在指定日期的系统余额。
    • 流程:
    1. 获取银行账户对应的会计账户。
    2. 调用会计模块的余额计算函数。
    • 关联: 依赖会计模块的 get_balance_on 和报表函数。

  1. update_bank_transaction(bank_transaction_name, ...)
    • 功能: 更新银行交易的参考信息(如参考号、对方)。
    • 作用: 修正交易数据以提高自动匹配准确率。
    • 关联: 直接修改 Bank Transaction 文档。

  1. create_journal_entry_bts(...)
    • 功能: 根据银行交易创建日记账(Journal Entry)。
    • 关键逻辑:
    • 处理多币种转换。
    • 自动生成借贷方科目条目。
    • 关联: 生成 Journal Entry 文档,影响会计模块。

  1. create_payment_entry_bts(...)
    • 功能: 创建付款凭证(Payment Entry)。
    • 逻辑: 根据交易类型(收款/付款)设置付款方向。
    • 关联: 生成 Payment Entry 文档,涉及付款流程。

  1. auto_reconcile_vouchers(...)
    • 功能: 自动对账入口函数。
    • 流程:
    1. 检查交易数量,决定后台任务或即时处理。
    2. 调用 start_auto_reconcile 执行实际对账。
    • 关联: 协调自动对账流程,使用任务队列。

  1. start_auto_reconcile(...)
    • 功能: 执行自动对账逻辑。
    • 流程:
    1. 遍历每笔交易,获取匹配凭证 (get_linked_payments)。
    2. 调用 reconcile_vouchers 进行对账。
    3. 汇总结果生成提示信息 (get_auto_reconcile_message)。

  1. reconcile_vouchers(bank_transaction_name, vouchers)
    • 功能: 核心对账函数。
    • 作用:
    • 将凭证与银行交易关联。
    • 更新已分配金额和交易状态。
    • 关键方法: add_payment_entries, allocate_payment_entries

  1. get_linked_payments(...)
    • 功能: 获取与银行交易匹配的会计凭证。
    • 流程:
    1. 调用 check_matching 筛选潜在匹配。
    2. 通过 subtract_allocations 调整已分配金额。
    • 关联: 涉及多种凭证类型(付款、日记账等)。

  1. check_matching(...)
    • 功能: 协调匹配查询。
    • 逻辑:
    1. 构建通用过滤条件(金额、类型等)。
    2. 调用 get_queries 获取各凭证类型的查询。
    • 输出: 匹配凭证的排序列表。

  1. 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

与其他模块的联系

  1. 会计模块:

    • 依赖 Journal EntryPayment Entry 文档类型。
    • 使用 get_balance_on, get_account_currency 等会计工具函数。
  2. 货币模块:

    • 通过 get_exchange_rate 处理多币种转换。
  3. 任务队列:

    • 使用 frappe.enqueue 处理大规模对账任务。
  4. 权限系统:

    • 所有函数均有 @frappe.whitelist 装饰器,遵循ERPNext权限控制。

总结

该模块实现了银行对账的核心功能,通过自动匹配算法将银行交易与会计凭证关联,支持手动创建凭证,并与ERPNext的会计、货币、任务队列等模块深度集成。各函数分工明确,共同完成从数据准备、匹配查询到实际对账的全流程。

Discard
Save
Review Changes ← Back to Content
Message Status Space Raised By Last update on