Odoo 14超越方法



我正在尝试创建一个Odoo模块,该模块覆盖"销售订单确认"按钮。我遵循了我找到的信息,并创建了以下代码,但它不起作用。

from odoo import models, fields, api
import logging
_logger = logging.getLogger(__name__) 
class saleoverride(models.Model):
_name = 'saleoverride.saleoverride'
_description = 'saleoverride'
_inherit = 'sale.order'
name = fields.Char()
# value = fields.Integer()
# value2 = fields.Float(compute="_value_pc", store=True)
description = fields.Text()
transaction_ids = fields.Many2many('payment.transaction', 'saleoverride_transaction_rel', 'saleoverride_id', 'transaction_id',
string='Transactions', copy=False, readonly=True)
tag_ids = fields.Many2many('crm.tag', 'saleoverride_tag_rel', 'saleoverride_id', 'tag_id', string='Tags')
@api.model
def action_confirm(self):
res = super(SaleOrder, self).action_confirm()
_logger.info("saleoverride_action_confirm")
_logger.info(self)
return res

我试图在日志文件中搜索该消息,但找不到任何内容。有人能帮我吗?

谢谢!

问题是您不是在扩展sale.order模型,而是在sale.order的基础上创建一个新模型(saleoverride.saleoverride(。

检查odoo文档:继承和扩展

from odoo import models, fields, api
import logging
_logger = logging.getLogger(__name__) 
class saleoverride(models.Model):
_description = 'saleoverride'
_inherit = 'sale.order'
name = fields.Char()
# value = fields.Integer()
# value2 = fields.Float(compute="_value_pc", store=True)
description = fields.Text()
transaction_ids = fields.Many2many('payment.transaction', 'saleoverride_transaction_rel', 'saleoverride_id', 'transaction_id',
string='Transactions', copy=False, readonly=True)
tag_ids = fields.Many2many('crm.tag', 'saleoverride_tag_rel', 'saleoverride_id', 'tag_id', string='Tags')
def action_confirm(self):
res = super(SaleOrder, self).action_confirm()
_logger.info("saleoverride_action_confirm")
_logger.info(self)
return res

从类中删除_name = 'saleoverride.saleoverride'会为sale.order添加新功能。

还要移除decorator,因为原始函数没有decorator。

当你想覆盖插件中的代码时,你所能做的就是继承它。因此,你不能在覆盖现有代码的同时定义名称。删除:_name='sleoverride.saleoverride'

最新更新