diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index 06e59232ac9..5a0e1411fe8 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -1801,7 +1801,7 @@ class res_partner(osv.osv):
""" Inherits partner and adds invoice information in the partner form """
_inherit = 'res.partner'
_columns = {
- 'invoice_ids': fields.one2many('account.invoice.line', 'partner_id', 'Invoices', readonly=True),
+ 'invoice_ids': fields.one2many('account.invoice', 'partner_id', 'Invoices', readonly=True),
}
def _find_accounting_partner(self, partner):
diff --git a/addons/account/partner.py b/addons/account/partner.py
index f24ffcf55b4..d3777683f6f 100644
--- a/addons/account/partner.py
+++ b/addons/account/partner.py
@@ -162,6 +162,24 @@ class res_partner(osv.osv):
def _debit_search(self, cr, uid, obj, name, args, context=None):
return self._asset_difference_search(cr, uid, obj, name, 'payable', args, context=context)
+ def _invoices_stat_button(self, cr, uid, ids, field_name, arg, context=None):
+ res = {}
+ obj = self.pool.get('account.invoice')
+ for partner in self.browse(cr, uid, ids, context):
+ domain = [('id', 'in', map(int, partner.invoice_ids))]
+ group_obj = obj.read_group(cr, uid, domain, ['amount_total'], [''], context=context)
+ total = group_obj[0]['amount_total']
+ res[partner.id] = """
+
%s invoices
+ Total: %s
+ """ % (len(partner.invoice_ids), total)
+ return res
+
+ def _journal_items_stat_button(self, cr, uid, ids, field_name, arg, context=None):
+ html = "%s Journal Items
"
+ return {partner.id: html % len(partner.journal_items_ids) for partner in self.browse(cr, uid, ids, context)}
+ res = {}
+
def has_something_to_reconcile(self, cr, uid, partner_id, context=None):
'''
at least a debit, a credit and a line older than the last reconciliation date of the partner
@@ -190,6 +208,9 @@ class res_partner(osv.osv):
fnct_search=_credit_search, string='Total Receivable', multi='dc', help="Total amount this customer owes you."),
'debit': fields.function(_credit_debit_get, fnct_search=_debit_search, string='Total Payable', multi='dc', help="Total amount you have to pay to this supplier."),
'debit_limit': fields.float('Payable Limit'),
+ 'invoices_stat_button': fields.function(_invoices_stat_button, string="Invoices", type='html'),
+ 'journal_items_ids': fields.one2many('account.move.line', 'partner_id', 'Journal Items'),
+ 'journal_items_stat_button': fields.function(_journal_items_stat_button, string='Journal Items', type='html'),
'property_account_payable': fields.property(
type='many2one',
relation='account.account',
diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml
index 6a58bc7f77e..448a093570f 100644
--- a/addons/account/partner_view.xml
+++ b/addons/account/partner_view.xml
@@ -64,10 +64,15 @@
-
-
+ icon="fa-pencil-square-o"
+ context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" groups="account.group_account_invoice">
+
+
+
+
+
diff --git a/addons/crm/res_partner.py b/addons/crm/res_partner.py
index c2eecb7c4e7..30f2b8244b3 100644
--- a/addons/crm/res_partner.py
+++ b/addons/crm/res_partner.py
@@ -38,14 +38,30 @@ class res_partner(osv.osv):
pass
return res
+ def _opportunities_stat_button(self, cr, uid, ids, field_name, arg, context=None):
+ html = "%s opportunities
"
+ return {partner.id: html % len(partner.opportunity_ids) for partner in self.browse(cr, uid, ids, context)}
+ res = {}
+
+ def _meetings_stat_button(self, cr, uid, ids, field_name, arg, context=None):
+ html = "%s meetings
"
+ return {partner.id: html % len(partner.meeting_ids) for partner in self.browse(cr, uid, ids, context)}
+
+ def _calls_stat_button(self, cr, uid, ids, field_name, arg, context=None):
+ html = "%s calls
"
+ return {partner.id: html % len(partner.phonecall_ids) for partner in self.browse(cr, uid, ids, context)}
+
_columns = {
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'opportunity_ids': fields.one2many('crm.lead', 'partner_id',\
'Leads and Opportunities', domain=[('probability', 'not in', ['0', '100'])]),
- 'meeting_ids': fields.many2many('calendar.event', 'calendar_event_partner_rel','partner_id', 'meeting_id',
+ 'opportunities_stat_button': fields.function(_opportunities_stat_button, string="Opportunities", type='html'),
+ 'meeting_ids': fields.many2many('calendar.event', 'calendar_event_res_partner_rel','res_partner_id', 'calendar_event_id',
'Meetings'),
+ 'meetings_stat_button': fields.function(_meetings_stat_button, string="Meetings", type='html'),
'phonecall_ids': fields.one2many('crm.phonecall', 'partner_id',\
'Phonecalls'),
+ 'calls_stat_button': fields.function(_calls_stat_button, string="Calls", type='html'),
'opportunity_count': fields.function(_opportunity_meeting_count, string="Opportunity", type='integer', multi='opp_meet'),
'meeting_count': fields.function(_opportunity_meeting_count, string="# Meetings", type='integer', multi='opp_meet'),
}
diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml
index 7613c2161fc..b42db32107b 100644
--- a/addons/crm/res_partner_view.xml
+++ b/addons/crm/res_partner_view.xml
@@ -90,17 +90,25 @@
-
-