diff options
| author | Denis Ledoux <dle@odoo.com> | 2014-10-02 11:52:06 +0200 |
|---|---|---|
| committer | Denis Ledoux <dle@odoo.com> | 2014-10-02 11:53:38 +0200 |
| commit | 12df3fe5a025a95c079e2f9f84e4c6ad691e802e (patch) | |
| tree | e81fb6b699acce8bdbc09aa01edf5c1caabe781b /addons/account_analytic_analysis/account_analytic_analysis.py | |
| parent | 78144410a4e3e59e8e7f06fb527e7aba8321d4b2 (diff) | |
[FIX] account_analytic_analysis: invoiced field takes customer invoices only
Besides, it subtracts customer invoices with customer refund invoices
Diffstat (limited to 'addons/account_analytic_analysis/account_analytic_analysis.py')
| -rw-r--r-- | addons/account_analytic_analysis/account_analytic_analysis.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py index e6847c60151..125ed72464d 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis.py +++ b/addons/account_analytic_analysis/account_analytic_analysis.py @@ -208,9 +208,13 @@ class account_analytic_account(osv.osv): if child_ids: #Search all invoice lines not in cancelled state that refer to this analytic account inv_line_obj = self.pool.get("account.invoice.line") - inv_lines = inv_line_obj.search(cr, uid, ['&', ('account_analytic_id', 'in', child_ids), ('invoice_id.state', '!=', 'cancel')], context=context) + inv_lines = inv_line_obj.search(cr, uid, ['&', ('account_analytic_id', 'in', child_ids), ('invoice_id.state', 'not in', ['draft', 'cancel']), ('invoice_id.type', 'in', ['out_invoice', 'out_refund'])], context=context) for line in inv_line_obj.browse(cr, uid, inv_lines, context=context): - res[line.account_analytic_id.id] += line.price_subtotal + if line.invoice_id.type == 'out_refund': + res[line.account_analytic_id.id] -= line.price_subtotal + else: + res[line.account_analytic_id.id] += line.price_subtotal + for acc in self.browse(cr, uid, res.keys(), context=context): res[acc.id] = res[acc.id] - (acc.timesheet_ca_invoiced or 0.0) @@ -308,11 +312,14 @@ class account_analytic_account(osv.osv): inv_ids = [] for account in self.browse(cr, uid, ids, context=context): res[account.id] = 0.0 - line_ids = lines_obj.search(cr, uid, [('account_id','=', account.id), ('invoice_id','!=',False), ('to_invoice','!=', False), ('journal_id.type', '=', 'general')], context=context) + line_ids = lines_obj.search(cr, uid, [('account_id','=', account.id), ('invoice_id','!=',False), ('to_invoice','!=', False), ('journal_id.type', '=', 'general'), ('invoice_id.type', 'in', ['out_invoice', 'out_refund'])], context=context) for line in lines_obj.browse(cr, uid, line_ids, context=context): if line.invoice_id not in inv_ids: inv_ids.append(line.invoice_id) - res[account.id] += line.invoice_id.amount_untaxed + if line.invoice_id.type == 'out_refund': + res[account.id] -= line.invoice_id.amount_untaxed + else: + res[account.id] += line.invoice_id.amount_untaxed return res def _remaining_ca_calc(self, cr, uid, ids, name, arg, context=None): |
