Odoo 13 创建Vendor Bill时修改Journal Items生成规则咨询
Odoo 13 供应商账单关联入库单时自定义日记账分录解决方案
原代码逻辑说明
你找到的这段代码是选择入库单生成供应商账单时,自动生成日记账分录行的核心逻辑:遍历入库单下所有库存移动行,调用标准方法生成对应的分录行,赋值科目、关联库存移动后汇总到分录行集合。注释new_lines.new()行后不会生成默认分录,就是因为这段是构造默认分录行的核心语句。
自定义新增借贷分录的实现方法
如果你只需要在原有默认生成的分录基础上新增一组平衡的借贷科目,不需要修改原有库存相关分录,直接在现有循环结束后追加自定义分录行即可,示例代码如下:
# ----- 原有逻辑保留 ----- moves_lines = self.env['stock.move'].browse([rec.id for rec in picking_ids.move_ids_without_package]) new_lines = self.env['account.move.line'] for line in moves_lines: new_line = new_lines.new(line._prepare_picking_account_move_line(self)) new_line.account_id = new_line._get_computed_account() new_line.stock_move_id = line.id new_line._onchange_price_subtotal() new_lines += new_line # ----- 原有逻辑结束,下方追加自定义逻辑 ----- # 新增借方分录行,需替换为你业务实际使用的科目、金额、摘要 debit_custom_line = new_lines.new({ 'account_id': 123, # 替换为实际借方科目的数据库ID 'name': '采购附加费用', # 替换为实际摘要 'debit': 100.0, # 替换为实际借方金额 'credit': 0.0, 'move_id': self.id, 'partner_id': self.partner_id.id, # 其他必填字段按需补充,比如税项tax_ids、成本中心analytic_account_id等 }) new_lines += debit_custom_line # 新增对应贷方分录行,保证借贷总额平衡 credit_custom_line = new_lines.new({ 'account_id': 456, # 替换为实际贷方科目的数据库ID 'name': '采购附加费用对应贷方', # 替换为实际摘要 'debit': 0.0, 'credit': 100.0, # 和上方借方金额保持一致 'move_id': self.id, 'partner_id': self.partner_id.id, # 其他必填字段按需补充 }) new_lines += credit_custom_line
如果需要调整原有自动生成的分录行的科目、金额,直接在原有for循环内修改new_line的对应字段赋值即可;如果要完全替换原有默认生成的分录,直接注释原有for循环内容,自行构造所有需要的分录行加入new_lines集合即可。
注意事项
- 所有分录行的借方总金额必须等于贷方总金额,否则供应商账单无法正常保存、审核
- 修改完成后请先在测试环境验证:生成的分录结构、科目、金额是否符合业务需求,账单是否可以正常过账、生成凭证
- 若新增分录和特定库存移动关联,可以给自定义分录行的
stock_move_id字段赋值对应库存移动的ID
内容的提问来源于stack exchange,提问作者Peter Susanto
相关产品推荐
相关产品推荐

