【问题标题】:How to override unlink method for sale order in odoo10如何在odoo10中覆盖销售订单的取消链接方法
【发布时间】:2018-03-17 06:37:49
【问题描述】:

大家好,我尝试覆盖销售订单行的取消链接方法。已调用函数但未删除引发 UserError 验证。

Odoo 默认功能:

@api.multi
def unlink(self):
    if self.filtered(lambda x: x.state in ('sale', 'done')):
        raise UserError(_('You can not remove a sale order line.\nDiscard changes and try setting the quantity to 0.'))
    return super(SaleOrderLine, self).unlink()

自定义覆盖功能:

@api.multi
def unlink(self):
    if self.filtered(lambda x: x.state in ('sale', 'done')):
        pass
    return super(test, self).unlink()

提前致谢。

【问题讨论】:

    标签: odoo odoo-10 unlink raiserror


    【解决方案1】:

    当您继承模型并覆盖方法时。你打电话给超级 odoo 保持 chaning。

    在你的情况下意味着 odoo 调用 your method --> sale.order method --> models.Model method

    据我了解,您希望通过验证意味着您不希望 odoo 调用 unlink your unlink method ---> models.Model unlink

    不要使用 super 试试这个我认为它应该可以工作,如果不是我会展示其他解决方案

        return models.Model.unlink(self)
    

    【讨论】:

      【解决方案2】:

      正如 Cherif 所建议的,您可以绕过 super 继承工作流中的任何步骤。
      在您的情况下,如果您想直接调用 models.Model unlink 方法,请尝试以下方式:

      @api.multi
      def unlink(self):
          if self.filtered(lambda x: x.state in ('sale', 'done')):
              pass
          return super(models.Model, self).unlink()
      

      How can override write method without executing the super write?中已经讨论过类似的事情

      希望这能回答你的问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多