Odoo14 创建银行账户时自动填充银行日记账记录需求
解决方案
在Odoo中,你可以通过重写bank.account模型的create方法,实现创建银行账户记录时自动生成对应的银行日记账(journal.account)记录。以下是具体实现代码:
from odoo import models, fields, api class BankAccount(models.Model): _name = 'bank.account' _description = "Bank Account" bank_id = fields.Many2one('res.bank', string="Bank") company_id = fields.Many2one('res.company', string="Company", default=lambda self: self.env.user.company_id.id) # 新增关联字段,方便快速查看对应的银行日记账 journal_id = fields.Many2one('journal.account', string="Bank Journal", readonly=True) @api.model def create(self, vals): # 先创建银行账户主记录 bank_account = super(BankAccount, self).create(vals) # 基于新创建的银行账户生成对应的日记账 if bank_account.company_id: self.env['journal.account'].create({ 'name': f"{bank_account.bank_id.name or 'Unknown Bank'} - {bank_account.company_id.name}", 'code': f"BANK_{bank_account.id}", # 可根据业务需求调整编码规则 'company_id': bank_account.company_id.id, 'bank_account_id': bank_account.id, # 需与journal.account中关联银行账户的字段名一致 'type': 'bank', # 假设journal.account有type字段标记日记账类型 'currency_id': bank_account.company_id.currency_id.id, # 补充journal.account的其他必填字段 }) return bank_account
注意事项
- 请根据
journal.account模型的实际字段调整创建参数,比如关联银行账户的字段名若不是bank_account_id,需替换为对应名称 - 日记账的名称、编码规则可根据业务需求自定义,例如如果
bank.account有account_number字段,可以将编码改为f"{bank_account.account_number[:6]}" - 确保
journal.account的所有必填字段都在create方法中传入,否则会触发创建失败的报错
内容的提问来源于stack exchange,提问作者Denny
相关产品推荐
相关产品推荐

