确认销售时如何将操作从报价转换为销售订单

时间:2018-07-20 06:17:13

标签: action odoo odoo-10

我正在“报价”屏幕中输入数据,我希望当我确认此报价的销售时,该屏幕应移至“销售订单”菜单。首先,我同时获得了动作(报价和销售订单)的动作ID。但是我面临的问题是如何在action_confirm方法中传递此action id?这种类型的问题有解决方案吗?

这是我的代码:

@api.multi
def action_confirm(self):
    if self.partner_id.pet_names:
        for record in self.partner_id.pet_names:
        if record == self.pet_names_info:
            if self.order_line:
                for s in self.order_line:
                    if s.product_id:
                        if self.ser1 or self.ind_ser1:
                            self.confirm_rental_service()  # Rental service
                            self.confirm_rental_service_history()  # Rental history maintain
                        break
                res = super(sale_order_pet, self).action_confirm()
                if res:
                    self.confirm_email_template()
                action = self.env.ref('sale.action_orders').read()[0]
                action['res_id'] = self.ids[0]
                action['name'] = 'Sales Order'
                return action
            else:
                raise ValidationError("Please Add Products in Order Lines")

预先感谢

1 个答案:

答案 0 :(得分:0)

sale.action_orders操作调用对我来说很好。 您是否尝试调试代码,或者只是尝试查看代码是否通过了到达action = self.env.ref('sale.action_orders').read()[0]语句所需的所有if / else语句?

当您尝试确认报价/订单时,Odoo会返回什么?

根据您的代码,我想res.partner的pet_names可能是一个one2many字段:sale.order的pet_names_info是属于同一pet_names类的记录吗? pet_names_info会建议类似文本字段的内容,而不是一个one2many字段。

此外,比较条件语句中的两个记录听起来有些怪异,恕我直言。

PS:顺便说一下-天真的问题-第一个“ if”语句是否被“ else”代码块关闭了?