diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py
index ec5e2c56e6c..99890a5f239 100644
--- a/addons/account_analytic_analysis/account_analytic_analysis.py
+++ b/addons/account_analytic_analysis/account_analytic_analysis.py
@@ -543,33 +543,40 @@ 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, fix_price_invoices=False, invoice_on_timesheets=False, recurring_invoices=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 fix_price_invoices:
+ res['value']['fix_price_invoices'] = template.fix_price_invoices
+ res['value']['amount_max'] = template.amount_max
+ if not invoice_on_timesheets:
+ 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 recurring_invoices:
+ 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):
diff --git a/addons/account_analytic_analysis/account_analytic_analysis_view.xml b/addons/account_analytic_analysis/account_analytic_analysis_view.xml
index f5b89db7089..d99be3db355 100644
--- a/addons/account_analytic_analysis/account_analytic_analysis_view.xml
+++ b/addons/account_analytic_analysis/account_analytic_analysis_view.xml
@@ -38,6 +38,9 @@
{'required': [('type','=','contract'),'|','|',('fix_price_invoices','=',True), ('invoice_on_timesheets', '=', True), ('recurring_invoices', '=', True)]}
+
+ on_change_template(template_id, date_start, fix_price_invoices, invoice_on_timesheets, recurring_invoices)
+
diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py
index 894a2a2d6c5..c1ea1f655d2 100644
--- a/addons/analytic/analytic.py
+++ b/addons/analytic/analytic.py
@@ -203,7 +203,7 @@ class account_analytic_account(osv.osv):
}, string='Currency', type='many2one', relation='res.currency'),
}
- 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 {}
res = {'value':{}}
@@ -213,7 +213,8 @@ class account_analytic_account(osv.osv):
to_dt = datetime.strptime(template.date, tools.DEFAULT_SERVER_DATE_FORMAT)
timedelta = to_dt - from_dt
res['value']['date'] = datetime.strftime(datetime.now() + timedelta, tools.DEFAULT_SERVER_DATE_FORMAT)
- res['value']['date_start'] = fields.date.today()
+ if not date_start:
+ res['value']['date_start'] = fields.date.today()
res['value']['quantity_max'] = template.quantity_max
res['value']['parent_id'] = template.parent_id and template.parent_id.id or False
res['value']['description'] = template.description
diff --git a/addons/analytic/analytic_view.xml b/addons/analytic/analytic_view.xml
index 9a99552be13..5e65874a1d9 100644
--- a/addons/analytic/analytic_view.xml
+++ b/addons/analytic/analytic_view.xml
@@ -27,7 +27,7 @@
-
+
diff --git a/addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py b/addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py
index a1bf43714ce..3682755b9c4 100644
--- a/addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py
+++ b/addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py
@@ -115,8 +115,8 @@ class account_analytic_account(osv.osv):
digits_compute=dp.get_precision('Account')),
}
- def on_change_template(self, cr, uid, id, template_id, context=None):
- res = super(account_analytic_account, self).on_change_template(cr, uid, id, template_id, context=context)
+ def on_change_template(self, cr, uid, id, template_id, date_start=False, context=None):
+ res = super(account_analytic_account, self).on_change_template(cr, uid, id, template_id, date_start=date_start, context=context)
if template_id and 'value' in res:
template = self.browse(cr, uid, template_id, context=context)
res['value']['charge_expenses'] = template.charge_expenses
diff --git a/addons/hr_timesheet/hr_timesheet.py b/addons/hr_timesheet/hr_timesheet.py
index 5baf8ec262b..7aa7cbaba08 100644
--- a/addons/hr_timesheet/hr_timesheet.py
+++ b/addons/hr_timesheet/hr_timesheet.py
@@ -207,8 +207,8 @@ class account_analytic_account(osv.osv):
'use_timesheets': fields.boolean('Timesheets', help="Check this field if this project manages timesheets"),
}
- def on_change_template(self, cr, uid, ids, template_id, context=None):
- res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context)
+ def on_change_template(self, cr, uid, ids, template_id, date_start=False, context=None):
+ res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, date_start=date_start, context=context)
if template_id and 'value' in res:
template = self.browse(cr, uid, template_id, context=context)
res['value']['use_timesheets'] = template.use_timesheets