title: Programmatically add products to a cart – Odoo 13
body: <p>I have a custom module that creates a form. Based on the answers inside this form I’m generating order line. After user sends this form I’m creating sale order with all products from the generated order line.</p>
  <p>So from JavaScript I’m sending an JSON with products to buy:</p>
  <pre class="lang-js prettyprint-override"><code>order_data = [{product_id: 1, amount: 10, …},{product_id: 2, …}, …];
  note = '';
  this._rpc({
          route: '/api/create_order',
          params: { order_products: order_data, note: note }
      }).then((data) =&gt; {
          window.location = '/contactus-thank-you';
      }).catch((error) =&gt; {
          console.error(error);
      });
  </code></pre>
  <p>And then inside Python I’m creating sale order based on the JSON:</p>
  <pre class="lang-py prettyprint-override"><code>@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', [])
      note = kw.get('note', '')
      order_line = []
  
      for product in order_products:
  
          amount = 0
          if 'custom_amount' in product:
              amount = product['custom_amount']
          else:
              amount = product['amount']
  
          if amount &gt; 0:
              order_line.append(
                  (0, 0, {
                      'product_id': product['product_id'],
                      'product_uom_qty': amount,
                  }))
  
      order_data = {
          'name': http.request.env['ir.sequence'].with_user(SUPERUSER_ID).next_by_code('sale.order') or _('New'),
          'partner_id': partner_id,
          'order_line': order_line,
          'note': note,
      }
  
      result_insert_record = http.request.env['sale.order'].with_user(SUPERUSER_ID).create(order_data)
      return result_insert_record.id
  </code></pre>
  <p>But instead of generating sale order directly I need to use workflow from Odoo’s eCommerce addon. That way user can for example edit delivery address, choose payment etc. So I think I just need to programmatically put all the product inside a cart and then rest will be taken care of by Odoo built-in functionality.
  But how? I’ve tried to find something inside Odoo source code but it is quite hard to grasp anything.</p>