[MERGE] forward port of branch saas-4 up to f68c835
[odoo/odoo.git] / addons / purchase_requisition / purchase_requisition.py
index 5aecc39..678aadf 100644 (file)
@@ -91,6 +91,8 @@ class purchase_requisition(osv.osv):
             for purchase_order in tender.purchase_ids:
                 purchase_order_obj.action_cancel(cr, uid, [purchase_order.id], context=context)
                 purchase_order_obj.message_post(cr, uid, [purchase_order.id], body=_('Cancelled by the tender associated to this quotation.'), context=context)
+        procurement_ids = self.pool['procurement.order'].search(cr, uid, [('requisition_id', 'in', ids)], context=context)
+        self.pool['procurement.order'].action_done(cr, uid, procurement_ids)
         return self.write(cr, uid, ids, {'state': 'cancel'})
 
     def tender_in_progress(self, cr, uid, ids, context=None):
@@ -108,6 +110,8 @@ class purchase_requisition(osv.osv):
         return True
 
     def tender_done(self, cr, uid, ids, context=None):
+        procurement_ids = self.pool['procurement.order'].search(cr, uid, [('requisition_id', 'in', ids)], context=context)
+        self.pool['procurement.order'].action_done(cr, uid, procurement_ids)
         return self.write(cr, uid, ids, {'state': 'done'}, context=context)
 
     def open_product_line(self, cr, uid, ids, context=None):
@@ -352,6 +356,10 @@ class purchase_order(osv.osv):
                             proc_obj.write(cr, uid, proc_ids, {'purchase_id': po.id})
                         self.signal_purchase_cancel(cr, uid, [order.id])
                     po.requisition_id.tender_done(context=context)
+            if po.requisition_id and all(purchase_id.state in ['draft', 'cancel'] for purchase_id in po.requisition_id.purchase_ids if purchase_id.id != po.id):
+                procurement_ids = self.pool['procurement.order'].search(cr, uid, [('requisition_id', '=', po.requisition_id.id)], context=context)
+                for procurement in proc_obj.browse(cr, uid, procurement_ids, context=context):
+                    procurement.move_id.write({'location_id': procurement.move_id.location_dest_id.id})
         return res
 
     def copy(self, cr, uid, id, default=None, context=None):