fix commissions (#249)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
-- Fix incorrect order_rows.commission_amount
|
||||
-- We can calculate correct value using data->>'discountValue' which is the discount sum incl vat for the row
|
||||
-- The first select identifies the rows to udpate.
|
||||
-- The second select extracts only the two fields of interest.
|
||||
-- The third select cleans up the values slightly
|
||||
with to_update as (
|
||||
select
|
||||
-- order_rows.inserted,
|
||||
order_rows.id rowid,
|
||||
type,
|
||||
-- sub_type,
|
||||
orders.delivery_vat,
|
||||
orders.order_sum,
|
||||
order_id,
|
||||
price,
|
||||
-- designer_id,
|
||||
data->>'commission' as commission,
|
||||
-- data->>'commission_resale'as commission_resale,
|
||||
data->>'discountType' discount_type,
|
||||
round(price * orders.delivery_vat, 2) as price_incl_vat,
|
||||
round((data->>'discountValue')::numeric, 2) as discount_value,
|
||||
round(price * orders.delivery_vat, 2) - round((data->>'discountValue')::numeric, 2) as commissionable_w_vat,
|
||||
(round(price * orders.delivery_vat, 2) - round((data->>'discountValue')::numeric, 2)) / delivery_vat as commissionable_amount_ex_vat,
|
||||
((round(price * orders.delivery_vat, 2) - round((data->>'discountValue')::numeric, 2)) / delivery_vat) * (( data->>'commission')::numeric / 100) as new_commission_amount,
|
||||
commission_amount
|
||||
from
|
||||
order_rows
|
||||
left join orders on order_id = orders.id
|
||||
where
|
||||
order_rows.id >= 2500000
|
||||
and data->>'discountType' != '%'
|
||||
and ( (data->>'commission' is not null) and ((data->>'commission')::numeric > 0))
|
||||
), id_and_amount as (select rowid, new_commission_amount from to_update),
|
||||
nicer_zeroes as (
|
||||
select rowid,
|
||||
case new_commission_amount
|
||||
-- 0.0000000000000000000000000000000000000000 to 0
|
||||
when 0.0000 then 0
|
||||
-- 0.0826446280991735537190000000000000000000 to 10 decimals
|
||||
else round(new_commission_amount, 10)
|
||||
end as new_value
|
||||
from to_update)
|
||||
update order_rows
|
||||
set commission_amount = new_value
|
||||
from nicer_zeroes
|
||||
where order_rows.id = rowid
|
||||
|
||||
Reference in New Issue
Block a user