[IMP]: Improve SQL report for Invoice by adding sum Residual and Delay To Pay fields.
authorrch (Open ERP) <>
Thu, 29 Apr 2010 11:46:49 +0000 (17:16 +0530)
committerrch (Open ERP) <>
Thu, 29 Apr 2010 11:46:49 +0000 (17:16 +0530)
bzr revid: rch_open_erp-20100429114649-o46vjjrf11y4ulyx

addons/account/report/account_invoice_report.py
addons/account/report/account_invoice_report_view.xml

index 5aff8f3..af8ef08 100644 (file)
@@ -65,7 +65,9 @@ class account_invoice_report(osv.osv):
         'address_contact_id': fields.many2one('res.partner.address', 'Contact Address', readonly=True),
         'address_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True),
         'account_id': fields.many2one('account.account', 'Account',readonly=True),
-        'partner_bank': fields.many2one('res.partner.bank', 'Bank Account',readonly=True)
+        'partner_bank': fields.many2one('res.partner.bank', 'Bank Account',readonly=True),
+        'residual':fields.float('Total Residual', readonly=True),
+        'delay_to_pay':fields.float('Avg. Delay To Pay', readonly=True, group_operator="avg"),
     }
     _order = 'date desc'
     def init(self, cr):
@@ -97,12 +99,19 @@ class account_invoice_report(osv.osv):
                      s.address_contact_id as address_contact_id,
                      s.address_invoice_id as address_invoice_id,
                      s.account_id as account_id,
-                     s.partner_bank as partner_bank
+                     s.partner_bank as partner_bank,
+                     sum(s.residual) as residual,
+                     case when s.state != 'paid' then null else
+                            extract(epoch from avg(am.date_created-l.create_date))/(24*60*60)::decimal(16,2)
+                     end as delay_to_pay
                  from
                  account_invoice_line l
                  left join
                      account_invoice s on (s.id=l.invoice_id)
-                     left join product_uom u on (u.id=l.uos_id)
+                     left join product_uom u on (u.id=l.uos_id),
+                 account_move_line am left join account_invoice i on (i.move_id=am.move_id)
+                 where
+                        am.account_id=i.account_id
                  group by
                      s.type,
                      s.date_invoice,
index 4764e0a..fea7dba 100644 (file)
@@ -32,6 +32,8 @@
                 <field name="address_invoice_id" invisible="1"/>
                 <field name="account_id" invisible="1"/>
                 <field name="partner_bank" invisible="1"/>
+                <field name="residual"  sum="Total Residual"/>
+                <field name="delay_to_pay"  avg="Avg. Delay To Pay"/>
             </tree>
         </field>
     </record>