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 merge into ac_pick ap using ( select #{item.pkId} PK_ID, #{item.pkMember} PK_MEMBER from dual ) tmp on (tmp.PK_ID = ap.PK_ID) WHEN MATCHED THEN update set ap.USABLE_QUANTITY = USABLE_QUANTITY - #{quantity}, ap.USED_QUANTITY = USED_QUANTITY + #{quantity}, ap.pk_modified = tmp.pk_member, ap.modified_time = sysdate update AC_PICK ap set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY - #{quantity}, ap.USED_QUANTITY = ap.USED_QUANTITY + #{quantity}, ap.pk_modified = #{pkModified}, ap.modified_time = sysdate where ap.del_flag = 0 and ap.pk_id = #{pkId} 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 pk_member,pk_pick,sum(PICK_QUANTITY) PICK_QUANTITY from( select #{item.pkMember} PK_MEMBER, #{item.pkPick} PK_PICK, #{item.pickQuantity} PICK_QUANTITY from dual ) group by pk_member,pk_pick ) tmp on (tmp.PK_PICK = ap.PK_ID) WHEN MATCHED THEN update set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY + tmp.PICK_QUANTITY, ap.USED_QUANTITY = ap.USED_QUANTITY -tmp.PICK_QUANTITY, ap.pk_modified = tmp.pk_member, ap.modified_time = sysdate update ac_pick ap set ap.usable_quantity = ap.usable_quantity - nvl((select sum(soi.quantity) from sa_order_items soi where soi.pk_order = #{pkOrder} and soi.is_gift = 0 and soi.pk_product = ap.pk_data_id), 0) where ap.del_flag = 0 and ap.pk_member = #{pkMember} and ap.pick_type = 8