From 0bb26c47619eb7ea8d9c91ef81ba1df5e6259c58 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Mon, 8 Dec 2014 12:05:54 +0100 Subject: [PATCH] [IMP] optimize purchase order cancellation + date_planned on poline datetime --- addons/purchase/purchase.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 66b0ce70653..4a0d7e66199 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -981,7 +981,7 @@ class purchase_order_line(osv.osv): _columns = { 'name': fields.text('Description', required=True), 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True), - 'date_planned': fields.date('Scheduled Date', required=True, select=True), + 'date_planned': fields.datetime('Scheduled Date', required=True, select=True), 'taxes_id': fields.many2many('account.tax', 'purchase_order_taxe', 'ord_id', 'tax_id', 'Taxes'), 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True), 'product_id': fields.many2one('product.product', 'Product', domain=[('purchase_ok','=',True)], change_default=True), @@ -1057,9 +1057,11 @@ class purchase_order_line(osv.osv): def action_cancel(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'state': 'cancel'}, context=context) - for po_line in self.browse(cr, uid, ids, context=context): - if all([l.state == 'cancel' for l in po_line.order_id.order_line]): - self.pool.get('purchase.order').action_cancel(cr, uid, [po_line.order_id.id], context=context) + # Calculate the list of purchase orders first + purchase_orders = list(set([x.order_id for x in self.browse(cr, uid, ids, context=context)])) + for purchase in purchase_orders: + if all([l.state == 'cancel' for l in purchase.order_line]): + self.pool.get('purchase.order').action_cancel(cr, uid, [purchase.id], context=context) def _check_product_uom_group(self, cr, uid, context=None): group_uom = self.pool.get('ir.model.data').get_object(cr, uid, 'product', 'group_uom')