diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py index 7e9bbacab13..6ae6e05ead7 100644 --- a/addons/base_action_rule/base_action_rule.py +++ b/addons/base_action_rule/base_action_rule.py @@ -397,10 +397,6 @@ the rule to mark CC(mail to any other person defined in actions)."), obj.state = action.act_state write['state'] = action.act_state - if hasattr(obj, 'categ_id') and action.act_categ_id: - obj.categ_id = action.act_categ_id - write['categ_id'] = action.act_categ_id.id - model_obj.write(cr, uid, [obj.id], write, context) if hasattr(model_obj, 'remind_user') and action.act_remind_user: diff --git a/addons/crm/crm_action_rule.py b/addons/crm/crm_action_rule.py index 8b1ba655afc..6adf2860923 100644 --- a/addons/crm/crm_action_rule.py +++ b/addons/crm/crm_action_rule.py @@ -57,8 +57,8 @@ class base_action_rule(osv.osv): if hasattr(obj, 'section_id'): ok = ok and (not action.trg_section_id or action.trg_section_id.id == obj.section_id.id) - if hasattr(obj, 'categ_id'): - ok = ok and (not action.trg_categ_id or action.trg_categ_id.id == obj.categ_id.id) + if hasattr(obj, 'categ_ids'): + ok = ok and (not action.trg_categ_id or action.trg_categ_id.id in obj.categ_ids) #Cheking for history regex = action.regex_history @@ -93,6 +93,9 @@ class base_action_rule(osv.osv): write['email_cc'] = obj.email_cc + ',' + obj.act_email_cc else: write['email_cc'] = obj.act_email_cc + + if hasattr(obj, 'categ_ids') and action.act_categ_id: + write['categ_ids'] = [4, action.act_categ_id.id] # Put state change by rule in communication history if hasattr(obj, 'state') and hasattr(obj, 'message_post') and action.act_state: diff --git a/addons/mail/tests/test_mail.py b/addons/mail/tests/test_mail.py index 1fc44ed81af..c946c1f6b19 100644 --- a/addons/mail/tests/test_mail.py +++ b/addons/mail/tests/test_mail.py @@ -505,7 +505,7 @@ class test_mail(TestMailMockups): # 1. mass_mail on pigs and bird compose_id = mail_compose.create(cr, uid, - {'subject': _subject, 'body': '${object.description}', 'content_type': 'html'}, + {'subject': _subject, 'body': '${object.description}'}, {'default_composition_mode': 'mass_mail', 'default_model': 'mail.group', 'default_res_id': False, 'active_ids': [self.group_pigs_id, group_bird_id]}) compose = mail_compose.browse(cr, uid, compose_id) diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py index 1c8ac5934fc..0c96bf1e689 100644 --- a/addons/procurement/schedulers.py +++ b/addons/procurement/schedulers.py @@ -197,6 +197,12 @@ class procurement_order(osv.osv): 'location_id': orderpoint.location_id.id, 'procure_method': 'make_to_order', 'origin': orderpoint.name} + + def _product_virtual_get(self, cr, uid, order_point): + location_obj = self.pool.get('stock.location') + return location_obj._product_virtual_get(cr, uid, + order_point.location_id.id, [order_point.product_id.id], + {'uom': order_point.product_uom.id})[order_point.product_id.id] def _procure_orderpoint_confirm(self, cr, uid, automatic=False,\ use_new_cursor=False, context=None, user_id=False): @@ -217,7 +223,7 @@ class procurement_order(osv.osv): if use_new_cursor: cr = pooler.get_db(use_new_cursor).cursor() orderpoint_obj = self.pool.get('stock.warehouse.orderpoint') - location_obj = self.pool.get('stock.location') + procurement_obj = self.pool.get('procurement.order') wf_service = netsvc.LocalService("workflow") offset = 0 @@ -227,14 +233,9 @@ class procurement_order(osv.osv): while ids: ids = orderpoint_obj.search(cr, uid, [], offset=offset, limit=100) for op in orderpoint_obj.browse(cr, uid, ids, context=context): - if op.procurement_id.state != 'exception': - if op.procurement_id and hasattr(op.procurement_id, 'purchase_id'): - if op.procurement_id.purchase_id.state in ('draft', 'confirmed'): - continue - prods = location_obj._product_virtual_get(cr, uid, - op.location_id.id, [op.product_id.id], - {'uom': op.product_uom.id})[op.product_id.id] - + prods = self._product_virtual_get(cr, uid, op) + if prods is None: + continue if prods < op.product_min_qty: qty = max(op.product_min_qty, op.product_max_qty)-prods diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index d654078a055..5cb88fb60f7 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -1080,6 +1080,12 @@ class procurement_order(osv.osv): self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': res[procurement.id]}) self.running_send_note(cr, uid, [procurement.id], context=context) return res + + def _product_virtual_get(self, cr, uid, order_point): + procurement = order_point.procurement_id + if procurement and procurement.state != 'exception' and procurement.purchase_id and procurement.purchase_id.state in ('draft', 'confirmed'): + return None + return super(procurement_order, self)._product_virtual_get(cr, uid, order_point) procurement_order()