CREATE PROCEDURE dbo.%PROC% (@sid NUMERIC, @action_history_idd NUMERIC) AS .BEGIN('N') .ASSIGN(@action_history_id,@action_history_idd) SELECT @action_id = action_id, @id = doc_id FROM t_actions_history WHERE id = @action_history_id; SELECT @new_state_id = ( SELECT state_id FROM t_actions WHERE id = @action_id ); BEGIN TRAN; /*-------Проводки ----------*/ declare @total_sum money .INT_VAR(@pay_perpose) .NAME_VAR(@type_code) .NAME_VAR(@investor_subc_str) .NAME_VAR(@ext_subc_str) .NAME_VAR(@home_subc_str) .NAME_VAR(@p2l_subc_str) SELECT @p2l_subc_str = ''; .NAME_VAR(@stock_ext_subc_str) .NAME_VAR(@stock_home_subc_str) .NAME_VAR(@client_subc_str) .ID_VAR(@home_place_class_id) .ID_VAR(@home_object_id) .ID_VAR(@home_depo_acc_id) .ID_VAR(@home_depo_subacc_id) .ID_VAR(@home_depo_acc_class_id) .ID_VAR(@plan2partner_id) .ID_VAR(@ext_object_id) .ID_VAR(@contr_id) .ID_VAR(@investor_id) .ID_VAR(@organisation_id) .ID_VAR(@purpose_id) .ID_VAR(@partion_id) .MONEY_VAR(@exec_sum) .MONEY_VAR(@cred_acc_sum) .MONEY_VAR(@deb_acc_sum) .DATE_VAR(@oper_date) .ID_VAR(@usd) .MONEY_VAR(@rate_value_cc) .DATE_VAR(@rate_date_cc) .MONEY_VAR(@rate2cur2rur) .ID_VAR(@plan_money_id) .ID_VAR(@plan_securs_id) .INT_VAR(@out_method_id) .INT_VAR(@is_realiz) .INT_VAR(@is_p2l_comis) .INT_VAR(@is_margin) .INT_VAR(@is_allow_short4client_money) .INT_VAR(@is_com_in) .INT_VAR(@is_allow_short4stocks) .INT_VAR(@is_allow_short4money) .ID_VAR(@asset4pereoc_type_id) .MONEY_VAR(@nkd_sum) .MONEY_VAR(@out_sum) .MONEY_VAR(@out_qty) .MONEY_VAR(@out_sum_all) .MONEY_VAR(@nkd_sum_all) .ID_VAR(@money_plan_cur_id) .INT_VAR(@proc_status) DECLARE @rate_date DATETIME, @rate_value DECIMAL(18, 8), @fin_result INT, @character_id NUMERIC, @bs1_in_date DATETIME; /*Декларация переменных сделки*/ .BACK_BSPARMS_BEGIN /*Вытаскивание параметров приема*/ -- .TYPE_GET('D_STOCK_OUT_OTHER_DEPO', @id, 'N') .TYPE_GET('D_STOCK_OUT_OTHER_DEPO',@id,N,N,ALL,td_depo_docs) .TYPE_GET('D_STOCK_OUT_OTHER_DEPO',@id,N,N,ALL,td_stock_moves) IF @is_dogovor_id IS NOT NULL BEGIN IF @owner_id IS NULL SELECT @owner_id = .ORGANIZATION .ASSIGN(@purpose_id, @is_dogovor_id) IF @purpose_id IS NULL .EXIT_MESSAGE('Не задано целевое назначение') .ASSIGN(@pay_perpose, ((SELECT code FROM t_purposes WHERE id = @purpose_id))) --SELECT 'letsko_av_debug', 'ap_opers_securs_out', @oper_date AS oper_date, @in_date AS in_date -- !!! Дата операции .ASSIGN(@oper_date, @in_date) DECLARE @dealing_date DATETIME; /* IF @pay_perpose = 30 SELECT @dealing_date = ( SELECT in_date FROM td_depo_docs WHERE id = @foundation_id ) ELSE */ SELECT @dealing_date = @oper_date; /*Выдача параметров организации учета*/ .BACK_GET_ORG_PARMS(@owner_id, @organisation_id, @plan_money_id, @plan_securs_id, @out_method_id, @is_realiz, @is_p2l_comis, @is_com_in, @is_allow_short4stocks, @is_allow_short4money, @asset4pereoc_type_id) SELECT @out_method_id = .GET_METHOD_OUT(@portfolio_sub_id) /*Валюта плана ДС*/ SELECT @money_plan_cur_id = ( SELECT cur_id FROM t_plans WHERE id = @plan_money_id ); /*Конвертация НКД и Суммы приема в валюту плана ДС(р)*/ .TEST_RATE2CUR2DATE(@oper_date, @stock_price_cur_id) .TEST_RATE2CUR2DATE(@oper_date, @money_plan_cur_id) .CONVERT_SUM(@stock_price_cur_id, @money_plan_cur_id, @dealing_date, 0, @stock_price, @out_sum, @rate_value, @rate_date) IF ISNULL(@coupon_deal_sum, 0) <> 0 BEGIN .TEST_RATE2CUR2DATE(@dealing_date, @coupon_cur_id) .CONVERT_SUM(@coupon_cur_id, @money_plan_cur_id, @dealing_date, 0, @coupon_deal_sum, @nkd_sum, @rate_value, @rate_date) END; .ASSIGN(@out_qty, @stock_qty) .ASSIGN(@home_object_id, @from_object_id) IF @home_object_id IS NULL .EXIT_MESSAGE('Не задан объект') .ASSIGN(@home_depo_subacc_id, @s_subacc_id) IF @home_depo_subacc_id IS NULL .EXIT_MESSAGE('Не задан раздел') /*Выдача счета ДЕПО по разделу*/ .ASSIGN(@home_depo_acc_id, (.DEPO_ACC_FROM_SUBACC(@home_depo_subacc_id))) .BACK_PLASE_CLASS_FROM_OBJ(@home_object_id, @organisation_id, @home_place_class_id) /*Выдача класса(направления) по счету депо для вычисления счетов места нахождения(P.A.1,...)*/ SELECT @home_depo_acc_class_id = ( SELECT move_direction_id FROM tb_move_dir2depoacc WHERE id = @home_depo_acc_id ); IF @home_depo_acc_class_id IS NULL .EXIT_MESSAGE('Не задана привязка места хранения в плане ЦБ к счету ДЕПО') .ASSIGN(@ext_subc_str, '') .ASSIGN(@cred_acc_sum, NULL) .ASSIGN(@deb_acc_sum, NULL) -- Снятие по сделке в ТС IF @pay_perpose = 31 BEGIN -- Нет проводок COMMIT TRAN; RETURN; END -- Снятие ЦБ по сделке ВБР ELSE IF @pay_perpose = 30 BEGIN -- Присвоение IF NOT EXISTS( SELECT 1 FROM t_items, t_types WHERE t_items.id = @foundation_id AND t_types.id = t_items.type_id AND UPPER(t_types.type_code) IN ('DOG_DEALINGS_SALE_VBR', 'DEALINGS_VIA_BROKER_SALE') ) .EXIT_MESSAGE('Задайте сделку продажи ЦБ') /*Получение параметров сделки*/ .BACK_BSPARMS_GET(@foundation_id) IF @bs1_dog_character_id IS NULL .EXIT_MESSAGE('Не задан характер сделки в договоре') SELECT @bs1_in_date = in_date FROM td_depo_docs WHERE id = @foundation_id; IF @bs1_dog_character_id = 2 BEGIN .ASSIGN(@client_contract_id, @bs1_client_contract_id) .TYPE_GET('client_contracts', @client_contract_id, 10) .ASSIGN(@fin_result, @fin_result10) .ASSIGN(@is_margin, @is_margin10) .ASSIGN(@is_allow_short4client_money, @is_allow_short4money10) END ELSE BEGIN .ASSIGN(@client_contract_id, NULL) .ASSIGN(@fin_result, 1) -- .ASSIGN(@is_margin, 1) END; .ASSIGN(@contr_id, @bs1_contragent_id) IF @contr_id IS NULL .EXIT_MESSAGE('Не найден контрагент по договор продажи ЦБ') IF @bs1_dog_character_id = 2 AND @client_contract_id IS NULL .EXIT_MESSAGE('Не задан клиентский договор') SELECT @character_id = @bs1_dog_character_id; .TEST_RATE2CUR2DATE(@oper_date, @bs1_cur_id) DECLARE @stock_qty_op MONEY; SELECT @stock_qty_op = @stock_qty; .ASSIGN(@stock_qty, @bs1_stock_qty) .CONVERT_SUM(@bs1_cur_id, @money_plan_cur_id, @oper_date, 0, @bs1_summ_doc_total, @out_sum_all, @rate_value, @rate_date) IF ISNULL(@coupon_deal_sum, 0) = 0 BEGIN .ASSIGN(@nkd_sum_all, 0) END ELSE BEGIN .TEST_RATE2CUR2DATE(@oper_date, @bs1_coupon_cur_id) .CONVERT_SUM(@bs1_coupon_cur_id, @money_plan_cur_id, @oper_date, 0, @bs1_coupon_account_sum, @nkd_sum_all, @rate_value, @rate_date) -- SELECT @nkd_sum = @coupon_deal_sum; END; END -- Списание ЦБ из фонда клиента ELSE IF @pay_perpose IN (32, 110) BEGIN DECLARE @dir_qty MONEY, @all_qty MONEY; IF @client_contract_id IS NULL .EXIT_MESSAGE('Не задан клиентский договор') .TYPE_GET('client_contracts', @client_contract_id, 11) SELECT @fin_result = @fin_result11; .ASSIGN(@is_margin, @is_margin11) .ASSIGN(@is_allow_short4client_money, @is_allow_short4money11) SELECT @character_id = 2; IF @foundation_id IS NOT NULL BEGIN SELECT @client_contract_id = client_contract_id, @dir_qty = stock_qty FROM tb_directions WHERE id = @foundation_id; DECLARE @oper_comment VARCHAR(255), @subc_str_p VARCHAR(255), @subc_str_s VARCHAR(255), @deb_acc_id NUMERIC, @kred_acc_id NUMERIC, @res_mes VARCHAR(255); SELECT @oper_comment = 'Снятие резервирование ЦБ под списание'; SELECT @subc_str_s = ''; .SUBC_STR_ADD(@subc_str_s, 'INVESTORS', @client_contract_id) .SUBC_STR_ADD(@subc_str_s, 'INVESTOR2PORTFOLIO', @portfolio_sub_id) .SUBC_STR_ADD(@subc_str_s, 'PORTFOLIO', @portfolio_id) --.SUBC_STR_ADD(@subc_str_s, 'ASSET_PLACES', @from_object_id) .SUBC_STR_ADD(@subc_str_s, 'STOCK_EMIS', @stock_id) --.SUBC_STR_ADD(@subc_str_s, 'DEPO_SUBACC', @s_subacc_id) .SUBC_STR_ADD(@subc_str_s, 'INSTRUCTION', @foundation_id) SELECT @subc_str_p = ''; .SUBC_STR_ADD(@subc_str_p, 'STOCK_EMIS', @stock_id) DECLARE @from_dir_id NUMERIC; .BACK_PLASE_CLASS_FROM_OBJ(@from_object_id, @organisation_id, @from_dir_id) -- .ACCID_FROM_OBJ2PLAN(@kred_acc_id, @from_dir_id, @plan_securs_id, 3, 1, 'К расходу', @res_mes) .ACCID_FROM_CONST2PLAN(@kred_acc_id, 'BACK_ACC_STOCK_MOVE_INSTR', @plan_securs_id, 3, 1, 'Счет ожидаемого списания ЦБ по клиентскому поручению по плану ЦБ', @res_mes) .ACCID_FROM_OBJ2PLAN(@deb_acc_id, @is_dogovor_id, @plan_securs_id, 3, 3, 'К расходу', @res_mes) .OPERATION_SBC(@owner_id, @plan_securs_id, @in_date, @kred_acc_id, @deb_acc_id, @stock_qty, NULL, NULL, 0, 0, @oper_comment, Y, @operation_id, @id, @action_id, @action_history_id, 0, 0, @subc_str_s, @subc_str_p) .SALDO(@owner_id, @plan_securs_id, @in_date, @kred_acc_id, @subc_str_s, Y, -1, @all_qty, N, N) IF @all_qty < 0 .EXIT_MESSAGE('Превышено количество по поручению') IF @all_qty = 0 BEGIN .ITEM_MOVE_STATE(@foundation_id, 'COMPLIT') END END -- Создаем поручение автоматически ELSE IF @instruction_on2off = 1 BEGIN DECLARE @client_id NUMERIC; SELECT @client_id = client_id FROM tb_contracts WHERE id = @client_contract_id; .TYPE_INIT('INSTRUCTION_STOCK_INOUT', 5) .TYPE_ASSIGN(type_poruch_id, 2, 5) .BACK_GEN_NO(@in_no5_1, 1, @in_date) .TYPE_ASSIGN(in_date, @in_date5_1, 5) .TYPE_ASSIGN(in_no, @in_no5_1, 5) .TYPE_ASSIGN(depo_doc_type, 1, 5) .TYPE_ASSIGN(client_id, @client_id, 5) .TYPE_ASSIGN(depo_subacc_id, @s_subacc_id, 5) .TYPE_ASSIGN(asset_place_id, @from_object_id, 5) .TYPE_ASSIGN(stock_id, @stock_id, 5) .TYPE_ASSIGN(stock_qty, @stock_qty, 5) .TYPE_ASSIGN(owner_id, @owner_id, 5) .TYPE_ASSIGN(exec_end_date, @in_date, 5) .TYPE_ASSIGN(client_contract_id, @client_contract_id, 5) .TYPE_ASSIGN(portfolio_id, @portfolio_id, 5) .TYPE_ASSIGN(investor2portfolio_id, @portfolio_sub_id, 5) .TYPE_INSERT('INSTRUCTION_STOCK_INOUT', 'COMPLIT', 5) UPDATE td_depo_docs SET foundation_id = @id5_1 WHERE id = @id; UPDATE tb_directions SET in_time = DATEADD(MINUTE, RAND() * 390, '09:30:00') WHERE id = @id5_1; END; .SUBC_STR_ADD(@ext_subc_str, 'INVESTORS', @client_contract_id) END -- Списание ЦБ из фонда компании ELSE IF @pay_perpose IN (36, 111) BEGIN .ASSIGN(@contr_id, NULL) SELECT @fin_result = 1; SELECT @character_id = 1; -- .ASSIGN(@is_margin, 1) END -- Прочие случаи ELSE BEGIN SELECT @contr_id = ( SELECT client_id FROM tb_contracts WHERE id = @foundation_id ); IF @contr_id IS NULL .EXIT_MESSAGE('Не задан контрагент') IF ( SELECT UPPER(type_code) FROM t_types, t_items WHERE t_items.id = @foundation_id AND t_types.id = t_items.type_id ) = 'CLIENT_CONTRACTS' BEGIN SELECT @character_id = 2; SELECT @client_contract_id = @foundation_id; .TYPE_GET('client_contracts', @client_contract_id, 12) SELECT @fin_result = @fin_result12; .ASSIGN(@is_margin, @is_margin12) .ASSIGN(@is_allow_short4client_money, @is_allow_short4money12) END ELSE BEGIN SELECT @character_id = 1 SELECT @fin_result = 1 -- .ASSIGN(@is_margin, 1) END; END; -- Вычисление инвестора IF @client_contract_id IS NULL SELECT @investor_id = @organisation_id ELSE SELECT @investor_id = @client_contract_id; IF @investor_id IS NULL .EXIT_MESSAGE('Инвестор не найден') -- Вычисление строк субконто -- По сделке IF @pay_perpose = 30 BEGIN .ASSIGN(@investor_subc_str, @bs1_investor_subc_str) END ELSE BEGIN .ASSIGN(@investor_subc_str, '') .SUBC_STR_ADD(@investor_subc_str, 'INVESTORS', @investor_id) .SUBC_STR_ADD(@investor_subc_str, 'INVESTOR2PORTFOLIO', @portfolio_sub_id) .SUBC_STR_ADD(@investor_subc_str, 'PORTFOLIO', @portfolio_id) END; -- Строки для плана ЦБ .ASSIGN(@stock_home_subc_str, @investor_subc_str) .SUBC_STR_ADD(@stock_home_subc_str, 'ASSET_PLACES', @home_object_id) .SUBC_STR_ADD(@stock_home_subc_str, 'DEPO_SUBACC', @home_depo_subacc_id) .SUBC_STR_ADD(@stock_home_subc_str, 'STOCK_EMIS', @stock_id) .ASSIGN(@stock_ext_subc_str, '') .SUBC_STR_ADD(@stock_ext_subc_str, 'DEPO_SUBACC', @home_depo_subacc_id) .SUBC_STR_ADD(@stock_ext_subc_str, 'STOCK_EMIS', @stock_id) -- Строки для плана ДС -- С нашей стороны .ASSIGN(@home_subc_str, @investor_subc_str) .SUBC_STR_ADD(@home_subc_str, 'STOCK_EMIS', @stock_id) .GET_IN_PARTION(@partion_id, @out_method_id, @id) .SUBC_STR_ADD(@home_subc_str, 'DOC_SEC_IN', @partion_id) -- Списание ЦБ из фонда клиента IF @pay_perpose IN (32, 110) BEGIN .ASSIGN(@ext_subc_str, @investor_subc_str) .SUBC_STR_ADD(@ext_subc_str, 'STOCK_EMIS', @stock_id) .SUBC_STR_ADD(@ext_subc_str, 'DOC_SEC', @id) SELECT @is_realiz = 0; .ASSIGN(@p2l_subc_str, @ext_subc_str) END -- Списание ЦБ из фонда компании ELSE IF @pay_perpose IN (36, 111) BEGIN .SUBC_STR_ADD(@investor_subc_str, 'INVESTORS', @organisation_id) .SUBC_STR_ADD(@home_subc_str, 'INVESTORS', @organisation_id) .SUBC_STR_ADD(@ext_subc_str, 'DOC_SEC', @id) SELECT @is_realiz = 0; .ASSIGN(@ext_subc_str, @investor_subc_str) .SUBC_STR_ADD(@ext_subc_str, 'STOCK_EMIS', @stock_id) .ASSIGN(@p2l_subc_str, @ext_subc_str) END -- По сделке продажи ВБР ELSE IF @pay_perpose = 30 BEGIN .GET_IN_PARTION(@partion_id, @out_method_id, @id) .SUBC_STR_ADD(@home_subc_str, 'DOC_SEC_IN', @partion_id) .ASSIGN(@ext_subc_str, @investor_subc_str) .SUBC_STR_ADD(@ext_subc_str, 'CONTRAGENTS', @contr_id) .SUBC_STR_ADD(@ext_subc_str, 'STOCK_EMIS', @stock_id) .SUBC_STR_ADD(@ext_subc_str, 'DOC_SEC', @foundation_id) .ASSIGN(@p2l_subc_str, @ext_subc_str) END ELSE BEGIN .GET_IN_PARTION(@partion_id, @out_method_id, @id) .SUBC_STR_ADD(@home_subc_str, 'DOC_SEC_IN', @partion_id) .ASSIGN(@ext_subc_str, @investor_subc_str) .SUBC_STR_ADD(@ext_subc_str, 'CONTRAGENTS', @contr_id) .SUBC_STR_ADD(@ext_subc_str, 'STOCK_EMIS', @stock_id) .SUBC_STR_ADD(@ext_subc_str, 'DOC_SEC', @id) .ASSIGN(@p2l_subc_str, @ext_subc_str) END; -- Операции .BACK_OPERS_BEGIN(@owner_id, (-1), @purpose_id, @home_place_class_id, @home_object_id, @client_contract_id, @investor_subc_str, @portfolio_sub_id) -- Перевод обязательства с фиктивной бумаги на учитываемую IF @pay_perpose = 30 BEGIN .BACK_STOCK_REPLACE_VBR(@foundation_id, @owner_id, 2, @plan_money_id, @plan_securs_id, @stock_id, @out_qty, @ext_subc_str, @in_date, @bs1_in_date) .BACK_SECURS_CLOSE_SEC_VBR(@out_qty, @oper_date, @ext_subc_str, 2) END; -- По плану ДС .MONEY_VAR(@sum_out_total) .MONEY_VAR(@qty_out_total) .MONEY_VAR(@sum_unkd_out_total) .MONEY_VAR(@sum_com_in_total) .MONEY_VAR(@acc_sum_all) SELECT @acc_sum_all = ISNULL(@coupon_deal_sum, 0) + @stock_price; /* select 'letsko_av_debug', 'ap_opers_securs_out', @out_qty AS out_qty, @out_sum AS out_sum, @nkd_sum AS nkd_sum, @oper_date AS oper_date, @home_subc_str AS home_subc_str, @ext_subc_str AS ext_subc_str, @p2l_subc_str AS p2l_subc_str, @acc_sum_all AS acc_sum_all, @is_allow_short4stocks AS is_allow_short4stocks, @is_allow_short4client_money AS is_allow_short4client_money, @sum_out_total AS sum_out_total */ -- letsko_av -- 18.02.2005 -- Перепутан параметр -- .BACK_SECURS_INOUT_MON(@out_qty, @out_sum, @nkd_sum, @oper_date, @oper_date, NULL, @home_subc_str, @ext_subc_str, @p2l_subc_str, @acc_sum_all, 1, @is_allow_short4stocks, @is_margin, @sum_out_total, .BACK_SECURS_INOUT_MON(@out_qty, @out_sum, @nkd_sum, @oper_date, @oper_date, NULL, @home_subc_str, @ext_subc_str, @p2l_subc_str, @acc_sum_all, 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, @is_p2l_comis, @is_com_in, @sum_com_in_total) -- letsko_av (end) .BACK_SECURS_INOUT_SEC(@out_qty, @oper_date, @stock_home_subc_str, @stock_ext_subc_str, @home_depo_acc_class_id, @bo1_short_qty) IF @pay_perpose IN (50, 51, 65, 66) BEGIN SELECT @stock_ext_subc_str = ''; .SUBC_STR_ADD(@stock_ext_subc_str, 'STOCK_EMIS', @stock_id) .SUBC_STR_ADD(@stock_ext_subc_str, 'CONTRAGENTS', @contragent_id) .BACK_OPER_FOR_ZAEM_CB(@owner_id, @oper_date, @stock_qty, @purpose_id, @stock_home_subc_str, @stock_ext_subc_str, @plan_securs_id, @plan_money_id, @character_id, @bo1_bal_long_sum, @money_plan_cur_id) SELECT @out_sum = @out_sum - @bo1_bal_long_sum; IF @is_realiz = 1 BEGIN .ACCID_FROM_CONST2PLAN(@bo1_ext_acc_id, 'BACK_ACC_REALIZ', @plan_money_id, 1, 1, 'Cчет реализации', @res_mes) END ELSE BEGIN IF @pay_perpose = 51 BEGIN SELECT @zaem_type_k = 2; SELECT @zaem_comment = 'Возврат активов взятых взаймы'; END ELSE IF @pay_perpose = 65 BEGIN SELECT @zaem_type_k = 3; SELECT @zaem_comment = 'Дача взаймы'; END; .ACCID_FROM_CONST2PLAN(@bo1_ext_acc_id, 'BACK_ACC_CLIENT_OBLIG_ZAEM_CB', @plan_money_id, @zaem_type_k, 3, 'Счет обязательств займа', @res_mes) END; -- .EXIT_MESSAGE_PARM('%TYPE_CLOSE%', @bo1_ext_acc_id) .BACK_CLOSE_PROFIT_LOSS_COMM(@owner_id, @plan_money_id, @oper_date, @fin_result, @character_id, @p2l_subc_str, 5, @bo1_ext_acc_id, @out_sum, @zaem_comment) END; IF @pay_perpose = 30 BEGIN .ASSIGN(@plan2partner_id, (.PLAN2PARTNER_ID(@owner_id, @plan_money_id))) .CONTROL_PARTIONS(1, NULL, @owner_id, @plan2partner_id, @plan_money_id, @oper_date, @in_no, @investor_id, @portfolio_sub_id, @stock_id, 'Данная операция нарушит последовательность операций по аналогичным партиям.') DECLARE @subc_str_stock VARCHAR(255), @subc_str_money VARCHAR(255); SELECT @subc_str_money = @bs1_investor_subc_str; .SUBC_STR_ADD(@subc_str_money, 'CONTRAGENTS', @bs1_contragent_id, N) .SUBC_STR_ADD(@subc_str_money, 'DOC_SEC', @foundation_id, N) SELECT @subc_str_stock = @subc_str_money; .SUBC_STR_ADD(@subc_str_stock, 'STOCK_EMIS', @bs1_stock_id, N) .BACK_EXEC_OBLIGATION(@foundation_id, 2, @subc_str_money, @subc_str_stock, @oper_date, @owner_id, 2) .BACK_SETUP_PROFIT_OR_LOSS(@foundation_id, @oper_date, @owner_id) .BACK_SETUP_BAL_SUM(@foundation_id, @in_date, @owner_id, @bo1_unkd_bal_long_sum, @bo1_pereoc_sum) END; END; --- синтетический учет --- #ifdef ALD_BANK_SECS .ID_VAR(@oper_id_nastr) .ID_VAR(@is_overdue) .INT_VAR(@cond_res) .NAME_VAR(@condition) --.NAME_VAR(@type_code) IF ((.TEST_SINT_ACCOUNTING(@organisation_id)) AND (@pay_perpose = 30)) BEGIN SELECT @type_code = .ITEM_TYPE_CODE(@id) IF @type_code = 'D_STOCK_OUT' BEGIN -- .EXEC_PROC((ap_d_stock_out_aliases @id), 'Снятие ЦБ: формирование алиасов') SELECT @foundation_id = ( SELECT td_depo_docs.foundation_id FROM td_depo_docs WHERE td_depo_docs.id = @id ); END ELSE IF @type_code = 'D_STOCK_OUT_OTHER_DEPO' BEGIN -- .EXEC_PROC((ap_d_stock_out_other_aliases @id), 'Снятие ЦБ во внешнем депозитарии: формирование алиасов') SELECT @foundation_id = ( SELECT td_depo_docs.foundation_id FROM td_depo_docs WHERE td_depo_docs.id = @id ); END; UPDATE tb_baysale_docitems SET comis_in_sum = ABS(@sum_com_in_total) WHERE id = @foundation_id; IF @pay_perpose = 30 BEGIN .ASSIGN(@oper_id_nastr, 4) SELECT @is_overdue = tb_bind_deal2queries.stock_is_overdue FROM tb_bind_deal2queries WHERE tb_bind_deal2queries.deal_id = @foundation_id AND ISNULL(tb_bind_deal2queries.stock_is_overdue, -1) != -1; SELECT @is_overdue = ISNULL(@is_overdue, 0); IF @is_overdue = 0 BEGIN -- SELECT @condition = '(DEAL.STATE_CODE = POST_END OR DEAL.STATE_CODE = WAIT_EXEC) AND (DEAL.MOVEDAYS_COUNT < 0) AND (DEAL.SEQUENCE != 3 OR (DEAL.SEQUENCE = 3 AND DEAL.IS_FINE = 1))' -- .EXEC_PROC((ap_multi_condition_calc @type_id, @id, @condition, 'Сделка покупки ВБР: расчет условия о штрафных санкциях', @cond_res OUT), 'Сделка покупки ВБР: расчет условия о штрафных санкциях') IF @cond_res = 1 SELECT @is_overdue = 1; END; .ID_ALIAS_PUT('STOCK_IS_OVERDUE', @id, @is_overdue) END ELSE .ASSIGN(@oper_id_nastr, 0) .GENERATE_TYPED_OPERATIONS(@owner_id, 1, @id, @type_id, @action_id, @oper_id_nastr, @bs1_dog_character_id, 'Депозитарная операция списания ЦБ', @action_history_id, NULL, 'Депозитарная операция списания ЦБ') .EXEC_PROC((ap_generate_comissions @owner_id, 1, @id, @id, @type_id, @action_id, 8, @bs1_dog_character_id,'Депозитарная операция списания ЦБ: комиссии', @action_history_id), 'Депозитарная операция списания ЦБ: формирование комиссий') .ITEM_ALIASES_CLEAR(@id) END; #endif -- Типовые операции, для НПФ #ifndef ALD_BANK_SECS .ID_VAR(@oper_id_nastr) .ID_VAR(@is_overdue) .INT_VAR(@cond_res) .NAME_VAR(@condition) -- .NAME_VAR(@type_code) #endif #ifdef ALD_NPF SELECT @client_id = client_id FROM tb_contracts WHERE id = @client_contract_id; IF (.TEST_CLIENT_ACCOUNTING(@client_contract_id)) /* AND (.TEST_SINT_ACCOUNTING(@organisation_id)) */ BEGIN SELECT @type_code = .ITEM_TYPE_CODE(@id) SELECT @foundation_id = ( SELECT td_depo_docs.foundation_id FROM td_depo_docs WHERE td_depo_docs.id = @id ); IF @type_code = 'D_STOCK_OUT' BEGIN -- .EXEC_PROC((ap_d_stock_out_aliases @id), 'Снятие ЦБ: формирование алиасов') SELECT @foundation_id = ( SELECT td_depo_docs.foundation_id FROM td_depo_docs WHERE td_depo_docs.id = @id ); END ELSE IF @type_code = 'D_STOCK_OUT_OTHER_DEPO' BEGIN -- .EXEC_PROC((ap_d_stock_out_other_aliases @id), 'Снятие ЦБ во внешнем депозитарии: формирование алиасов') SELECT @foundation_id = ( SELECT td_depo_docs.foundation_id FROM td_depo_docs WHERE td_depo_docs.id = @id ); END; UPDATE tb_baysale_docitems SET comis_in_sum = ABS(@sum_com_in_total) WHERE id = @foundation_id; .GENERATE_OPERATIONS(@client_id, 12, @id, @type_id, @action_id, @action_history_id, 0, 3, 'Депозитарная операция списания ЦБ') .EXEC_PROC((ap_generate_comissions @client_id, 12, @id, @id, @type_id, @action_id, 8, 3, 'Депозитарная операция списания ЦБ:', @action_history_id), 'Депозитарная операция списания ЦБ: формирование комиссий сделки') .ITEM_ALIASES_CLEAR(@id) END; #endif IF @pay_perpose IN (108, 109, 35, 50, 29, 66, 110, 111, 32, 36, 51, 65) BEGIN DECLARE @oper_id NUMERIC; .BACK_CURSOR_FOR_COMIS(@id, @in_date, @id, @oper_id, @action_id, @action_history_id, @owner_id, 3, @plan_money_id, @fin_result, @character_id, @p2l_subc_str, @is_realiz, @is_p2l_comis) END; -- По ПИФ DECLARE @deal_for_pif_id NUMERIC; IF @pay_perpose IN (27, 30) SELECT @deal_for_pif_id = @foundation_id ELSE SELECT @deal_for_pif_id = @id; #ifdef ALD_UKPIF IF .TEST_PIF_CLIENT(@client_contract_id) BEGIN EXECUTE ap_pif_stock_inout @sid, @action_history_id, @client_contract_id, -1, @purpose_id, @stock_id, @out_qty, @out_sum, @nkd_sum, 0, @oper_date, @oper_date, @contr_id, @partion_id, @deal_for_pif_id; IF @@ERROR != 0 BEGIN IF @@TRANCOUNT <> 0 ROLLBACK TRAN; RETURN; END; IF @pay_perpose IN (27, 30) BEGIN .BACK_PIF_CLOSE90(@foundation_id, @action_id, @action_history_id) END; END; #endif COMMIT TRAN; .END