diff --git a/account_usability/account.py b/account_usability/account.py
index 7acbbc7..ade38f6 100644
--- a/account_usability/account.py
+++ b/account_usability/account.py
@@ -70,6 +70,28 @@ class AccountInvoice(models.Model):
return res
+class AccountInvoiceLine(models.Model):
+ _inherit = 'account.invoice.line'
+
+ # In the 'account' module, we have related stored field for:
+ # company_id, partner_id
+ currency_id = fields.Many2one(
+ related='invoice_id.currency_id', readonly=True, store=True)
+ invoice_type = fields.Selection(
+ related='invoice_id.type', store=True, readonly=True)
+ date_invoice = fields.Date(
+ related='invoice_id.date_invoice', store=True, readonly=True)
+ commercial_partner_id = fields.Many2one(
+ related='invoice_id.partner_id.commercial_partner_id',
+ store=True, readonly=True)
+ state = fields.Selection(
+ related='invoice_id.state', store=True, readonly=True,
+ string='Invoice State')
+ invoice_number = fields.Char(
+ related='invoice_id.move_id.name', store=True, readonly=True,
+ string='Invoice Number')
+
+
class AccountFiscalYear(models.Model):
_inherit = 'account.fiscalyear'
@@ -110,6 +132,10 @@ class AccountAccount(models.Model):
class AccountAnalyticAccount(models.Model):
_inherit = 'account.analytic.account'
+ invoice_line_ids = fields.One2many(
+ 'account.invoice.line', 'account_analytic_id', 'Invoice Lines',
+ readonly=True)
+
@api.multi
def name_get(self):
if self._context.get('analytic_account_show_code_only'):
diff --git a/account_usability/account_view.xml b/account_usability/account_view.xml
index 0104632..ed26841 100644
--- a/account_usability/account_view.xml
+++ b/account_usability/account_view.xml
@@ -65,6 +65,102 @@
+
+
+ account_usability.invoice_line_tree
+ account.invoice.line
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+
+
+ account_usability.invoice_line_search
+ account.invoice.line
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Customer Invoice Lines
+ account.invoice.line
+ tree,form
+ [('invoice_type', '=', 'out_invoice')]
+ {'show_invoice_fields': True}
+
+
+
+ Customer Refund Lines
+ account.invoice.line
+ tree,form
+ [('invoice_type', '=', 'out_refund')]
+ {'show_invoice_fields': True}
+
+
+
+ Supplier Invoice Lines
+ account.invoice.line
+ tree,form
+ [('invoice_type', '=', 'in_invoice')]
+ {'show_invoice_fields': True}
+
+
+
+ Supplier Refund Lines
+ account.invoice.line
+ tree,form
+ [('invoice_type', '=', 'in_refund')]
+ {'show_invoice_fields': True}
+
+
200
@@ -249,5 +345,18 @@
+
+ analytic.analytic.account.form
+ account.analytic.account
+
+
+
+
+
+
+
+
+
+
diff --git a/sale_usability_extension/__init__.py b/sale_usability_extension/__init__.py
index 581371f..37d6e13 100644
--- a/sale_usability_extension/__init__.py
+++ b/sale_usability_extension/__init__.py
@@ -2,3 +2,4 @@
from . import sale
from . import account_invoice
+from . import account_analytic_account
diff --git a/sale_usability_extension/account_analytic_account.py b/sale_usability_extension/account_analytic_account.py
new file mode 100644
index 0000000..1e21bb3
--- /dev/null
+++ b/sale_usability_extension/account_analytic_account.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# © 2017 Akretion (http://www.akretion.com)
+# @author Alexis de Lattre
+
+from openerp import models, fields, api
+
+
+class AccountAnalyticAccount(models.Model):
+ _inherit = 'account.analytic.account'
+
+ sale_order_count = fields.Integer(
+ compute='compute_sale_order_count',
+ string='Number of Quotations/Orders', readonly=True)
+ sale_ids = fields.One2many(
+ 'sale.order', 'project_id', string='Quotations/Orders')
+
+ @api.multi
+ def compute_sale_order_count(self):
+ for aaa in self:
+ try:
+ count = len(aaa.sale_ids)
+ except:
+ count = 0
+ aaa.sale_order_count = count
diff --git a/sale_usability_extension/sale_view.xml b/sale_usability_extension/sale_view.xml
index cb0fa20..969883e 100644
--- a/sale_usability_extension/sale_view.xml
+++ b/sale_usability_extension/sale_view.xml
@@ -75,5 +75,25 @@
+
+ Quotations and Sales
+ sale.order
+ tree,form,graph,calendar
+ {'search_default_project_id': active_id}
+
+
+
+ analytic.analytic.account.form
+ account.analytic.account
+
+
+
+
+
+
+
+