purchase_order.py 1.4 KB

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