You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:20:39