purchase_order.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. from openerp.http import request as r
  3. def create_purchase_order(
  4. supplier_id,
  5. cart_items,
  6. date_order,
  7. currency_id,
  8. pricelist_id,
  9. payment_term_id=None
  10. ):
  11. def get_product_obj(product_id):
  12. return r.env['product.product'].browse(product_id)
  13. lines = []
  14. for item in cart_items:
  15. product = get_product_obj(item.get('id'))
  16. lines += [[0, False, {
  17. 'name': item.get('name'),
  18. 'date_planned': date_order,
  19. 'product_id': product.id,
  20. 'product_qty': float(item.get('quantity')),
  21. 'price_unit': float(item.get('price')),
  22. 'product_uom': product.uom_id.id
  23. }]]
  24. values = {
  25. 'name': '/',
  26. 'partner_id': supplier_id,
  27. 'order_line': lines,
  28. 'date_order': datetime.utcnow().strftime(DATETIME_FORMAT),
  29. 'currency_id': currency_id,
  30. 'pricelist_id': pricelist_id,
  31. 'payment_term_id': payment_term_id,
  32. 'location_id': self.get_stock_location_id(),
  33. 'invoice_method': 'order'
  34. }
  35. return request.env['purchase.order'].create(values)
  36. def confirm_purchase_order(purchase_order_id):
  37. po = r.env['purchase.order'].browse(purchase_order_id)
  38. po.action_purchase_confirm()
  39. for picking in po.picking_ids:
  40. picking.force_assign()
  41. picking.action_done()
  42. po.write({
  43. 'state': 'done'
  44. })