diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml index 9a2383de45b..65d3e95be54 100644 --- a/addons/account/security/account_security.xml +++ b/addons/account/security/account_security.xml @@ -139,6 +139,13 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + Account subscription line company rule + + + ['|',('subscription_id.model_id.company_id','=',False),('subscription_id.model_id.company_id','child_of',[user.company_id.id])] + + Invoice Line company rule diff --git a/addons/account/wizard/account_subscription_generate.py b/addons/account/wizard/account_subscription_generate.py index a61f3eee252..e284f1d12b1 100644 --- a/addons/account/wizard/account_subscription_generate.py +++ b/addons/account/wizard/account_subscription_generate.py @@ -36,11 +36,11 @@ class account_subscription_generate(osv.osv_memory): def action_generate(self, cr, uid, ids, context=None): mod_obj = self.pool.get('ir.model.data') act_obj = self.pool.get('ir.actions.act_window') + sub_line_obj = self.pool.get('account.subscription.line') moves_created=[] for data in self.read(cr, uid, ids, context=context): - cr.execute('select id from account_subscription_line where date<%s and move_id is null', (data['date'],)) - line_ids = map(lambda x: x[0], cr.fetchall()) - moves = self.pool.get('account.subscription.line').move_create(cr, uid, line_ids, context=context) + line_ids = sub_line_obj.search(cr, uid, [('date', '<', data['date']), ('move_id', '=', False)], context=context) + moves = sub_line_obj.move_create(cr, uid, line_ids, context=context) moves_created.extend(moves) result = mod_obj.get_object_reference(cr, uid, 'account', 'action_move_line_form') id = result and result[1] or False diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index d83e60bac8f..592058b30d3 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -72,7 +72,7 @@ class purchase_requisition(osv.osv): if str(purchase_id.state) in('draft'): purchase_order_obj.action_cancel(cr,uid,[purchase_id.id]) procurement_ids = self.pool['procurement.order'].search(cr, uid, [('requisition_id', 'in', ids)], context=context) - self.pool['procurement.order'].write(cr, uid, procurement_ids, {'state': 'cancel'}, 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): @@ -83,7 +83,7 @@ class purchase_requisition(osv.osv): 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'].write(cr, uid, procurement_ids, {'state': 'done'}, context=context) + self.pool['procurement.order'].action_done(cr, uid, procurement_ids) return self.write(cr, uid, ids, {'state':'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S')}, context=context) def _planned_date(self, requisition, delay=0.0): @@ -216,6 +216,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