Rifakat (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-addons/6.0-opw-50851-rha into 
lp:openobject-addons/6.0.

Requested reviews:
  Priyesh (OpenERP) (pso-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-50851-rha/+merge/84714

Hello,

Improved query for sale_report which returns more than one row for having more 
than one reference UoM per UoM category.

Backported from Trunk revision 5162.

Thanks,
Rifakat
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-50851-rha/+merge/84714
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/6.0-opw-50851-rha.
=== modified file 'sale/report/sale_report.py'
--- sale/report/sale_report.py	2011-09-22 05:29:56 +0000
+++ sale/report/sale_report.py	2011-12-07 05:01:30 +0000
@@ -38,7 +38,7 @@
             ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True),
         'day': fields.char('Day', size=128, readonly=True),
         'product_id': fields.many2one('product.product', 'Product', readonly=True),
-        'uom_name': fields.char('Reference UoM', size=128, readonly=True),
+        'product_uom': fields.many2one('product.uom', 'UoM', readonly=True),
         'product_uom_qty': fields.float('# of Qty', readonly=True),
 
         'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
@@ -67,51 +67,42 @@
         tools.drop_view_if_exists(cr, 'sale_report')
         cr.execute("""
             create or replace view sale_report as (
-                select el.*,
-                   -- (select count(1) from sale_order_line where order_id = s.id) as nbr,
-                    (select 1) as nbr,
-                     s.date_order as date,
-                     s.date_confirm as date_confirm,
-                     to_char(s.date_order, 'YYYY') as year,
-                     to_char(s.date_order, 'MM') as month,
-                     to_char(s.date_order, 'YYYY-MM-DD') as day,
-                     s.partner_id as partner_id,
-                     s.user_id as user_id,
-                     s.shop_id as shop_id,
-                     s.company_id as company_id,
-                     extract(epoch from avg(date_trunc('day',s.date_confirm)-date_trunc('day',s.create_date)))/(24*60*60)::decimal(16,2) as delay,
-                     s.state,
-                     s.shipped,
-                     s.shipped::integer as shipped_qty_1,
-                     s.pricelist_id as pricelist_id,
-                     s.project_id as analytic_account_id
+                select
+                    min(l.id) as id,
+                    l.product_id as product_id,
+                    t.uom_id as product_uom,
+                    sum(l.product_uom_qty / u.factor * u2.factor) as product_uom_qty,
+                    sum(l.product_uom_qty * l.price_unit * (100.0-l.discount) / 100.0) as price_total,
+                    1 as nbr,
+                    s.date_order as date,
+                    s.date_confirm as date_confirm,
+                    to_char(s.date_order, 'YYYY') as year,
+                    to_char(s.date_order, 'MM') as month,
+                    to_char(s.date_order, 'YYYY-MM-DD') as day,
+                    s.partner_id as partner_id,
+                    s.user_id as user_id,
+                    s.shop_id as shop_id,
+                    s.company_id as company_id,
+                    extract(epoch from avg(date_trunc('day',s.date_confirm)-date_trunc('day',s.create_date)))/(24*60*60)::decimal(16,2) as delay,
+                    s.state,
+                    t.categ_id as categ_id,
+                    s.shipped,
+                    s.shipped::integer as shipped_qty_1,
+                    s.pricelist_id as pricelist_id,
+                    s.project_id as analytic_account_id
                 from
-                sale_order s,
-                    (
-                    select l.id as id,
-                        l.product_id as product_id,
-                        (case when u.uom_type not in ('reference') then
-                            (select name from product_uom where uom_type='reference' and category_id=u.category_id and active LIMIT 1)
-                        else
-                            u.name
-                        end) as uom_name,
-                        sum(l.product_uom_qty / u.factor) as product_uom_qty,
-                        sum(l.product_uom_qty * l.price_unit) as price_total,
-                        pt.categ_id, l.order_id
-                    from
-                     sale_order_line l ,product_uom u, product_product p, product_template pt
-                     where u.id = l.product_uom
-                     and pt.id = p.product_tmpl_id
-                     and p.id = l.product_id
-                      group by l.id, l.order_id, l.product_id, u.name, pt.categ_id, u.uom_type, u.category_id) el
-                where s.id = el.order_id
-                group by el.id,
-                    el.product_id,
-                    el.uom_name,
-                    el.product_uom_qty,
-                    el.price_total,
-                    el.categ_id,
-                    el.order_id,
+                    sale_order s
+                    left join sale_order_line l on (s.id=l.order_id)
+                        left join product_product p on (l.product_id=p.id)
+                            left join product_template t on (p.product_tmpl_id=t.id)
+                    left join product_uom u on (u.id=l.product_uom)
+                    left join product_uom u2 on (u2.id=t.uom_id)
+                group by
+                    l.product_id,
+                    l.product_uom_qty,
+                    l.order_id,
+                    t.uom_id,
+                    t.categ_id,
                     s.date_order,
                     s.date_confirm,
                     s.partner_id,

=== modified file 'sale/report/sale_report_view.xml'
--- sale/report/sale_report_view.xml	2011-01-14 00:11:01 +0000
+++ sale/report/sale_report_view.xml	2011-12-07 05:01:30 +0000
@@ -22,7 +22,7 @@
                 <field name="nbr" sum="# of Lines"/>
                 <field name="product_uom_qty" sum="# of Qty"/>
                 <field name="shipped_qty_1" sum="Shipped Qty"/>
-                <field name="uom_name" invisible="not context.get('set_visible',False)"/>
+                <field name="product_uom" invisible="not context.get('set_visible',False)"/>
                 <field name="price_total" sum="Total Price"/>
                 <field name="delay" sum="Commitment Delay"/>
                 <field name="state" invisible="1"/>
@@ -99,7 +99,7 @@
                     <filter string="Partner" icon="terp-partner"  name="Customer" context="{'group_by':'partner_id'}"/>
                     <separator orientation="vertical"/>
                     <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id','set_visible':True}"/>
-                    <filter string="Reference UoM" icon="terp-mrp" context="{'group_by':'uom_name'}"/>
+                    <filter string="Reference UoM" icon="terp-mrp" context="{'group_by':'product_uom'}"/>
                     <filter string="Category of Product" icon="terp-stock_symbol-selection" name="Category" context="{'group_by':'categ_id'}"/>
                     <separator orientation="vertical" groups="analytic.group_analytic_accounting"/>
                     <filter string="Analytic Account" icon="terp-folder-green" context="{'group_by':'analytic_account_id'}" groups="analytic.group_analytic_accounting"/>
@@ -209,7 +209,7 @@
                 <field name="price_total" />
                 <field name="user_id" invisible="1"/>
                 <field name="partner_id" invisible="1"/>
-                <field name="uom_name" invisible="1"/>
+                <field name="product_uom" invisible="1"/>
                 <field name="categ_id" invisible="1"/>
                 <field name="analytic_account_id" invisible="1" groups="analytic.group_analytic_accounting"/>
                 <field name="state" invisible="1"/>

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to