1

我编写了一个自定义网站来制作销售订单。该网站可供门户用户登录后使用。我有一个准备好创建销售订单的控制器,但它不能像我希望的那样工作。

这就是我创建新订单的方式:

    @http.route('/api/create_order', type='json', auth='user', website=True)
    def create_order(self, **kw):
        uid = http.request.env.context.get('uid')
        partner_id = http.request.env['res.users'].search([('id','=',uid)]).partner_id.id
        
        order_products = kw.get('order_products', [])
        order_line = []

        for product in order_products:
            order_line.append(
                (0, 0, {
                    'product_id': http.request.env['product.product'].search([('product_tmpl_id','=',product['product_id'])])[0].id,
                    'product_uom_qty': product['amount'],
                }))

        order_data = {
            'name': 'Test Sale Order',
            'partner_id': partner_id,
            'order_line': order_line,
        }

        result_insert_record = http.request.env['sale.order'].with_user(SUPERUSER_ID).create(order_data)
        return result_insert_record

如您所见,我正在使用with_user(SUPERUSER_ID).create(). 因为门户用户没有直接创建销售订单的权限。当我使用sudo().create()这个门户时,用户也被分配为销售人员(以及客户)到他自己的订单。

他也没有在他的网站帐户中看到它们 - 他应该。创建此类订单后,他还应该收到一封确认电子邮件。

当有人通过网站内的商店下订单时,没有分配销售人员,而是有一个与该销售订单链接的网站。

那么,如何创建此销售订单以使其与网站链接,用户在其门户中看到它并在创建后收到一封电子邮件?我需要传递一些特殊参数或使用不同的功能吗?

4

1 回答 1

0

事实证明,无需将销售订单与网站链接。

首先,您必须确保门户用户具有正确的访问权限。如果没有安装电子商务模块,默认情况下门户用户将无法访问例如产品。您需要编写自己的访问权限或安装website_sale模块。

此外,用户将无法看到处于该Draft状态的订单。发送或确认都可以让用户在他们的文档中看到它们。

最后,如果您愿意,可以通过设置website_id字段将订单链接到网站:

order_data = {
    ...
    'website_id': http.request.website.id,
}

result_insert_record = http.request.env['sale.order'].with_user(SUPERUSER_ID).create(order_data)

但这在这个问题的背景下并不重要。

于 2020-08-04T09:45:03.490 回答