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}