Files
database/migrations/archive/000.355.sql
T
Rikard BartholfandGitHub ddcbd0afb0 Archive old migrations (#426)
* Archive old migrations

* Fix invalid placement of migrations
2024-10-17 11:19:12 +02:00

48 lines
1.8 KiB
SQL

-- 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