update AC_PICK ap
set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY + #{quantity},
ap.RECEIVE_TIME = #{receiveTime},
ap.IS_FREE_MAIL = 1,
ap.PK_POSTAGE = #{pkPostage},
ap.PK_POSTAGE = 0,
ap.pk_modified = #{pkModified},
ap.modified_time = sysdate
where ap.del_flag = 0
and ap.PICK_TYPE = #{pickType}
and ap.PK_BASE_CONFIG = #{pkBaseConfig}
and ap.PK_DATA_ID = #{pkDataId}
and ap.PK_MEMBER = #{pkMember}
and ap.USABLE_QUANTITY + #{quantity} > 0
update ac_pick ap
set ap.modified_time = sysdate,
ap.pk_modified = #{pkModified},
ap.usable_quantity = ap.usable_quantity - #{quantity}
where ap.del_flag = 0
and ap.pk_member = #{pkMember}
and ap.pick_type = #{pickType}
and ap.pk_base_config = #{pkBaseConfig}
and ap.pk_data_id = #{pkDataId}
and ap.usable_quantity - #{quantity} >= 0
update AC_PICK ap
set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY + #{acPick.usableQuantity},
ap.receive_time = #{acPick.receiveTime},
ap.is_free_mail = #{acPick.isFreeMail},
ap.pk_postage = #{acPick.pkPostage},
ap.pk_postage = null,
ap.BASE_QUANTITY = #{acPick.baseQuantity},
ap.pk_modified = #{acPick.pkModified},
ap.modified_time = sysdate
where ap.del_flag = 0
and ap.PK_ID = #{acPick.pkId}
update AC_PICK ap
set ap.del_flag = 1,
ap.pk_modified = #{acPick.pkModified},
ap.modified_time = sysdate
where ap.del_flag = 0
and ap.PK_ID = #{acPick.pkId}
merge into AC_PICK ap
using (
select #{items.pkMember} pk_member,
#{items.pickType} pick_type,
#{items.pkDataId} pk_data_id,
#{items.specsName} specs_name,
#{items.specsNameId} specs_name_id,
#{items.usableQuantity} usable_quantity,
#{items.baseQuantity} base_quantity,
#{items.pkCreator} pk_creator
from dual
) tmp
on (tmp.pk_member = ap.pk_member and tmp.pick_type = ap.pick_type and tmp.pk_data_id = ap.pk_data_id
and tmp.specs_name = ap.specs_name and ap.specs_name_id = ap.specs_name_id and tmp.base_quantity = ap.base_quantity)
WHEN NOT MATCHED THEN
insert
(pk_id,
pk_member,
pick_type,
pk_data_id,
specs_name,
specs_name_id,
usable_quantity,
pk_creator,
base_quantity)
values (ac_pick_seq.nextval,
tmp.pk_member,
tmp.pick_type,
tmp.pk_data_id,
tmp.specs_name,
tmp.specs_name_id,
tmp.usable_quantity,
tmp.pk_creator,
tmp.base_quantity)
WHEN MATCHED THEN
update set ap.usable_quantity = ap.usable_quantity + tmp.usable_quantity
update ac_pick ap
set ap.usable_quantity = ap.usable_quantity + #{quantity},
ap.used_quantity = ap.used_quantity - #{quantity},
ap.modified_time = sysdate
where ap.del_flag = 0
and ap.pk_member = #{pkMember}
and ap.pk_id = #{pkId}
and ap.usable_quantity + #{quantity} >= 0