思迅商云8会员积分全部清0
请您备份数据库后执行以下语句:
declare @card_id varchar(20),
@acc_num numeric(16,4),
@dec_num numeric(16,4),
@minus_num numeric(16,4),
@branch_no varchar(4),
@count int
select @branch_no=sys_var_value from t_sys_system where sys_var_id='g_branch_no'
--定义游标
declare temp_dec_vip cursor for
select card_id,acc_num,dec_num
from t_rm_vip_info
where acc_num-dec_num<>0 --剩余积分不为
and card_type in (select type_id from t_rm_vip_type where acc_flag='0') ;--and card_id='在此输入会员档案的会员号';
open temp_dec_vip;
fetch temp_dec_vip into @card_id,@acc_num,@dec_num;
while @@fetch_status=0
begin
select @minus_num = @acc_num - @dec_num
if @minus_num>0 --积分为正数,写入积分冲减记录
begin
--写积分冲减流水
insert into t_rm_vip_good_flow(vgf_branch_no, vgf_vip_no, vgf_flag, vgf_item_no, vgf_item_num, vgf_vip_num, vgf_oper, vgf_date, memo)
values (@branch_no , @card_id, '1', '', 0, @minus_num, '1001', getdate(), '积分清零-冲减积分' )
--更新会员档案已冲减积分
update t_rm_vip_info set dec_num=dec_num + @minus_num where card_id=@card_id
--更新积分明细已冲减积分
select @count = 0
select @count=count(*) from t_rm_vip_consume where card_id = @card_id and branch_no = @branch_no
If @count > 0
Update t_rm_vip_consume Set vip_minus_total = isnull(vip_minus_total,0) +@minus_num,com_flag = '0'
Where card_id = @card_id and branch_no =@branch_no
Else
Insert t_rm_vip_consume (card_id,branch_no,com_flag,vip_minus_total)
Values (@card_id,@branch_no,'0',@minus_num)
end
else --积分为负数,写入积分奖励记录
begin
insert into t_rm_vip_good_flow(vgf_branch_no, vgf_vip_no, vgf_flag, vgf_item_no, vgf_item_num, vgf_vip_num, vgf_oper, vgf_date, memo)
values (@branch_no , @card_id, '3', '', 0, @minus_num, '1001', getdate(), '积分清零-奖励积分' )
--档案积分清零
update t_rm_vip_info set dec_num=dec_num + @minus_num where card_id=@card_id
select @count = 0 --获取t_rm_vip_consume的行数
select @count=count(*) from t_rm_vip_consume where card_id = @card_id and branch_no = @branch_no
If @count > 0
Update t_rm_vip_consume Set vip_acc_amount = isnull(vip_acc_amount,0) +@minus_num,com_flag = '0'
Where card_id = @card_id and branch_no =@branch_no
Else --t_rm_vip_consume记录不存在,插入t_rm_vip_consum记录
Insert t_rm_vip_consume (card_id,branch_no,com_flag,vip_acc_amount)
Values (@card_id,@branch_no,'0',@minus_num)
end
fetch temp_dec_vip into @card_id,@acc_num,@dec_num
end
close temp_dec_vip
deallocate temp_dec_vip
go