Показать сообщение отдельно
Старый 16.01.2013, 18:13   #1
ЕНЫ
Эксперт
Аватар для ЕНЫ
OFFLINE
Регистрация: 05.12.2011
Возраст: 31
Сообщений: 863
Благодарностей:
449 всего
Мнения: + 3909
Репутация: 1345
Отправить сообщение для ЕНЫ с помощью Skype™

Billing System 2.2.3 [ Fix ]


Биллинговая система РФ (Премиум + кеш шоп)+ фикс: Переписанная процедура на покупку вещи. Дюп кеш вещей больше не работает.
Сначала ставим базу из архива потом фикс.


Код:
USE [BILLING] 
GO 
 
/****** Object:  StoredProcedure [dbo].[RF_ChargeBalance] by TriRozhka   Script Date: 02/19/2010 15:25:25 ******/ 
SET ANSI_NULLS ON 
GO 
 
SET QUOTED_IDENTIFIER ON 
GO 
 
ALTER PROCEDURE [dbo].[RF_ChargeBalance] 
    @s_userid    varchar(12) 
,    @s_character varchar(50) 
,    @s_pscode     varchar(20) 
,    @s_quantity int 
,    @s_server     varchar (50) 
,    @s_scode     bigint 
,    @s_price     int 
,    @s_dcrate     int 
,    @p9 int output 
AS 
 
set nocount on 
 
DECLARE 
@totalAmount int,
@cashBalance int 
 
select @cashBalance=Cash from tbl_user where UserID=@s_userid 
set @totalAmount=@s_price*@s_quantity 
if @@error <> 0 or @s_quantity < 1 or @s_quantity >99 or @s_price < 1 
 begin 
  set @p9 = 0 
  return 
 end 
else 
 if @s_dcrate < 100 and (@totalAmount*((100-@s_dcrate)/100)) <= @cashBalance 
  begin 
   set @p9 = 1 
   set @cashBalance=@cashbalance-(@totalAmount*((100-@s_dcrate)/100)) 
   insert into tbl_cashlogrf (userid,character,pscode,quantity,server,scode,price,dcrate,status) 
   values (@s_userid,@s_character,@s_pscode,@s_quantity,@s_server,@s_scode,@s_price,@s_dcrate,@p9) 
   update tbl_user set Cash = @cashBalance where UserID = @s_userid 
   return 
  end 
 else 
  if (@cashbalance + @s_dcrate) >= @totalAmount 
   begin 
    set @p9 = 1 
    set @cashBalance=@cashbalance-@totalAmount+@s_dcrate 
    insert into tbl_cashlogrf (userid,character,pscode,quantity,server,scode,price,dcrate,status) 
    values (@s_userid,@s_character,@s_pscode,@s_quantity,@s_server,@s_scode,@s_price,@s_dcrate,@p9) 
    update tbl_user set Cash = @cashBalance where UserID = @s_userid 
    return 
   end 
  else 
   begin 
    set @p9 = 0 
    return 
   end 
 
GO
Так же реализована система скидок. значение скидки идёт под переменной @s_dcrate.
У меня всё что меньше 100 считается как скидка по % всё что больше 100 считается как скидка в кредитах.
Напоминаю что скидка по монетам не должна превышать 10% от стоимости покупки. В противном случае сервер не даст реализовать покупку.


После создания базы BILLING я удалил таблицу user и воссоздал заново добавив в столбец ID автоинкремент



//NetSoul
 
Ответить с цитированием
Сказали спасибо:
mazix (24.03.2013), 0rlangyr (20.01.2013), dnc-dante (17.01.2013)