人财事物信息化 - party.py
party.py核心功能模块
交易方账户管理
get_party_account()
:动态获取交易方应收/应付账户- 支持从客户组/供应商组继承账户配置
- 处理多币种账户校验,确保交易货币与账户货币一致
- 验证账户冻结状态和禁用状态(
validate_party_frozen_disabled
)
地址管理系统
set_address_details
处理交易方地址的智能匹配:- 自动获取默认账单地址和运输地址
- 支持地址级联查询(公司地址->客户组默认地址)
- 地址渲染和权限控制(
render_address
) - 区域性地址扩展支持(
get_regional_address_details
)
税务计算引擎
set_taxes
实现智能税务模板匹配:- 根据地址、客户类型、公司等维度自动匹配
- 支持运输地址和账单地址的税务分类
- 集成税务规则引擎(Tax Rule)动态计算
付款条件处理
get_payment_terms_template
付款条件模板系统:- 支持客户/供应商级、客户组级模板继承
- 动态计算到期日(
get_due_date
) - 支持多种计费基准(发票日期/月末计算等)
高级财务特性
- 预付款账户管理(
get_party_advance_account
) - 银行账户自动匹配(
get_party_bank_account
) - 交易方仪表盘数据聚合(
get_dashboard_info
) - 应收应付账龄分析(
get_partywise_advanced_payment_amount
)
- 预付款账户管理(
关键技术实现
- 缓存机制:大量使用
frappe.get_cached_value
优化性能 - 多币种支持:动态验证GLE条目与账户货币一致性
- 权限控制:严格的文档级权限验证(
validate_party_frozen_disabled
) - 异常处理:定义专用异常类如
PartyFrozen
、InvalidAccountCurrency
- 扩展性设计:通过
@erpnext.allow_regional
装饰器支持地域化扩展
重要业务规则
- 地址税务分类优先顺序:运输地址 > 账单地址
- 付款条件继承链:具体客户 > 客户组 > 公司默认
- 货币校验规则:交易货币必须与账户货币或公司本位币一致
- 预付款处理:支持分离管理应收/应付与预付款账户
典型使用场景
- 创建销售订单时自动带出客户默认价格清单
- 生成发票时智能匹配税务模板
- 付款处理时验证账户冻结状态
- 财务报表生成时聚合客户交易数据
- 跨国交易时处理多币种账户校验
该模块作为ERPNext财务系统的核心组件,实现了完整的交易方生命周期管理,深度集成了账户、税务、支付等关键财务要素。