diff --git a/addons/purchase_requisition/__openerp__.py b/addons/purchase_requisition/__openerp__.py
index 03a7cf2362c..d2448baeacc 100644
--- a/addons/purchase_requisition/__openerp__.py
+++ b/addons/purchase_requisition/__openerp__.py
@@ -33,6 +33,9 @@ related requisition. This new object will regroup and will allow you to easily
keep track and order all your purchase orders.
""",
'depends' : ['purchase'],
+ 'js': [
+ 'static/src/js/web_addons.js',
+ ],
'demo': ['purchase_requisition_demo.xml'],
'data': ['security/purchase_tender.xml',
'wizard/purchase_requisition_partner_view.xml',
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index 1634568d197..7f2a740b9f0 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -203,16 +203,30 @@ class purchase_requisition(osv.osv):
"""
Generate all purchase order based on selected lines, should only be called on one tender at a time
"""
+ po = self.pool.get('purchase.order')
+ poline = self.pool.get('purchase.order.line')
id_per_supplier = {}
- for po_line in self.browse(cr, uid, id, context=context)[0].po_line_ids:
+ tender = self.browse(cr, uid, id, context=context)[0]
+ for po_line in tender.po_line_ids:
if po_line.state == 'confirmed':
partner = po_line.partner_id.id
if id_per_supplier.get(partner):
id_per_supplier[partner].append(po_line.id)
else:
- id_per_supplier[partner] = [po_line.id]
+ id_per_supplier[partner] = [po_line]
#TODO generate po based on supplier and check if a draft po is complete before creating a new one
+ for supplier, product_line in id_per_supplier.items():
+ #duplicate po_line and change product_qty if needed
+ line_ids = []
+ for line in product_line:
+ line_ids.append(poline.copy(cr, uid, line.id, default = {'product_qty': line.quantity_bid}, context=context))
+ #copy a quotation for this supplier and change order_line then validate it
+ quotation_copy_id = po.search(cr, uid, [('requisition_id', '=', tender.id), ('partner_id', '=', supplier)], limit=1)
+ new_po = po.copy(cr, uid, quotation_copy_id, default = {'order_line': line_ids}, context=context)
+ #use workflow to set new PO state to confirm
+
+ #TODO set previous line to cancel
class purchase_requisition_line(osv.osv):
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index 739a878ab12..78e64fda6ae 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -216,7 +216,7 @@
purchase.order.line.tree.tenderpurchase.order.line
-
+
diff --git a/addons/purchase_requisition/static/src/js/web_addons.js b/addons/purchase_requisition/static/src/js/web_addons.js
new file mode 100644
index 00000000000..4624bf24520
--- /dev/null
+++ b/addons/purchase_requisition/static/src/js/web_addons.js
@@ -0,0 +1,30 @@
+openerp.purchase_requisition = function(instance) {
+
+ var QWeb = instance.web.qweb,
+ _t = instance.web._t;
+
+ instance.web.ListView.include({
+ init: function() {
+ var self = this;
+ this._super.apply(this, arguments);
+ this.on('list_view_loaded', this, function() {
+ if (!!self.fields_view.arch.attrs.options) {
+ _.extend(self.options, py.eval(self.fields_view.arch.attrs.options));
+ }
+ if (!!self.options.generate_po) {
+ if(self.__parentedParent.$el.find('.oe_generate_po').length == 0){
+ var button = $("")
+ .click(this.proxy('generate_purchase_order'));
+ self.__parentedParent.$el.find('.oe_list_buttons').append(button);
+ }
+ }
+ });
+ },
+ generate_purchase_order: function () {
+ var self = this;
+ //self.dataset.model = current model (purchase or else)
+ new instance.web.Model(self.dataset.model).call("generate_po",[""]);
+ //self.dataset.parent_view.recursive_reload();
+ },
+ });
+}
\ No newline at end of file