[FIX] purchase: Currency in Purchase Analysis
"Total Price" and "average price" in purchase analysis must take into account the currency.
Inspired from caf333eb59
opw:644621
This commit is contained in:
parent
809e1a6081
commit
0f5a72e0a4
|
@ -66,6 +66,15 @@ class purchase_report(osv.osv):
|
|||
tools.sql.drop_view_if_exists(cr, 'purchase_report')
|
||||
cr.execute("""
|
||||
create or replace view purchase_report as (
|
||||
WITH currency_rate (currency_id, rate, date_start, date_end) AS (
|
||||
SELECT r.currency_id, r.rate, r.name AS date_start,
|
||||
(SELECT name FROM res_currency_rate r2
|
||||
WHERE r2.name > r.name AND
|
||||
r2.currency_id = r.currency_id
|
||||
ORDER BY r2.name ASC
|
||||
LIMIT 1) AS date_end
|
||||
FROM res_currency_rate r
|
||||
)
|
||||
select
|
||||
min(l.id) as id,
|
||||
s.date_order as date,
|
||||
|
@ -87,10 +96,10 @@ class purchase_report(osv.osv):
|
|||
extract(epoch from age(s.date_approve,s.date_order))/(24*60*60)::decimal(16,2) as delay,
|
||||
extract(epoch from age(l.date_planned,s.date_order))/(24*60*60)::decimal(16,2) as delay_pass,
|
||||
count(*) as nbr,
|
||||
sum(l.price_unit*l.product_qty)::decimal(16,2) as price_total,
|
||||
avg(100.0 * (l.price_unit*l.product_qty) / NULLIF(ip.value_float*l.product_qty/u.factor*u2.factor, 0.0))::decimal(16,2) as negociation,
|
||||
sum(l.price_unit*cr.rate*l.product_qty)::decimal(16,2) as price_total,
|
||||
avg(100.0 * (l.price_unit*cr.rate*l.product_qty) / NULLIF(ip.value_float*l.product_qty/u.factor*u2.factor, 0.0))::decimal(16,2) as negociation,
|
||||
sum(ip.value_float*l.product_qty/u.factor*u2.factor)::decimal(16,2) as price_standard,
|
||||
(sum(l.product_qty*l.price_unit)/NULLIF(sum(l.product_qty/u.factor*u2.factor),0.0))::decimal(16,2) as price_average
|
||||
(sum(l.product_qty*cr.rate*l.price_unit)/NULLIF(sum(l.product_qty/u.factor*u2.factor),0.0))::decimal(16,2) as price_average
|
||||
from purchase_order_line l
|
||||
join purchase_order s on (l.order_id=s.id)
|
||||
left join product_product p on (l.product_id=p.id)
|
||||
|
@ -99,6 +108,9 @@ class purchase_report(osv.osv):
|
|||
left join product_uom u on (u.id=l.product_uom)
|
||||
left join product_uom u2 on (u2.id=t.uom_id)
|
||||
left join stock_picking_type spt on (spt.id=s.picking_type_id)
|
||||
join currency_rate cr on (cr.currency_id = s.currency_id and
|
||||
cr.date_start <= coalesce(s.date_order, now()) and
|
||||
(cr.date_end is null or cr.date_end > coalesce(s.date_order, now())))
|
||||
group by
|
||||
s.company_id,
|
||||
s.create_uid,
|
||||
|
|
Loading…
Reference in New Issue