select psvs_id, psv_id, sc_id, product_code, psd_id, sc_name, fee_type, charge_type,
charge_value, currency, round_mode, country_code, sc_note,
created_by, create_time, updated_by, update_time
from prc_price_set_version_surcharge
insert into prc_price_set_version_surcharge (
psv_id,
psd_id,
sc_id,
product_code,
sc_name,
fee_type,
charge_type,
charge_value,
currency,
round_mode,
country_code,
sc_note,
created_by,
create_time
) values (
#{psvId},
#{psdId},
#{scId},
#{productCode},
#{scName},
#{feeType},
#{chargeType},
#{chargeValue},
#{currency},
#{roundMode},
#{countryCode},
#{scNote},
#{createBy},
sysdate()
)
update prc_price_set_version_surcharge
psd_id = #{psdId},
sc_id = #{scId},
product_code = #{productCode},
sc_name = #{scName},
fee_type = #{feeType},
charge_type = #{chargeType},
charge_value = #{chargeValue},
currency = #{currency},
round_mode = #{roundMode},
country_code = #{countryCode},
sc_note = #{scNote},
updated_by = #{updateBy},
update_time = sysdate()
where psvs_id = #{psvsId}
delete from prc_price_set_version_surcharge where psvs_id in
#{psvsId}
delete from prc_price_set_version_surcharge where psv_id = #{psvId}
delete from prc_price_set_version_surcharge where psd_id = #{psdId}
insert into prc_price_set_version_surcharge (
psv_id, psd_id, sc_id, product_code, sc_name, fee_type, charge_type,
charge_value, currency, round_mode, country_code, sc_note,
created_by, create_time
)
select
d.psv_id,
d.psd_id,
r.sc_id,
d.product_code,
s.sc_name,
ifnull(nullif(s.fee_type, ''), 'SURCHARGE'),
ifnull(nullif(s.charge_type, ''), 'FIXED'),
s.charge_value,
ifnull(nullif(s.currency, ''), 'CNY'),
ifnull(nullif(s.round_mode, ''), 'HALF_UP'),
s.country_code,
s.sc_note,
#{createBy},
sysdate()
from prc_price_set_detail d
inner join prc_surcharge_rel r on r.product_code = d.product_code
inner join prc_surcharge s on s.sc_id = r.sc_id
where d.psv_id = #{psvId}
and ifnull(s.sc_name, '') <> ''
and s.charge_value is not null
and lower(ifnull(s.ss_code, '')) not in ('of', 'vd')
and (r.detail_id is null or r.detail_id = d.product_country_id)
and (
s.country_code is null or s.country_code = ''
or d.country_code is null or d.country_code = ''
or upper(s.country_code) = upper(d.country_code)
)
insert into prc_price_set_version_surcharge (
psv_id, psd_id, sc_id, product_code, sc_name, fee_type, charge_type,
charge_value, currency, round_mode, country_code, sc_note,
created_by, create_time
)
select
#{newPsvId},
nd.psd_id,
sc.sc_id,
sc.product_code,
sc.sc_name,
sc.fee_type,
sc.charge_type,
sc.charge_value,
sc.currency,
sc.round_mode,
sc.country_code,
sc.sc_note,
#{createBy},
sysdate()
from prc_price_set_version_surcharge sc
inner join prc_price_set_detail od
on od.psd_id = sc.psd_id and od.psv_id = #{srcPsvId}
inner join prc_price_set_detail nd
on nd.psv_id = #{newPsvId}
and nd.product_code = od.product_code
and ifnull(nd.country_code, '') = ifnull(od.country_code, '')
and ifnull(nd.zone_code, '') = ifnull(od.zone_code, '')
and ifnull(nd.weight_label, '') = ifnull(od.weight_label, '')
and ifnull(nd.product_country_id, 0) = ifnull(od.product_country_id, 0)
and ifnull(nd.discount_value, -1) = ifnull(od.discount_value, -1)
where sc.psv_id = #{srcPsvId}