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) .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('Расчетные счета отправителя и получателя не должны совпадать') .UPDATE_STATE .ACTION_HISTORY /*-------Проводки ----------*/ .NAME_VAR(@fund_type_code) declare @doc_name varchar(255) select @fund_type_code = .ITEM_TYPE_CODE(@owner_id) select @complete_date = .OPERDAY --.GET_SD_OPER_DATE(@complete_date,@id) select @doc_name = 'Проведение платежа как неопознанного' /* Проводки для ПИФ */ if .STR_FOR_IF(@fund_type_code) = .STR_FOR_IF('pif_fund') begin declare @d_acc_id numeric declare @c_acc_id numeric declare @fund_plan_id numeric select @fund_plan_id = .ARG_PLAN('PIF_ACCOUNT') select @d_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'51') select @c_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id,'76.14') .OPERATION(@owner_id,@fund_plan_id,@complete_date,@d_acc_id,@c_acc_id,@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 if .STR_FOR_IF(@fund_type_code) = .STR_FOR_IF('npf_fund') begin .EXIT_MESSAGE('Для НПФ временно не поддерживается') end .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) -- Проводки для BACK DECLARE @mess varchar(255) .ID_VAR(@back_owner_id) .ID_VAR(@plan_money_id) .ID_VAR(@plan_securs_id) .ID_VAR(@client_contract_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(@portfolio_id) .ID_VAR(@value_id) .ID_VAR(@portfolio_sub_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 DECLARE @is_realiz INT, @is_p2l_comis INT, @is_com_in INT, @is_allow_short4stocks INT, @is_allow_short4money INT, @asset4pereoc_type_id NUMERIC .BACK_GET_ORG_PARMS(@back_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) .BACK_GET_PIF_CONTRACT(@owner_id, @back_owner_id, @client_contract_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 = @to_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(@ext_subc_str, 'INVESTORS', @client_contract_id) .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) .ASSIGN(@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) .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) SELECT @bo1_in_out=13 --cheker .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) commit tran .END