diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 302a74c27af..00fad390282 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -166,28 +166,35 @@ class account_move_line(osv.osv): del data[f] return data + def _prepare_analytic_line(self, cr, uid, obj_line, context=None): + """ + Prepare the values given at the create() of account.analytic.line upon the validation of a journal item having + an analytic account. This method is intended to be extended in other modules. + + :param obj_line: browse record of the account.move.line that triggered the analytic line creation + """ + return {'name': obj_line.name, + 'date': obj_line.date, + 'account_id': obj_line.analytic_account_id.id, + 'unit_amount': obj_line.quantity, + 'product_id': obj_line.product_id and obj_line.product_id.id or False, + 'product_uom_id': obj_line.product_uom_id and obj_line.product_uom_id.id or False, + 'amount': (obj_line.credit or 0.0) - (obj_line.debit or 0.0), + 'general_account_id': obj_line.account_id.id, + 'journal_id': obj_line.journal_id.analytic_journal_id.id, + 'ref': obj_line.ref, + 'move_id': obj_line.id, + 'user_id': uid, + } + def create_analytic_lines(self, cr, uid, ids, context=None): acc_ana_line_obj = self.pool.get('account.analytic.line') for obj_line in self.browse(cr, uid, ids, context=context): if obj_line.analytic_account_id: if not obj_line.journal_id.analytic_journal_id: raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (obj_line.journal_id.name, )) - amt = (obj_line.credit or 0.0) - (obj_line.debit or 0.0) - vals_lines = { - 'name': obj_line.name, - 'date': obj_line.date, - 'account_id': obj_line.analytic_account_id.id, - 'unit_amount': obj_line.quantity, - 'product_id': obj_line.product_id and obj_line.product_id.id or False, - 'product_uom_id': obj_line.product_uom_id and obj_line.product_uom_id.id or False, - 'amount': amt, - 'general_account_id': obj_line.account_id.id, - 'journal_id': obj_line.journal_id.analytic_journal_id.id, - 'ref': obj_line.ref, - 'move_id': obj_line.id, - 'user_id': uid - } - acc_ana_line_obj.create(cr, uid, vals_lines) + vals_line = self._prepare_analytic_line(cr, uid, obj_line, context=context) + acc_ana_line_obj.create(cr, uid, vals_line) return True def _default_get_move_form_hook(self, cursor, user, data): diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py index 2b9e3f60665..3fd7cca9b3b 100644 --- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py +++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py @@ -62,11 +62,7 @@ class account_analytic_line(osv.osv): if data is None: data = {} - account_ids = {} - for line in self.pool.get('account.analytic.line').browse(cr, uid, ids, context=context): - account_ids[line.account_id.id] = True - - account_ids = account_ids.keys() #data['accounts'] + account_ids = [line.account_id.id for line in self.pool.get('account.analytic.line').browse(cr, uid, ids, context=context)] for account in analytic_account_obj.browse(cr, uid, account_ids, context=context): partner = account.partner_id if (not partner) or not (account.pricelist_id):