CREATE PROCEDURE dbo.%PROC% @sid VARCHAR(30) = NULL AS DECLARE @action_id NUMERIC, @id NUMERIC, @user_id NUMERIC, @state_id NUMERIC, @new_state_id NUMERIC, @type_id NUMERIC BEGIN TRAN .TRANSACTION_SAVE CREATE TABLE #t_opers ( saldo MONEY, deb_or_cred INT, investor_id NUMERIC, portfolio_sub_id NUMERIC, portfolio_id NUMERIC, asset_place_id NUMERIC, depo_subacc_id NUMERIC, stock_id NUMERIC ) BEGIN TRAN SELECT @action_id = %ACTION_ID% SET @id = CONVERT(NUMERIC, @sid) .CHECK_USER .CHECK_UPDATE .GET_PROPS .INT_VAR(@pay_perpose) .ASSIGN(@pay_perpose,((SELECT code FROM t_purposes WHERE id = @perpose_id))) SELECT @check_data=(ISNULL(@check_data,@in_date)) IF @pay_perpose NOT IN (47) SELECT @check_data=@in_date --Приймкак для дойче с приветом IF @pay_perpose IN (45, 47, 52) BEGIN .MOVE_STATE('ON_EXEC') END ELSE BEGIN .UPDATE_STATE END .ACTION_HISTORY /*-------Проводки ----------*/ .INT_VAR(@is_proc) .ID_VAR(@organisation_id) .DATE_VAR(@oper_date) .ID_VAR(@money_plan_cur_id) -- ID плана счетов по ДС /* Богаковский 07/07/2004 закомментарил .MONEY_VAR(@nkd_sum) .MONEY_VAR(@out_sum) .MONEY_VAR(@out_qty) .MONEY_VAR(@sum) */ /* Богаковский 07/07/2004 добавил */ DECLARE @nkd_sum DECIMAL(18,2), @out_sum DECIMAL(18,2), @out_qty DECIMAL(18,2), @sum DECIMAL(18,2) /*********************************/ .ID_VAR(@character_id) .ID_VAR(@client_contract_id) .INT_VAR(@fin_result) .INT_VAR(@is_margin) .INT_VAR(@is_allow_short4client_money) .NAME_VAR(@subc_str_bal) .ID_VAR(@money_acc_id) .ID_VAR(@stock_acc_id) .ID_VAR(@pnkd_acc_id) .ID_VAR(@unkd_acc_id) .ID_VAR(@bank_account_id) .ID_VAR(@profit_acc_id) .ID_VAR(@our_fond_acc_id) .ID_VAR(@client_fond_acc_id) .ID_VAR(@client_unkd_acc_id) .ID_VAR(@client_pnkd_acc_id) .ID_VAR(@long_acc_id) .ID_VAR(@partion_id) .ID_VAR(@client_fond_secur_acc_id) .ID_VAR(@client_ovr_acc_id) .ID_VAR(@d_coupon_acc_id) .ID_VAR(@c_coupon_acc_id) DECLARE @mess VARCHAR(255) DECLARE @plan_secur_id NUMERIC DECLARE @plan_money_id NUMERIC DECLARE @out_method NUMERIC DECLARE @new_qty MONEY DECLARE @sum_ou_total MONEY DECLARE @qty_ou_total MONEY DECLARE @sum_unkd_ou_total MONEY DECLARE @ovr_sum MONEY DECLARE @is_realiz INT, @is_p2l_comis INT, @is_com_in INT, @is_allow_short4stocks INT, @is_allow_short4money INT, @asset4pereoc_type_id NUMERIC, @deb_acc_id NUMERIC, -- ID счета по дебету @cred_acc_id NUMERIC -- ID счета по кредиту .ID_VAR(@bank_money_acc_id) .ID_VAR(@bank_pnkd_acc_id) .ID_VAR(@bank_unkd_acc_id) .ID_VAR(@bank_profit_acc_id) .ID_VAR(@sint_plan_id) .ID_VAR(@sint_plan_cur_id) .ID_VAR(@is_sint) .NAME_VAR(@sec_class) .NAME_VAR(@em_class) .ID_VAR(@bank_ovr_acc_id) .ID_VAR(@em_partner_id) .NAME_VAR(@doc_sec_code) .ID_VAR(@doc_sec_type_id) .MONEY_VAR(@last_price) .MONEY_VAR(@deal_in_price) .ID_VAR(@str_id) .MONEY_VAR(@bank_ovr_sum) .MONEY_VAR(@unkd_qty_total) .MONEY_VAR(@sum_com_in_total) .INT_VAR(@proc_state) .ID_VAR(@res_char_id) --------- Банк .MONEY_VAR(@bank_unkd_sum) .MONEY_VAR(@unkd_qty_total_full) .MONEY_VAR(@bank_sum) .MONEY_VAR(@bank_bal_sum) .MONEY_VAR(@bank_qty) .MONEY_VAR(@bank_pnkd_sum) .MONEY_VAR(@bank_profit_sum) .MONEY_VAR(@bank_sum_in) .MONEY_VAR(@bank_qty_in) .MONEY_VAR(@bank_sum_unkd_in) .INT_VAR(@is_client_resident) .ID_VAR(@client_id) ---------------------- .NAME_VAR(@perpose_name) .ID_VAR(@emmitent_id) .ID_VAR(@contragent_id) DECLARE @ssb_acc_eff_num VARCHAR(255) DECLARE @sec_plan2partner_id NUMERIC DECLARE @mon_plan2partner_id NUMERIC DECLARE @place_class_id NUMERIC .ID_VAR(@ssb_inv_subc_type_id) .ID_VAR(@ssb_invsub_subc_type_id) .ID_VAR(@ssb_place_subc_type_id) .ID_VAR(@ssb_portf_subc_type_id) .ID_VAR(@ssb_doc_subc_type_id) .ID_VAR(@ssb_doc_in_subc_type_id) .ID_VAR(@ssb_depo_subacc_subc_type_id) .ID_VAR(@ssc_acc_id) DECLARE @ssc_saldo_qty MONEY DECLARE @ssc_saldo MONEY DECLARE @ssc_saldo_sum MONEY DECLARE @ss_saldo MONEY DECLARE @ss_saldo_qty MONEY DECLARE @ss_doc_id NUMERIC .ID_VAR(@ssc_inv_id) -- Инвестор .ID_VAR(@ssc_subc_id) -- Раздел учета .ID_VAR(@ssc_portfolio_id) -- Портфель .ID_VAR(@ssc_place_id) -- Место нахождения актива .ID_VAR(@ssc_doc_id) -- Сделка с цб .ID_VAR(@ssc_doc_sec_in_id) .ID_VAR(@partner_id) -- Контрагент .ID_VAR(@home_depo_acc_class_id) -- Класс счета ДЕПО .ID_VAR(@ssc_depo_subacc_id) -- Раздел счета ДЕПО .ID_VAR(@home_place_class_id) .ID_VAR(@home_object_id) .ID_VAR(@ssb_stock_subc_type_id) DECLARE @money_subc_str VARCHAR(255) DECLARE @home_subc_str VARCHAR(255) DECLARE @h_subc_str VARCHAR(255) DECLARE @ext_subc_str VARCHAR(255) DECLARE @nkd_subc_str VARCHAR(255) DECLARE @unkd_subc_str VARCHAR(255) DECLARE @p2l_subc_str VARCHAR(255) DECLARE @doc_subc_str VARCHAR(255) DECLARE @stock_home_subc_str VARCHAR(255) DECLARE @sum_out_total MONEY DECLARE @qty_out_total MONEY DECLARE @sum_unkd_out_total MONEY DECLARE @profit_total MONEY DECLARE @rate DECIMAL(18,8) .NAME_VAR(@coupon_no) .DATE_VAR(@date_b) .DATE_VAR(@date_e) .MONEY_VAR(@income_sum) .MONEY_VAR(@income_percent) .INT_VAR(@qty_day_in_year) .ID_VAR(@ssc_inv_old_id) .ID_VAR(@ssc_subc_old_id) .MONEY_VAR(@qty_inv2subc_total) .MONEY_VAR(@bank_sum_plus) .MONEY_VAR(@bank_sum_minus) ---- .ID_VAR(@sav_inv_id) .ID_VAR(@sav_subc_id) .ID_VAR(@sav_place_id) ---- .ID_VAR(@bank_oper_id) DECLARE @close_period_id NUMERIC DECLARE @close_date DATETIME DECLARE @account_fond_id NUMERIC -- ID счета фондов ------------------------------------------------------------------ SET @unkd_qty_total_full = 0 .ASSIGN(@str_id, 1) .ASSIGN(@oper_date, @in_date) -- дата операции = входящей дате документа -- SELECT item_name from t_items where id = @perpose_id SELECT @perpose_name = .ITEM_NAME(@perpose_id) .BACK_GET_ORG_PARMS(@owner_id, @organisation_id, @plan_money_id, @plan_secur_id, @out_method, @is_realiz, @is_p2l_comis, @is_com_in, @is_allow_short4stocks, @is_allow_short4money, @asset4pereoc_type_id) -- SELECT @money_plan_cur_id = (SELECT cur_id from t_plans where id = @plan_money_id) -- валюта плана -- Зачем туда же валюту номинала совать непонятно SELECT @money_plan_cur_id = (.CUR_FROM_STOCK(@stock_id)) -- Проверка синтетического учета IF (.TEST_SINT_ACCOUNTING(@organisation_id)) BEGIN -- Выдает ID плана организации по типу и ID валюты плана .GET_ORG_PLAN(@organisation_id, 1, @sint_plan_id, @sint_plan_cur_id) .ASSIGN(@is_sint, 1) END ELSE BEGIN .ASSIGN(@is_sint, 0) END -- 49: переоценка, 73:начисления КД, 74:итогов торгов, -- 75: резервы под обесценение, 76: резервы на возможные потери, -- 78: перевод котируемости ЦБ IF @pay_perpose IN (49, 73, 74, 75, 76, 78) SET @is_proc = 1 ELSE SET @is_proc = 0 IF @pay_perpose = 73 AND ISNULL(@rate_place_id, 0) = 0 BEGIN SELECT @mess = 'Задайте площадку котировок' .EXIT_MESSAGE(@mess) END --IF @pay_perpose = 49 AND ISNULL(@stock_type_id, 0) = 0 AND ISNULL(@stock_id, 0) = 0 BEGIN -- SELECT @mess = 'Задайте тип ценной бумаги' -- .EXIT_MESSAGE(@mess) --END -------------------------------- IF @is_proc = 0 BEGIN -- получение Id счетов из констант -- 'S.A' .ACCID_FROM_CONST2PLAN(@stock_acc_id, 'BACK_ACC_STOCK_SV', @plan_secur_id, 1, 1, 'ЦБ свободные', @mess) -- '4.4.1' .ACCID_FROM_CONST2PLAN(@pnkd_acc_id, 'BACK_ACC_PNKD', @plan_money_id, 1, 1, 'ПНКД', @mess) -- 3.3.1 .ACCID_FROM_CONST2PLAN(@client_pnkd_acc_id, 'BACK_ACC_CLIENT_PNKD', @plan_money_id, 1, 1, 'ПНКД клиента', @mess) -- 1.0.0 .ACCID_FROM_CONST2PLAN(@long_acc_id, 'BACK_ACC_SECUR_MP_LONG', @plan_money_id, 1, 1, 'Длинная позиция', @mess) -- '4.4.0' .ACCID_FROM_CONST2PLAN(@unkd_acc_id, 'BACK_ACC_UNKD', @plan_money_id, 1, 1, 'УНКД', @mess) -- 3.3.0 .ACCID_FROM_CONST2PLAN(@client_unkd_acc_id, 'BAC_ACC_CLIENT_UNKD', @plan_money_id, 1, 1, 'УНКД клиента', @mess) -- 4.3.0.1 .ACCID_FROM_CONST2PLAN(@profit_acc_id, 'BACK_ACC_PROFIT_BAYSALE_FUTUR', @plan_money_id, 1, 1, 'Прибыль', @mess) -- 3.7.0 .ACCID_FROM_CONST2PLAN(@our_fond_acc_id, 'BACK_ACC_FUND_MONEY', @plan_money_id, 1, 2, 'Собственные фонды ДС', @mess) -- 3.0.9 .ACCID_FROM_CONST2PLAN(@client_fond_acc_id, 'BACK_ACC_FUND_MONEY', @plan_money_id, 1, 3, 'Клиентские фонды ДС', @mess) -- 3.0.0 .ACCID_FROM_CONST2PLAN(@client_fond_secur_acc_id, 'BACK_ACC_FUND_SECUR', @plan_money_id, 1, 3, 'Клиентские фонды ЦБ', @mess) -- Окончание получения Id счетов из констант -- Получаем эмитента SELECT @emmitent_id = emmitent_id FROM td_stock_emis WHERE id = @stock_id -- Контрагент SELECT @contragent_id = partner_id FROM td_emitent_info WHERE id = @emmitent_id -- получение привязок организации к шаблонам планов счетов SELECT @sec_plan2partner_id = .PLAN2PARTNER_ID(@owner_id, @plan_secur_id) SELECT @mon_plan2partner_id = .PLAN2PARTNER_ID(@owner_id, @plan_money_id) -- получение ID типов аналитики SELECT @ssb_inv_subc_type_id = .SUBCTYPE_FROM_CODE('INVESTORS') SELECT @ssb_invsub_subc_type_id = .SUBCTYPE_FROM_CODE('INVESTOR2PORTFOLIO') SELECT @ssb_place_subc_type_id = .SUBCTYPE_FROM_CODE('ASSET_PLACES') SELECT @ssb_portf_subc_type_id = .SUBCTYPE_FROM_CODE('PORTFOLIO') SELECT @ssb_doc_subc_type_id = .SUBCTYPE_FROM_CODE('DOC_SEC') SELECT @ssb_doc_in_subc_type_id = .SUBCTYPE_FROM_CODE('DOC_SEC_IN') SELECT @ssb_depo_subacc_subc_type_id = .SUBCTYPE_FROM_CODE('depo_subacc') SELECT @ssb_stock_subc_type_id = .SUBCTYPE_FROM_CODE('stock_emis') --------Начальные проверки EXEC -- получение номера счета по ЦБ SELECT @ssb_acc_eff_num = acc_num_eff_rep FROM t_accounts WHERE id = @stock_acc_id -- Строка субконто (аналитики) SET @subc_str_bal = '' .SUBC_STR_ADD(@subc_str_bal, 'STOCK_EMIS', @stock_id, Y) .SUBC_STR_ADD(@subc_str_bal, 'ASSET_PLACES', @asset_place_id, Y) -- Начисление дивидендов IF @pay_perpose = 47 BEGIN -- получаем последний закрытый период SELECT @close_period_id = ( SELECT t_periods.id FROM t_periods WHERE t_periods.partner2plan_id = @sec_plan2partner_id AND t_periods.period_date = ( SELECT MAX(period_date) FROM t_periods WHERE period_date <= @date_b ) ) IF @close_period_id IS NOT NULL BEGIN SELECT @close_date = ( SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), period_date, 103), 103) FROM t_periods WHERE id = @close_period_id ) -- Входящие остатки INSERT #t_opers ( saldo, deb_or_cred, investor_id, portfolio_sub_id, portfolio_id, asset_place_id, depo_subacc_id, stock_id ) SELECT saldo, deb_or_cred, inv.item_id, portf_sub.item_id, portf.item_id, asset.item_id, depo_sub.item_id, stock.item_id FROM t_account_history, t_accounts acc, t_acchistory_subconto inv, t_acchistory_subconto portf_sub, t_acchistory_subconto portf, t_acchistory_subconto asset, t_acchistory_subconto depo_sub, t_acchistory_subconto stock WHERE t_account_history.period_id = @close_period_id AND acc.id = t_account_history.acc_id AND acc.acc_num_eff_rep LIKE @ssb_acc_eff_num + '%' AND inv.id = t_account_history.id AND inv.subconto_type_id = @ssb_inv_subc_type_id AND portf_sub.id = t_account_history.id AND portf_sub.subconto_type_id = @ssb_invsub_subc_type_id AND portf.id = t_account_history.id AND portf.subconto_type_id = @ssb_portf_subc_type_id AND asset.id = t_account_history.id AND asset.subconto_type_id = @ssb_place_subc_type_id AND depo_sub.id = t_account_history.id AND depo_sub.subconto_type_id = @ssb_depo_subacc_subc_type_id AND stock.id = t_account_history.id AND stock.subconto_type_id = @ssb_stock_subc_type_id AND ( (stock.item_id = @stock_id) OR (@stock_id IS NULL) ) AND ( (asset.item_id = @asset_place_id) OR (@asset_place_id IS NULL) ) END ELSE --@close_period_id IS NULL SET @close_date = '01/01/1800' INSERT #t_opers ( saldo, deb_or_cred, investor_id, portfolio_sub_id, portfolio_id, asset_place_id, depo_subacc_id, stock_id ) SELECT sum_bal, deb_or_cred, inv.item_id, portf_sub.item_id, portf.item_id, asset.item_id, depo_sub.item_id, stock.item_id FROM t_oper_list, t_accounts acc, t_oper_subconto inv, t_oper_subconto portf_sub, t_oper_subconto portf, t_oper_subconto asset, t_oper_subconto depo_sub, t_oper_subconto stock WHERE t_oper_list.partner2plan_id = @sec_plan2partner_id AND acc.id = t_oper_list.acc_id AND acc.acc_num_eff_rep LIKE @ssb_acc_eff_num + '%' AND t_oper_list.op_date >= @close_date AND t_oper_list.op_date < DATEADD(dd, 1, @check_data) AND inv.id = t_oper_list.id AND inv.subconto_type_id = @ssb_inv_subc_type_id AND portf_sub.id = t_oper_list.id AND portf_sub.subconto_type_id = @ssb_invsub_subc_type_id AND portf.id = t_oper_list.id AND portf.subconto_type_id = @ssb_portf_subc_type_id AND asset.id = t_oper_list.id AND asset.subconto_type_id = @ssb_place_subc_type_id AND depo_sub.id = t_oper_list.id AND depo_sub.subconto_type_id = @ssb_depo_subacc_subc_type_id AND stock.id = t_oper_list.id AND stock.subconto_type_id = @ssb_stock_subc_type_id AND ( (stock.item_id = @stock_id) OR (@stock_id IS NULL) ) AND ( (asset.item_id=@asset_place_id) OR (@asset_place_id IS NULL) ) ----------------------------------------------- ----- START DECLARE loop cursor ------------------------------------------------ DECLARE stock_srez CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR SELECT SUM(saldo * deb_or_cred), investor_id, portfolio_sub_id, portfolio_id, asset_place_id, depo_subacc_id FROM #t_opers GROUP BY investor_id, portfolio_sub_id, portfolio_id, asset_place_id, depo_subacc_id -- having sum(saldo * deb_or_cred) > 0 END -- @is_proc = 0 ELSE BEGIN -- @is_proc = 1 ---------------------------Кусок для группировки без учета мест нах 17.06.05-------------------------------- DECLARE @default_object_id NUMERIC SELECT @default_object_id = (SELECT default_object_id FROM tb_broker_change WHERE partner_id=@owner_id and ( .ITEMS_EXISTS_BY_TYPE(tb_broker_change.id,'BROKER_INFO'))) --Есть вопросы по куску --Обращяйтесь к Приймаку IF ((.GET_CONST('CLIENT_CODE') = 'PROSPERITY') and (@pay_perpose = 48)) -- если просперити то берем место нах из места по умолчанию в уч орг BEGIN DECLARE stock_srez CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR SELECT SUM(o.saldo * o.deb_or_cred), -- Кол-во s.item_id, -- Инвестор s1.item_id, -- Раздел учета s3.item_id, -- Портфель @default_object_id , --s2.item_id, -- Место нахождения актива s4.item_id -- Раздел счета Депо FROM t_account_now o, t_accounts ac, t_accnow_subconto s, t_accnow_subconto s1, t_accnow_subconto s2, t_accnow_subconto s3, t_accnow_subconto s4 WHERE o.plan2partner_id = @sec_plan2partner_id AND o.acc_id = ac.id AND ac.acc_num_eff_rep LIKE @ssb_acc_eff_num + '%' AND o.subc_eff_num LIKE ISNULL('%' + @subc_str_bal + '%', '%') AND o.id = s.id AND s.subconto_type_id = @ssb_inv_subc_type_id AND o.id = s1.id AND s1.subconto_type_id = @ssb_invsub_subc_type_id AND o.id = s2.id AND s2.subconto_type_id = @ssb_place_subc_type_id AND o.id = s3.id AND s3.subconto_type_id = @ssb_portf_subc_type_id AND o.id = s4.id AND s4.subconto_type_id = @ssb_depo_subacc_subc_type_id GROUP BY s.item_id, s1.item_id, s3.item_id, --s2.item_id, s4.item_id -- having sum(o.saldo * o.deb_or_cred) > 0 END ELSE --IF ((.GET_CONST('CLIENT_CODE') <> 'PROSPERITY') and (@pay_perpose = 48)) BEGIN DECLARE stock_srez CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR SELECT SUM(o.saldo * o.deb_or_cred), -- Кол-во s.item_id, -- Инвестор s1.item_id, -- Раздел учета s3.item_id, -- Портфель s2.item_id, -- Место нахождения актива s4.item_id -- Раздел счета Депо FROM t_account_now o, t_accounts ac, t_accnow_subconto s, t_accnow_subconto s1, t_accnow_subconto s2, t_accnow_subconto s3, t_accnow_subconto s4 WHERE o.plan2partner_id = @sec_plan2partner_id AND o.acc_id = ac.id AND ac.acc_num_eff_rep LIKE @ssb_acc_eff_num + '%' AND o.subc_eff_num LIKE ISNULL('%' + @subc_str_bal + '%', '%') -- AND o.last_date < dateadd(dd, 1, getdate()) AND o.id = s.id AND s.subconto_type_id = @ssb_inv_subc_type_id AND o.id = s1.id AND s1.subconto_type_id = @ssb_invsub_subc_type_id AND o.id = s2.id AND s2.subconto_type_id = @ssb_place_subc_type_id AND o.id = s3.id AND s3.subconto_type_id = @ssb_portf_subc_type_id AND o.id = s4.id AND s4.subconto_type_id = @ssb_depo_subacc_subc_type_id -- letsko_av -- 30.03.2006 -- бумага должна существовать !!! AND (.ITEMS_EXISTS_BY_STOCK(@stock_id) OR @stock_id IS NULL) -- letsko_av (end) GROUP BY s.item_id, s1.item_id, s3.item_id, s2.item_id, s4.item_id -- having sum(o.saldo * o.deb_or_cred) > 0 END END ----------------------------------------------- ----- END DECLARE loop cursor ------------------------------------------------ DECLARE @is_npf NUMERIC -- по бумаге @stock_id OPEN stock_srez FETCH stock_srez INTO @ssc_saldo_qty, @ssc_inv_id, @ssc_subc_id, @ssc_portfolio_id, @ssc_place_id, @ssc_depo_subacc_id -- если ведем синтический учет то запускаем расчет алиасов -- иначе если НПФ установлен то все равно запускаем расчет алиасов SET @is_npf = 0 IF @is_sint = 1 -- letsko_av -- 11.03.2005 -- закомментированно для НУК-а и других -- EXEC ap_group_opers_alias_calc @sid, @organisation_id, @pay_perpose SET @is_sint = 1 -- letsko_av (end) ELSE BEGIN SET @is_npf = 0 #ifdef ALD_NPF -- letsko_av -- 11.03.2005 -- закомментированно для НУК-а и других -- EXEC ap_group_opers_alias_calc @sid, @organisation_id, @pay_perpose -- letsko_av (end) SET @is_npf = 1 #endif END WHILE ( .CURSOR_STATE = 0 ) BEGIN -- Установка начальных значений SET @sav_inv_id = @ssc_inv_id SET @sav_subc_id = @ssc_subc_id SET @sav_place_id = @ssc_place_id SET @bank_sum_plus = 0 SET @bank_sum_minus = 0 SET @bank_unkd_sum = 0 SET @bank_sum = 0 SET @bank_pnkd_sum = 0 SET @bank_bal_sum = 0 SET @bank_qty = 0 SET @bank_sum_in = 0 SET @bank_qty_in = 0 SET @bank_sum_unkd_in = 0 SET @bank_profit_sum = 0 --! SELECT @out_method = .GET_METHOD_OUT(@ssc_subc_id) --! SET @sum = @ssc_saldo_qty * @total_sum -- Установка строки аналитики SET @home_subc_str = '' .SUBC_STR_ADD(@home_subc_str, 'investors', @ssc_inv_id) .SUBC_STR_ADD(@home_subc_str, 'investor2portfolio', @ssc_subc_id) .SUBC_STR_ADD(@home_subc_str, 'stock_emis', @stock_id) .SUBC_STR_ADD(@home_subc_str, 'portfolio', @ssc_portfolio_id) SET @h_subc_str = @home_subc_str SET @nkd_subc_str = @home_subc_str SET @money_subc_str = @home_subc_str SET @stock_home_subc_str = @home_subc_str SET @p2l_subc_str = @home_subc_str --Возвращает партию для зачисления .GET_IN_PARTION(@partion_id, @out_method, @id) .SUBC_STR_ADD(@h_subc_str, 'DOC_SEC_IN', @partion_id) .SUBC_STR_ADD(@p2l_subc_str, 'DOC_SEC', @id) .SUBC_STR_ADD(@stock_home_subc_str, 'ASSET_PLACES', @ssc_place_id) .SUBC_STR_ADD(@stock_home_subc_str, 'depo_subacc', @ssc_depo_subacc_id) IF EXISTS(SELECT 1 FROM tb_contracts WHERE id = @ssc_inv_id) -- лицо владелец бумаг SELECT @partner_id = ( SELECT client_id FROM tb_contracts WHERE id = @ssc_inv_id ) ELSE SELECT @partner_id = ( SELECT partner_id FROM tb_broker_change WHERE id = @ssc_inv_id ) IF @organisation_id = @ssc_inv_id BEGIN -- диллерская SET @character_id = 1 -- ведем фин результат SET @fin_result = 1 END ELSE BEGIN -- клиентская SET @character_id = 2 SELECT @fin_result = fin_result, @is_margin = is_margin, @is_allow_short4client_money = is_allow_short4money FROM tb_contracts WHERE id = @ssc_inv_id SET @client_contract_id = @ssc_inv_id IF @fin_result IS NULL BEGIN SELECT @mess = item_name FROM t_items WHERE id = @ssc_inv_id .ASSIGN(@mess, ('Не задан параметр расчета финансового результата у клиента' + ISNULL(@mess, 'null'))) .EXIT_MESSAGE(@mess) END END -- погашение купона или ЦБ в ТС IF @pay_perpose IN (46, 63) BEGIN -- Выдает класс по объекту местонахождения активов .BACK_PLASE_CLASS_FROM_OBJ(@ssc_place_id, @organisation_id, @place_class_id) -- ID счета по плану и объекту .ACCID_FROM_OBJ2PLAN(@money_acc_id, @place_class_id, @plan_money_id, 1, 1, 'Счет с нашей стороны', @mess) IF @bank_acc_id IS NULL BEGIN IF @asset_place_id IS NULL BEGIN SELECT @mess = 'Задайте место нахождения ЦБ' .EXIT_MESSAGE(@mess) END -- получение расчетного счета из реквизитов инвестора SELECT @bank_account_id = MAX(tb_official_props.bank_account_id) FROM tb_official_props, t_items, t_states WHERE tb_official_props.investor_id = @ssc_inv_id AND tb_official_props.asset_place_id = @ssc_place_id AND tb_official_props.id = t_items.id AND t_items.state_id = t_states.id AND UPPER(t_states.state_code) = 'ACT' AND t_states.class_id = 0 IF @bank_account_id IS NULL SELECT @bank_account_id = MAX(t_bank_accounts.id) FROM t_bank_accounts, t_items, t_states WHERE t_bank_accounts.partner_id = @partner_id AND t_bank_accounts.asset_place_id = @ssc_place_id AND t_bank_accounts.id = t_items.id AND t_items.state_id = t_states.id AND UPPER(t_states.state_code) = 'ACT' AND t_states.class_id = 0 IF @bank_account_id IS NULL BEGIN SELECT @mess = 'Для инвестора ' + .ITEM_NAME(@ssc_inv_id) + ' не найден расчетный счет в ' + .ITEM_NAME(@ssc_place_id) .EXIT_MESSAGE(@mess) END END --- Конец по @bank_account ELSE SET @bank_account_id = @bank_acc_id .SUBC_STR_ADD(@money_subc_str, 'BANK_ACCOUNT', @bank_account_id) .SUBC_STR_ADD(@money_subc_str, 'ASSET_PLACES', @ssc_place_id) END --- Конец if @pay_perpose in (46,63) ELSE BEGIN .SUBC_STR_ADD(@money_subc_str, 'contragents', @contragent_id) .SUBC_STR_ADD(@money_subc_str, 'DOC_SEC', @id) -- @money_acc_id - счет обязательст по целевому назначению .ACCID_FROM_OBJ2PLAN(@money_acc_id, @perpose_id, @plan_money_id, 1, 1, 'Счет обязательств', @mess) END --- Погашение купонов IF @pay_perpose IN (46, 52) BEGIN -- ведем синтетичесий учет по ЦБ IF @is_sint = 1 BEGIN SET @bank_pnkd_sum = @bank_pnkd_sum + ISNULL(@sum, 0) SET @bank_qty = @bank_qty + ISNULL(@ssc_saldo_qty, 0) END SET @unkd_qty_total = 0 SET @sum_unkd_out_total = 0 SET @doc_subc_str = ''; .SUBC_STR_ADD(@doc_subc_str, 'investors', @ssc_inv_id) .SUBC_STR_ADD(@doc_subc_str, 'investor2portfolio', @ssc_subc_id) .SUBC_STR_ADD(@doc_subc_str, 'STOCK_EMIS', @stock_id) -- изменился раздел учета или инвестор IF (@ssc_inv_old_id <> @ssc_inv_id AND @ssc_subc_old_id <> @ssc_subc_id) BEGIN -- курсор по счету УНКД и списание УНКД DECLARE doc_srez CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR SELECT SUM(o.saldo * o.deb_or_cred), SUM(o.saldo_qty * o.deb_or_cred), s.item_id FROM t_account_now o, t_accnow_subconto s WHERE o.plan2partner_id = @mon_plan2partner_id AND o.acc_id = @unkd_acc_id AND o.subc_eff_num LIKE ISNULL('%' + @doc_subc_str + '%', '%') AND o.id = s.id AND s.subconto_type_id = @ssb_doc_in_subc_type_id GROUP BY s.item_id HAVING SUM(o.saldo * o.deb_or_cred) > 0 OPEN doc_srez FETCH doc_srez INTO @ss_saldo, @ss_saldo_qty, @ss_doc_id WHILE ( .CURSOR_STATE = 0 ) BEGIN SET @unkd_subc_str = @doc_subc_str .SUBC_STR_ADD(@unkd_subc_str, 'DOC_SEC_IN', @ss_doc_id) SET @mess = 'Списание УНКД' SELECT @sum_unkd_out_total = @sum_unkd_out_total + ISNULL(@ss_saldo, 0) SELECT @unkd_qty_total = @unkd_qty_total + ISNULL(@ss_saldo_qty, 0) .OPERATION_SBC(@owner_id, @plan_money_id, @oper_date, @pnkd_acc_id, @unkd_acc_id, @ss_saldo, @money_plan_cur_id, @oper_date, @ss_saldo_qty, @ss_saldo_qty, @mess, Y, @operation_id, NULL, NULL, @action_history_id, NULL, NULL, @nkd_subc_str, @unkd_subc_str) FETCH doc_srez INTO @ss_saldo, @ss_saldo_qty, @ss_doc_id END -- конец цикла Сделки CLOSE doc_srez .DEALLOCATE doc_srez END SET @mess = 'Зачисление ПНКД' .OPERATION_SBC(@owner_id, @plan_money_id, @oper_date, @money_acc_id, @pnkd_acc_id, @sum, @money_plan_cur_id, @oper_date, @unkd_qty_total, @unkd_qty_total, @mess, Y, @operation_id, NULL, NULL, @action_history_id, NULL, NULL, @money_subc_str, @nkd_subc_str) IF @is_sint = 1 SELECT @bank_unkd_sum = @bank_unkd_sum + ISNULL(@sum_unkd_out_total, 0) IF @character_id = 2 BEGIN IF @sum_unkd_out_total > 0 BEGIN SET @mess = 'Списание УНКД' .OPERATION_SBC(@owner_id, @plan_money_id, @oper_date, @client_unkd_acc_id, @client_pnkd_acc_id, @sum_unkd_out_total, @money_plan_cur_id, @oper_date, @ssc_saldo_qty, @ssc_saldo_qty, @mess, Y, @operation_id, NULL, NULL, @action_history_id, NULL, NULL, @unkd_subc_str, @nkd_subc_str) END SET @mess = 'Зачисление ПНКД' .OPERATION_SBC(@owner_id, @plan_money_id, @oper_date, @client_pnkd_acc_id, @client_fond_acc_id, @sum, @money_plan_cur_id, @oper_date, @ssc_saldo_qty, @ssc_saldo_qty, @mess, Y, @operation_id, NULL, NULL, @action_history_id, NULL, NULL, @nkd_subc_str, @p2l_subc_str) END SET @profit_total = ISNULL(@sum, 0) - ISNULL(@sum_unkd_out_total, 0) --------Закрытие прибыли/убытка на фонды IF @character_id = 1 SET @account_fond_id = NULL ELSE SET @account_fond_id = @client_pnkd_acc_id -- закрытие на счетприбыли или убытка по НКД .BACK_CLOSE_PROFIT_LOSS2ACCFOND(@owner_id, @plan_money_id, @oper_date, @fin_result, @character_id, @p2l_subc_str, 3, @pnkd_acc_id, @profit_total, @account_fond_id) END -------- if @pay_perpose in (46,52) --- Погашение купонов --- Погашение ЦБ,конвертация IF @pay_perpose IN (45, 63, 48, 58) BEGIN SELECT @home_depo_acc_class_id = ( SELECT move_direction_id FROM tb_move_dir2depoacc where id = (.DEPO_ACC_FROM_SUBACC(@ssc_depo_subacc_id)) ) --declare @letsko_av numeric --select @letsko_av = (.DEPO_ACC_FROM_SUBACC(@ssc_depo_subacc_id)) --select 'letsko_av_debug', 'ap_10000000000267914', @ssc_depo_subacc_id AS ssc_depo_subacc_id, @letsko_av AS letsko_av IF @home_depo_acc_class_id IS NULL .EXIT_MESSAGE('Не задана привязка места хранения в плане ЦБ к счету ДЕПО') -- начало проводок по планам Бэк-офис .BACK_GET_OBJ2BROK2TS(@ssc_place_id, @owner_id, @home_place_class_id, @home_object_id) .BACK_OPERS_BEGIN(@owner_id, (-1), @perpose_id, @home_place_class_id, @home_object_id, @client_contract_id, @home_subc_str, @ssc_subc_id) -- Богаковский 06/07/2004 добавил два оператора присвоения по условию -- с целью отменить проверку короткой позиции -- (разрешить короткую позицию) при погашении ЦБ в ТС (целевое назначение 63) IF @pay_perpose IN (45, 63) BEGIN -- разрешить короткую для себя SET @is_allow_short4stocks = 1 -- разрешить короткую для клиента SET @is_margin = 1 END -- зачисление задолжености (или ДС) и списание ЦБ -- в этоми месте проверить короткую и закрыть её если есть по галке в запросе (или значению константы) -- если погашение то списать долг по бумаге, денег зачислить себе -- если конвертация -- 1. закрыть обязательства по короткой -- 2. поставить задолженность с новой бумагой в сотв. месте IF ISNULL(@type_redemption, 1) = 1 BEGIN -- старый простой вариант .BACK_SECURS_INOUT_MON(@ssc_saldo_qty, @sum, 0, @oper_date, @oper_date, NULL, @h_subc_str, @money_subc_str, @p2l_subc_str, NULL, 1, @is_allow_short4stocks, @is_margin, @sum_out_total, @qty_out_total, @sum_unkd_out_total, @fin_result, @character_id, @p2l_subc_str, @is_realiz, 1, @is_com_in, @sum_com_in_total, @type_redemption, @rate_face_value, @total_sum, @coupon_sum_one) .BACK_SECURS_INOUT_SEC(@ssc_saldo_qty, @oper_date, @stock_home_subc_str, @stock_home_subc_str, @home_depo_acc_class_id, 0) END ELSE IF ISNULL(@type_redemption, 1) = 2 BEGIN -- то-же самое, но без купонов .BACK_SECURS_INOUT_MON(@ssc_saldo_qty, @sum, 0, @oper_date, @oper_date, NULL, @h_subc_str, @money_subc_str, @p2l_subc_str, NULL, 1, @is_allow_short4stocks, @is_margin, @sum_out_total, @qty_out_total, @sum_unkd_out_total, @fin_result, @character_id, @p2l_subc_str, @is_realiz, 1, @is_com_in, @sum_com_in_total, @type_redemption, @rate_face_value, @total_sum) .BACK_SECURS_INOUT_SEC(@ssc_saldo_qty, @oper_date, @stock_home_subc_str, @stock_home_subc_str, @home_depo_acc_class_id, 0) END ELSE BEGIN -- частичное списание --SELECT 'letsko_av_debug', 'ap_10000000000267914', @ssc_saldo_qty AS ssc_saldo_qty, @sum AS sum, @oper_date AS oper_date, -- @oper_date AS oper_date, @h_subc_str AS h_subc_str, @money_subc_str AS money_subc_str, @p2l_subc_str AS p2l_subc_str, -- @is_allow_short4stocks AS is_allow_short4stocks, @is_margin AS is_margin, @sum_out_total AS sum_out_total, -- @qty_out_total AS qty_out_total, @sum_unkd_out_total AS sum_unkd_out_total, @fin_result AS fin_result, -- @character_id AS character_id, @p2l_subc_str AS p2l_subc_str, @is_com_in AS is_com_in, @sum_com_in_total AS sum_com_in_total, -- @type_redemption AS type_redemption, @rate_face_value AS rate_face_value, @total_sum AS total_sum IF ISNULL(@type_redemption, 1) = 3 BEGIN -- частичное с купоном .BACK_SECURS_INOUT_MON(@ssc_saldo_qty, @sum, 0, @oper_date, @oper_date, NULL, @h_subc_str, @money_subc_str, @p2l_subc_str, NULL, 1, @is_allow_short4stocks, @is_margin, @sum_out_total, @qty_out_total, @sum_unkd_out_total, @fin_result, @character_id, @p2l_subc_str, @is_realiz, 1, @is_com_in, @sum_com_in_total, @type_redemption, @rate_face_value, @coupon_sum_one) END ELSE BEGIN .BACK_SECURS_INOUT_MON(@ssc_saldo_qty, @sum, 0, @oper_date, @oper_date, NULL, @h_subc_str, @money_subc_str, @p2l_subc_str, NULL, 1, @is_allow_short4stocks, @is_margin, @sum_out_total, @qty_out_total, @sum_unkd_out_total, @fin_result, @character_id, @p2l_subc_str, @is_realiz, 1, @is_com_in, @sum_com_in_total, @type_redemption, @rate_face_value, @total_sum) END END -- если ведем синтетический учет для организации IF (@is_sint = 1 or @is_npf = 1) BEGIN SET @bank_sum = @bank_sum + ISNULL(@sum_out_total, 0) SET @bank_bal_sum = @bank_bal_sum + ISNULL(@sum_out_total, 0) SET @bank_qty = @bank_qty + ISNULL(@qty_out_total, 0) SET @bank_unkd_sum = @bank_unkd_sum + ISNULL(@sum_unkd_out_total, 0) SET @bank_pnkd_sum = ISNULL(@bank_pnkd_sum, 0) + @bo1_nkd_profit_sum SET @bank_profit_sum = ISNULL(@bank_profit_sum, 0) + ISNULL(@bo_profit, 0) END ---Кусок большого конвертация,мена - зачисление IF @pay_perpose IN (48, 58) BEGIN SET @bo1_in_out = 1 .SUBC_STR_ADD(@p2l_subc_str, 'STOCK_EMIS', @stock_new_id) .SUBC_STR_ADD(@h_subc_str, 'STOCK_EMIS', @stock_new_id) .SUBC_STR_ADD(@stock_home_subc_str, 'STOCK_EMIS', @stock_new_id) -- kashuba_av 17.02.06 begin По этой формуле считает точней количество конвертированных ЦБ SET @new_qty = ROUND((@ssc_saldo_qty * @stock_new_qty / @stock_qty), 0) /* SET @new_qty = ROUND((@ssc_saldo_qty * (@stock_new_qty / @stock_qty)), 0) IF @new_qty > (@ssc_saldo_qty * (@stock_new_qty / @stock_qty)) SET @new_qty = @new_qty - 1; */ -- kashuba_av 17.02.06 end -- зачисление новой бумаги -- ставить залолженность здесь .BACK_SECURS_INOUT_MON(@new_qty, @sum_out_total, 0, @oper_date, @oper_date, NULL, @h_subc_str, @money_subc_str, @p2l_subc_str, NULL, 1, @is_allow_short4stocks, @is_margin, @sum_ou_total, @qty_ou_total, @sum_unkd_ou_total, @fin_result, @character_id, @p2l_subc_str, @is_realiz, 1, @is_com_in, @sum_com_in_total) .BACK_SECURS_INOUT_SEC(@new_qty, @oper_date, @stock_home_subc_str, @stock_home_subc_str, @home_depo_acc_class_id, 0) SET @bank_sum_in = @bank_sum_in + ISNULL(@sum_out_total, 0) SET @bank_qty_in = @bank_qty_in + ISNULL(@qty_ou_total, 0) SET @bank_sum_unkd_in = @bank_sum_unkd_in + ISNULL(@sum_unkd_ou_total, 0) END ----- if @pay_perpose in (48,58) ---Кусок большого конвертация,мена END ---- if @pay_perpose in (45,63,48,58) --- Погашение ЦБ,конвертация --- Начисление дивидендов IF @pay_perpose = 47 BEGIN --.BACK_CLOSE_PROFIT_LOSS(@owner_id,@plan_money_id,@oper_date,@fin_result,@character_id,@money_subc_str,4,@money_acc_id,@sum) .BACK_STOCK_DIVID(@owner_id, @plan_money_id, @oper_date, @fin_result, @character_id, @money_subc_str, @pay_perpose, @money_acc_id, @sum) SET @bank_sum = @bank_sum + ISNULL(@sum, 0) END --- if @pay_perpose in (47) --- Начисление дивидендов --------------------------------------------------------------------- -- *--- синтетичесикй учет ---* ---- -- Перенесено в конец цикла 28/06/04 ---- --------------------------------------------------------------------- --IF((@is_sint = 1) AND ((@sav_inv_id != @ssc_inv_id) OR (@sav_subc_id != @ssc_subc_id) OR (@sav_place_id != @ssc_place_id))) --правка от 28/06/04 IF (@is_sint = 1 or @is_npf = 1) BEGIN -- проверка инвестора IF(ISNULL(@sav_inv_id, -1) = -1) BEGIN .EXIT_MESSAGE('Инвестор для операции не задан.') END ELSE BEGIN .ID_ALIAS_PUT('INVESTOR_ID', @id, @sav_inv_id) END -- проверка портфеля инвестора IF(ISNULL(@sav_subc_id, -1) = -1) BEGIN .EXIT_MESSAGE('Портфель инвестора для операции не задан.') END ELSE BEGIN .ID_ALIAS_PUT('PORTFOLIO_SUB_ID', @id, @sav_subc_id) END IF(ISNULL(@sav_place_id, -1) = -1) BEGIN .EXIT_MESSAGE('Место нахождение для операции не задано.') END ELSE BEGIN .ID_ALIAS_PUT('ASSET_PLASE_ID',@id,@sav_place_id) END .ID_ALIAS_PUT('BANK_ACCOUNT_ID', @id, @bank_account_id) .MONEY_ALIAS_PUT('UNKD_SUM', @id, (ISNULL(@bank_unkd_sum, 0))) .MONEY_ALIAS_PUT('PNKD_SUM', @id, (ISNULL(@bank_pnkd_sum, 0))) .MONEY_ALIAS_PUT('ITEM_SUM', @id, (ISNULL(@bank_sum, 0))) .MONEY_ALIAS_PUT('BAL_SUM', @id, (ISNULL(@bank_bal_sum, 0))) -- .MONEY_ALIAS_PUT('BAL_SUM1',@id,(ISNULL(@bank_bal_sum*@bank_qty,0)))) .MONEY_ALIAS_PUT('BAL_SUM1', @id, (ISNULL(@total_sum * @bank_qty, 0))) .MONEY_ALIAS_PUT('BAL_QTY', @id, (ISNULL(@bank_qty, 0))) .MONEY_ALIAS_PUT('ITEM_SUM_IN', @id, (ISNULL(@bank_sum_in, 0))) .MONEY_ALIAS_PUT('UNKD_SUM_IN', @id, (ISNULL(@bank_sum_unkd_in, 0))) .MONEY_ALIAS_PUT('BAL_QTY_IN', @id, (ISNULL(@bank_qty_in, 0))) .MONEY_ALIAS_PUT('BANK_PROFIT_SUM', @id, (ISNULL(@bank_profit_sum, 0))) .MONEY_ALIAS_PUT('DOC_SUM_REPAY', @id, (ISNULL(@bank_qty,0) * ISNULL(@total_sum,0))) .MONEY_ALIAS_PUT('PROFIT_MINUS', @id, (ISNULL(@bank_bal_sum, 0) - ISNULL(@bank_qty, 0) * ISNULL(@total_sum,0))) .MONEY_ALIAS_PUT('PROFIT_PLUS', @id, (ISNULL(@bank_qty, 0) * ISNULL(@total_sum, 0) - ISNULL(@bank_bal_sum,0))) .MONEY_ALIAS_PUT('KD_PROFIT_SUM', @id, (ISNULL(@bank_pnkd_sum, 0) - ISNULL(@bank_unkd_sum, 0))) IF .ITEM_TYPE_CODE(@sav_inv_id) = 'CLIENT_CONTRACTS' IF .IS_RESIDENT(@client_id) SET @is_client_resident = 1 ELSE SET @is_client_resident = 0 ELSE SET @is_client_resident = 1 .ID_ALIAS_PUT('IS_RESIDENT', @id, @is_client_resident) .INV_CHARACTER_CALC(@sav_inv_id, @res_char_id) .ID_ALIAS_PUT('INVESTOR_TYPE', @id, @res_char_id) -- 0 - Обычная операция -- 0 Для всех -- Погашение ЦБ IF @pay_perpose IN (45, 63) .ASSIGN(@bank_oper_id, 16) ELSE -- Погашение купона ЦБ IF @pay_perpose IN (46,52) .ASSIGN(@bank_oper_id, 17) ELSE .ASSIGN(@bank_oper_id, 0) -- .GENERATE_TYPED_OPERATIONS(@owner_id, 1, @id, @type_id, @action_id, @bank_oper_id, 0, 'Корпоративное действие', @action_history_id, NULL, 'Корпоративное действие') END /*--- синтетичесикй учет ---*/ ---------- Проводки НПФ #ifdef ALD_NPF IF (.TEST_CLIENT_ACCOUNTING(@client_contract_id)) BEGIN SELECT @client_id = client_id FROM tb_contracts WHERE id = @ssc_inv_id DECLARE @client_id_s VARCHAR(255) SELECT @client_id_s = ( SELECT partner_short_name FROM t_partners WHERE id = @client_id ) SET @res_char_id = 0 --SELECT @type_id =10000000000267815 --SELECT @action_id =10000000000267914 --.INV_CHARACTER_CALC(@sav_inv_id,@res_char_id) .ID_ALIAS_PUT('INVESTOR_ID', @id, @ssc_inv_id) .GENERATE_OPERATIONS(@client_id, 12, @id, @type_id, @action_id, @action_history_id, 0, @res_char_id, 'Сделка в ТС') -- .EXEC_PROC((ap_generate_comissions @client_id, 12 , @id, @id, @type_id, @action_id, 8, @res_char_id,'Сделка в ТС', @action_history_id),'Сделка в ТС: формирование комиссий сделки') -- .EXEC_PROC((ap_generate_comissions @client_id, 12 , @id, @id, @type_id, @action_id, 8, @res_char_id,'Сделка в ТС', @action_history_id),'Сделка в ТС: формирование комиссий сделки') END ------- Конец Проводки НПФ #endif SELECT @ssc_inv_old_id = @ssc_inv_id, @ssc_subc_old_id = @ssc_subc_id FETCH stock_srez INTO @ssc_saldo_qty, @ssc_inv_id, @ssc_subc_id, @ssc_portfolio_id, @ssc_place_id, @ssc_depo_subacc_id END --- Конец WHILE CLOSE stock_srez .DEALLOCATE stock_srez END --- Конец @is_proc = 0 --- Пифы #ifdef ALD_UKPIF if (((.GET_CONST('CLIENT_CODE') = 'PROSPERITY') and (@pay_perpose <> 47)) or (.GET_CONST('CLIENT_CODE') <> 'PROSPERITY')) BEGIN -- Приймак для Мельникова выкрутка проводки по Пифу 4,04,06 begin EXEC ap_pif_group_opers @id, @action_id, @action_history_id, @perpose_id, @stock_id, @stock_new_id, @bank_acc_id, @oper_date, @stock_qty, @stock_new_qty, @total_sum, @type_redemption, @rate_face_value, @coupon_sum_one end IF @@ERROR != 0 BEGIN IF @@TRANCOUNT <> 0 ROLLBACK TRAN RETURN END END #endif -------------------------------- Отдельные операции IF @is_proc = 1 BEGIN -- начисление НКД IF @pay_perpose = 73 BEGIN EXEC ap_coupon_exec_oper @sid, @action_history_id, @action_id /* EXEC @proc_state = ap_generate_type_gr_operations @id, 3, 12, @action_id, @action_history_id, @oper_date, @bank_ovr_sum, 0, 0, @home_subc_str, @home_subc_str IF @proc_state = 0 .EXIT_MESSAGE('Банковская операция не состоялась.') */ END IF @pay_perpose = 49 BEGIN -- начисление переоценки EXEC ap_pereoc_exec_oper @sid, @action_history_id, @action_id -- EXEC ap_oblig_pereoc_exec_oper @sid, @action_history_id, @action_id END IF @is_sint = 1 BEGIN -- начисление резерва на обесценение IF @pay_perpose = 75 BEGIN EXEC ap_reserve_obesc_exec @sid, @action_history_id, @action_id END -- Итоги торгов IF @pay_perpose = 74 BEGIN -- Любые SET @res_char_id = 0 -- letsko_av -- 11.03.2005 -- закомментированно для НУК-а и других -- EXEC ap_group_opers_alias_calc @sid, @organisation_id, @pay_perpose -- .GENERATE_TYPED_OPERATIONS(@owner_id, 1, @id, @type_id, @action_id, 11, 0, 'Итоги торгов', @action_history_id, NULL, 'Итоги торгов') -- letsko_av (end) END --- 74 -- Перевод котируемости ЦБ IF @pay_perpose = 78 BEGIN .EXEC_PROC((ap_move_stock_exec @id, @stock_id, @in_date, @action_id, @action_history_id), ('Метод перевода котируемости ЦБ')) END --- 78 END -- конец is_sint END -- конец отдельных процедур COMMIT TRAN DROP TABLE #t_opers IF ISNULL(@type_redemption, 1) in (3,4) BEGIN DECLARE @my_stock_nominal2 MONEY, @my_first_nominal2 MONEY SELECT @my_stock_nominal2 = stock_nominal, @my_first_nominal2 = first_nominal FROM td_stock_emis WHERE id = @bo_stock_id SELECT @my_stock_nominal2 = @my_stock_nominal2 - ROUND(((@my_first_nominal2 * @bo_rate_face_value) / 100), 2) UPDATE td_stock_emis SET stock_nominal = @my_stock_nominal2 WHERE id = @bo_stock_id END .TRANSACTION_RESTORE COMMIT TRAN