Опытный
 
Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003
Репутация: нет Всего: -1
|
Спасибо за ответ! | Код | OperexchADD:BEGIN
DECLARE GetOrderNum int(4); DECLARE PfToPlus, ArmyPayPlus INT(10); DECLARE get_cur_user_ball, get_cur_user_coming, get_cur_user_cons INT (20); DECLARE get_cod_u_ball, get_cod_u_coming, get_cod_u_cons INT (20); DECLARE BalNew_CCY, ComNew_CCY, COnsNew_CCY, BalNew_UAH, ComNew_UAH, ConsNew_UAH INT (10);
IF (select count(*) from exchange.tmp_con WHERE connection_id = connection_id())>0 THEN UPDATE exchange.tmp_con SET user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) WHERE connection_id = connection_id(); else INSERT INTO exchange.tmp_con (connection_id, user_id) VALUES (connection_id(), (SELECT user_id FROM main.sid WHERE session_id = sid_ins)); END IF;
SET @PfToPlus=0; SET @ArmyPayPlus=0;
if (OperType_ins = 2 and (SELECT value FROM main.settings WHERE `keys` = 'PF_buy') = 1) THEN SET @PfToPlus=PfUAH_ins*100; END IF; if (OperType_ins = 3 and (SELECT value FROM main.settings WHERE `keys` = 'PF_sell') = 1) THEN SET @PfToPlus=PfUAH_ins*100; END IF;
if (OperType_ins = 2 and (SELECT value FROM main.settings WHERE `keys` = 'PF_buy') = 1) THEN SET @ArmyPayPlus=ArmyPay_ins*100; END IF; if (OperType_ins = 3 and (SELECT value FROM main.settings WHERE `keys` = 'PF_sell') = 1) THEN SET @ArmyPayPlus=ArmyPay_ins*100; END IF;
IF (SELECT user_id FROM main.sid WHERE session_id = sid_ins) !=0 THEN
SELECT curo.balance, curo.coming, curo.cons INTO get_cur_user_ball, get_cur_user_coming, get_cur_user_cons FROM cur_oper_day curo WHERE curo.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and curo.ccy_id = (SELECT id FROM ccy WHERE ccy = CCYtoEx_ins);
SELECT cod_u.balance, cod_u.coming, cod_u.cons INTO get_cod_u_ball, get_cod_u_coming, get_cod_u_cons FROM cur_oper_day cod_u WHERE cod_u.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and cod_u.ccy_id = 1;
SET @GetOrderNum = (SELECT COUNT(*) FROM operexch a WHERE a.branch_id = BranchId_ins and a.office_id = OfficeId_ins and a.OperDate = concat ( SUBSTRING_INDEX(SUBSTRING_INDEX(OperDate_ins, '.', 3), '.', -1), "-", SUBSTRING_INDEX(SUBSTRING_INDEX(OperDate_ins, '.', 2), '.', -1), "-", SUBSTRING_INDEX(OperDate_ins, '.', 1)) and a.`status` not in (14))+1;
IF OperType_ins = 2 THEN
SELECT (a.balance + (CCYSum_ins*100)), (a.coming + (CCYSum_ins*100)) INTO BalNew_CCY, ComNew_CCY FROM cur_oper_day a WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = (SELECT id FROM ccy WHERE ccy = CCYtoEx_ins);
SELECT ( a.balance - (SymToColl_ins*100)), (a.cons + (SymToColl_ins*100)) INTO BalNew_UAH, ConsNew_UAH FROM cur_oper_day a WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = 1;
if ( BalNew_CCY is null) or (BalNew_CCY < 0) then SELECT 'erorr_msg', '<html> <font color="red"> ball val err </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
if ( ComNew_CCY is null) or (ComNew_CCY < 0) then SELECT 'erorr_msg', '<html> <font color="red"> com err </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
if ( BalNew_UAH is null) or (BalNew_UAH < 0) then SELECT 'erorr_msg', '<html> <font color="red"> bal uah err </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
if ( ConsNew_UAH is null) or (ConsNew_UAH < 0) then SELECT 'erorr_msg', '<html> <font color="red"> cons err </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
UPDATE cur_oper_day a SET a.balance = (a.balance + (CCYSum_ins*100)), a.coming = (a.coming + (CCYSum_ins*100)) WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = (SELECT id FROM ccy WHERE ccy = CCYtoEx_ins); UPDATE cur_oper_day a SET a.balance = ( a.balance - (SymToColl_ins*100)), a.cons = (a.cons + (SymToColl_ins*100)) WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = 1; END IF;
IF OperType_ins = 3 THEN
SELECT (a.balance - (CCYSum_ins*100)), (a.cons + (CCYSum_ins*100)) INTO BalNew_CCY, COnsNew_CCY FROM cur_oper_day a WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = (SELECT id FROM ccy WHERE ccy = CCYtoEx_ins);
SELECT (a.balance + (SymToColl_ins*100) + @PfToPlus + @ArmyPayPlus), (a.coming + (SymToColl_ins*100) + @PfToPlus + @ArmyPayPlus) INTO BalNew_UAH, ComNew_UAH FROM cur_oper_day a WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = 1;
if ( BalNew_CCY is null) or (BalNew_CCY < 0) then SELECT 'erorr_msg', '<html> <font color="red"> ball val err </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
if ( COnsNew_CCY is null) or (COnsNew_CCY < 0) then SELECT 'erorr_msg', '<html> <font color="red"> cons err </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
if ( BalNew_UAH is null) or (BalNew_UAH < 0) then SELECT 'erorr_msg', '<html> <font color="red"> bal uah </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
if ( ComNew_UAH is null) or (ComNew_UAH < 0) then SELECT 'erorr_msg', '<html> <font color="red"> Com err </font> </html>' as 'msg'; LEAVE OperexchADD; end if;
UPDATE cur_oper_day a SET a.balance = (a.balance - (CCYSum_ins*100)), a.cons = (a.cons + (CCYSum_ins*100)) WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = (SELECT id FROM ccy WHERE ccy = CCYtoEx_ins); UPDATE cur_oper_day a SET a.balance = (a.balance + (SymToColl_ins*100) + @PfToPlus + @ArmyPayPlus), a.coming = (a.coming + (SymToColl_ins*100) + @PfToPlus + @ArmyPayPlus) WHERE a.user_id = (SELECT user_id FROM main.sid WHERE session_id = sid_ins) and a.ccy_id = 1;
END IF;
INSERT INTO operexch (`user_id`, `CCYPf`, `branch_id`, `office_id`, `OperDate`, `PfUAH`, `ArmyPay`,`CustId`, `CCYtoEx`, `SymToColl`, `OperType`, `OrderNum`, `CtimeSend`, `CtimeAdd`, `CCYRate`, `CCYSum`, `CrtNum`,`status`, time) VALUES ((SELECT user_id FROM main.sid WHERE session_id = sid_ins), CCYPf_ins*100, BranchId_ins, OfficeId_ins,
concat ( SUBSTRING_INDEX(SUBSTRING_INDEX(OperDate_ins, '.', 3), '.', -1), "-", SUBSTRING_INDEX(SUBSTRING_INDEX(OperDate_ins, '.', 2), '.', -1), "-", SUBSTRING_INDEX(OperDate_ins, '.', 1)), PfUAH_ins*100, ArmyPay_ins*100,CustId_ins, (SELECT id FROM ccy WHERE ccy = CCYtoEx_ins), SymToColl_ins*100, OperType_ins, @GetOrderNum, CtimeSend_ins, NOW(), CCYRate_ins, CCYSum_ins*100, CrtNum_ins, 10, UNIX_TIMESTAMP ());
SELECT "LoadExch_ok", @GetOrderNum as "OrderNum";
ELSE
SELECT "auth_err";
END IF;
END
|
|