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 select @action_id = %ACTION_ID% select @id = convert(numeric, @sid) .NAME_VAR(@mess) .CHECK_USER .CHECK_UPDATE .GET_PROPS if @from_partner_acc_id=@to_partner_acc_id .EXIT_MESSAGE('Расчетные счета отправителя и получателя не должны совпадать') declare @ms varchar(255) select @ms=' - '+item_name from t_items where id=@id --- Добавлена проверка на соответствия Пайщика и суммы при ЦН 4015 ---- if @pay_perpose in (4015,4030) begin if @cancel_paymt_id is null .EXIT_MESSAGE_PARM('Не задан вх.платеж, по которому производится возврат',@ms) if not (.ITEMS_EXISTS_BY_TYPE_STATE(@cancel_paymt_id,'SD_PAYBANK_IN','PERF')) and not (.ITEMS_EXISTS_BY_TYPE_STATE(@cancel_paymt_id,'SD_PAYBANK_IN','UNDEF')) .EXIT_MESSAGE('Отказной платеж не находиться в статусе Проведен или Проведен как не опознанный') if (select from_partner_id from t_paydocs where id = @cancel_paymt_id) <> @to_partner_id .EXIT_MESSAGE('Получатель не совпадает с Отправителем в отказном платеже') if (select doc_sum from t_paydocs where id = @cancel_paymt_id) <> @doc_sum .EXIT_MESSAGE('Сумма в платеже не совпадает с суммой в отказном платеже') end select @complete_date=isnull(@complete_date,@doc_date) .UPDATE .UPDATE_ITEMS .PAYS_COMPLETE_STATE(@id, 1) .GET_PROPS declare @doc_name varchar(255) declare @deb_acc_id numeric declare @cred_acc_id numeric declare @fund_plan_id numeric select @doc_name = .ITEM_NAME(@id) .NAME_VAR(@fund_type_code) select @fund_type_code = .ITEM_TYPE_CODE(@owner_id) .NAME_VAR(@perp_str) select @perp_str = .PURPOSE_NAME(@pay_perpose) + ' : '+ @perpose_str select @doc_name = @perp_str + ' : '+ @doc_name /* Проводки для ПИФ */ if .STR_FOR_IF(@fund_type_code) = .STR_FOR_IF('pif_fund') begin declare @plan2partner_pif numeric select @fund_plan_id = .ARG_PLAN('PIF_ACCOUNT') select @plan2partner_pif = .PLAN2PARTNER_ID(@owner_id, @fund_plan_id) select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') if @pay_perpose = 4003 /* Перечисление надбавки агенту или УК */ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.11') else if @pay_perpose = 4005 /* Уплата подоходного налога*/ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'68.7') else if @pay_perpose = 4006 /* Уплата налога на доходы*/ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'68.8') else if @pay_perpose = 4008 /* Перечисление вознаграждения УК */ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.1') else if @pay_perpose = 4009 /* Перечисление вознаграждения СД */ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.2') else if @pay_perpose = 4010 /* Перечисление вознаграждения СР */ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.3') else if @pay_perpose = 4017 select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.17') else if @pay_perpose = 4018 select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.18') else if @pay_perpose in (4016,2032) select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.8') else if @pay_perpose = 9002 select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.12') else if @pay_perpose = 9001 select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.4') else if @pay_perpose = 4022 select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.8') /* else if @pay_perpose = 2018 -- Перечисление денежных средств на депозит (57) begin if (@to_partner_acc_id is null) or (.GET_CTRL_COMP_ID(@owner_id) != @to_partner_id) .EXIT_MESSAGE('Не задан целевой депозитный счет для фонда') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'57') end else if @pay_perpose = 2028 -- Перечисление денежных средств на депозит (напрямую) begin if (@to_partner_acc_id is null) or (.GET_CTRL_COMP_ID(@owner_id) != @to_partner_id) .EXIT_MESSAGE('Не задан целевой депозитный счет для фонда') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') end else if @pay_perpose = 2019 -- Перечисление денежных средств с депозита (57) begin if (@to_partner_acc_id is null) or (.GET_CTRL_COMP_ID(@owner_id) != @to_partner_id) .EXIT_MESSAGE('Не задан целевой расчетный счет для фонда') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'57') select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') end */ /* else if @pay_perpose in( 2011, -- 2011 Перечисление денежных средств за недвижимость 2012 -- 2012 Перечисление денежных средств за прочие активы ) select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.13') else if @pay_perpose = 2022 -- Перечисление денежных средств по взаимозачету select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.5') else if @pay_perpose = 2004 -- Основной платеж по Договору покупки ЦБ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.2') else if @pay_perpose = 2025 -- Платеж на биржу select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.4') else if @pay_perpose=103 -- 103 Расчеты с банком begin select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'89.2') select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.8') end */ --else if @pay_perpose = 4007 /* Перечисление денег УК в счет возмещения за выкуп паев */ -- select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.1') else if @pay_perpose in (4014,4020) /* 4014 Выплата цены выкупа пая */ begin if @pif_pay_id is null .EXIT_MESSAGE('Не указана заявка') if upper(.ITEM_STATE_CODE(@pif_pay_id)) not in ('WAIT_CRT','CRT_RET') .EXIT_MESSAGE('Заявка должна быть подтверждена в отчете регистратора, но не оплачена') if (@pif_pay_id is not null) and ((select owner_id from td_depo_docs where id=@pif_pay_id) != @owner_id) .EXIT_MESSAGE('Выберите заявку для указанного фонда') if (@pif_pay_id is not null) and ((select pay_owner_id from tp_pif_queries where id=@pif_pay_id) != @to_partner_id) .EXIT_MESSAGE('Получатель платежа не является пайщиком в заявке') if (select pay_type_id from tp_pif_queries where id=@pif_pay_id)=2 -- нач.задолженность if (select isnull(payment_sum,0) from tp_pif_queries where id=@pif_pay_id) != @doc_sum .EXIT_MESSAGE('Сумма платежа не равна задолженности по заявке') if (select isnull(pay_type_id,1) from tp_pif_queries where id=@pif_pay_id)=1 if (select isnull(sum_for_transfer,0) from tp_extract2claim where claim_id=@pif_pay_id) != @doc_sum .EXIT_MESSAGE('Сумма платежа не равна сумме заявки в отчете регистратора') if (select count(*) from t_paydocs, td_depo_docs, t_items, t_types, t_states where t_paydocs.pif_pay_id = @pif_pay_id and t_paydocs.id = td_depo_docs.id and td_depo_docs.owner_id = @owner_id and t_paydocs.id = t_items.id and t_paydocs.complete_date > @complete_date and t_items.type_id = t_types.id and upper(t_types.type_code) in ('SD_PAYBANK_IN', 'SD_PAYBANK_OUT') and t_items.state_id = t_states.id and upper(t_states.state_code) in ('PERF')) >0 .EXIT_MESSAGE('По заявке есть платежи с датой больше текущей') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.2') if upper(.ITEM_STATE_CODE(@pif_pay_id))='CRT_RET' begin .ITEM_MOVE_STATE(@pif_pay_id,'CRT_NEXT') end else begin .ITEM_MOVE_STATE(@pif_pay_id,'CRT') end update t_paydocs set covered_sum=@doc_sum where id=@id end else if @pay_perpose=4015 /* 4015 возврат по заявкам на размещение */ begin if @cancel_paymt_id is null .EXIT_MESSAGE('Не задан вх.платеж, по которому производится возврат') if (@pif_pay_id is not null) and (upper(.ITEM_STATE_CODE(@pif_pay_id)) not in ('PROV','CANCEL')) .EXIT_MESSAGE('Заявка должна быть на исполнении или отказана в исполнении') if (@pif_pay_id is not null) and ((select owner_id from td_depo_docs where id=@pif_pay_id) != @owner_id) .EXIT_MESSAGE('Выберите заявку для указанного фонда') if (@pif_pay_id is not null) and ((select pay_owner_id from tp_pif_queries where id=@pif_pay_id) != @to_partner_id) .EXIT_MESSAGE('Получатель платежа не является пайщиком в заявке') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.1') update t_paydocs set covered_sum=@doc_sum where id=@id end ELSE IF @pay_perpose = 9004 BEGIN -- Исходящий платеж по банку для фонда .ACCID_FROM_OBJ2PLAN(@deb_acc_id, @purpose_id, @fund_plan_id, 1, 1, 'Pacчeты пo пpoчим pacxoдaм', @mess) END else if @pay_perpose = 4030 /* Возврат платежа */ begin select @deb_acc_id = acc_id from t_oper_list where head_id = (select id from t_operations where item_id = @cancel_paymt_id and partner2plan_id = @plan2partner_pif) and deb_or_cred = -1 select @cred_acc_id = acc_id from t_oper_list where head_id = (select id from t_operations where item_id = @cancel_paymt_id and partner2plan_id = @plan2partner_pif) and deb_or_cred = 1 end ELSE BEGIN -- Неизвестное назначение .EXIT_MESSAGE('Неизвестное целевое назначение') end /* OPERATION */ .UPDATE_STATE .ACTION_HISTORY .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb_acc_id,@cred_acc_id,@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) /* END OPERATION */ /* SUBC DEB */ if @pay_perpose in ( 4003 /* Перечисление надбавки агенту или УК */, -- 4007 /* Перечисление денег УК в счет возмещения за выкуп паев */, 4008 /* Перечисление вознаграждения УК */, 4009 /* Перечисление вознаграждения СД */, 4010 /* Перечисление вознаграждения СР */, 4017,4018,4016,2032, -- 2004 /* Основной платеж по Договору покупки ЦБ */, 9001,9002,4022, 9004 /* 9004 Исходящий платеж по банку для фонда */ -- 2011 /* 2011 Перечисление денежных средств за недвижимость */, -- 2012 /* 2012 Перечисление денежных средств за прочие активы */, -- 2022 /* Перечисление денежных средств по взаимозачету */, -- 2025 /* Платеж на биржу */ ) BEGIN .UPDATE_SUBC(D, 'PARTNERS', @to_partner_id) END else if @pay_perpose in (4014,4020) /* 4014 - Выплата цены выкупа пая */ begin --kashuba_av begin Теперь для Webinvest аналитика "Партнеры" заполняется не из формы, а берется из заявки, связанной с платежем if rtrim(ltrim(.GET_CONST('CLIENT_CODE'))) = 'WEBINVEST' begin select @to_partner_id = (select pay_owner_id from tp_pif_queries where id=@pif_pay_id) end --kashuba_av end .UPDATE_SUBC(D,'partners',@to_partner_id) .UPDATE_SUBC(D,'pifdocs',@pif_pay_id) end else if @pay_perpose=4015 /* 4015 - возврат по заявкам на размещение */ begin .UPDATE_SUBC(D,'partners',@to_partner_id) .UPDATE_SUBC(D,'paydocs',@cancel_paymt_id) end else if @pay_perpose= 4030 -- Возврат платежа begin declare @id_oper numeric --- id операции declare @id_oper_vozvr numeric --- id операции возвращаемого платежа select @id_oper = id from t_operations where item_id = @id and partner2plan_id = @plan2partner_pif select @id_oper_vozvr = id from t_operations where item_id = @cancel_paymt_id and partner2plan_id = @plan2partner_pif update t_oper_list set subc_eff_num = (select subc_eff_num from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = -1 ) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = 1 update t_oper_list set subc_eff_name = (select subc_eff_name from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = -1 ) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = 1 update t_oper_list set subc_eff_num = (select subc_eff_num from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = 1) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = -1 update t_oper_list set subc_eff_name =(select subc_eff_name from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = 1) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = -1 delete from t_oper_subconto where id in (select id from t_oper_list where head_id = @id_oper) -- Вставка субконто по дебету-- insert into t_oper_subconto select (select id from t_oper_list where head_id = @id_oper and deb_or_cred = 1), subconto_type_id, item_id from t_oper_subconto where id in (select id from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = -1) -- Вставка субконто по кредету-- insert into t_oper_subconto select (select id from t_oper_list where head_id = @id_oper and deb_or_cred = -1), subconto_type_id, item_id from t_oper_subconto where id in (select id from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = 1) end /* else if @pay_perpose in ( 2018, -- Перечисление денежных средств на счет банковского депозита (57) 2019, -- Перечисление денежных средств со счета банковского депозита (57) 2028 -- Перечисление денежных средств на счет банковского депозита (напрямую) ) begin .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) end */ /* SUBC CRED */ .UPDATE_SUBC(K,'bank_account',@from_partner_acc_id) /* if @pay_perpose = 103 -- 103 Расчеты с банком begin .UPDATE_SUBC(K,'partners',@to_partner_id) end else begin .UPDATE_SUBC(K,'bank_account',@from_partner_acc_id) end */ /* ADD */ /* if @pay_perpose = 103 -- 103 Расчеты с банком begin declare @d103_id numeric declare @c103_id numeric select @d103_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.8') select @c103_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') .OPERATION(@owner_id,@fund_plan_id,@complete_date,@d103_id,@c103_id,@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(K,'bank_account',@from_partner_acc_id) .UPDATE_SUBC(D,'partners',@to_partner_id) .SUBC_CHECK end */ -- доп.проводка Д 96.2 - К 76.8 на уменьшение проч.резерва if @pay_perpose = 4016 -- "Перечисление прочих вознаграждений" begin declare @d4019_id numeric declare @c4019_id numeric select @c4019_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.8') select @d4019_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'89.2') .OPERATION(@owner_id,@fund_plan_id,@complete_date,@d4019_id,@c4019_id,@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(K,'partners',@to_partner_id) .SUBC_CHECK end -- доп.проводка Д 91.7 - К 76.8 а 91.7 потом закроют как-то if @pay_perpose = 4022 -- 4022, тоже тогда, но мельникову на 91.7 как в росбанке begin declare @d4022_id numeric declare @c4022_id numeric -- letsko_av select @c4022_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.8') -- SELECT @c4022_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id, '96.2') select @d4022_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'91.7') .OPERATION(@owner_id, @fund_plan_id, @complete_date, @d4022_id, @c4022_id, @doc_sum, 'RUR', @complete_date, 0, 0, @doc_name, N) -- letsko_av .UPDATE_SUBC(K,'partners',@to_partner_id) .SUBC_CHECK end end /* Конец проводок ПИФ*/ -------------------- -- Проводки для BACK -------------------- IF @pay_perpose IN (4008, 4009, 4010, 4017, 4018, 4016, 4014, 4015, 4003, 4005, 4006, 4020, 2032, 4022, 9004, 4030) BEGIN .ID_VAR(@back_owner_id) .ID_VAR(@plan_money_id) .ID_VAR(@plan_securs_id) .INT_VAR(@out_method_id) .ID_VAR(@organisation_id) .ID_VAR(@home_place_class_id) .ID_VAR(@home_object_id) .ID_VAR(@home_bank_acc_id) .ID_VAR(@client_contract_id) .ID_VAR(@portfolio_id) .ID_VAR(@portfolio_sub_id) .ID_VAR(@is_org_realiz) .ID_VAR(@is_org_comis) .INT_VAR(@is_com_in) .INT_VAR(@is_allow_short4stocks) .INT_VAR(@is_allow_short4money) .ID_VAR(@asset4pereoc_type_id) .NAME_VAR(@investor_subc_str) .NAME_VAR(@ext_subc_str) .NAME_VAR(@home_subc_str) .MONEY_VAR(@cred_acc_sum) .MONEY_VAR(@deb_acc_sum) SELECT @back_owner_id = .ORGANIZATION .BACK_GET_ORG_PARMS(@back_owner_id, @organisation_id, @plan_money_id, @plan_securs_id, @out_method_id, @is_org_realiz, @is_org_comis, @is_com_in, @is_allow_short4stocks, @is_allow_short4money, @asset4pereoc_type_id) .BACK_GET_PIF_CONTRACT(@owner_id, @back_owner_id, @client_contract_id) declare @plan2partner_back numeric select @plan2partner_back = .PLAN2PARTNER_ID(@back_owner_id, @plan_money_id) SELECT @home_object_id = MIN(b.id) FROM tb_broker2exchange b, tb_contracts c, td_depo_docs d, t_move_directions m WHERE UPPER(m.code) = .GET_CONST('WHOAREME') AND b.object_class_id = m.id AND b.ext_broker_deal = c.id AND c.client_id = @back_owner_id AND c.id = d.id AND d.owner_id = @back_owner_id AND .ITEMS_EXISTS_BY_TYPE(b.id, 'BROKER2EXCHANGE') AND .ITEMS_EXISTS_BY_TYPE(c.id, 'ORGANIZATION_CONTRACTS') SELECT @mess = 'Не задано место нахождения ДС с кодом -> ' + .GET_CONST('WHOAREME') + ' <- из константы WHOAREME' IF @home_object_id IS NULL .EXIT_MESSAGE(@mess) .BACK_PLASE_CLASS_FROM_OBJ(@home_object_id, @organisation_id, @home_place_class_id) SELECT @mess = 'Не задан класс места нахождения ДС с кодом -> ' + .GET_CONST('WHOAREME') + ' <- из константы WHOAREME' IF @home_place_class_id IS NULL .EXIT_MESSAGE(@mess) .BACK_GET_PIF_SECTION(@client_contract_id, @portfolio_sub_id) .BACK_GET_PIF_PORTFOLIO(@client_contract_id, @portfolio_id) SELECT @home_bank_acc_id = @from_partner_acc_id IF @home_bank_acc_id IS NULL .EXIT_MESSAGE('Не задан расчетный счет') SELECT @cred_acc_sum = @doc_sum SELECT @deb_acc_sum = @doc_sum .SUBC_STR_ADD(@investor_subc_str, 'INVESTORS', @client_contract_id) .SUBC_STR_ADD(@investor_subc_str, 'INVESTOR2PORTFOLIO', @portfolio_sub_id) .SUBC_STR_ADD(@investor_subc_str, 'PORTFOLIO', @portfolio_id) IF @pay_perpose IN (4008, 4009, 4010, 4017, 4018, 4016, 2032, 4022) BEGIN SELECT @ext_subc_str = @investor_subc_str .SUBC_STR_ADD(@ext_subc_str, 'CONTRAGENTS', @to_partner_id) END IF @pay_perpose IN (4014, 4015, 4003, 4005, 4006, 4020) BEGIN .SUBC_STR_ADD(@ext_subc_str, 'INVESTORS', @client_contract_id) END SELECT @home_subc_str = @investor_subc_str .SUBC_STR_ADD(@home_subc_str, 'ASSET_PLACES', @home_object_id) .SUBC_STR_ADD(@home_subc_str, 'BANK_ACCOUNT', @home_bank_acc_id) IF @pay_perpose = 9004 /* 9004 Исходящий платеж по банку для фонда */ BEGIN .SUBC_STR_ADD(@ext_subc_str, 'INVESTORS', @client_contract_id) .SUBC_STR_ADD(@ext_subc_str, 'INVESTOR2PORTFOLIO', @portfolio_sub_id) .SUBC_STR_ADD(@ext_subc_str, 'PORTFOLIO', @portfolio_id) .SUBC_STR_ADD(@ext_subc_str, 'CONTRAGENTS', @to_partner_id) END .BACK_OPERS_BEGIN(@back_owner_id, (-1), @purpose_id, @home_place_class_id, @home_object_id, @client_contract_id, @investor_subc_str, @portfolio_sub_id) IF @pay_perpose <> 4030 begin .BACK_MONEY_INOUT(@doc_sum, @complete_date, @complete_date, @cur_id, @home_subc_str, @ext_subc_str, @deb_acc_sum, @cred_acc_sum, @cur_id, @cur_id) end -- 2.11 - 3.6.0 IF @pay_perpose IN (4014, 4020) BEGIN -- 4014 Выплата цены выкупа пая .ID_VAR(@acc211_id) .ID_VAR(@acc360_id) .NAME_VAR(@subc211_str) .NAME_VAR(@subc360_str) .ACCID_FROM_CONST2PLAN(@acc211_id, 'BACK_ACC_FUND_MONEY_OUT', @plan_money_id, 3, 1, 'ожид.расход ДС', @mess) .ACCID_FROM_CONST2PLAN(@acc360_id, 'BACK_ACC_FUND_MONEY_CHNG', @plan_money_id, 3, 1, 'ожид.списание из фонда', @mess) .SUBC_STR_ADD(@subc360_str, 'INVESTORS', @client_contract_id) .SUBC_STR_ADD(@subc211_str, 'INVESTORS', @client_contract_id) .SUBC_STR_ADD(@subc211_str, 'INVESTOR2PORTFOLIO', @portfolio_sub_id) .SUBC_STR_ADD(@subc211_str, 'PORTFOLIO', @portfolio_id) .SUBC_STR_ADD(@subc211_str, 'DOCS4OUT_FUND', @pif_pay_id) SELECT @mess = 'Снятие резервирования ДС по заявке' .OPERATION_SBC(@back_owner_id, @plan_money_id, @complete_date, @acc211_id, @acc360_id, @doc_sum, @cur_id, @complete_date, NULL, NULL, @mess, Y, @operation_id, NULL, NULL, @action_history_id, @doc_sum, @doc_sum, @subc211_str, @subc360_str) END IF @pay_perpose= 4030 -- Возврат платежа для BACK begin -- Отбор счетов select @deb_acc_id = acc_id from t_oper_list where head_id = (select id from t_operations where item_id = @cancel_paymt_id and partner2plan_id = @plan2partner_back) and deb_or_cred = -1 select @cred_acc_id = acc_id from t_oper_list where head_id = (select id from t_operations where item_id = @cancel_paymt_id and partner2plan_id = @plan2partner_back) and deb_or_cred = 1 .OPERATION(@back_owner_id,@plan_money_id,@complete_date,@deb_acc_id,@cred_acc_id,@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) -- Отбор субконто select @id_oper = id from t_operations where item_id = @id and partner2plan_id = @plan2partner_back select @id_oper_vozvr = id from t_operations where item_id = @cancel_paymt_id and partner2plan_id = @plan2partner_back update t_oper_list set subc_eff_num = (select subc_eff_num from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = -1 ) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = 1 update t_oper_list set subc_eff_name = (select subc_eff_name from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = -1 ) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = 1 update t_oper_list set subc_eff_num = (select subc_eff_num from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = 1) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = -1 update t_oper_list set subc_eff_name =(select subc_eff_name from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = 1) where t_oper_list.head_id = @id_oper and t_oper_list.deb_or_cred = -1 delete from t_oper_subconto where id in (select id from t_oper_list where head_id = @id_oper) -- Вставка субконто по дебету-- insert into t_oper_subconto select (select id from t_oper_list where head_id = @id_oper and deb_or_cred = 1), subconto_type_id, item_id from t_oper_subconto where id in (select id from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = -1) -- Вставка субконто по кредету-- insert into t_oper_subconto select (select id from t_oper_list where head_id = @id_oper and deb_or_cred = -1), subconto_type_id, item_id from t_oper_subconto where id in (select id from t_oper_list where head_id = @id_oper_vozvr and deb_or_cred = 1) end END COMMIT TRAN