Search code examples
invoiceodoo-15

Expected singleton: res.users() when create new invoice programmatically


I'm trying to create a new invoice in controller:

request.env['account.move'].sudo().create([
    {
        'move_type': 'out_invoice',
        'journal_id': 1,
        'invoice_date': '2020-01-10',
        'invoice_line_ids': [(0, 0, {'product_id': 21, 'price_unit': 1000.0})],
    }])

But i got this error

Expected singleton: res.users()


Solution

  • I've found the answer with the help of my leader, here it is:

    This issue is because we missing self.env.user, to do this, we must add .with_user(SUPERUSER_ID) after model call.

    Example:

    from odoo import SUPERUSER_ID
    
    request.env['account.move'].with_user(SUPERUSER_ID).sudo().create([
        {
            'move_type': 'out_invoice',
            'journal_id': 1,
            'invoice_date': '2020-01-10',
            'invoice_line_ids': [(0, 0, {'product_id': 21, 'price_unit': 1000.0})],
        }])