purchase_order.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # -*- coding: utf-8 -*-
  2. from openerp.http import request as r
  3. from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
  4. from datetime import datetime
  5. from stock_warehouse import get_location_id
  6. def get_purchase_orders():
  7. domain = [
  8. ('state', '=', 'manual'),
  9. ('from_pop', '=', True)
  10. ]
  11. return [
  12. {
  13. 'id': po.id,
  14. 'name': po.display_name,
  15. 'createDate': po.create_date,
  16. 'partner': {
  17. 'id': po.partner_id.id,
  18. 'name': po.partner_id.display_name,
  19. 'image': po.partner_id.image_medium or None,
  20. 'ruc': po.partner_id.ruc or None,
  21. 'phone': po.partner_id.phone or None,
  22. 'mobile': po.partner_id.mobile or None,
  23. 'email': po.partner_id.email or None
  24. },
  25. 'userId': po.user_id.id,
  26. 'warehouseId': po.warehouse_id.id,
  27. 'amountTotal': po.amount_total,
  28. 'lines': [
  29. {
  30. 'id': l.product_id.id,
  31. 'name': l.product_id.display_name,
  32. 'listPrice': l.product_id.list_price,
  33. 'quantity': l.product_uom_qty,
  34. 'price': l.product_id. list_price,
  35. 'discount': 0
  36. } for l in po.order_line
  37. ]
  38. } for po in r.env['purchase.order'].search(domain)
  39. ]
  40. def get_purchase_order(order_id):
  41. return r.env['purchase.order'].browse(order_id)
  42. def create_purchase_order(supplier_id, cart_items, date_order, currency_id, pricelist_id, payment_term_id=None, warehouse_id=None):
  43. def get_product_obj(product_id):
  44. return r.env['product.product'].browse(product_id)
  45. lines = []
  46. for item in cart_items:
  47. product = get_product_obj(item.get('id'))
  48. lines += [[0, False, {
  49. 'name': item.get('name'),
  50. 'date_planned': date_order,
  51. 'product_id': product.id,
  52. 'product_qty': float(item.get('quantity')),
  53. 'price_unit': float(item.get('price')),
  54. 'product_uom': product.uom_id.id
  55. }]]
  56. values = {
  57. 'name': '/',
  58. 'partner_id': supplier_id,
  59. 'order_line': lines,
  60. 'date_order': datetime.utcnow().strftime(DEFAULT_SERVER_DATETIME_FORMAT),
  61. 'currency_id': currency_id,
  62. 'pricelist_id': pricelist_id,
  63. 'payment_term_id': payment_term_id,
  64. 'location_id': get_location_id(warehouse_id),
  65. 'invoice_method': 'order',
  66. 'from_pop': True
  67. }
  68. return r.env['purchase.order'].create(values)
  69. def confirm_purchase_order(purchase_order_id):
  70. po = r.env['purchase.order'].browse(purchase_order_id)
  71. po.write({
  72. 'state': 'done'
  73. })
  74. # po.action_purchase_confirm()
  75. # for picking in po.picking_ids:
  76. # picking.force_assign()
  77. # picking.action_done()
  78. # po.write({
  79. # 'state': 'done'
  80. # })
  81. return po.action_purchase_confirm()
  82. def force_assign_picking(purchase_order_id):
  83. po = r.env['purchase.order'].browse(purchase_order_id)
  84. for p in po.picking_ids:
  85. p.force_assing()
  86. def done_picking(purchase_order_id):
  87. po = r.env['purchase.order'].browse(purchase_order_id)
  88. for p in po.picking_ids:
  89. p.action_done()