同模块同视图下,Journal Entry的partner_id字段为空而Vendor Bill已填充的原因?
Odoo落地成本场景下Journal Entry的partner_id字段填充问题解决办法
问题本质
Vendor Bill是account.move中类型为in_invoice的特殊单据,Odoo内置逻辑会自动关联供应商并填充partner标签页的所有字段;但普通Journal Entry(默认类型为entry)没有这套默认填充规则,哪怕用的是同模块同视图,表头partner_id也会是空的。你之前重写_create_account_move_line没用,是因为这个方法负责的是生成分录行数据,和表头的partner字段填充完全无关。
具体解决方案
方案1:视图层面设置动态默认值
如果只需要特定场景下的Journal Entry自动带partner,可以在视图的partner_id字段上绑定默认值方法:
<!-- 在account.move的视图中修改partner_id字段 --> <field name="partner_id" default="_default_partner_id"/>
然后在account.move模型中实现默认值逻辑:
from odoo import models class AccountMove(models.Model): _inherit = 'account.move' def _default_partner_id(self): # 示例:从落地成本单据上下文取供应商ID landed_cost_id = self.env.context.get('landed_cost_id') if landed_cost_id: landed_cost = self.env['stock.landed.cost'].browse(landed_cost_id) return landed_cost.vendor_id.id # 也可以根据日记账类型/日记账ID做判断 return False
方案2:重写account.move的create方法强制赋值
如果所有用于落地成本的Journal Entry都需要自动填充partner,直接重写create方法:
from odoo import models class AccountMove(models.Model): _inherit = 'account.move' def create(self, vals): # 判断是否是落地成本相关的日记账(可通过上下文标识或日记账ID判断) is_landed_cost_journal = self.env.context.get('is_landed_cost_journal') target_journal_id = self.env.ref('your_module.your_landed_cost_journal').id if is_landed_cost_journal or vals.get('journal_id') == target_journal_id: # 从上下文取预设的partner ID,或者直接关联落地成本的供应商 vals['partner_id'] = self.env.context.get('landed_cost_partner_id') or vals.get('partner_id') return super().create(vals)
方案3:修改落地成本生成日记账的逻辑
直接在落地成本生成Account Move的环节,给生成的日记账设置partner_id:
from odoo import models class StockLandedCost(models.Model): _inherit = 'stock.landed.cost' def _create_account_move(self): # 先调用原方法生成日记账 res = super()._create_account_move() # 给每个落地成本对应的日记账设置partner for cost in self: if cost.account_move_id: cost.account_move_id.write({'partner_id': cost.vendor_id.id}) return res
注意事项
- 区分表头partner_id和分录行partner_id:你的问题是表头标签页字段为空,所以不要去改分录行的生成逻辑;
- 上下文传递要准确:如果是从落地成本页面跳转生成日记账,记得把供应商ID或落地成本ID传入上下文,确保默认值方法能取到数据。
内容的提问来源于stack exchange,提问作者Snejn1y
相关产品推荐
相关产品推荐

