[MERGE] Forward-port latest saas-3 bugfixes, up to 30f43da
[odoo/odoo.git] / addons / account_analytic_analysis / account_analytic_analysis.py
index 4034ee5..3192703 100644 (file)
@@ -553,33 +553,39 @@ class account_analytic_account(osv.osv):
             'nodestroy': True,
         }
 
-    def on_change_template(self, cr, uid, ids, template_id, context=None):
+    def on_change_template(self, cr, uid, ids, template_id, date_start=False, context=None):
         if not template_id:
             return {}
-        obj_analytic_line = self.pool.get('account.analytic.invoice.line')
-        res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context)
+        res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, date_start=date_start, context=context)
 
         template = self.browse(cr, uid, template_id, context=context)
-        invoice_line_ids = []
-        for x in template.recurring_invoice_line_ids:
-            invoice_line_ids.append((0, 0, {
-                'product_id': x.product_id.id,
-                'uom_id': x.uom_id.id,
-                'name': x.name,
-                'quantity': x.quantity,
-                'price_unit': x.price_unit,
-                'analytic_account_id': x.analytic_account_id and x.analytic_account_id.id or False,
-            }))
-        res['value']['fix_price_invoices'] = template.fix_price_invoices
-        res['value']['invoice_on_timesheets'] = template.invoice_on_timesheets
-        res['value']['hours_qtt_est'] = template.hours_qtt_est
-        res['value']['amount_max'] = template.amount_max
-        res['value']['to_invoice'] = template.to_invoice.id
-        res['value']['pricelist_id'] = template.pricelist_id.id
-        res['value']['recurring_invoices'] = template.recurring_invoices
-        res['value']['recurring_interval'] = template.recurring_interval
-        res['value']['recurring_rule_type'] = template.recurring_rule_type
-        res['value']['recurring_invoice_line_ids'] = invoice_line_ids
+        
+        if not ids:
+            res['value']['fix_price_invoices'] = template.fix_price_invoices
+            res['value']['amount_max'] = template.amount_max
+        if not ids:
+            res['value']['invoice_on_timesheets'] = template.invoice_on_timesheets
+            res['value']['hours_qtt_est'] = template.hours_qtt_est
+        
+        if template.to_invoice.id:
+            res['value']['to_invoice'] = template.to_invoice.id
+        if template.pricelist_id.id:
+            res['value']['pricelist_id'] = template.pricelist_id.id
+        if not ids:
+            invoice_line_ids = []
+            for x in template.recurring_invoice_line_ids:
+                invoice_line_ids.append((0, 0, {
+                    'product_id': x.product_id.id,
+                    'uom_id': x.uom_id.id,
+                    'name': x.name,
+                    'quantity': x.quantity,
+                    'price_unit': x.price_unit,
+                    'analytic_account_id': x.analytic_account_id and x.analytic_account_id.id or False,
+                }))
+            res['value']['recurring_invoices'] = template.recurring_invoices
+            res['value']['recurring_interval'] = template.recurring_interval
+            res['value']['recurring_rule_type'] = template.recurring_rule_type
+            res['value']['recurring_invoice_line_ids'] = invoice_line_ids
         return res
 
     def onchange_recurring_invoices(self, cr, uid, ids, recurring_invoices, date_start=False, context=None):
@@ -632,7 +638,7 @@ class account_analytic_account(osv.osv):
 
     def onchange_invoice_on_timesheets(self, cr, uid, ids, invoice_on_timesheets, context=None):
         if not invoice_on_timesheets:
-            return {}
+            return {'value': {'to_invoice': False}}
         result = {'value': {'use_timesheets': True}}
         try:
             to_invoice = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'hr_timesheet_invoice', 'timesheet_invoice_factor1')