【问题标题】:odoo 8 - Sales - add constraint on "Confirm Sales" buttonodoo 8 - 销售 - 在“确认销售”按钮上添加约束
【发布时间】:2019-06-27 20:52:55
【问题描述】:

我需要禁止用户确认销售订单(点击确认销售按钮时发生的操作:销售-> 销售订单-> 选择订单)。所以我重写了确认销售的操作,并添加了一个引发验证错误的条件,因此在出现无效条件的情况下不会调用超级(例如,带有没有名称的产品的订单行)。

但问题发生在 S.O. - 编辑模式,当点击确认时,在执行以下覆盖功能之前执行插入数据库(在 sale_order_line 中插入)。

# the inherited class
class sales_warning(models.Model):
    _inherit = "sale.order"

    @api.multi   
    def action_button_confirm(self):
        print "begin overwritten action_button_confirm()"
        if(ForbidCondition==True):
            raise ValidationError("You cannot confirm a S.O...")
        else:
            res = super(sales_warning, self).action_button_confirm()        
            return res

在调用覆盖函数之前显示写入操作的日志:

*crm werkzeug: .. "POST /web/dataset/call_kw/sale.order/write HTTP/1.1" 200

开始覆盖 action_button_confirm()*

问题:有没有办法添加一个约束,在任何其他操作(例如上面的 write)之前启动,或者添加一个预先调用的函数来检查每个订单行是否有有效项目名字?

【问题讨论】:

  • 您的工作流上下文中的条件是什么?隐藏按钮怎么样?
  • 我已经做到了,我在编辑模式下隐藏了按钮。在下面检查我的答案。并点击如果你觉得它有用:)

标签: python-2.7 odoo odoo-8


【解决方案1】:

由于错误(即在编辑模式下确认 SO 时调用写入函数)仅在编辑模式下发生,请注意在只读模式下和保存 SO 时不会调用写入(似乎 Odoo 认为没有任何更新在销售订单行只读模式下),所以我选择通过向按钮添加 oe_read_only css 类来隐藏编辑模式下的确认按钮:

<xpath expr="//button[@name='action_button_confirm']" position="attributes">           

      <attribute name="class">oe_read_only</attribute>             

 </xpath>

简介:

-SO(销售订单)处于只读模式:确认按钮可见并且一旦点击它就不会对数据库进行更新(更新销售订单行),只会调用 action_button_confirm 操作

-编辑模式下的SO:隐藏确认按钮以防止更新sale_order_line

【讨论】:

    【解决方案2】:

    在 Odoo 中,所有按钮操作都将在原生 write 方法之后调用。如果要添加约束,请使用“@api.constrains”在用户单击任何按钮时引发错误弹出窗口

    【讨论】:

    • 我尝试了@constraints,但它将在 SO 记录集上的所有操作中调用:确认销售并保存操作以及重复的 So。但我只需要处理确认销售操作,因为我不想禁止使用无效产品名称创建 SO。我尝试将参数从按钮发送到约束以处理这种特定情况,但它不起作用
    • 如果是这种情况,您可以在按钮上使用上下文,当单击按钮时,检查后端的上下文并进行验证。
    • 我已经尝试过上下文( ),它会在action_button_confirm()中收到,但是当使用@ api.constrains('order_line') 不会,你之前试过吗?
    • 哦,你是对的,上下文不会传递给约束。因此,如果您不想使用约束,则必须手动检查并回滚所有内容:)
    • contraints 是一个记录集装饰器,不会从 UI 获取参数,它可以访问记录集。检查我的答案,如果你觉得有用,请点击箭头:)
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多