[FIX] account: add multicompany rule to account.subscription.line
authordhr-odoo <dhr@tinyerp.com>
Wed, 25 Jun 2014 10:07:02 +0000 (12:07 +0200)
committerMartin Trigaux <mat@openerp.com>
Wed, 25 Jun 2014 10:07:02 +0000 (12:07 +0200)
The wizard to generate recurring entries did not respect multicompany rules as the request was done in plain sql.
Add ir.rule and use the orm (opw 607782)

addons/account/security/account_security.xml
addons/account/wizard/account_subscription_generate.py

index 9a2383d..65d3e95 100644 (file)
         <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
     </record>
 
+    <record id="account_subscription_line_comp_rule" model="ir.rule">
+        <field name="name">Account subscription line company rule</field>
+        <field name="model_id" ref="model_account_subscription_line"/>
+        <field name="global" eval="True"/>
+        <field name="domain_force">['|',('subscription_id.model_id.company_id','=',False),('subscription_id.model_id.company_id','child_of',[user.company_id.id])]</field>
+    </record>
+
     <record model="ir.rule" id="account_invoice_line_comp_rule">
         <field name="name">Invoice Line company rule</field>
         <field name="model_id" ref="model_account_invoice_line"/>
index f5babc4..6560444 100644 (file)
@@ -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