# Date: 18/04/06 # Version: 105 $PATTERN(.PIF_ROUND_RATE) name=Округление сумм при пересчете курсов class=2 product=ALD_FUND pattern_text=$TEXT(15592410) #ifndef #round_pays #define #round_pays declare @pif_round_rate_1 tinyint #endif select @pif_round_rate_1 = (select round_rate from td_pay_fond where id = %FUND_ID%) if @pif_round_rate_1 is null .EXIT_MESSAGE('Не задано количество знаков округления суммы списания') select %RESULT% = round( %SUM_MONEY%, @pif_round_rate_1) $ENDTEXT(15592410) $PATTERNARG(%FUND_ID%) name=ID Фонда order=1 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%SUM_MONEY%) name=Исходная сумма для округления order=2 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%RESULT%) name=Результат order=3 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $ENDPATTERN $PATTERN(.PIF_CALC_STOCK_PRICE) name=Определение оценочной стоимости ЦБ class=2 product=ALD_FUND pattern_text=$TEXT(15592410) exec dbo.ap_pif_calc_stock_price @stock_id = %STOCK_ID% , -- Ценная бумага @fund_id = %FUND_ID% , -- Фонд @place_id = %PLACE_ID% , -- Площадка котировок @check_date = %CHECK_DATE% , -- Дата определения стоимости ЦБ @stock_qty = %STOCK_QTY% , -- Кол-во ЦБ @rate_date = %RATE_DATE% out, -- Фактическая дата котировки @is_rate = %IS_RATE% out, -- Тип котировки (0 - прочая, 1 - признаваемая) @stock_rate = %STOCK_RATE% out, -- Котировка ЦБ @coupon_rate = %COUPON_RATE% out, -- Купон ЦБ @stock_sum = %STOCK_SUM% out, -- Оценочная стоимость ЦБ @coupon_sum = %COUPON_SUM% out -- Оценочная стоимость купона $ENDTEXT(15592410) $PATTERNARG(%STOCK_ID%) name=ЦБ order=1 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%FUND_ID%) name=Фонд order=2 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%PLACE_ID%) name=Площадка котировок order=3 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%CHECK_DATE%) name=Дата проверки order=4 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%STOCK_QTY%) name=Кол-во order=5 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%RATE_DATE%) name=Дата котировки (out) order=6 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_RATE%) name=Тип котировки (out) order=7 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%STOCK_RATE%) name=Котировка (out) order=8 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%COUPON_RATE%) name=Котировка купона (out) order=9 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%STOCK_SUM%) name=Оцен. стоимость ЦБ (out) order=10 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%COUPON_SUM%) name=Оцен. стоимость купона order=11 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $ENDPATTERN $PATTERN(.BACK_CLOSE_PROFIT_LOSS_QTY_COMM) name=Закрытие прибыли/убытка на фонды c комментарием и суммой class=2 product=ALD_SECUR pattern_text=$TEXT(15592412) #ifndef #close_profit_or_loss #define #close_profit_or_loss -- new 11.04.05 declare @saldo_bal_close money, @saldo_bal_close_k money, @saldo_bal_close_d money, @profit_acc_close_id numeric, @realiz_acc_close_id numeric, @mess_res_close varchar(255), @plan_cur_close_id numeric, @fond_own_close_id numeric, @debet_acc_close_id numeric, @credit_acc_close_id numeric, @oper_sum_close money, @stock2oper_id numeric, @stock2oper_sum money, @stock2oper_cur_id numeric, @close_plan2partner_id numeric, @close_s_qty money, @close_acc_sum money -- letsko_av -- 31.03.2005 -- Проводки ПИФ по переоценке .ID_VAR(@fund_plan_id) .ID_VAR(@imushestvo_account_id) .ID_VAR(@pif_stock_acc_id) .ID_VAR(@fund_id) .ID_VAR(@rubel_id) .ID_VAR(@letsko_ssc_inv_id) .ID_VAR(@letsko_ssc_stock_id) .ID_VAR(@letsko_ssc_portfolio_id) .MONEY_VAR(@mysumma) SELECT @fund_plan_id = .ARG_PLAN('PIF_ACCOUNT') SELECT @imushestvo_account_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id, '86.3') SELECT @pif_stock_acc_id = .SD_ACCID_FROM_EFFNO(@fund_plan_id, '76.6') SELECT @rubel_id = .CUR('RUR') -- letsko_av (end) #endif select @saldo_bal_close=0 select @saldo_bal_close_k=0 select @saldo_bal_close_d=0 select @oper_sum_close=0 select @plan_cur_close_id=(select cur_id from t_plans where id=%PLAN_MONEY_ID%) ---- достаем счет реализации .ACCID_FROM_CONST2PLAN(@realiz_acc_close_id,'BACK_ACC_REALIZ', %PLAN_MONEY_ID%,1,1,'Cчет реализации',@mess_res_close) ---- если закрываем какой то конкретный счет,который передается в шаблон, то переприсваиваем счет ---- в противном случае закрываем счет реализации if convert(numeric,%ACC_ID%) is not null select @realiz_acc_close_id=%ACC_ID% ---- в зависимости от типа закрытия, достаем счет прибыли/убытка, на который будем закрывать if %TYPE_CLOSE%=1 begin .ACCID_FROM_CONST2PLAN(@profit_acc_close_id,'BACK_ACC_PROFIT_BAYSALE_MAIN',%PLAN_MONEY_ID%,1,1,'Счет прибыли или убытки по сделке (основной)',@mess_res_close) end else if %TYPE_CLOSE%=2 begin .ACCID_FROM_CONST2PLAN(@profit_acc_close_id,'BACK_ACC_PROFIT_BAYSALE_COMIS',%PLAN_MONEY_ID%,1,1,'Счет прибыли или убытки по сделке (по комиссиям)',@mess_res_close) end else if %TYPE_CLOSE%=3 begin .ACCID_FROM_CONST2PLAN(@profit_acc_close_id,'BACK_ACC_PROFIT_BAYSALE_FUTUR',%PLAN_MONEY_ID%,1,1,'Счет прибыли или убытки по сделке (буд. периодов)',@mess_res_close) end else if %TYPE_CLOSE%=4 begin .ACCID_FROM_CONST2PLAN(@profit_acc_close_id,'BACK_ACC_PROFIT_DIVIDEND',%PLAN_MONEY_ID%,1,1,'Счет прибыли для дивидендов',@mess_res_close) end else if %TYPE_CLOSE%=5 begin .ACCID_FROM_CONST2PLAN(@profit_acc_close_id,'BACK_ACC_PROFIT_OTHER',%PLAN_MONEY_ID%,1,1,'Счет прочей прибыли убытка',@mess_res_close) end ---.SALDO(%OWNER_ID%,%PLAN_MONEY_ID%,%OP_DATE%,@realiz_acc_close_id,%REALIZ_SUBC%,N,K,@saldo_bal_close_k) ---.SALDO(%OWNER_ID%,%PLAN_MONEY_ID%,%OP_DATE%,@realiz_acc_close_id,%REALIZ_SUBC%,N,D,@saldo_bal_close_d) ---- вычисляется остаток по счету, который будем закрывать в 0 select @close_plan2partner_id=.PLAN2PARTNER_ID(%OWNER_ID%,%PLAN_MONEY_ID%) .SALDO_NOW_SBC(@close_plan2partner_id,@realiz_acc_close_id,%REALIZ_SUBC%,(-1),@saldo_bal_close_k,@close_s_qty,@close_acc_sum) .SALDO_NOW_SBC(@close_plan2partner_id,@realiz_acc_close_id,%REALIZ_SUBC%,1,@saldo_bal_close_d,@close_s_qty,@close_acc_sum) ---- если указана конкретная сумма, то закрываем на эту сумму if isnull(%SUM%,0)>0 select @saldo_bal_close=%SUM%*(-1.0) else --- или закрываем на остаток по счету begin if @saldo_bal_close_d<>0 select @saldo_bal_close=@saldo_bal_close_d else if @saldo_bal_close_k<>0 select @saldo_bal_close=@saldo_bal_close_k*(-1.0) end ----- вычисляем счет фонда инвестора, на который будут закрываться прибыли-убытки if %CHARACTER_ID% = 1 begin .ACCID_FROM_CONST2PLAN(@fond_own_close_id,'BACK_ACC_FUND_MONEY',%PLAN_MONEY_ID%,1,2,'Счет фонда компании',@mess_res_close) end else begin .ACCID_FROM_CONST2PLAN(@fond_own_close_id,'BACK_ACC_FUND_MONEY',%PLAN_MONEY_ID%,1,3,'Счет фонда ДС клиента',@mess_res_close) end if %IS_CALC_PROFIT% is null select %IS_CALC_PROFIT%=0 /*Присвоение счетов и сумм проводки, в зависимости от знака остатка и возможности \ вести фин результат*/ if %IS_CALC_PROFIT%=1 --- если ведем фин. результат begin if @saldo_bal_close>0 --- Убыток begin select @oper_sum_close=@saldo_bal_close --select @mess_res_close='Убыток' select @mess_res_close=%COMMENT%+' - списание убытка' select @debet_acc_close_id=@profit_acc_close_id select @credit_acc_close_id=@realiz_acc_close_id end else if @saldo_bal_close<0 --- Прибыль begin select @mess_res_close=%COMMENT%+' - зачисление прибыли' select @oper_sum_close=@saldo_bal_close*(-1.0) select @debet_acc_close_id=@realiz_acc_close_id select @credit_acc_close_id=@profit_acc_close_id end --- проводка по закрытию счета IF((ISNULL(@saldo_bal_close,0)) <> 0) BEGIN .OPERATION_SBC(%OWNER_ID%,%PLAN_MONEY_ID%,%OP_DATE%,@debet_acc_close_id,@credit_acc_close_id,@oper_sum_close,@plan_cur_close_id,%OP_DATE%,%QTY%,%QTY%,@mess_res_close,Y,@operation_id,@id,@action_id,@action_history_id,null,null,%REALIZ_SUBC%,%REALIZ_SUBC%) -- letsko_av -- 31.03.2005 -- Проводки ПИФ по переоценке #ifdef ALD_UKPIF .GET_ITEM_FROM_TYPE_SUBC_STR(%REALIZ_SUBC%, 'INVESTORS', @letsko_ssc_inv_id) IF .TEST_PIF_CLIENT(@letsko_ssc_inv_id) BEGIN SELECT @fund_id = client_id FROM tb_contracts WHERE id = @letsko_ssc_inv_id; SELECT @mysumma = @oper_sum_close; .GET_ITEM_FROM_TYPE_SUBC_STR(%REALIZ_SUBC%, 'STOCK_EMIS', @letsko_ssc_stock_id) .GET_ITEM_FROM_TYPE_SUBC_STR(%REALIZ_SUBC%, 'DOC_SEC_IN', @letsko_ssc_portfolio_id) IF @mysumma > 0 BEGIN -- letsko_av -- 05.04.2005 -- Саша Федотов сказал что в проводках по ПИФ-у нет количества -- .OPERATION(@fund_id, @fund_plan_id, %OP_DATE%, @pif_stock_acc_id, @imushestvo_account_id, @mysumma, @rubel_id, %OP_DATE%, %QTY%, %QTY%, @mess_res_close, N, @operation_id, @id, @action_id, @action_history_id, 0, 0) .OPERATION(@fund_id, @fund_plan_id, %OP_DATE%, @pif_stock_acc_id, @imushestvo_account_id, @mysumma, @rubel_id, %OP_DATE%, 0, 0, @mess_res_close, N, @operation_id, @id, @action_id, @action_history_id, 0, 0) -- letsko_av (end) .UPDATE_SUBC(D, 'stock_emis', @letsko_ssc_stock_id) .UPDATE_SUBC(D, 'doc_sec_in', @letsko_ssc_portfolio_id) .SUBC_CHECK END ELSE IF @mysumma < 0 BEGIN SELECT @mysumma = -@mysumma; -- letsko_av -- 05.04.2005 -- Саша Федотов сказал что в проводках по ПИФ-у нет количества -- .OPERATION(@fund_id, @fund_plan_id, @in_date, @imushestvo_account_id, @pif_stock_acc_id, @mysumma, @rubel_id, @in_date, @ssc_saldo_qty, @ssc_saldo_qty, @comment, N, @operation_id, @id, @action_id, @action_history_id, 0, 0) .OPERATION(@fund_id, @fund_plan_id, %OP_DATE%, @imushestvo_account_id, @pif_stock_acc_id, @mysumma, @rubel_id, %OP_DATE%, 0, 0, @mess_res_close, N, @operation_id, @id, @action_id, @action_history_id, 0, 0) -- letsko_av (end) .UPDATE_SUBC(C, 'stock_emis', @letsko_ssc_stock_id) .UPDATE_SUBC(C, 'doc_sec_in', @letsko_ssc_portfolio_id) .SUBC_CHECK END; END; #endif -- letsko_av (end) END if @saldo_bal_close>0 --- Убыток begin --select @mess_res_close='Списание убытка на фонды' select @mess_res_close=%COMMENT%+' - списание убытка на фонды' select @debet_acc_close_id=@fond_own_close_id select @credit_acc_close_id=@profit_acc_close_id end else if @saldo_bal_close<0 --- Прибыль begin select @mess_res_close=%COMMENT%+' - зачисление прибыли на фонды' select @debet_acc_close_id=@profit_acc_close_id select @credit_acc_close_id=@fond_own_close_id end ---- проводка по соотнесению прибыли-убытка на фонды IF((ISNULL(@saldo_bal_close,0)) <> 0) BEGIN .OPERATION_SBC(%OWNER_ID%,%PLAN_MONEY_ID%,%OP_DATE%,@debet_acc_close_id,@credit_acc_close_id,@oper_sum_close,@plan_cur_close_id,%OP_DATE%,%QTY%,%QTY%,@mess_res_close,Y,@operation_id,@id,@action_id,@action_history_id,null,null,%REALIZ_SUBC%,%REALIZ_SUBC%) END end else --- если фин. результат не ведем begin if @saldo_bal_close>0 --- Убыток begin select @mess_res_close=%COMMENT% select @debet_acc_close_id=@fond_own_close_id select @credit_acc_close_id=@realiz_acc_close_id end else if @saldo_bal_close<0 --- Прибыль begin select @mess_res_close=%COMMENT% select @debet_acc_close_id=@realiz_acc_close_id select @credit_acc_close_id=@fond_own_close_id end if @saldo_bal_close>0 select @oper_sum_close=@saldo_bal_close else if @saldo_bal_close<0 select @oper_sum_close=@saldo_bal_close*(-1.0) IF((ISNULL(@oper_sum_close,0)) <> 0) ----- проводка по закрытию счета сразу на фонды BEGIN .OPERATION_SBC(%OWNER_ID%,%PLAN_MONEY_ID%,%OP_DATE%,@debet_acc_close_id,@credit_acc_close_id,@oper_sum_close,@plan_cur_close_id,%OP_DATE%,0,0,@mess_res_close,Y,@operation_id,@id,@action_id,@action_history_id,null,null,%REALIZ_SUBC%,%REALIZ_SUBC%) END end /*конец присвоений и проводок*/ $ENDTEXT(15592412) $PATTERNARG(%OWNER_ID%) name=Владелец плана order=1 comment=Владелец плана mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%PLAN_MONEY_ID%) name=План ДС order=2 comment=План ДС mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%OP_DATE%) name=Дата проводки order=3 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_CALC_PROFIT%) name=Считаем прибыль order=4 comment=1 - считаем, 0 - не считаем, 2 - списание (принятие) - по балансовой(оценочной) стоимости mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%CHARACTER_ID%) name=Характер сделки order=5 comment=Характер сделки mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%REALIZ_SUBC%) name=Субконто счета с которого списываем прибыль/убыток реализации order=6 comment=Субконто счета с которого списываем прибыль/убыток(реализации) mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%TYPE_CLOSE%) name=Тип закрытия order=7 comment=(1-осн. по сделке, 2-комиссии по сделке, 3 - будущих периодов, 4 - для дивидендов mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%ACC_ID%) name=Счет с которого списывается прибыль(убыток) order=8 comment=Счет с которого списывается прибыль(убыток).Если не задан то счет реализации mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%SUM%) name=Сумма прибыли/убытка в валюте плана order=9 comment=$TEXT(15592412) Сумма прибыли/убытка. Если не задана, то берется остаток по реализации (если сумма с - то убыток, если с + - то прибыль) $ENDTEXT(15592412) mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%COMMENT%) name=Комментарий order=10 comment=Комментарий mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%QTY%) name=Количество order=11 comment=Количество mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $ENDPATTERN