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
    
    
    
        merge into ac_pick ap
        using (
        select pk_id,pk_member,sum(used_quantity) used_quantity from (
        
            select
            #{item.pkId} PK_ID,
            #{item.pkMember} PK_MEMBER,
            #{item.usedQuantity} used_quantity
            from dual
        )
        group by pk_id,pk_member
        ) tmp
        on (tmp.PK_ID = ap.PK_ID)
        WHEN MATCHED THEN
        update
        set ap.USABLE_QUANTITY = ap.USABLE_QUANTITY - tmp.used_quantity,
        ap.USED_QUANTITY = ap.USED_QUANTITY + tmp.used_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},
        ap.used_quantity = ap.used_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.used_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.pk_modified = #{acPick.pkModified},
        ap.modified_time = sysdate
        where ap.del_flag = 0
        and ap.PK_ID = #{acPick.pkId}
        and ap.RECEIVE_TIME = #{acPick.receiveTime}
        
            and ap.IS_FREE_MAIL = #{acPick.isFreeMail}
        
        and ap.PK_POSTAGE = #{acPick.pkPostage}
        and ap.USABLE_QUANTITY + #{acPick.usableQuantity} > 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 = nvl(ap.usable_quantity, 0) + #{usableQuantity},
            ap.MODIFIED_TIME   = sysdate
        where ap.del_flag = 0
          and ap.pick_type = 7
          and ap.pk_base_config = 0
          and ap.pk_data_id = #{pkProduct}
          and ap.pk_member = #{pkMember}
    
    
    
        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