insert ALL
        
            into cu_member_bonus_range(pk_bonus,pk_order,pk_order_items,pk_bonus_items,income_status,
            cal_type,cal_achieve,cal_value,pk_range,pk_before_range,pretax_income,
            income_tax,real_income,remark,
            income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator)
            values
            (
            #{item.pkBonus},#{item.pkOrder},#{item.pkOrderItems},#{item.pkBonusItems},#{item.incomeStatus},
            #{item.calType},#{item.calAchieve},#{item.calValue},#{item.pkRange},#{item.pkBeforeRange},
            #{item.pretaxIncome},#{item.incomeTax},#{item.realIncome},
            #{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio},
            #{item.pkCountry},#{item.pkCreator}
            )
         
        SELECT 1 FROM dual
     
    
        delete
        from CU_MEMBER_BONUS_RANGE
        where PK_BONUS in (
            select pk_id
            from cu_member_bonus
            where period = #{period} and grant_status <= 2)
     
    
        select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
        cu.member_code source_member_code,cu.member_name source_member_name,so.pk_rate,so.pk_country pk_source_country,bc.out_exchange_rate,so.order_amount,
        so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
        tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction pk_awards,bv.vertex_name,ct.team_name,
        b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,
        cu.service_code,
        cu.pk_vertex,
        cu.nick_name from sa_order so
        inner join (
        select cb.pk_member,cr.pk_order,cb.period,cb.pk_country,cr.pk_bonus_items,cr.income_status,cr.CAL_ACHIEVE,cr.pretax_income,cr.income_tax,cr.real_income,
        cr.remark,cr.income_ratio,cr.income_dial_ratio,cr.order_dial_ratio from cu_member_bonus cb
        inner join cu_member_bonus_range cr
        on cb.pk_id = cr.pk_bonus
        where cb.income_status=0 and cr.income_status = 0
        and cr.pk_bonus_items = #{pkBonusItems}
        
            and cr.pk_bonus = #{pkBonus}
         
        
            and cb.period =#{period}
         
        ) b
        on so.pk_id = b.pk_order
        inner join cu_member tar
        on b.pk_member = tar.pk_id
        inner join cu_member cu
        on so.pk_member = cu.pk_id
        inner join cu_member_settle_period cp
        on b.period = cp.pk_id
        left join bd_vertex bv
        on bv.pk_id = tar.pk_vertex
        left join cu_member_team ct
        on ct.pk_id = tar.pk_team_code
        left join bd_currency bc
        on bc.pk_id=so.pk_rate
        left join bd_grade bg
        on bg.pk_id=tar.pk_settle_grade
        left join bd_awards ba
        on ba.pk_id=tar.pk_awards
        left join bd_country bt
        on bt.pk_id=so.pk_country
        
            1=1 and b.pk_member=#{pkMember}
            
                and so.order_code like #{orderCode}|| '%'
             
            
                and (cu.member_code = #{sourceMemberCode} or cu.service_code = #{sourceMemberCode})
             
            
                and (cu.member_name = #{sourceMemberName} or cu.nick_name = #{sourceMemberName})
             
            
                and cp.settle_date >= #{startDate, jdbcType=DATE}
             
            
                and cp.settle_date < #{endDate, jdbcType=DATE}
             
         
        order by b.period,b.pk_bonus_items,b.real_income desc
     
    
        select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
        cu.member_code source_member_code,cu.member_name source_member_name,so.pk_rate,bc.out_exchange_rate,so.order_amount,
        so.order_achieve,b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
        tar.member_code,tar.member_name,bg.pk_transaction pk_settle_grade,ba.pk_transaction pk_awards,bv.vertex_name,ct.team_name,
        b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,bct.short_name settle_country from (
        select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_order
        union
        select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_t_order
        ) so
        inner join (
        select cb.pk_member,cr.pk_order,cb.period,cb.pk_country,cr.pk_bonus_items,cr.income_status,cr.CAL_ACHIEVE,cr.pretax_income,cr.income_tax,cr.real_income,
        cr.remark,cr.income_ratio,cr.income_dial_ratio,cr.order_dial_ratio from
        cu_member_bonus cb
        inner join CU_MEMBER_BONUS_RANGE cr
        on cb.pk_id = cr.pk_bonus
        where 1=1
        
            and cb.period =#{bonusParam.period}
         
        
            and exists(
            select 1 from (
            
                select pk_id from cu_member
                where del_flag=0 and PAY_STATUS=1
                start with pk_id = #{item}
                connect by pk_parent = prior pk_id
             
            
                union
                
                    select pk_id from cu_member
                    where del_flag=0 and PAY_STATUS=1
                    start with pk_id = #{item}
                    connect by pk_parent = prior pk_id
                 
             
            ) a
            where a.pk_id = cb.pk_member
            )
         
        ) b
        on so.pk_id = b.pk_order
        inner join cu_member tar
        on b.pk_member = tar.pk_id
        inner join cu_member cu
        on so.pk_member = cu.pk_id
        inner join cu_member_settle_period cp
        on b.period = cp.pk_id
        left join bd_vertex bv
        on bv.pk_id = tar.pk_vertex
        left join cu_member_team ct
        on ct.pk_id = tar.pk_team_code
        left join bd_currency bc
        on bc.pk_id=so.pk_rate
        left join bd_grade bg
        on bg.pk_id=tar.pk_settle_grade
        left join bd_awards ba
        on ba.pk_id=tar.pk_awards
        left join bd_country bt
        on bt.pk_id=so.pk_country
        left join bd_country bct
        on bct.pk_id=tar.pk_settle_country
        
            1=1
            
                and tar.pk_settle_country = #{bonusParam.pkCountry}
             
            
                and so.order_type = #{bonusParam.orderType}
             
            
                and bv.pk_id = #{bonusParam.pkVertex}
             
            
                and ct.pk_id =#{bonusParam.pkTeamCode}
             
            
                and bt.pk_id = #{bonusParam.sourceCountry}
             
            
                and b.income_status = #{bonusParam.incomeStatus}
             
            
                and so.order_code like #{bonusParam.orderCode}|| '%'
             
            
                and cu.member_code = #{bonusParam.sourceMemberCode}
             
            
                and cu.member_name = #{bonusParam.sourceMemberName}
             
            
                and tar.member_code = #{bonusParam.memberCode}
             
            
                and tar.member_name = #{bonusParam.memberName}
             
            
                and tar.pk_settle_country = #{bonusParam.settleCountry}
             
            
                and cp.settle_date >=#{bonusParam.startDate, jdbcType=DATE}
             
            
                and cp.settle_date <#{bonusParam.endDate, jdbcType=DATE}
             
         
        
            order by cp.settle_date desc, b.real_income desc 
            order by tar.pk_vertex, b.real_income desc 
            order by tar.pk_teamcode