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 declare @old_state_code varchar(30) begin tran select @action_id = %ACTION_ID% select @id = convert(numeric, @sid) .CHECK_USER .CHECK_UPDATE .GET_PROPS declare @cur_code varchar(50) select @cur_code = .CUR_CODE(@cur_id) -- Lappo_da 02.05.06 declare @ms varchar(255) select @ms=' - '+item_name from t_items where id=@id declare @purpose_name varchar(255) select @pay_perpose=code, @purpose_name=name from t_purposes where id=@purpose_id if @from_partner_acc_id=@to_partner_acc_id and @from_partner_acc_id is not null and @to_partner_acc_id is not null and @pay_perpose not in (2021,2040) .EXIT_MESSAGE_PARM('Расчетные счета отправителя и получателя не должны совпадать',@ms) if @bank_acc_rep_id is not null begin if upper(.ITEM_STATE_CODE(@bank_acc_rep_id)) = 'ED' .EXIT_MESSAGE_PARM('Выписка из банка должна быть подтверждена',@ms) if (select bank_account_id from td_bank_account_report where id=@bank_acc_rep_id)<>@to_partner_acc_id .EXIT_MESSAGE_PARM('В выписке из банка и в платеже указаны разные расчетные счета',@ms) end select @old_state_code = upper(state_code) from t_items, t_states where t_items.id=@id and t_items.state_id = t_states.id /*-------Проводки ----------*/ .GET_SD_OPER_DATE(@complete_date,@id) --select @complete_date = isnull(@complete_date,(.OPERDAY)) select @tax_nds_sum = round((isnull(@tax_nds_rate,0)*isnull(@doc_sum,0)/(100.0+isnull(@tax_nds_rate,0))),2) .MONEY2STR(@cur_id,@doc_sum,@sum_str) .UPDATE .UPDATE_ITEMS .PAYS_COMPLETE_STATE(@id,1) .GET_PROPS declare @doc_name varchar(255), @agreement_sum money, @difference_sum money, @doc_name1 varchar(255), @doc_sum_rur money, @cur_price money select @cur_price = t_rates.rate_value from t_rates where t_rates.cur_id = @cur_id and t_rates.rate_date = (select max(t_rates.rate_date) from t_rates where t_rates.cur_id = @cur_id and t_rates.rate_date <= @doc_date and .ITEMS_EXISTS(t_rates.id)) and .ITEMS_EXISTS(t_rates.id) select @doc_sum_rur = round(@doc_sum * @cur_price,2) -- lappo_da 02.05.06 select @doc_name = @purpose_name + ':' + .ITEM_NAME(@id) + ':' + @perpose_str .NAME_VAR(@fund_type_code) .ID_VAR(@asset_manager_id) .ID_VAR(@percent_deposit_acc_id) .ID_VAR(@bank_id) declare @deb_acc_id numeric declare @cred_acc_id numeric declare @deb_acc_id1 numeric declare @cred_acc_id1 numeric declare @pay_rec_sid varchar(30) declare @mess varchar(255) declare @fund_plan_id numeric select @fund_type_code = .ITEM_TYPE_CODE(@owner_id) /* Проводки для ПИФ */ if .STR_FOR_IF(@fund_type_code) = .STR_FOR_IF('pif_fund') begin select @fund_plan_id = .ARG_PLAN('PIF_ACCOUNT') if @old_state_code = upper('UNDEF') /* Из неопознанного */ select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.14') else begin if @cur_code = 'RUR' select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') else select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'52') -- Lappo_da end if @pay_perpose=4001 /* 4001 - поступление средств от инвестора (НИКОЙЛ)*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.1') else if @pay_perpose=4002 /* 4002 получение средств от УК на выкуп*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.1') else if @pay_perpose=4012 /* 4012 Возврат денежных средств за паи (НИКОЙЛ)*/ begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.2') select @foundation_id = t_items.id from td_depo_docs, tp_pif_queries, t_items, t_types, t_states where td_depo_docs.owner_id = @owner_id and td_depo_docs.id = tp_pif_queries.id and tp_pif_queries.id = t_items.id and upper(tp_pif_queries.agent_regs_no) = upper(@foundation_no) /* по номеру */ and (tp_pif_queries.total_sum - isnull(tp_pif_queries.tax,0)) = @doc_sum /* по сумме */ and tp_pif_queries.pay_owner_id = @from_partner_id /* по плательщику */ and t_items.type_id = t_types.id and upper(t_types.type_code) = 'PIF_QUERIES_BUY' and t_items.state_id = t_states.id and upper(t_states.state_code) in ('COMPLETE') /* Оплачена */ if @foundation_id is null begin select @mess = 'Заявка N ' + isnull(@foundation_no, '') + ' в статусе оплачена, не найдена' .EXIT_MESSAGE_PARM(@mess,@ms) end /* Проверка платежей */ if (select count(*) from t_paydocs, td_depo_docs, t_items, t_types, t_states where t_paydocs.foundation_id = @foundation_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 begin /* Есть платежи */ select @mess = 'По заявке N ' + isnull(@foundation_no, '') + ' есть платежи с датой больше текущей' .EXIT_MESSAGE_PARM(@mess,@ms) end /* Ссылка для отката*/ update t_paydocs set foundation_id = @foundation_id where id = @id end else if @pay_perpose=2003 /* 2003 платеж по договору продажи ЦБ*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.1') else if @pay_perpose=2005 /* 2005 поступление дс за купонный доход*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.16') else if @pay_perpose=2030 /* 2030 прочие платежи за ЦБ*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.3') else if @pay_perpose in (2006,2034) /* 2006 поступление дивидендов, 2034 - начисление и поступление дивидендов*/ begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.9') end else if @pay_perpose=2033 /* с 57-го */ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'57') else if @pay_perpose=2007 /*2007 Поступление денежных средств на депозит (57)*/ begin if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE_PARM('Невозможно проведение из статуса неопознанный платеж',@ms) select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'57') end else if @pay_perpose=2008 /*2008 Поступление денежных средств с депозита (57)*/ begin if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE_PARM('Невозможно проведение из статуса неопознанный платеж',@ms) if @cur_code = 'RUR' select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') else select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'52') -- Lappo_da select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'57') end else if @pay_perpose=2027 /*2027 Поступление денежных средств с депозита (напрямую)*/ begin if .GET_CTRL_COMP_ID(@owner_id) != @from_partner_id .EXIT_MESSAGE_PARM('Выберите счет отправителя - счет фонда',@ms) if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE_PARM('Невозможно проведение из статуса неопознанный платеж',@ms) if @cur_code = 'RUR' select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') else select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'52') -- Lappo_da select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') end else if @pay_perpose = 2009 /*2009.Поступление денежных средств за недвижимость */ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.13') else if @pay_perpose = 2010 /*2010.Поступление денежных средств за прочие активы */ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.13') else if @pay_perpose in (2021,2040) /* Поступление процентов по банковскому депозиту 2021 - на прибыль, 2040 - погашение задолженности */ begin if .GET_CTRL_COMP_ID(@owner_id) != @from_partner_id .EXIT_MESSAGE_PARM('Выберите счет отправителя - счет фонда',@ms) if @from_partner_acc_id is null .EXIT_MESSAGE_PARM('Не задан депозитный счет (счет отправителя)',@ms) select @bank_id = (select b.partner_id from t_bank_accounts ba, t_banks b where ba.id = @from_partner_acc_id and b.id=ba.bank_id and .ITEMS_EXISTS_BY_TYPE(b.partner_id,'PARTNERS_JUR')) if @bank_id is null .EXIT_MESSAGE_PARM('Не задано юр.лицо-банк в счете отправителя',@ms) if (select acc_type_id from t_bank_accounts where id = @to_partner_acc_id) = 30 /* Если тип расчетного счета -депозитный */ begin if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE_PARM('Невозможно проведение из статуса неопознанный платеж',@ms) select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') end select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.10') end else if @pay_perpose=2023 /* 2023 поступление денежных средств по взаимозачету*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.5') else if @pay_perpose=2024 /* 2024 Платеж с биржи*/ begin if @place_id is null .EXIT_MESSAGE('Не задана площадка') if @from_partner_acc_id is null .EXIT_MESSAGE('Не задан расч.счет брокера') select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.4') end else if @pay_perpose=2026 /* 2026 Начисление процентов на остаток по расчетному счету*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'96.3.7') else if @pay_perpose in (4011,4021) /* 4011 Оплата паев 4021 - Обмен*/ begin if @pif_pay_id is null -- Не указана заявка begin select @new_state_id=.STATE_ID_FROM_CODE(@type_id,'WAIT_QUERY') if @fact_partner_id is null select @fact_partner_id=@from_partner_id select @from_partner_id=@fact_partner_id end if (@pif_pay_id is not null) and (upper(.ITEM_STATE_CODE(@pif_pay_id)) != 'PROV') .EXIT_MESSAGE_PARM('Заявка должна быть на исполнении',@ms) if (@pif_pay_id is not null) and ((select pay_owner_id from tp_pif_queries where id=@pif_pay_id) != @from_partner_id) .EXIT_MESSAGE_PARM('Отправитель платежа не является пайщиком в заявке',@ms) update t_paydocs set covered_sum=@doc_sum where id=@id select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.1') end else if @pay_perpose=4013 /* 4013 Возврат платежа по выкупу */ begin if @pif_pay_id is null .EXIT_MESSAGE_PARM('Не указана заявка',@ms) if upper(.ITEM_STATE_CODE(@pif_pay_id)) not in ('CRT','CRT_NEXT') .EXIT_MESSAGE_PARM('Заявка должна быть исполнена',@ms) if (select pay_owner_id from tp_pif_queries where id=@pif_pay_id) != @from_partner_id .EXIT_MESSAGE_PARM('Отправитель платежа не является пайщиком в заявке',@ms) 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_PARM('Сумма платежа не равна задолженности по заявке',@ms) 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_PARM('Сумма платежа не равна сумме заявки в отчете регистратора',@ms) 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_PARM('По заявке есть платежи с датой больше текущей',@ms) select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4.2') .ITEM_MOVE_STATE(@pif_pay_id,'CRT_RET') update t_paydocs set covered_sum=@doc_sum where id=@id end else /* Неуказанное целевое назначение */ begin if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE_PARM('Укажите целевое назначение',@ms) else begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.14') select @new_state_id = .STATE_ID(@type_id, 'UNDEF') end end /* OPERATION */ .UPDATE_STATE .ACTION_HISTORY if @cur_code = 'RUR' begin .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 else begin .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb_acc_id,@cred_acc_id,@doc_sum_rur,'RUR',@complete_date,0,0,@doc_name,N,@operation_id,@id,@action_id,@action_history_id,@doc_sum,@doc_sum) -- Lappo_da 03.05.06 end /* END OPERATION */ /* SUBC DEB */ if @pay_perpose in ( 2007 /*2007 Поступление денежных средств на депозит (57)*/, 2008 /*2008 Поступление денежных средств с депозита (57)*/, 2027 /*2027 Поступление денежных средств с депозита (напрямую)*/ ) begin .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) end else if @old_state_code = upper('UNDEF') /* Из неопознанного */ begin .UPDATE_SUBC(D,'partners',@from_partner_id) end else begin .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) end /* SUBC CRED */ if @pay_perpose in ( 4002 /* 4002 получение средств от УК на выкуп*/, 2003 /* 2003 платеж по договору продажи ЦБ*/, 2005 /* 2005 Поступление денежных средств за купонный доход*/, 2030 /* 2030 Прочие платежи за ЦБ*/, 2006 /* 2006 Поступление дивидендов */, 2034 /* 2034 Начисление и поступление дивидендов */, 2009 /* 2009 Поступление денежных средств за недвижимость */, 2010 /* 2010 Поступление денежных средств за прочие активы */, 2023 /* 2023 поступление денежных средств по взаимозачету*/ ) begin .UPDATE_SUBC(K,'partners',@from_partner_id) end else if @pay_perpose in ( 2024 /* 2024 Платеж с биржи*/ ) begin .UPDATE_SUBC(K,'partners',@from_partner_id) .UPDATE_SUBC(K,'exchange',@place_id) .UPDATE_SUBC(К,'bank_account',@from_partner_acc_id) end else if @pay_perpose in ( 4001 /* 4001 - поступление средств от инвестора (НИКОЙЛ) */, 4011 /* 4011 - оплата паев */, 4021 /* 4021 - обмен */ ) begin .UPDATE_SUBC(K,'partners',@from_partner_id) .UPDATE_SUBC(K,'paydocs',@id) end else if @pay_perpose in ( 4012 /* 4012 - Возврат дс за паи (НИКОЙЛ)*/ ) begin .UPDATE_SUBC(K,'partners',@from_partner_id) .UPDATE_SUBC(K,'pifdocs',@foundation_id) end else if @pay_perpose in ( 4013 /* 4013 - Возврат по выкупу*/ ) begin .UPDATE_SUBC(K,'partners',@from_partner_id) .UPDATE_SUBC(K,'pifdocs',@pif_pay_id) end else if @pay_perpose in ( 2007 /* 2007 Поступление денежных средств на депозит (57)*/, 2008 /* 2008 Поступление денежных средств с депозита (57)*/, 2033 -- c 57-го ) begin .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) end else if @pay_perpose in ( 2027 /* 2027 Поступление денежных средств с депозита (напрямую)*/ ) begin .UPDATE_SUBC(K,'bank_account',@from_partner_acc_id) end else if @pay_perpose in ( /* Поступление процентов по банковскому депозиту */ 2021, 2040 ) begin .UPDATE_SUBC(K,'partners',@bank_id) .UPDATE_SUBC(K,'bank_account',@from_partner_acc_id) end else /* Неуказанное целевое назначение */ begin .UPDATE_SUBC(K,'partners',@from_partner_id) end .SUBC_CHECK /* ADD */ if @pay_perpose = 2034 -- дивиденды с начислением и поступлением begin if @cur_code = 'RUR' begin select @deb_acc_id1 = @cred_acc_id select @cred_acc_id1 = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'91.1') .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb_acc_id1,@cred_acc_id1,@doc_sum,'RUR',@complete_date,0,0,@doc_name1,Y) end else begin .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb_acc_id1,@cred_acc_id1,@doc_sum_rur,'RUR',@complete_date,0,0,@doc_name1,Y,@operation_id,@id,@action_id,@action_history_id,@doc_sum,@doc_sum) -- Lappo_da 03.05.06 end .UPDATE_SUBC(D,'partners',@from_partner_id) .SUBC_CHECK end if @pay_perpose = 2021 /* 2021 Поступление процентов по банковскому депозиту */ begin declare @deb2021_id numeric declare @cred2021_id numeric select @deb2021_id=.SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.10') select @cred2021_id=.SD_ACCID_FROM_EFFNO(@fund_plan_id,'96.3.2') select @doc_name = 'Отнесение процентов по банковскому депозиту на прирост стоимости имущества Фонда ' +@doc_name if @cur_code = 'RUR' begin .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb2021_id,@cred2021_id,@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) end else begin .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb2021_id,@cred2021_id,@doc_sum_rur,'RUR',@complete_date,0,0,@doc_name,N,@operation_id,@id,@action_id,@action_history_id,@doc_sum,@doc_sum) -- Lappo_da 03.05.06 end .UPDATE_SUBC(D,'partners',@bank_id) .UPDATE_SUBC(D,'bank_account',@from_partner_acc_id) .SUBC_CHECK end else if @pay_perpose=4012 /* 4012 Возврат денежных средств за паи*/ begin /* Перевод заявки в статус оплата возвращена */ select @pay_rec_sid = convert(varchar(30), @foundation_id) .EXEC_ACTION(@pay_rec_sid,'PIF_QUERIES_BUY','PIF_QUERIES_BUY_RET') end /* END ADD */ end /* ==================== Проводки для НПФ ==================*/ if .STR_FOR_IF(@fund_type_code) = .STR_FOR_IF('npf_fund') begin select @fund_plan_id = .ARG_PLAN('NPF_ACCOUNT') select @asset_manager_id = @to_partner_id .ID_VAR(@acc51_id) .ID_VAR(@acc57_id) .ID_VAR(@acc582_id) .ID_VAR(@acc7421_id) .ID_VAR(@d_bank_account_id) .ID_VAR(@d_partners_id) .ID_VAR(@d_partners_cont_id) .ID_VAR(@d_asset_manager_id) .ID_VAR(@d_place_id) .ID_VAR(@c_bank_account_id) .ID_VAR(@c_partners_id) .ID_VAR(@c_partners_cont_id) .ID_VAR(@c_asset_manager_id) .ID_VAR(@c_place_id) if @cur_code = 'RUR' select @acc51_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') else select @acc51_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'52') -- Lappo_da 02.05.06 select @acc57_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'57') select @acc582_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') select @acc7421_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'74.2.1') if @asset_manager_id = @owner_id -- самостоятельное размещение select @deb_acc_id = @acc51_id else -- размещение через УК*/ select @deb_acc_id = @acc7421_id -- 2026: % на остаток по р.счету if @pay_perpose in (2026) begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'91.5') select @c_asset_manager_id=@asset_manager_id if @asset_manager_id = @owner_id -- самостоятельно begin select @d_bank_account_id=@to_partner_acc_id end else -- через УК begin select @d_asset_manager_id=@asset_manager_id end end -- 2003: продажа по сделкам, 2005: купон, 2030: проч.за ЦБ, 2023: взаимозачет, 2035: купон с начислением if @pay_perpose in (2003,2005,2030,2023,2035) begin if @asset_manager_id = @owner_id -- самостоятельно begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.4') select @d_bank_account_id=@to_partner_acc_id select @c_partners_id=@from_partner_id end else -- через УК begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5') select @d_asset_manager_id=@asset_manager_id select @c_partners_cont_id=@from_partner_id select @c_partners_id=@asset_manager_id end if @pay_perpose=2035 begin select @deb_acc_id1 = @cred_acc_id select @cred_acc_id1 = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'91.2') end end -- 2024: с биржи if @pay_perpose in (2024) begin if @place_id is null .EXIT_MESSAGE_PARM('Не задана площадка',@ms) select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'55.1') select @c_partners_id=@from_partner_id select @c_asset_manager_id=@asset_manager_id select @c_place_id=@place_id if @asset_manager_id = @owner_id -- самостоятельно select @d_bank_account_id=@to_partner_acc_id else -- через УК select @d_asset_manager_id=@asset_manager_id end -- 2006: поступление дивидендов else if @pay_perpose in (2006,2034) begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.9') select @c_asset_manager_id=@asset_manager_id select @c_partners_id=@from_partner_id if @asset_manager_id = @owner_id -- самостоятельно select @d_bank_account_id=@to_partner_acc_id else -- через УК select @d_asset_manager_id=@asset_manager_id if @pay_perpose=2034 begin select @deb_acc_id1 = @cred_acc_id select @cred_acc_id1 = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'91.1') end end -- 2007: на депозит (через 57) else if @pay_perpose=2007 begin -- 'asset_manager' - тот, кто отправил select @deb_acc_id = @acc582_id select @cred_acc_id = @acc57_id select @d_bank_account_id=@to_partner_acc_id select @d_asset_manager_id=@from_partner_id select @c_bank_account_id=@to_partner_acc_id select @c_asset_manager_id=@from_partner_id end -- 2008: с депозита (через 57) else if @pay_perpose=2008 begin -- 'asset_manager' - тот, кто получает select @cred_acc_id = @acc57_id if @asset_manager_id = @owner_id -- самостоятельно begin select @d_bank_account_id=@to_partner_acc_id select @c_bank_account_id=@to_partner_acc_id select @c_asset_manager_id=@owner_id end else -- через УК begin select @d_asset_manager_id=@asset_manager_id select @c_bank_account_id=@to_partner_acc_id select @c_asset_manager_id=@asset_manager_id end end -- 2027: с депозита (напрямую) else if @pay_perpose=2027 begin if (@owner_id != @from_partner_id) and (@owner_id != isnull((select fund_id from t_bank_accounts where id=@from_partner_acc_id),0)) .EXIT_MESSAGE_PARM('Выберите счет отправителя - счет ДУ для фонда или счет фонда',@ms) -- 'asset_manager' - тот, кто получает select @cred_acc_id = @acc582_id if @asset_manager_id = @owner_id -- самостоятельно begin select @d_bank_account_id=@to_partner_acc_id select @c_bank_account_id=@from_partner_acc_id select @c_asset_manager_id=@owner_id end else -- через УК begin select @d_asset_manager_id=@asset_manager_id select @c_bank_account_id=@from_partner_acc_id select @c_asset_manager_id=@asset_manager_id end end -- 2009: за недвижимость, 2010: за прочие активы else if @pay_perpose in (2009,2010) begin if @asset_manager_id = @owner_id -- самостоятельно begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.10') select @d_bank_account_id=@to_partner_acc_id select @c_partners_id=@from_partner_id end else -- через УК begin select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.11') select @d_asset_manager_id=@asset_manager_id select @c_partners_id=@asset_manager_id end end -- 5001: взносы по договорам пенсионного обеспечения else if @pay_perpose=5001 begin if @asset_manager_id != @owner_id .EXIT_MESSAGE_PARM('Укажите расчетный счет фонда',@ms) select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'89.1') select @d_bank_account_id=@to_partner_acc_id end -- 2021: проценты по банковскому депозиту else if @pay_perpose in (2021,2040) begin if @from_partner_acc_id is null .EXIT_MESSAGE_PARM('Не задан депозитный счет (счет отправителя)',@ms) select @bank_id = (select b.partner_id from t_bank_accounts ba, t_banks b where ba.id = @from_partner_acc_id and b.id=ba.bank_id and .ITEMS_EXISTS_BY_TYPE(b.partner_id,'PARTNERS_JUR')) if @bank_id is null .EXIT_MESSAGE_PARM('Не задано юр.лицо-банк в счете отправителя',@ms) if @asset_manager_id = @owner_id -- самостоятельно begin if (select acc_type_id from t_bank_accounts where id=@to_partner_acc_id)=30 begin select @deb_acc_id = @acc582_id select @d_bank_account_id=@to_partner_acc_id select @d_asset_manager_id=@owner_id end else begin select @deb_acc_id = @acc51_id select @d_bank_account_id=@to_partner_acc_id end select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.2') select @c_partners_id=@bank_id end else -- через УК begin if (select acc_type_id from t_bank_accounts where id=@to_partner_acc_id)=30 begin select @deb_acc_id = @acc582_id select @d_bank_account_id=@to_partner_acc_id select @d_asset_manager_id=@asset_manager_id end else begin select @deb_acc_id = @acc7421_id select @d_asset_manager_id=@asset_manager_id end select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.3') select @c_partners_id=@asset_manager_id end select @doc_name1 = 'Отнесение процентов по банковскому депозиту на прирост стоимости имущества Фонда ' +@doc_name1 select @deb_acc_id1 = @cred_acc_id select @cred_acc_id1 = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'91.3') end -- 5005: в ДУ (через 57) else if @pay_perpose=5005 begin if @owner_id = @to_partner_id .EXIT_MESSAGE_PARM('Получателем должен быть управляющий',@ms) if @owner_id != @from_partner_id .EXIT_MESSAGE_PARM('Отправитель должен быть фонд',@ms) select @deb_acc_id = @acc7421_id select @cred_acc_id = @acc57_id select @d_asset_manager_id=@asset_manager_id select @c_bank_account_id=@to_partner_acc_id select @c_asset_manager_id=@asset_manager_id end -- 5006: из ДУ (через 57) else if @pay_perpose=5006 begin if @owner_id != @to_partner_id .EXIT_MESSAGE_PARM('Получатель должен быть фонд',@ms) if @owner_id = @from_partner_id .EXIT_MESSAGE_PARM('Отправитель должен быть управляющий',@ms) select @cred_acc_id = @acc57_id select @d_bank_account_id=@to_partner_acc_id select @c_bank_account_id=@to_partner_acc_id select @c_asset_manager_id=@owner_id end -- 5011: из ДУ (напрямую) else if @pay_perpose=5011 begin if @owner_id != @to_partner_id .EXIT_MESSAGE_PARM('Получатель должен быть фонд',@ms) if @owner_id = @from_partner_id .EXIT_MESSAGE_PARM('Отправитель должен быть управляющий',@ms) select @cred_acc_id = @acc7421_id select @d_bank_account_id=@to_partner_acc_id select @c_asset_manager_id=@from_partner_id end -- 5008: между управляющими (через 57) else if @pay_perpose = 5008 begin if @owner_id = @asset_manager_id /* При размещении самостоятельно НПФ*/ .EXIT_MESSAGE_PARM('Получателем должен быть управляющий',@ms) select @deb_acc_id = @acc7421_id select @cred_acc_id = @acc57_id select @d_asset_manager_id=@asset_manager_id select @c_bank_account_id=@to_partner_acc_id select @c_asset_manager_id=@asset_manager_id end -- 5013: между управляющими (напрямую) else if @pay_perpose = 5013 begin if (@owner_id = @to_partner_id) or (@owner_id = @from_partner_id) .EXIT_MESSAGE_PARM('Фонд не может быть выбран в качестве получателя или отправителя',@ms) select @deb_acc_id = @acc7421_id select @cred_acc_id = @acc7421_id select @d_asset_manager_id=@to_partner_id select @c_asset_manager_id=@from_partner_id end -- Аналитика р.счет на 74.2.1 if @deb_acc_id=@acc7421_id begin if @to_partner_acc_id is null or ((select acc_type_id from t_bank_accounts where id=@to_partner_acc_id) not in (10,20)) or ((select acc_purpose_id from t_bank_accounts where id=@to_partner_acc_id) not in (2)) .EXIT_MESSAGE_PARM('Счет получателя должен быть расчетным счетом УК типа ДУ',@ms) select @d_bank_account_id=@to_partner_acc_id end if @cred_acc_id=@acc7421_id begin if @from_partner_acc_id is null or ((select acc_type_id from t_bank_accounts where id=@from_partner_acc_id) not in (10,20)) or ((select acc_purpose_id from t_bank_accounts where id=@from_partner_acc_id) not in (2)) .EXIT_MESSAGE_PARM('Счет отправителя должен быть расчетным счетом УК типа ДУ',@ms) select @c_bank_account_id=@from_partner_acc_id end -- OPERATION .UPDATE_STATE .ACTION_HISTORY if @cur_code = 'RUR' begin .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 else begin .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb_acc_id,@cred_acc_id,@doc_sum_rur,'RUR',@complete_date,0,0,@doc_name,N,@operation_id,@id,@action_id,@action_history_id,@doc_sum,@doc_sum) -- Lappo_da 03.05.06 end -- SUBC DEB if @d_bank_account_id is not null begin .UPDATE_SUBC(D,'bank_account',@d_bank_account_id) end if @d_partners_id is not null begin .UPDATE_SUBC(D,'partners',@d_partners_id) end if @d_partners_cont_id is not null begin .UPDATE_SUBC(D,'partners_cont',@d_partners_cont_id) end if @d_asset_manager_id is not null begin .UPDATE_SUBC(D,'asset_manager',@d_asset_manager_id) end if @d_place_id is not null begin .UPDATE_SUBC(K,'exchange',@d_place_id) end -- SUBC CRED if @c_bank_account_id is not null begin .UPDATE_SUBC(K,'bank_account',@c_bank_account_id) end if @c_partners_id is not null begin .UPDATE_SUBC(K,'partners',@c_partners_id) end if @c_partners_cont_id is not null begin .UPDATE_SUBC(K,'partners_cont',@c_partners_cont_id) end if @c_asset_manager_id is not null begin .UPDATE_SUBC(K,'asset_manager',@c_asset_manager_id) end if @c_place_id is not null begin .UPDATE_SUBC(K,'exchange',@c_place_id) end .SUBC_CHECK -- ADD OPERATION - 1 if @pay_perpose in (2021,2034,2035) begin if @cur_code = 'RUR' begin .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb_acc_id1,@cred_acc_id1,@doc_sum,'RUR',@complete_date,0,0,@doc_name1,Y) end else begin .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb_acc_id1,@cred_acc_id1,@doc_sum_rur,'RUR',@complete_date,0,0,@doc_name1,Y,@operation_id,@id,@action_id,@action_history_id,@doc_sum,@doc_sum) -- Lappo_da 03.05.06 end if @pay_perpose=2021 -- Поступление процентов по банковскому депозиту begin .UPDATE_SUBC(D,'partners',@c_partners_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) end if @pay_perpose=2034 -- дивиденды с начислением begin .UPDATE_SUBC(D,'partners',@c_partners_id) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) end if @pay_perpose=2035 -- купон с начислением begin .UPDATE_SUBC(D,'partners',@c_partners_id) if @c_partners_cont_id is not null begin .UPDATE_SUBC(D,'partners_cont',@c_partners_cont_id) end .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) end .SUBC_CHECK end end -- End NPF -- Запись в журнал .ID_VAR(@j_asset_id) select @j_asset_id=@to_partner_acc_id .SD_ASSENT_ADD(@id,@j_asset_id,@doc_sum,null,@owner_id,@purpose_id) .SD_ASSET_OPER_ADD(@id,@j_asset_id,@doc_sum,null,@owner_id,@purpose_id,1) if @pay_perpose in (2027) begin /* убрано 15.02.05, т.к. говорят, что запись о согласии д.б.одна, касающаяся того счета, на который приходят деньги .SD_ASSENT_ADD(@id,@from_partner_acc_id,@doc_sum,null,@owner_id,@purpose_id) */ .SD_ASSET_OPER_ADD(@id,@from_partner_acc_id,@doc_sum,null,@owner_id,@purpose_id,2) end if @pay_perpose in (2024) begin select @j_asset_id=isnull(@from_partner_acc_id,@place_id) .SD_ASSET_OPER_ADD(@id,@j_asset_id,@doc_sum,null,@owner_id,@purpose_id,2) end commit tran