# Date: 21/03/06 # Version: 105 $PATTERN(.BACK_CLOSE_ZATR) name=Закрытие прибыли/убытка на фонды с количеством (при использовании счета для затрат на приобретение) class=2 product=ALD_SECUR pattern_text=$TEXT(09082959) #ifndef #close_profit_or_loss #define #close_profit_or_loss 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 #endif #ifndef #close_profit_or_loss_zatr #define #close_profit_or_loss_zatr declare @saldo_bal_close_z money, @debet_close_qty money, @credit_close_qty money, @debet_close_subc varchar(255), @credit_close_subc varchar(255), @bo_type_redemption NUMERIC, @bo_rate_face_value MONEY, @oper_sum_close_my MONEY #endif SELECT @bo_type_redemption = ISNULL(%TYPE_REDEMPTION%, 1) SELECT @bo_rate_face_value = %RATE_FACE_VALUE% select @saldo_bal_close_z=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%) ---- если закрываем какой то конкретный счет,который передается в шаблон, то переприсваиваем счет if convert(numeric, %ACC_ID% ) is not null select @realiz_acc_close_id=%ACC_ID% else begin ---- в противном случае закрываем счет реализации .ACCID_FROM_CONST2PLAN(@realiz_acc_close_id,'BACK_ACC_REALIZ', %PLAN_MONEY_ID%,1,1,'Cчет реализации',@mess_res_close) end ---- в зависимости от типа закрытия, достаем счет прибыли/убытка, на который будем закрывать 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) .ACCID_FROM_CONST2PLAN(@profit_acc_close_id,'REALIZ_COST',%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) .ACCID_FROM_CONST2PLAN(@profit_acc_close_id,'REALIZ_COST',%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 ------- присвоение суммы, надлежащей списанию select @saldo_bal_close_z = %SUM% ----- вычисляем счет фонда инвестора, на который будут закрываться прибыли-убытки if %CHARACTER_ID% = 1 --- Сделка дилерская begin .ACCID_FROM_CONST2PLAN(@fond_own_close_id,'BACK_ACC_FUND_SECUR',%PLAN_MONEY_ID%,1,2,'Счет фонда компании',@mess_res_close) end else begin .ACCID_FROM_CONST2PLAN(@fond_own_close_id,'BACK_ACC_FUND_SECUR',%PLAN_MONEY_ID%,1,3,'Счет фонда ЦБ клиента',@mess_res_close) end /*Присвоение счетов и сумм проводки, в зависимости от знака остатка и возможности \ вести фин результат*/ if %IS_CALC_PROFIT%=1 -- Считаем прибыль begin --- Проводка по списанию с прибыли - убытка if @saldo_bal_close_z >0 --- Убыток begin select @oper_sum_close = @saldo_bal_close_z --select @mess_res_close='Убыток' select @mess_res_close='Списание затрат при покупке' select @debet_acc_close_id=@profit_acc_close_id select @credit_acc_close_id=@realiz_acc_close_id select @debet_close_subc = %REALIZ_SUBC% select @credit_close_subc = %BAL_SUBC% select @debet_close_qty = 0 select @credit_close_qty = %QTY% end if @saldo_bal_close_z <0 --- Прибыль (Для короткой) begin select @mess_res_close='Списание затрат при продаже' select @oper_sum_close = @saldo_bal_close_z *(-1.0) select @debet_acc_close_id=@realiz_acc_close_id select @credit_acc_close_id=@profit_acc_close_id select @debet_close_subc = %BAL_SUBC% select @credit_close_subc = %REALIZ_SUBC% select @debet_close_qty = %QTY% select @credit_close_qty = 0 end --- проводка по закрытию счета IF((ISNULL(@saldo_bal_close_z, 0)) <> 0) BEGIN IF @bo_type_redemption = 3 BEGIN -- SELECT @oper_sum_close_my = ROUND(((@oper_sum_close * @bo_rate_face_value) / 100), 2); SELECT @oper_sum_close_my = ROUND(((@oper_sum_close * @bo_rate_face_value * %FIRST_NOMINAL%) / (100 * %STOCK_NOMINAL%)), 2); .OPERATION_SBC(%OWNER_ID%, %PLAN_MONEY_ID%, %OP_DATE%, @debet_acc_close_id, @credit_acc_close_id, @oper_sum_close_my, @plan_cur_close_id, %OP_DATE%, 0, 0, @mess_res_close, Y, @operation_id, @id, @action_id, @action_history_id, NULL, NULL, @debet_close_subc, @credit_close_subc) END ELSE 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%, @debet_close_qty, @credit_close_qty, @mess_res_close, Y, @operation_id, @id, @action_id, @action_history_id, NULL, NULL, @debet_close_subc, @credit_close_subc) END END -- Проводка по списанию на фонды if @saldo_bal_close_z>0 --- Убыток begin select @mess_res_close='Списание расходов при покупке на фонд ЦБ' select @debet_acc_close_id=@fond_own_close_id select @credit_acc_close_id=@profit_acc_close_id end if @saldo_bal_close_z<0 --- Прибыль begin select @mess_res_close='Списание расходов при продаже на фонд ЦБ' select @debet_acc_close_id=@profit_acc_close_id select @credit_acc_close_id=@fond_own_close_id end -- letsko_av -- 20/12/2005 -- Алексей Кашуба сказал что этих проводок по ПИФУ нет IF %PLAN_MONEY_ID% <> (SELECT .ARG_PLAN('PIF_ACCOUNT')) BEGIN ---- проводка по соотнесению прибыли-убытка на фонды IF((ISNULL(@saldo_bal_close_z,0)) <> 0) BEGIN IF @bo_type_redemption = 3 BEGIN -- SELECT @oper_sum_close_my = ROUND(((@oper_sum_close * @bo_rate_face_value) / 100), 2); SELECT @oper_sum_close_my = ROUND(((@oper_sum_close * @bo_rate_face_value * %FIRST_NOMINAL%) / (100 * %STOCK_NOMINAL%)), 2); .OPERATION_SBC(%OWNER_ID%, %PLAN_MONEY_ID%, %OP_DATE%, @debet_acc_close_id, @credit_acc_close_id, @oper_sum_close_my, @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 ELSE 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 END end else -- Не Считаем прибыль begin if @saldo_bal_close_z >0 --- Убыток begin select @oper_sum_close = @saldo_bal_close_z select @mess_res_close='Списание расходов при покупке' select @debet_acc_close_id=@fond_own_close_id select @credit_acc_close_id=@realiz_acc_close_id select @debet_close_subc = %REALIZ_SUBC% select @credit_close_subc = %BAL_SUBC% select @debet_close_qty = %QTY% select @credit_close_qty = 0 end else if @saldo_bal_close_z<0 --- Прибыль begin select @oper_sum_close = @saldo_bal_close_z * (-1.0) select @mess_res_close='Списание расходов при продаже' select @debet_acc_close_id=@realiz_acc_close_id select @credit_acc_close_id=@fond_own_close_id select @debet_close_subc = %BAL_SUBC% select @credit_close_subc = %REALIZ_SUBC% select @debet_close_qty = 0 select @credit_close_qty = %QTY% end -- проводка по закрытию счета сразу на фонды IF((ISNULL(@saldo_bal_close_z,0)) <> 0) BEGIN IF @bo_type_redemption = 3 BEGIN -- SELECT @oper_sum_close_my = ROUND(((@oper_sum_close * @bo_rate_face_value) / 100), 2); SELECT @oper_sum_close_my = ROUND(((@oper_sum_close * @bo_rate_face_value * %FIRST_NOMINAL%) / (100 * %STOCK_NOMINAL%)), 2); .OPERATION_SBC(%OWNER_ID%, %PLAN_MONEY_ID%, %OP_DATE%, @debet_acc_close_id, @credit_acc_close_id, @oper_sum_close_my, @plan_cur_close_id, %OP_DATE%, 0, 0, @mess_res_close, Y, @operation_id, @id, @action_id, @action_history_id, NULL, NULL, @debet_close_subc, @credit_close_subc) END ELSE 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%, @debet_close_qty, @credit_close_qty, @mess_res_close, Y, @operation_id, @id, @action_id, @action_history_id, NULL, NULL, @debet_close_subc, @credit_close_subc) END END end /*конец присвоений и проводок*/ $ENDTEXT(09082959) $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(09082959) Сумма прибыли/убытка. Если не задана, то берется остаток по реализации (если сумма с - то убыток, если с + - то прибыль) $ENDTEXT(09082959) mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%QTY%) name=Количество order=10 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%BAL_SUBC%) name=Строка балансового субконто order=12 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%TYPE_REDEMPTION%) name=Тип погашения order=14 comment=Тип погашения mandatory=0 default=1 choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%RATE_FACE_VALUE%) name=Процент от номинала order=16 comment=Процент от номинала mandatory=0 default=100 choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%STOCK_NOMINAL%) name=Текущий номинал order=17 comment=Текущий номинал mandatory=0 default=NULL choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%FIRST_NOMINAL%) name=Первоначальный номинал order=18 comment=Первоначальный номинал mandatory=0 default=NULL choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $ENDPATTERN