# -*- coding: utf-8 -*- from openerp.http import request as r def create_purchase_order(supplier_id, cart_items, date_order, currency_id, pricelist_id, payment_term_id=None): def get_product_obj(product_id): return r.env['product.product'].browse(product_id) lines = [] for item in cart_items: product = get_product_obj(item.get('id')) lines += [[0, False, { 'name': item.get('name'), 'date_planned': date_order, 'product_id': product.id, 'product_qty': float(item.get('quantity')), 'price_unit': float(item.get('price')), 'product_uom': product.uom_id.id }]] values = { 'name': '/', 'partner_id': supplier_id, 'order_line': lines, 'date_order': datetime.utcnow().strftime(DATETIME_FORMAT), 'currency_id': currency_id, 'pricelist_id': pricelist_id, 'payment_term_id': payment_term_id, 'location_id': self.get_stock_location_id(), 'invoice_method': 'order' } return request.env['purchase.order'].create(values) def confirm_purchase_order(purchase_order_id): po = r.env['purchase.order'].browse(purchase_order_id) po.action_purchase_confirm() for picking in po.picking_ids: picking.force_assign() picking.action_done() po.write({ 'state': 'done' })