diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 9ecbc4bf0fd..a27dfce1985 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -150,6 +150,17 @@ class purchase_order(osv.osv): limit=1) return res and res[0] or False + def _count_all(self, cr, uid, ids, field_name, arg, context=None): + res = dict(map(lambda x: (x,{'shipment_count': 0, 'invoice_count': 0,}), ids)) + try: + for data in self.browse(cr, uid, ids, context=context): + res[data.id] = {'shipment_count': len(data.picking_ids), + 'invoice_count': len(data.invoice_ids), + } + except: + pass + return res + STATE_SELECTION = [ ('draft', 'Draft PO'), ('sent', 'RFQ Sent'), @@ -226,6 +237,8 @@ class purchase_order(osv.osv): 'create_uid': fields.many2one('res.users', 'Responsible'), 'company_id': fields.many2one('res.company','Company',required=True,select=1, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}), 'journal_id': fields.many2one('account.journal', 'Journal'), + 'shipment_count': fields.function(_count_all, type='integer', string='Incoming Shipments', multi=True), + 'invoice_count': fields.function(_count_all, type='integer', string='Invoices', multi=True) } _defaults = { 'date_order': fields.date.context_today, diff --git a/addons/purchase/stock_view.xml b/addons/purchase/stock_view.xml index 0ba48a63512..94eaff5f498 100644 --- a/addons/purchase/stock_view.xml +++ b/addons/purchase/stock_view.xml @@ -47,9 +47,17 @@