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 select @pay_perpose=(select code from t_purposes where id=@purpose_id) if @from_partner_acc_id=@to_partner_acc_id .EXIT_MESSAGE('Расчетные счета отправителя и получателя не должны совпадать') --if isnull(@bank_acc_rep_id,0)=0 -- .EXIT_MESSAGE('Укажите выписку из банка') --if upper(.ITEM_STATE_CODE(@bank_acc_rep_id)) = 'ED' -- .EXIT_MESSAGE('Выписка из банка должна быть подтверждена') 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 @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 select @doc_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 @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 select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') 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(@mess) 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(@mess) 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=2006 /* 2006 поступление дивидендов*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.9') else if @pay_perpose=2007 /*2007 Поступление денежных средств на депозит (57)*/ begin if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE('Невозможно проведение из статуса неопознанный платеж') 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('Невозможно проведение из статуса неопознанный платеж') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'57') end else if @pay_perpose=4034 /*4034 Поступление налички на р.сч из переводов в пути*/ begin if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE('Невозможно проведение из статуса неопознанный платеж') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') 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('Выберите счет отправителя - счет фонда') if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE('Невозможно проведение из статуса неопознанный платеж') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') 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=2021 /* 2021 Поступление процентов по банковскому депозиту */ begin select @bank_id = (select bank_id from t_bank_accounts where id = @to_partner_acc_id) if @bank_id is null .EXIT_MESSAGE('Не задан банк счета назначения') 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('Невозможно проведение из статуса неопознанный платеж') 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 Платеж с биржи*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.5.4') else if @pay_perpose=103 /* 103 Расчеты с банком*/ select @cred_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.8') 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,4030) /* 4011 Оплата паев 4030 Через кассу*/ begin if @pif_pay_id is null -- Не указана заявка select @new_state_id=.STATE_ID_FROM_CODE(@type_id,'WAIT_QUERY') if (@pif_pay_id is not null) and (upper(.ITEM_STATE_CODE(@pif_pay_id)) != 'PROV') .EXIT_MESSAGE('Заявка должна быть на исполнении') 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('Отправитель платежа не является пайщиком в заявке') 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') if @pay_perpose = 4030 begin if @old_state_code = upper('UNDEF') /* Из неопознанного */ .EXIT_MESSAGE('Невозможно проведение из статуса неопознанный платеж') select @deb_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'50') end end else if @pay_perpose=4013 /* 4013 Возврат платежа по выкупу */ begin if @pif_pay_id is null .EXIT_MESSAGE('Не указана заявка') if upper(.ITEM_STATE_CODE(@pif_pay_id)) not in ('CRT','CRT_NEXT') .EXIT_MESSAGE('Заявка должна быть исполнена') if (select pay_owner_id from tp_pif_queries where id=@pif_pay_id) != @from_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 @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('Укажите целевое назначение') 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 .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 ( 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 if @pay_perpose not in (4030) -- кроме налички begin .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) end end /* SUBC CRED */ if @pay_perpose in ( 4002 /* 4002 получение средств от УК на выкуп*/, 2003 /* 2003 платеж по договору продажи ЦБ*/, 2005 /* 2005 Поступление денежных средств за купонный доход*/, 2030 /* 2030 Прочие платежи за ЦБ*/, 2006 /* 2006 Поступление дивидендов */, 2009 /* 2009 Поступление денежных средств за недвижимость */, 2010 /* 2010 Поступление денежных средств за прочие активы */, 2023 /* 2023 поступление денежных средств по взаимозачету*/, 2024 /* 2024 Платеж с биржи*/, 103 /* 103 Расчеты с банком*/ ) begin .UPDATE_SUBC(K,'partners',@from_partner_id) end else if @pay_perpose in ( 4001 /* 4001 - поступление средств от инвестора (НИКОЙЛ) */, 4011 /* 4011 - оплата паев */, 4030 /* 4030 - оплата паев за нал*/ ) 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)*/ ) 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 /* 2021 Поступление процентов по банковскому депозиту */ ) begin .UPDATE_SUBC(K,'partners',@bank_id) end else if @pay_perpose in ( 2026 /* 2026 проценты по остаткам на РС */ ) begin .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) end else if @pay_perpose in (4034) begin .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) end else /* Неуказанное целевое назначение */ begin .UPDATE_SUBC(K,'partners',@from_partner_id) end .SUBC_CHECK /* ADD */ 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 .OPERATION(@owner_id,@fund_plan_id,@complete_date,@deb2021_id,@cred2021_id,@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'partners',@bank_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') .UPDATE_STATE .ACTION_HISTORY select @asset_manager_id = @to_partner_id if @pay_perpose in (2003,2005,2030,2024,2023) /*2003 Основной платеж по договору продажи ЦБ*/ /*2005 Поступление денежных средств за купонный доход*/ /*2030 Прочие платежи за ЦБ*/ /* 2023 поступление денежных средств по взаимозачету*/ begin if @pay_perpose = 2003 select @doc_name = 'Основной платеж по договору продажи ЦБ ' +@doc_name else if @pay_perpose = 2005 select @doc_name = 'Поступление денежных средств за купонный доход ' +@doc_name else if @pay_perpose = 2030 select @doc_name = 'Прочие платежи за ЦБ ' +@doc_name else if @pay_perpose = 2024 select @doc_name = 'Платеж с биржи ' +@doc_name else if @pay_perpose = 2023 select @doc_name = 'Поступление денежных средств по взаимозачету ' +@doc_name if @asset_manager_id = @owner_id /* При размещении самостоятельно*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','76.4',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'partners',@from_partner_id) .SUBC_CHECK end else /* При размещении через УК*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','76.5',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'partners_cont',@from_partner_id) .UPDATE_SUBC(K,'partners',@asset_manager_id) .SUBC_CHECK end end else if @pay_perpose = 2006 /*2006 Поступление дивидендов*/ begin select @doc_name = 'Поступление дивидендов ' +@doc_name if @asset_manager_id = @owner_id /* При размещении самостоятельно*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','76.9',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'partners',@from_partner_id) .SUBC_CHECK end else /* При размещении через УК*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','76.9',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'partners',@from_partner_id) .SUBC_CHECK end end else if @pay_perpose=2007 /*2007 Поступление денежных средств на депозит (57)*/ begin -- 'asset_manager' - тот, кто отправил select @doc_name = 'Поступление денежных средств на счет банковского депозита ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'58.2','57',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(D,'asset_manager',@from_partner_id) .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@from_partner_id) .SUBC_CHECK end else if @pay_perpose=2008 /*2008 Поступление денежных средств с депозита (57)*/ begin select @doc_name = 'Поступление денежных средств со счета банковского депозита ' +@doc_name -- 'asset_manager' - тот, кто получает if @owner_id = @asset_manager_id /* При размещении самостоятельно НПФ */ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','57',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@owner_id) .SUBC_CHECK end else /* При размещении через УК*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','57',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .SUBC_CHECK end end else if @pay_perpose=2027 /*2027 Поступление денежных средств с депозита (напрямую)*/ begin select @doc_name = 'Поступление денежных средств со счета банковского депозита ' +@doc_name 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('Выберите счет отправителя - счет ДУ для фонда или счет фонда') -- 'asset_manager' - тот, кто получает if @owner_id = @asset_manager_id /* При размещении самостоятельно НПФ */ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','58.2',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'bank_account',@from_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@owner_id) .SUBC_CHECK end else /* При размещении через УК*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','58.2',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'bank_account',@from_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .SUBC_CHECK end end else if @pay_perpose in (2009,2010) -- 2009 Поступление денежных средств за недвижимость -- 2010 Поступление денежных средств за прочие активы begin select @doc_name = 'Поступление денежных средств за недвижимость ' +@doc_name if @asset_manager_id = @owner_id /* При размещении самостоятельно*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','76.10',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'partners',@from_partner_id) .SUBC_CHECK end else /* При размещении через УК*/ begin .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','76.11',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'partners',@asset_manager_id) .SUBC_CHECK end end else if @pay_perpose=5001 /*5001 Поступление взносов по договорам пенсионного обеспечения*/ begin select @doc_name = 'Поступление взносов по договорам пенсионного обеспечения ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','96.1',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .SUBC_CHECK select @doc_name = 'Зачисл. пенс. взносов в пенс. резерв ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'96.1','89.1',@doc_sum,'RUR',@complete_date,0,0,@doc_name,Y) end else if @pay_perpose=2021 /* 2021 Поступление процентов по банковскому депозиту */ begin if @asset_manager_id = @owner_id /* При размещении самостоятельно*/ begin select @doc_name = 'Поступление процентов по банковскому депозиту ' +@doc_name select @bank_id = (select bank_id from t_bank_accounts where id = @to_partner_acc_id) /*.EXIT_MESSAGE_PARM('',@to_partner_acc_id)*/ if @bank_id is null .EXIT_MESSAGE('Не задан банк счета назначения') if (select acc_type_id from t_bank_accounts where id = @to_partner_acc_id) = 30 /* Если тип расчетного счета -депозитный */ select @percent_deposit_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') else select @percent_deposit_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,@percent_deposit_acc_id,'76.2',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) if (select acc_type_id from t_bank_accounts where id = @to_partner_acc_id) = 30 /* Если тип расчетного счета -депозитный */ begin .UPDATE_SUBC(D,'asset_manager',@owner_id) end .UPDATE_SUBC(K,'partners',@bank_id) .SUBC_CHECK select @doc_name = 'Отнесение процентов по банковскому депозиту на прирост стоимости имущества Фонда ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'76.2','80.2',@doc_sum,'RUR',@complete_date,0,0,@doc_name,Y) .UPDATE_SUBC(D,'partners',@bank_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .SUBC_CHECK end else /* При размещении через УК */ begin select @doc_name = 'Поступление процентов по банковскому депозиту ' +@doc_name if (select acc_type_id from t_bank_accounts where id = @to_partner_acc_id) = 30 /* Если тип расчетного счета -депозитный */ select @percent_deposit_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'58.2') else select @percent_deposit_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'74.2.1') .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,@percent_deposit_acc_id,'76.3',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) if (select acc_type_id from t_bank_accounts where id = @to_partner_acc_id) = 30 begin .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) end .UPDATE_SUBC(K,'partners',@asset_manager_id) .SUBC_CHECK select @doc_name = 'Отнесение процентов по банковскому депозиту на прирост стоимости имущества Фонда ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'76.3','80.1',@doc_sum,'RUR',@complete_date,0,0,@doc_name,Y) .UPDATE_SUBC(D,'partners',@asset_manager_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .SUBC_CHECK end end else if @pay_perpose=5005 /* 5005 Поступление средств в ДУ (57) */ begin if @owner_id = @to_partner_id .EXIT_MESSAGE('Получателем должен быть управляющий') if @owner_id != @from_partner_id .EXIT_MESSAGE('Отправитель должен быть фонд') select @doc_name = 'Поступление средств в доверительное управление ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','57',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .SUBC_CHECK end else if @pay_perpose=5006 /* 5006 Поступление средств из ДУ (57) */ begin if @owner_id != @to_partner_id .EXIT_MESSAGE('Получатель должен быть фонд') select @doc_name = 'Поступление средств из доверительного управления ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','57',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@owner_id) .SUBC_CHECK end else if @pay_perpose=5011 /* 5011 Поступление средств из ДУ (напрямую) */ begin if @owner_id != @to_partner_id .EXIT_MESSAGE('Получатель должен быть фонд') select @doc_name = 'Поступление средств из доверительного управления ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','74.2.1',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@from_partner_id) .SUBC_CHECK end else if @pay_perpose = 5008 /* Перечисление средств между управляющими (57)*/ begin if @owner_id = @asset_manager_id /* При размещении самостоятельно НПФ*/ .EXIT_MESSAGE('Получателем должен быть управляющий') .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','57',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@asset_manager_id) .UPDATE_SUBC(K,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'asset_manager',@asset_manager_id) .SUBC_CHECK end else if @pay_perpose = 5013 /* Перечисление средств между управляющими (напрямую)*/ begin if (@owner_id = @to_partner_id) or (@owner_id = @from_partner_id) .EXIT_MESSAGE('Фонд не может быть выбран в качестве получателя или отправителя') .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'74.2.1','74.2.1',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'asset_manager',@to_partner_id) .UPDATE_SUBC(K,'asset_manager',@from_partner_id) .SUBC_CHECK end else if @pay_perpose=103 /* 103 Расчеты с банком*/ begin select @doc_name = 'Расчеты с банком ' +@doc_name .OPERATION(@owner_id,'NPF_ACCOUNT',@complete_date,'51','76.8',@doc_sum,'RUR',@complete_date,0,0,@doc_name,N) .UPDATE_SUBC(D,'bank_account',@to_partner_acc_id) .UPDATE_SUBC(K,'partners',@from_partner_id) .UPDATE_SUBC(K,'partners_cont',@from_partner_id) .SUBC_CHECK end end /* End NPF*/ if @pay_perpose in (4030) begin declare @j_asset_id numeric select @j_asset_id=.SD_ACCID_FROM_EFFNO(@fund_plan_id,'50') .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) end else begin .SD_ASSENT_ADD(@id,@to_partner_acc_id,@doc_sum,null,@owner_id,@purpose_id) .SD_ASSET_OPER_ADD(@id,@to_partner_acc_id,@doc_sum,null,@owner_id,@purpose_id,1) if @pay_perpose in (2027) begin .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 end commit tran