# Date: 17/02/06 # Version: 105 $PATTERN(.BACK_SECURS_INOUT_PIF) name=Сильно измененная копия шаблона BACK_SECURS_INOUT_MON class=2 product=ALD_SECUR pattern_text=$TEXT(15251639) --.BACK_LIFO_FIFO_DECLARE /* Содержимое шаблона 1.проверяет на возможность короткой позиции, в момент когда не хватает денег или бумаг 2.проводит зачисление на счет реализации, пропорционально либо списываемому количеству на длинной позиции при продаже, либо списываемому количеству на короткой позиции при покупке 3.Вызывает шаблоны (процедуру) партионного списания ЦБ, КД, затрат на преобретение. 4.Если списываемые бумаги с длинной позиции по сделке продажи закончились, то идет зачисление на короткую. 5.Если списываемые бумаги с короткой позиции по сделке покупки закончились, то идет зачисление на длинную. 6.Считается финансовый результат и идут проводки на прибыль/убыток 7.Идет отражение по фондам инвестора Шаблон используется как в бэкэ так и в пифе. */ #ifndef #BACK_SECURS_INOUT_MON #define #BACK_SECURS_INOUT_MON declare @bo1_oblig_acc_xx_id numeric, @bo1_s_sum money, @bo1_s_qty money, @is_last int, @oper_sum money, @subc_for_check varchar(255), @qty_check money, @bo_purpose_code int, @bo_investor_id numeric, @bo_stock_id numeric, @bo_deal_id numeric, @marg_acc_id numeric, @type_repo_code int, @type_repo_id numeric, @d_acc_id numeric, @k_acc_id numeric, @d_subc_str varchar(255), @k_subc_str varchar(255), @fond_own_id numeric, @fond_cl_id numeric, @bo1_comm_1 varchar(255), @bo1_comm_2 varchar(255), @bo1_profit money, @acc_pncd_cl numeric, @subc_pnkd varchar(255), @fond_stock_own_id numeric, @acc_uncd_cl numeric, @bo_profit money, @bo_nkd_profit_sum money, @subc_for_c varchar(255), @bo_marg_sum_ds money, @bo1_total_com_in money, @bo1_total_nkd2portf money, @bo1_c_sum money, @bo1_asset_place_id numeric, @bo1_home_place_class_id numeric, @bo1_home_object_id numeric, @bo1_nominal_cur_id numeric, @bo1_nominal_sum money, @bo1_total_nkd2portf_acc money, @bo1_bal_short_acc_sum money, @bo1_unkd_bal_short_acc_sum money, @bo1_bal_long_acc_sum money, @bo1_unkd_bal_long_acc_sum money, @fond_sum money, @bo1_sum_accur money, @dog_date datetime, @bo1_sum_qty2accur money, @total_out_acc_sum money, @xx_stock_id numeric, @xx_subc_str varchar(255), @acc_cur_id numeric, @bo1_long_acc_sum money, @bo1_short_acc_sum money, @bo1_s_acc_sum money, @bo1_acc_oper_sum money, @bo_acc_sum_cur_id numeric, @bo_profit_d_acc_cur_id numeric, @bo_profit_c_acc_cur_id numeric, @bo_plan_buch_id numeric, @bo_plan2partner_id numeric, @bo_qty2s money, @bo_qty2acc2s money, @bo1_id_date_d datetime, @free_ds_id numeric declare @dealing2upd_id numeric, @oper_sum_close money #endif select @bo_plan_buch_id=(select .ARG_PLAN('PIF_ACCOUNT')) ---- из строки аналитики достается ид сделки .GET_ITEM_FROM_TYPE_SUBC_STR(%P2L_SUBC%,'DOC_SEC',@bo_deal_id) select @acc_cur_id=cur_id from tb_baysale_docitems where id=@bo_deal_id ----- код целевого назначения select @bo_purpose_code=.PURPOSE_CODE(@bo1_perpose_id) ---- признак маржинальной сделки select @type_repo_id=(select margin_deal from tb_repo_params where id=@bo_deal_id) ---select @type_repo_code=.PURPOSE_CODE(@type_repo_id) /*Процесс доставания счетов для проводок*/ if %CHARACTER_ID% = 1 ---- если операция собственная, достается счет фонда компании begin .ACCID_FROM_CONST2PLAN(@fond_own_id,'BACK_ACC_FUND_MONEY',@bo1_plan_money_id,1,2,'Счет фонда компании',@bo1_mess_res) select @acc_pncd_cl=@fond_own_id --- проводки по зачислению ПНКД так же туда end else --- операция клиентская begin if @bo_purpose_code in (27,30) --- по сделке ВБР begin --- клиентский счет по незавершенным сделкам вбр 3.1 .ACCID_FROM_CONST2PLAN(@fond_own_id,'BACK_ACC_CL_OBLIG_VBR',@bo1_plan_money_id,1,1,'Счет задолженности клиента',@bo1_mess_res) end else -- в противном случае begin --- фонд клиента по ДС .ACCID_FROM_CONST2PLAN(@fond_own_id,'BACK_ACC_FUND_MONEY',@bo1_plan_money_id,1,3,'Счет фонда ДС клиента',@bo1_mess_res) end ---- далее достаются счета ПНКД, УНКД, фонда клиента по ЦБ .ACCID_FROM_CONST2PLAN(@acc_pncd_cl,'BACK_ACC_CLIENT_PNKD',@bo1_plan_money_id,1,1,'Счет ПНКД клиентов',@bo1_mess_res) .ACCID_FROM_CONST2PLAN(@fond_stock_own_id,'BACK_ACC_FUND_SECUR',@bo1_plan_money_id,1,3,'Счет фонда ЦБ клиентов',@bo1_mess_res) .ACCID_FROM_CONST2PLAN(@acc_uncd_cl,'BAC_ACC_CLIENT_UNKD',@bo1_plan_money_id,1,1,'Счет УНКД клиентов',@bo1_mess_res) end if @bo1_plan_money_id<>@bo_plan_buch_id --- если план не ПИФ, то вычисляется счет 2.0 ---- используется для поиска остатка ДС и проверку на короткую позицию begin .ACCID_FROM_CONST2PLAN(@free_ds_id,'BACK_ACC_MONEY_PLACE',@bo1_plan_money_id,1,1,'Счет ДС',@bo1_mess_res) end #ifndef #stock_all #define #stock_all .MONEY_VAR(@stock_all_qty) .MONEY_VAR(@stock_all_exec) #endif #ifndef #stock_all1 .INT_VAR(@back_securs_inout_count) #define #stock_all1 #endif /*Вычисление еще ряда счетов*/ .ACCID_FROM_CONST2PLAN(@bo1_long_acc_id,'BACK_ACC_SECUR_MP_LONG',@bo1_plan_money_id,1,1,'Счет ЦБ (длинная позиция)',@bo1_mess_res) -- letsko_av -- 14.09.2005 -- Изменения для новой справки СЧА DECLARE @bo1_long_acc_comis_id NUMERIC .ACCID_FROM_CONST2PLAN(@bo1_long_acc_comis_id, 'BACK_ACC_SECUR_MP_LONG_COMIS', @bo1_plan_money_id, 1, 1, 'Счет ЦБ (длинная позиция) комиссия', @bo1_mess_res) -- letsko_av (end) .ACCID_FROM_CONST2PLAN(@bo1_short_acc_id,'BACK_ACC_SECUR_MP_SHORT',@bo1_plan_money_id,1,1,'Счет ЦБ (короткая позиция)',@bo1_mess_res) -- letsko_av -- 14.09.2005 -- Изменения для новой справки СЧА DECLARE @bo1_short_acc_comis_id NUMERIC .ACCID_FROM_CONST2PLAN(@bo1_short_acc_comis_id, 'BACK_ACC_SECUR_MP_SHORT_COMIS', @bo1_plan_money_id, 1, 1, 'Счет ЦБ (короткая позиция) комиссия', @bo1_mess_res) -- letsko_av (end) .ACCID_FROM_CONST2PLAN(@bo1_unkd_acc_id,'BACK_ACC_UNKD',@bo1_plan_money_id,1,1,'Счет УНКД',@bo1_mess_res) .ACCID_FROM_CONST2PLAN(@bo1_pnkd_acc_id,'BACK_ACC_PNKD',@bo1_plan_money_id,1,1,'Счет ПНКД',@bo1_mess_res) .ACCID_FROM_CONST2PLAN(@bo1_unkd_short_acc_id,'BACK_ACC_UNKD_SHORT',@bo1_plan_money_id,1,1,'Счет купонного дохода, зачисленного на короткую позицию',@bo1_mess_res) /*Вычисление счетов, корреспондирующих со счетами 4.4.0, 1.0.0 ,.... Для сделки в ТС это как правило 2.0....., */ if @bo_purpose_code not in (63,58,28,43,31,44) --- для ряда групп. операций и опер. зачисл/списания ЦБ из целевого назначения begin .ACCID_FROM_OBJ2PLAN(@bo1_ext_acc_id, @bo1_perpose_id, @bo1_plan_money_id,1,1,'Внешний счет',@bo1_mess_res) end else begin --- для ТС по месту нахождения .GET_ITEM_FROM_TYPE_SUBC_STR(%EXT_SUBC%,'ASSET_PLACES',@bo1_asset_place_id) .BACK_GET_OBJ2BROK2TS(@bo1_asset_place_id,@bo1_owner_id,@bo1_home_place_class_id,@bo1_home_object_id) .ACCID_FROM_OBJ2PLAN(@bo1_ext_acc_id, @bo1_home_place_class_id, @bo1_plan_money_id,1,1,'Внешний счет',@bo1_mess_res) end /*Вычисление ряда счетов*/ .ACCID_FROM_CONST2PLAN(@bo1_realiz_acc_id,'BACK_ACC_REALIZ', @bo1_plan_money_id,1,1,'Cчет реализации',@bo1_mess_res) --.ACCID_FROM_CONST2PLAN(@bo1_realiz_acc_id, 'REALIZ_COST', @bo1_plan_money_id, 1, 1, 'Себестоимость продаж', @bo1_mess_res) .ACCID_FROM_CONST2PLAN(@bo1_profit_acc_id,'BACK_ACC_PROFIT_BAYSALE_MAIN',@bo1_plan_money_id,1,1,'Счет прибыли или убытки по сделке (основной)',@bo1_mess_res) -- letsko_av -- 14.09.2005 -- Изменения для новой справки СЧА --.ACCID_FROM_CONST2PLAN(@bo1_pereoc_acc_id,'BACK_ACC_PEREOC',@bo1_plan_money_id,1,1,'Счет переоценки ',@bo1_mess_res) .ACCID_FROM_CONST2PLAN(@bo1_pereoc_acc_id, 'BACK_ACC_PEREOC_COMIS', @bo1_plan_money_id, 1, 1, 'Счет переоценки ', @bo1_mess_res) -- letsko_av (end) .ACCID_FROM_CONST2PLAN(@bo1_fut_profit_acc_id,'BACK_ACC_PROFIT_BAYSALE_FUTUR',@bo1_plan_money_id,1,1,'Счет прибыли или убытки со счетов расходов - доходов будущих периодов ',@bo1_mess_res) /* --для метрополя. чтоб брать счет 91.2 из ЦН 31, и использовать его для процентов по облигациям вместо 86.3 --берется по ЦН как привязка "в приходе" "для клиентов по ДУ" - "для остатков-для всех" там уже есть :( -- if @bo_purpose_code = 31 begin .ACCID_FROM_OBJ2PLAN(@bo1_fut_profit_acc_id,@bo1_home_place_class_id,@bo1_plan_money_id,2,4,'Счет прибыли или убытков со счетов расходов - доходов будущих периодов для ЦН 31',@bo1_mess_res) end */ if @bo_purpose_code in (27,30) --- если ВБР begin ---- поиск факт даты подп. договора, ЦБ (т.к. могут различаться с ЦБ в операции), валюту сделки select @dog_date=fact_dog_date, @xx_stock_id=stock_id, @bo_acc_sum_cur_id=tb_baysale_docitems.cur_id from tb_plan2fact_dates,tb_baysale_docitems where tb_plan2fact_dates.id=@bo_deal_id and tb_baysale_docitems.id=@bo_deal_id select @xx_subc_str=%EXT_SUBC% .SUBC_STR_ADD(@xx_subc_str,'STOCK_EMIS',@xx_stock_id) end ---- дата сделки, для задания дат, если они вдруг не заданы в шаблоне и для ТС select @bo1_id_date_d=in_date from td_depo_docs where id=@bo_deal_id if @dog_date is null select @dog_date=@bo1_id_date_d if %OP_DATE% is null select %OP_DATE%=@bo1_id_date_d if %RATE_DATE% is null select %RATE_DATE%=@bo1_id_date_d select @bo_plan2partner_id=.PLAN2PARTNER_ID(@bo1_owner_id,@bo1_plan_money_id) if @bo_purpose_code in (27,30) --- если ВБр begin --- ищем количество бумаг по сделке и сумму в валюте сделки с КД select @bo1_sum_qty2accur=stock_qty, @bo1_sum_accur=summ_doc_total2unkd from tb_baysale_docitems where id=@bo_deal_id /*Вычисление остатков по сделкам ВБР по счетам обязательств (1.2.2,1.1.2)*/ if @bo1_in_out=1 --- если покупка begin .ACCID_FROM_CONST2PLAN(@bo1_oblig_acc_xx_id,'BACK_ACC_SECUR_VBR_DOG',@bo1_plan_money_id,2,1,'Счет обязательств по ЦБ (договор)',@bo1_mess_res) ---.SALDO(@bo1_owner_id,@bo1_plan_money_id,@dog_date,@bo1_oblig_acc_xx_id,@xx_subc_str,Y,D,N,@bo1_sum_qty2accur,@bo1_sum_accur) ---.SALDO_NOW_SBC(@bo_plan2partner_id,@bo1_oblig_acc_xx_id,@xx_subc_str,1,@bo1_s_sum,bo1_sum_qty2accur,@bo1_sum_accur) select @bo1_s_sum=0 ---.SALDO(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_oblig_acc_xx_id,%EXT_SUBC%,Y,D,@bo1_s_sum,@bo1_s_qty,@bo1_s_acc_sum) .SALDO_NOW_SBC(@bo_plan2partner_id,@bo1_oblig_acc_xx_id,%EXT_SUBC%,1,@bo1_s_sum,@bo1_s_qty,@bo1_s_acc_sum) end else --- продажа begin .ACCID_FROM_CONST2PLAN(@bo1_oblig_acc_xx_id,'BACK_ACC_SECUR_VBR_DOG',@bo1_plan_money_id,3,1,'Счет обязательств по ЦБ (договор)',@bo1_mess_res) ---.SALDO(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_oblig_acc_xx_id,%EXT_SUBC%,Y,K,@bo1_s_sum,@bo1_s_qty,@bo1_s_acc_sum) .SALDO_NOW_SBC(@bo_plan2partner_id,@bo1_oblig_acc_xx_id,%EXT_SUBC%,(-1),@bo1_s_sum,@bo1_s_qty,@bo1_s_acc_sum) ---.SALDO(@bo1_owner_id,@bo1_plan_money_id,@dog_date,@bo1_oblig_acc_xx_id,@xx_subc_str,Y,K,N,@bo1_sum_qty2accur,@bo1_sum_accur) end end if isnull(@bo1_sum_qty2accur,0) =0 select @bo1_sum_accur=0 else --- вычисление списываемой суммы, прапорционально количеству списываемых ЦБ select @bo1_sum_accur=round((convert(double precision,@bo1_sum_accur) * convert(double precision,%STOCK_QTY%/@bo1_sum_qty2accur)),2) .ASSIGN (@back_securs_inout_count,1) select @subc_for_check=%HOME_SUBC% .SUBC_STR_DEL(@subc_for_check,'DOC_SEC_IN') .SUBC_STR_DEL(@subc_for_check,'PORTFOLIO') --end ------ /*Проверка что последняя перерегистрация*/ select @bo1_s_sum=round(@bo1_s_sum,2) select @bo1_s_acc_sum=round(@bo1_s_acc_sum,2) if @bo1_s_qty=%STOCK_QTY% select @is_last=1 else select @is_last=0 if (select code from t_purposes where id = @bo1_perpose_id) in (29,32,108,110,93) -- Принятие и снятие с клиента begin /*Вычисление счетов счетов УНКД по ряду целевых назначений*/ .ACCID_FROM_CONST2PLAN(@bo1_client_unkd_acc_id,'BAC_ACC_CLIENT_UNKD',@bo1_plan_money_id,1,1,'Счет фондов клиента - УНКД',@bo1_mess_res) end else begin --- в противном случае счет УНКД - счет ДС .ASSIGN(@bo1_client_unkd_acc_id,@bo1_ext_acc_id) end -------- .ASSIGN(@bo1_home_subc, %HOME_SUBC% ) .ASSIGN(@bo1_ext_subc, %EXT_SUBC% ) .ASSIGN(@bo1_realiz_subc, %PNKD_SUBC%) .ASSIGN(@bo1_qty_ost, %STOCK_QTY% ) .ASSIGN(@bo1_allow_short4own, %IS_ALLOW_SHORT4OWN%) .ASSIGN(@bo1_allow_short4client, %IS_ALLOW_SHORT4CLIENT%) .ASSIGN(@is_calc_profit, %IS_CALC_PROFIT% ) select @bo1_comm = (select name from t_purposes where id = @bo1_perpose_id ) .ASSIGN(@bo1_comm_add1,@bo1_comm) .ASSIGN(@bo1_lf_subc_type_id,( .SUBCTYPE_FROM_CODE( 'DOC_SEC_IN' ) )) .GET_ITEM_FROM_TYPE_SUBC_STR(%HOME_SUBC%,'INVESTORS',@bo_investor_id) .GET_ITEM_FROM_TYPE_SUBC_STR(%HOME_SUBC%,'STOCK_EMIS',@bo_stock_id) .LF_NUMBER_UPDATE(@id) ---- установка даты проведения операции для списания лифо-фифо /*Обработка если покупка/продажа ТС,прием/снятие ЦБ, корпоративные действия*/ if @bo1_in_out = 1 -----====================== Поступление begin ---------- Пытаемся списать короткую позицию if %CHARACTER_ID%=2 begin -- короткая позиция клиента select @subc_for_c='' .SUBC_STR_ADD(@subc_for_c,'INVESTORS',@bo_investor_id) /*Вычисление сальдо денег по всем счетам ДС для проверки короткой по деньгам*/ .SALDO(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@free_ds_id,@subc_for_c,N,D,@bo1_c_sum,N) ----.SALDO_NOW_SBC(@bo_plan2partner_id,@fond_own_id,@subc_for_c,(-1),@bo1_c_sum,@bo_qty2s,@bo_qty2acc2s) ----.SALDO_NOW_SBC(@bo_plan2partner_id,@free_ds_id,@subc_for_c,1,@bo1_c_sum,@bo_qty2s,@bo_qty2acc2s) select @bo_marg_sum_ds=isnull(@bo1_c_sum,0)-%SUM% --- какой будет остаток после проведения сделки select @bo1_c_sum=0 /*Проверка на короткую по ДС*/ if @bo_purpose_code not in (27,29,108,93,48,45,63) and @bo1_plan_money_id<>@bo_plan_buch_id /*Чтоб не было проверки по ПИФ*/ begin ---- короткая не разрешена if (%IS_ALLOW_SHORT4CLIENT% <> 1) and (@bo_marg_sum_ds < 0) -- Списание с ДП begin .EXIT_MESSAGE('Превышен остаток по длинной позиции по ДС. Короткая позиция не разрешена.') end end /*Если короткая разрешена*/ else if (%IS_ALLOW_SHORT4CLIENT% =1) and (@bo_marg_sum_ds < 0) begin ----select @type_repo_id=id from t_purposes where code =67 --- ставим галочку, что она маржинальная update tb_repo_params set margin_deal=1 where id=@bo_deal_id ---select @type_repo_code=.PURPOSE_CODE(@type_repo_id) end select @bo_marg_sum_ds=abs(@bo_marg_sum_ds) end -- короткая позиция клиента else begin -- короткая позиция собственная select @subc_for_c='' .SUBC_STR_ADD(@subc_for_c,'INVESTORS',@bo_investor_id) /*Вычисление сальдо денег по всем счетам ДС для проверки короткой по деньгам*/ .SALDO(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@free_ds_id,@subc_for_c,N,D,@bo1_c_sum,N) ---.SALDO_NOW_SUM(@bo_plan2partner_id,@fond_own_id,@subc_for_c,(-1),@bo1_c_sum,@bo_qty2s,@bo_qty2acc2s) ---.SALDO_NOW_SBC(@bo_plan2partner_id,@free_ds_id,@subc_for_c,1,@bo1_c_sum,@bo_qty2s,@bo_qty2acc2s) select @bo_marg_sum_ds=isnull(@bo1_c_sum,0)-%SUM% --- какой будет остаток после проведения сделки select @bo1_c_sum=0 -- 24/01/2005 Богаковский добавил целевое назначение 27 в условие --if @bo_purpose_code not in (35,109,94,48,45,63) and @bo1_plan_money_id<>@bo_plan_buch_id if @bo_purpose_code not in (27,35,109,94,48,45,63) and @bo1_plan_money_id<>@bo_plan_buch_id begin ---- в случае запрета короткой позиции if (%IS_ALLOW_SHORT4OWN% <> 1) and (@bo_marg_sum_ds < 0) -- Списание с ДП begin .EXIT_MESSAGE('Превышен остаток по длинной позиции по ДС. Короткая позиция не разрешена.') end end else if (%IS_ALLOW_SHORT4OWN% = 1) and (@bo_marg_sum_ds < 0) begin --- если короткая разрешена ---select @type_repo_id=id from t_purposes where code = 67 --- ставим галочку, что она маржинальная update tb_repo_params set margin_deal=1 where id=@bo_deal_id ---select @type_repo_code=.PURPOSE_CODE(@type_repo_id) end select @bo_marg_sum_ds=abs(@bo_marg_sum_ds) end -- короткая позиция собственная .ASSIGN(@bo1_comm_main,(' Перечисление ДС на реализацию')) /*Блок перевода ДС на реализацию*/ ----вычисление количества, которое вообще находится на короткой позиции (которое надо откупить) select @qty_check = isnull(sum(a.saldo_qty * a.deb_or_cred) * (-1),0) from t_account_now a, t_accnow_subconto s, td_depo_docs d where a.plan2partner_id = @bo_plan2partner_id and a.acc_id = @bo1_short_acc_id and a.subc_eff_num like isnull( '%'+ @subc_for_check +'%', '%') and a.id = s.id and s.subconto_type_id = @bo1_lf_subc_type_id and s.item_id = d.id and d.lf_date=%STOCK_QTY% select @qty_check=%STOCK_QTY% ---- вычисление суммы, которая пойдет на реализацию select @oper_sum=(round((%SUM% * @qty_check/%STOCK_QTY%),2))+(round((isnull(%NKD_SUM%,0) * @qty_check/%STOCK_QTY%),2)) ---- вычисление суммы в валюте, которая пойдет на реализацию select @bo1_acc_oper_sum=(round((%ACC_SUM% * @qty_check/%STOCK_QTY%),2)) /*D @bo1_realiz_acc_id=5.0 K @bo1_ext_acc_id=(если сделка ТС прямая, то счет 2.0.1.1,если сделка ТС через брокера, то счет 2.0.10.1, если деп. прием, то счет 1.2.2 )*/ if @bo_purpose_code not in (41, 42) begin ---- проводка по реализации .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_realiz_acc_id,@bo1_ext_acc_id,@oper_sum,@bo1_money_plan_cur_id,%OP_DATE%,@qty_check,@qty_check ,@bo1_comm_main,Y,@operation_id,@id,@action_id,@action_history_id,null,@bo1_acc_oper_sum,@bo1_realiz_subc,@bo1_ext_subc,null,@bo_acc_sum_cur_id) end /*Окончание блока реализации*/ .ASSIGN(@bo1_comm_main,(@bo1_comm+' Покрываем короткую позицию ')) /*Списания обяз. по короткой позиции*/ if @bo_purpose_code not in (41, 42) -- если реализация begin /*1) 1.0.1 - 5.0 (списание к.п. по партиям) 2) 4.4.1 - 4.4.4 (Списание УНКД с короткой позиции если с Купонным доходом) 3) списание затрат по продаже */ --- партионное списание с короткой позиции ЦБ, купона, затрат с корреспонденцией счет реализации --.ASSET_BAL_OUT(@bo1_owner_id, @bo1_plan_money_id, @bo1_out_method_id, (-1), @bo1_short_acc_id, @bo1_realiz_acc_id, @bo1_unkd_short_acc_id, @bo1_pnkd_acc_id, @bo1_pereoc_acc_id, @bo1_fut_profit_acc_id, -- @bo1_lf_subc_type_id, %OP_DATE%, %STOCK_QTY%, @bo1_comm_main, @bo1_home_subc, @bo1_realiz_subc, %PNKD_SUBC%, @action_history_id, %IS_COM_IN%, @bo1_bal_short_sum, -- @bo1_short_qty, @bo1_unkd_bal_short_sum, @bo1_unkd_short_qty, @bo1_pereoc_sum, @bo1_pereoc_qty, @bo1_total_com_in, @bo1_total_nkd2portf, @bo1_result, @bo1_total_nkd2portf_acc, @bo1_bal_short_acc_sum, -- @bo1_unkd_bal_short_acc_sum, @total_out_acc_sum, @oper_sum_close) EXEC ap_back_asset_bal_out @bo1_owner_id, @bo1_plan_money_id, @bo1_out_method_id, -1, @bo1_short_acc_id, @bo1_realiz_acc_id, @bo1_unkd_short_acc_id, @bo1_pnkd_acc_id, @bo1_pereoc_acc_id, @bo1_fut_profit_acc_id, @bo1_lf_subc_type_id, %OP_DATE%, %STOCK_QTY%, @bo1_comm_main, @bo1_home_subc, @bo1_realiz_subc, %PNKD_SUBC%, @action_history_id, %IS_COM_IN%, @bo1_bal_short_sum OUT, @bo1_short_qty OUT, @bo1_unkd_bal_short_sum OUT, @bo1_unkd_short_qty OUT, @bo1_pereoc_sum OUT, @bo1_pereoc_qty OUT, @bo1_total_com_in OUT, @bo1_total_nkd2portf OUT, @bo1_result OUT, @bo1_total_nkd2portf_acc OUT, @bo1_bal_short_acc_sum OUT, @bo1_unkd_bal_short_acc_sum OUT, @total_out_acc_sum OUT, @oper_sum_close OUT end /*Вычисление списанных величин*/ select %TOTAL_OUT_SUM%=@bo1_bal_short_sum select %TOTAL_OUT_QTY%=@bo1_short_qty select %TOTAL_UNKD_SUM_OUT%=@bo1_unkd_bal_short_sum select %TOTAL_OUT_COM_IN%=@bo1_total_com_in if @bo_purpose_code in (27,30) select @bo1_sum_accur=isnull(@bo1_sum_accur,0)-isnull(@total_out_acc_sum,0) else select @bo1_sum_accur=0 .ASSIGN(@bo1_long_qty,(%STOCK_QTY%-@bo1_short_qty)) -- Короткая сумма пропорциональна кол бумаг if @bo1_short_qty < %STOCK_QTY% -- Списали не все бумаги begin ---- если часть бумаг осталась не списанная, то вычисляем сколько пойдет на длинную .ASSIGN(@bo1_short_sum,(round((%SUM% * @bo1_short_qty / %STOCK_QTY%),2))) .ASSIGN(@bo1_long_sum,(round(%SUM%,2) - @bo1_short_sum)) .ASSIGN(@bo1_unkd_short_sum,(round((%NKD_SUM% * @bo1_short_qty / %STOCK_QTY%),2))) .ASSIGN(@bo1_unkd_long_sum,(round(%NKD_SUM%,2) - @bo1_unkd_short_sum)) end else -- Все количество ушло на покрытие короткой begin .ASSIGN(@bo1_short_sum,(round(%SUM%,2))) .ASSIGN(@bo1_long_sum,0) .ASSIGN(@bo1_unkd_short_sum,(round(%NKD_SUM%,2))) .ASSIGN(@bo1_unkd_long_sum,0) end -- Прибыль по откупу короткой .ASSIGN(@bo1_profit_sum,(@bo1_short_sum - round(@bo1_bal_short_sum,2))) -- Прибыль по УНКД .ASSIGN(@bo1_nkd_profit_sum,(@bo1_unkd_short_sum - round(@bo1_unkd_bal_short_sum,2))) select @bo1_s_sum=isnull(@bo1_s_sum,0)-isnull(@bo1_long_sum,0)-isnull(@bo1_short_sum,0)-isnull(%NKD_SUM%,0) ----.EXIT_MESSAGE_PARM('!!!',@bo1_s_sum) if @is_last=1 --- добиваем сумму прибыли/убытка на остаток begin if isnull(@bo1_profit_sum,0)<>0 select @bo1_profit_sum=@bo1_profit_sum+@bo1_s_sum else select @bo1_long_sum=@bo1_long_sum+@bo1_s_sum end if @bo1_long_qty > 0 -------- Зачисляем на длинную begin .ASSIGN(@bo1_comm_main,(@bo1_comm+' Постановка на баланс ')) select @bo1_long_sum=round(@bo1_long_sum,2) ---.EXIT_MESSAGE_PARM('@bo1_s_sum',@bo1_long_sum) ---- вычисление зачисляемой суммы на 100 счет в валюте номинала .BACK_CALC_STOCK_VAL_SUM(@bo_stock_id,%OP_DATE%,@bo1_long_sum,@bo1_money_plan_cur_id,@bo1_nominal_sum,@bo1_nominal_cur_id) /* 1.0.0 - один из трех счетов */ --- проводка зачисления на 100 .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_long_acc_id,@bo1_ext_acc_id,@bo1_long_sum,@bo1_money_plan_cur_id,%OP_DATE%,@bo1_long_qty,@bo1_long_qty,@bo1_comm_main,Y,@operation_id,@id, @action_id,@action_history_id,@bo1_nominal_sum,@bo1_sum_accur,@bo1_home_subc,@bo1_ext_subc,@bo1_nominal_cur_id,@acc_cur_id) if isnull(@bo1_unkd_long_sum,0) > 0 --- зачисление части УНКД begin select @bo1_unkd_long_sum=round(@bo1_unkd_long_sum,2) .ASSIGN(@bo1_comm_add1,(@bo1_comm_add1 +' Постановка на баланс НКД')) ----- вычисление зачисляемой суммы на счет 440 в валюте номинала (КД) .BACK_CALC_STOCK_VAL_SUM(@bo_stock_id,%OP_DATE%,@bo1_unkd_long_sum,@bo1_money_plan_cur_id,@bo1_nominal_sum,@bo1_nominal_cur_id) ---- 4.4.0 - один из трех счетов (или 3.3.0 если прием ЦБ в фонд клиента) ----- проводка по зачислению УНКД .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_unkd_acc_id,@bo1_client_unkd_acc_id,@bo1_unkd_long_sum,@bo1_money_plan_cur_id,%OP_DATE%,@bo1_long_qty,0,@bo1_comm_add1,Y,@operation_id,@id,@action_id,@action_history_id, @bo1_nominal_sum,null,@bo1_home_subc,@bo1_ext_subc,@bo1_nominal_cur_id,null) end end end else ----======================================================== Списание begin ---------- Пытаемся списать длинную позицию /*Блок перевода ДС на реализацию*/ .ASSIGN(@bo1_comm_main,(' Перечисление ДС на реализацию')) ---- вычисление количества ЦБ, которое находится на длинной позиции select @subc_for_check='' .SUBC_STR_ADD(@subc_for_check,'STOCK_EMIS',@bo_stock_id) select @qty_check = isnull(sum(a.saldo_qty * a.deb_or_cred),0) from t_account_now a, t_accnow_subconto s, td_depo_docs d where a.plan2partner_id = @bo_plan2partner_id and a.acc_id = @bo1_long_acc_id and a.subc_eff_num like isnull( '%'+ @subc_for_check +'%', '%') and a.id = s.id and s.subconto_type_id = @bo1_lf_subc_type_id and s.item_id = d.id and d.lf_date=%STOCK_QTY% select @qty_check=%STOCK_QTY% ---- вычисление суммы реализации .ASSIGN(@oper_sum,(round((%SUM% * @qty_check/ %STOCK_QTY%),2))) select @bo1_acc_oper_sum=(round((%ACC_SUM% * @qty_check/%STOCK_QTY%),2)) /* D @bo1_ext_acc_id=(если сделка ТС прямая, то счет 2.0.1.1,если сделка ТС через брокера, то счет 2.0.10.1, если деп. снятие, то счет 1.1.2 ) K @bo1_realiz_acc_id=5.0 */ if @bo1_plan_money_id=@bo_plan_buch_id begin select @oper_sum=round(%SUM%,2) select @qty_check=%STOCK_QTY% end --- проводка по реализации if @bo_purpose_code not in (41, 42) begin --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --.EXIT_MESSAGE_PARM('@oper_sum',@oper_sum) --10055.00 --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_ext_acc_id,@bo1_realiz_acc_id,@oper_sum,@bo1_money_plan_cur_id,%OP_DATE%,@qty_check,@qty_check, @bo1_comm_main,Y,@operation_id,@id,@action_id,@action_history_id,@bo1_acc_oper_sum,null,@bo1_ext_subc,@bo1_realiz_subc,@bo_acc_sum_cur_id,null) end /*1*** Богаковский 11/02/2005 перенес снизу *******************************/ -- На этом месте проводки идут также, как и раньше if @bo_purpose_code not in (32,36) begin /* Богаковский 14/02/2005 добавил заплату, ниже это вычисляется тоже */ -- Длинная сумма пропорциональна кол бумаг if @bo1_long_qty < %STOCK_QTY% -- Списали не все бумаги begin --- вычисляем, сколько пойдет на короткую позицию .ASSIGN(@bo1_long_sum,(round((%SUM% * @bo1_long_qty / %STOCK_QTY%),2))) .ASSIGN(@bo1_short_sum,(round(%SUM%,2) - @bo1_long_sum)) .ASSIGN(@bo1_unkd_long_sum,(round((%NKD_SUM% * @bo1_long_qty / %STOCK_QTY%),2))) .ASSIGN(@bo1_unkd_short_sum,(round(%NKD_SUM%,2) - @bo1_unkd_long_sum)) ---.EXIT_MESSAGE_PARM('%UNKD_SUM%',@bo1_unkd_bal_long_sum) end else -- Все количество ушло на списание с длинной begin .ASSIGN(@bo1_long_sum,(round(%SUM%,2))) .ASSIGN(@bo1_short_sum,0) .ASSIGN(@bo1_unkd_long_sum,(round(%NKD_SUM%,2))) .ASSIGN(@bo1_unkd_short_sum,0) end /************************************************/ if isnull(@bo1_unkd_long_sum,0)>0 begin /* Богаковский 11/02/2005 добавил заплату, ниже это вычисляется тоже */ select @subc_pnkd='' select @subc_pnkd=%PNKD_SUBC% /***********************************************************************/ select @bo1_comm_1='Зачисление ПНКД' select @d_acc_id=@bo1_ext_acc_id select @k_acc_id=@bo1_pnkd_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=@subc_pnkd select @bo1_unkd_long_sum=round(@bo1_unkd_long_sum,2) --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --.EXIT_MESSAGE_PARM('@bo1_unkd_long_sum', @bo1_unkd_long_sum) -- 205.60 --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ---- зачисление ПНКД .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_unkd_long_sum,@bo1_money_plan_cur_id,%OP_DATE%,0,%STOCK_QTY%,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end end /*1************************************************************************/ -- Конец списания через реализацию .ASSIGN(@bo1_comm_main,(@bo1_comm+' Списание балансовой стоимости ')) if @bo_purpose_code not in (41, 42) -- через реализацию ЦБ begin /* 1) 5.0 - 1.0.0 (списание длинной поз. по партиям) 2) 4.4.0 - 4.4.1 (Списание УНКД) 3) списание затрат по покупке. Проводка только в том случае, если исп. отд. счет для затрат по покупке. 4.3.0.0 (4.3.0.2 - если используем отд. счет для приб/уб по комиссиям) - 4.4.6 3.7.0 (если собств.) (3.0.0 (если клиентская)) - 4.3.0.0 (4.3.0.2) */ -- letsko_av_debug !!! -- попробуем не портить @bo1_home_subc --select @bo1_home_subc = @subc_for_check ---- !!!! --- партионное списание ЦБ, Купона, затрат на преобретение, накопленной переоценки в корресп. со счетом реализации --.ASSET_BAL_OUT(@bo1_owner_id,@bo1_plan_money_id,@bo1_out_method_id,1,@bo1_long_acc_id,@bo1_realiz_acc_id,@bo1_unkd_acc_id,@bo1_pnkd_acc_id,@bo1_pereoc_acc_id,@bo1_fut_profit_acc_id,@bo1_lf_subc_type_id, -- %OP_DATE% , %STOCK_QTY% ,@bo1_comm_main,@subc_for_check,@bo1_realiz_subc,%PNKD_SUBC%,@action_history_id,%IS_COM_IN%,@bo1_bal_long_sum,@bo1_long_qty, @bo1_unkd_bal_long_sum,@bo1_unkd_long_qty, -- @bo1_pereoc_sum,@bo1_pereoc_qty,@bo1_total_com_in,@bo1_total_nkd2portf,@bo1_result,@bo1_total_nkd2portf_acc,@bo1_bal_long_acc_sum,@bo1_unkd_bal_long_acc_sum,@total_out_acc_sum, @oper_sum_close) EXEC ap_back_asset_bal_out @bo1_owner_id, @bo1_plan_money_id, @bo1_out_method_id, 1, @bo1_long_acc_id, @bo1_realiz_acc_id, @bo1_unkd_acc_id, @bo1_pnkd_acc_id, @bo1_pereoc_acc_id, @bo1_fut_profit_acc_id, @bo1_lf_subc_type_id, %OP_DATE%, %STOCK_QTY%, @bo1_comm_main, @subc_for_check, @bo1_realiz_subc, %PNKD_SUBC%, @action_history_id, %IS_COM_IN%, @bo1_bal_long_sum OUT, @bo1_long_qty OUT, @bo1_unkd_bal_long_sum OUT, @bo1_unkd_long_qty OUT, @bo1_pereoc_sum OUT, @bo1_pereoc_qty OUT, @bo1_total_com_in OUT, @bo1_total_nkd2portf OUT, @bo1_result OUT, @bo1_total_nkd2portf_acc OUT, @bo1_bal_long_acc_sum OUT, @bo1_unkd_bal_long_acc_sum OUT, @total_out_acc_sum OUT, @oper_sum_close OUT end /*Получение списанных параметров*/ select %TOTAL_OUT_SUM%=@bo1_bal_long_sum select %TOTAL_OUT_QTY%=@bo1_long_qty select %TOTAL_UNKD_SUM_OUT%=@bo1_unkd_bal_long_sum select %TOTAL_OUT_COM_IN%=@bo1_total_com_in if @bo_purpose_code in (27,30) select @bo1_sum_accur=isnull(@bo1_sum_accur,0)-isnull(@total_out_acc_sum,0) else select @bo1_sum_accur=0 .ASSIGN(@bo1_short_qty,(%STOCK_QTY%-@bo1_long_qty)) -- Длинная сумма пропорциональна кол бумаг if @bo1_long_qty < %STOCK_QTY% -- Списали не все бумаги begin --- вычисляем, сколько пойдет на короткую позицию .ASSIGN(@bo1_long_sum,(round((%SUM% * @bo1_long_qty / %STOCK_QTY%),2))) .ASSIGN(@bo1_short_sum,(round(%SUM%,2) - @bo1_long_sum)) .ASSIGN(@bo1_unkd_long_sum,(round((%NKD_SUM% * @bo1_long_qty / %STOCK_QTY%),2))) .ASSIGN(@bo1_unkd_short_sum,(round(%NKD_SUM%,2) - @bo1_unkd_long_sum)) ---.EXIT_MESSAGE_PARM('%UNKD_SUM%',@bo1_unkd_bal_long_sum) end else -- Все количество ушло на списание с длинной begin .ASSIGN(@bo1_long_sum,(round(%SUM%,2))) .ASSIGN(@bo1_short_sum,0) .ASSIGN(@bo1_unkd_long_sum,(round(%NKD_SUM%,2))) .ASSIGN(@bo1_unkd_short_sum,0) end -- Прибыль по списанию с длинной ---- вычисление прибыли/убытка .ASSIGN(@bo1_profit_sum,(@bo1_long_sum - round(@bo1_bal_long_sum,2))) select @bo1_s_sum=isnull(@bo1_s_sum,0)-isnull(@bo1_long_sum,0)-isnull(@bo1_short_sum,0)-isnull(%NKD_SUM%,0) /*declare @str varchar(255) select @str=convert(varchar,@bo1_s_sum)+' '+convert(varchar,@bo1_long_sum)+' '+convert(varchar,@bo1_short_sum) select @str */ if @is_last=1 -- IS LAST begin if isnull(@bo1_profit_sum,0) = 0 select @bo1_short_sum=@bo1_short_sum+@bo1_s_sum end ---.EXIT_MESSAGE_PARM('@bo1_long_sum',@bo1_bal_long_sum) -- .EXIT_MESSAGE_PARM('@bo1_total_nkd2portf',@bo1_total_nkd2portf) -- Прибыль по УНКД .ASSIGN(@bo1_nkd_profit_sum,(@bo1_unkd_long_sum - round(@bo1_unkd_bal_long_sum,2)-isnull(@bo1_total_nkd2portf,0))) /*Проверка на короткую позицию по ЦБ*/ if %CHARACTER_ID%=2 begin -- короткая позиция клиента if @bo1_plan_money_id<>@bo_plan_buch_id /*Чтоб не было проверки по ПИФ*/ begin if (%IS_ALLOW_SHORT4CLIENT% <>1) and (@bo1_short_qty > 0) -- Списание с ДП begin --- короткая не разрешена .EXIT_MESSAGE('Превышен остаток по длинной позиции по ЦБ. Короткая позиция не разрешена.') end else if (%IS_ALLOW_SHORT4CLIENT% = 1) and (@bo1_short_qty > 0) begin ---select @type_repo_id=id from t_purposes where code =67 ---- короткая разрешена, ставим галочку update tb_repo_params set margin_deal=1 where id=@bo_deal_id ---select @type_repo_code=.PURPOSE_CODE(@type_repo_id) end end end -- короткая позиция клиента else begin -- короткая позиция собственная if @bo1_plan_money_id<>@bo_plan_buch_id /*Чтоб не было проверки по ПИФ*/ begin if (%IS_ALLOW_SHORT4OWN% <> 1) and (@bo1_short_qty > 0) -- Списание с ДП begin --- короткая не разрешена .EXIT_MESSAGE('Превышен остаток по длинной позиции по ЦБ. Короткая позиция не разрешена.') end else if (%IS_ALLOW_SHORT4OWN% = 1) and (@bo1_short_qty > 0) begin ----select @type_repo_id=id from t_purposes where code = 67 ---- короткая разрешена , ставим галочку update tb_repo_params set margin_deal=1 where id=@bo_deal_id ---select @type_repo_code=.PURPOSE_CODE(@type_repo_id) end end end -- короткая позиция собственная /*Конец проверки короткой позиции*/ if @bo1_short_qty > 0 -------- Зачисляем на короткую begin .ASSIGN(@bo1_comm_main,(@bo1_comm+' Зачисление на короткую позицию')) select @bo1_short_sum=round(@bo1_short_sum,2) ---- вычисление суммы зачисления в валюте номинала .BACK_CALC_STOCK_VAL_SUM(@bo_stock_id,%OP_DATE%,@bo1_short_sum,@bo1_money_plan_cur_id,@bo1_nominal_sum,@bo1_nominal_cur_id) --- один из трех счетов - 1.0.1 (зачисление на короткую позицию бумаг) --SELECT 'letsko_av_debug', '.BACK_SECURS_INOUT_PIF', @bo1_owner_id AS bo1_owner_id, @bo1_plan_money_id AS bo1_plan_money_id, -- %OP_DATE% AS OP_DATE, @bo1_ext_acc_id AS bo1_ext_acc_id, @bo1_short_acc_id AS bo1_short_acc_id, @bo1_short_sum AS bo1_short_sum, -- @bo1_money_plan_cur_id AS bo1_money_plan_cur_id, %OP_DATE% AS OP_DATE, @bo1_short_qty AS bo1_short_qty, @bo1_short_qty AS bo1_short_qty, -- @bo1_comm_main AS bo1_comm_main, @operation_id AS operation_id, @id AS id, @action_id AS action_id, @action_history_id AS action_history_id, -- @bo1_sum_accur AS bo1_sum_accur, @bo1_nominal_sum AS bo1_nominal_sum, @bo1_ext_subc AS bo1_ext_subc, @bo1_home_subc AS bo1_home_subc, -- @acc_cur_id AS acc_cur_id, @bo1_nominal_cur_id AS bo1_nominal_cur_id -- kashuba_av 02.02.06 begin Проводки по уходу в короткую в ПИФ быть не должны! --- проводка по зачислению --.OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_ext_acc_id,@bo1_short_acc_id,@bo1_short_sum ,@bo1_money_plan_cur_id,%OP_DATE%,@bo1_short_qty,@bo1_short_qty,@bo1_comm_main,Y,@operation_id,@id,@action_id,@action_history_id, -- @bo1_sum_accur,@bo1_nominal_sum,@bo1_ext_subc,@bo1_home_subc,@acc_cur_id,@bo1_nominal_cur_id) -- kashuba_av 02.02.06 end if isnull(@bo1_unkd_short_sum,0) > 0 begin .ASSIGN(@bo1_comm_add1,(@bo1_comm_add1+' Зачисление НКД на короткую позицию')) select @bo1_unkd_short_sum=round(@bo1_unkd_short_sum,2) --- вычисление зачисляемой суммы КД на короткую .BACK_CALC_STOCK_VAL_SUM(@bo_stock_id,%OP_DATE%,@bo1_unkd_short_sum,@bo1_money_plan_cur_id,@bo1_nominal_sum,@bo1_nominal_cur_id) --- Зачисляем на к.п. УНКД --- один из трех счетов (3.0.9 если клиентская) - 4.4.4 if @bo_purpose_code in (29,35,50,55,94,43,108,109,93,32,36,51,65,110,111) select @bo1_client_unkd_acc_id=@fond_own_id ----- в дебете был счет @bo1_client_unkd_acc_id, теперь @fond_own_id по ряду целевых назначений -- kashuba_av 02.02.06 begin Проводки по уходу в короткую в ПИФ быть не должны! --.OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@bo1_client_unkd_acc_id,@bo1_unkd_short_acc_id,@bo1_unkd_short_sum,@bo1_money_plan_cur_id,%OP_DATE%,@bo1_short_qty,@bo1_short_qty,@bo1_comm_add1,Y,@operation_id,@id,@action_id,@action_history_id --null,@bo1_nominal_sum,@bo1_ext_subc,@bo1_home_subc,null,@bo1_nominal_cur_id) -- kashuba_av 02.02.06 end end end end -- Конец продажи .GET_ITEM_FROM_TYPE_SUBC_STR(%P2L_SUBC%,'DOC_SEC',@dealing2upd_id) update tb_baysale_docitems set coupon_profit=isnull(@bo1_nkd_profit_sum,0) where id=@dealing2upd_id -------------Прибыли или Убытки---------------------- select @bo_nkd_profit_sum=round(@bo1_nkd_profit_sum,2) if @bo1_in_out = 1 begin select @bo1_profit=round(isnull(@bo1_nkd_profit_sum,0),2)+round(isnull(@bo1_profit_sum,0),2) end else begin select @bo1_profit=round(isnull(@bo1_profit_sum,0),2) end select @bo_profit=round(@bo1_profit,2) /*Блок проводок по прибыли/убытку */ if @bo_purpose_code in (27,28,30,31,43,44,45,46,47,49,52,63) /*48,58*/ begin if @bo_profit<0 begin if @bo1_in_out = 1 begin select @bo1_comm_1='Прибыль по покрытию короткой позиции' select @bo1_comm_2='Списание прибыли по покрытию короткой позиции на фонды' select @bo1_profit=@bo1_profit*(-1.0) select @d_acc_id=@bo1_realiz_acc_id select @k_acc_id=@bo1_profit_acc_id select @d_subc_str=@bo1_realiz_subc select @k_subc_str=%P2L_SUBC% select @bo_profit_d_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_c_acc_cur_id=null end else begin select @bo1_comm_1='Убыток по списанию' select @bo1_comm_2='Списание убытка по списанию на фонды' select @bo1_profit=@bo1_profit*(-1.0) select @d_acc_id=@bo1_profit_acc_id select @k_acc_id=@bo1_realiz_acc_id select @d_subc_str=%P2L_SUBC% select @k_subc_str=@bo1_realiz_subc select @bo_profit_c_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_d_acc_cur_id=null end end else if @bo_profit>0 begin if @bo1_in_out = 1 begin select @bo1_comm_1='Убыток по покрытию короткой позиции' select @bo1_comm_2='Списание убытка по покрытию короткой позиции на фонды' select @d_acc_id=@bo1_profit_acc_id select @k_acc_id=@bo1_realiz_acc_id select @d_subc_str=%P2L_SUBC% select @k_subc_str=@bo1_realiz_subc select @bo_profit_c_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_d_acc_cur_id=null end else begin select @bo1_comm_1='Прибыль по списанию' select @bo1_comm_2='Списание прибыли по списанию на фонды' select @d_acc_id=@bo1_realiz_acc_id select @k_acc_id=@bo1_profit_acc_id select @d_subc_str=@bo1_realiz_subc select @k_subc_str=%P2L_SUBC% select @bo_profit_d_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_c_acc_cur_id=null end end if @is_calc_profit = 1 -- Если рассчитываем прибыль begin --- Прибыль по покрытию короткой позиции, если рассчитываем прибыль --- 5.0 - 4.3.0.0 --- Убыток по списанию, если рассчитываем прибыль --- 4.3.0.0 - 5.0 --- Убыток по покрытию короткой позиции, если рассчитываем прибыль --- 4.3.0.0 - 5.0 --- Прибыль по списанию, если рассчитываем прибыль --- 5.0 - 4.3.0.0 if @bo1_plan_money_id<>@bo_plan_buch_id begin .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_profit,@bo1_money_plan_cur_id,%OP_DATE%,0,0,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str, @bo_profit_d_acc_cur_id,@bo_profit_c_acc_cur_id) end end if @bo_profit<0 begin if @bo1_in_out = 1 begin select @d_acc_id=@bo1_profit_acc_id select @k_acc_id=@fond_own_id select @d_subc_str=%P2L_SUBC% select @k_subc_str=@bo1_ext_subc end else begin select @d_acc_id=@fond_own_id select @k_acc_id=@bo1_profit_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=%P2L_SUBC% end end else if @bo_profit>0 begin if @bo1_in_out = 1 begin select @d_acc_id=@fond_own_id select @k_acc_id=@bo1_profit_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=%P2L_SUBC% end else begin select @d_acc_id=@bo1_profit_acc_id select @k_acc_id=@fond_own_id select @d_subc_str=%P2L_SUBC% select @k_subc_str=@bo1_ext_subc end end if @is_calc_profit = 1 -- Если рассчитываем прибыль begin if @d_acc_id<>@k_acc_id -- чтобы не было лишней пров.по ПИФ begin /* !!!!!!!!!!!!! описание в Word начать отсюда*/ --- Списание прибыли по покрытию короткой позиции на фонды,если рассчитываем прибыль --- 4.3.0.0 - 3.0.9 --- Списание убытка по списанию на фонды,если рассчитываем прибыль --- 3.0.9 - 4.3.0.0 --- Списание убытка по покрытию короткой позиции на фонды,если рассчитываем прибыль --- 3.0.9 - 4.3.0.0 --- Списание прибыли по списанию на фонды,если рассчитываем прибыль --- 4.3.0.0 - 3.0.9 if (@bo1_plan_money_id<>@bo_plan_buch_id) begin .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_profit,@bo1_money_plan_cur_id,%OP_DATE%,0,0,@bo1_comm_2,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end end end else if @is_calc_profit = 0 begin if @bo_profit<0 begin if @bo1_in_out = 1 begin select @d_acc_id=@bo1_realiz_acc_id select @k_acc_id=@fond_own_id select @d_subc_str=@bo1_realiz_subc select @k_subc_str=@bo1_ext_subc select @bo_profit_d_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_c_acc_cur_id=null end else begin select @d_acc_id=@fond_own_id select @k_acc_id=@bo1_realiz_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=@bo1_realiz_subc select @bo_profit_c_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_d_acc_cur_id=null end end else if @bo_profit>0 begin if @bo1_in_out = 1 begin select @d_acc_id=@fond_own_id select @k_acc_id=@bo1_realiz_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=@bo1_realiz_subc select @bo_profit_c_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_d_acc_cur_id=null end else begin select @d_acc_id=@bo1_realiz_acc_id select @k_acc_id=@fond_own_id select @d_subc_str=@bo1_realiz_subc select @k_subc_str=@bo1_ext_subc select @bo_profit_d_acc_cur_id=@bo_acc_sum_cur_id select @bo_profit_c_acc_cur_id=null end end /*!!!!!*/ --- Прибыль по покрытию короткой позиции, если не расчитываем прибыль, с использованием счета реализации --- 5.0 - 3.0.9 --- Прибыль по покрытию короткой позиции, если не расчитываем прибыль, без использования счета реализации --- - 3.0.9 --- --- --- --- if (@bo1_plan_money_id<>@bo_plan_buch_id) begin --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --.EXIT_MESSAGE_PARM('@bo1_profit', @bo1_profit) -- не попадает --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_profit,@bo1_money_plan_cur_id,%OP_DATE%,0,0,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str, @bo_profit_d_acc_cur_id,@bo_profit_c_acc_cur_id) end end end /*Конец блока проводок по прибыли/убытку */ select @subc_pnkd='' select @subc_pnkd=%PNKD_SUBC% if @bo_purpose_code in (32,36) select @bo1_nkd_profit_sum=isnull((@bo1_unkd_bal_long_sum*(-1.0)),0) --.SUBC_STR_ADD(@subc_pnkd,'DOC_SEC_IN',@partion_id) --.SUBC_STR_ADD(@subc_pnkd,'STOCK_EMIS',@stock_id) /*Блок проводок по зачислению КД,ПНКД, прибыли по КД по счетам 4*/ if @bo_purpose_code in (29,32,108,110,93,36) begin .ACCID_FROM_CONST2PLAN(@bo1_ext_acc_id,'BACK_ACC_FUND_MONEY',@bo1_plan_money_id,1,3,'Счет фонда ДС клиента',@bo1_mess_res) end if @bo1_in_out=-1 -- Списание begin /*1*** Богаковский 11/02/2005 перенес выше ******************************* if @bo_purpose_code not in (32,36) begin if isnull(@bo1_unkd_long_sum,0)>0 begin select @bo1_comm_1='Зачисление ПНКД' select @d_acc_id=@bo1_ext_acc_id select @k_acc_id=@bo1_pnkd_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=@subc_pnkd select @bo1_unkd_long_sum=round(@bo1_unkd_long_sum,2) ---- зачисление ПНКД --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --.EXIT_MESSAGE_PARM('@bo1_unkd_long_sum', @bo1_unkd_long_sum) -- 205.60 --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_unkd_long_sum,@bo1_money_plan_cur_id,%OP_DATE%,0,%STOCK_QTY%,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end end *1************************************************************************/ if isnull(@bo1_nkd_profit_sum,0)<>0 begin --добавил Приймак для Дойче 09,08,05 -- заапгрэйдил Лецко А.В. для Козлова IF (.GET_CONST('CLIENT_CODE') = 'DEUTCHE') OR (.GET_CONST('CAPITAL_EXCLUSIVE') = 'CAPITAL_EXCLUSIVE') BEGIN DECLARE @tttemp NUMERIC(18, 0) SELECT @tttemp = @bo1_fut_profit_acc_id SELECT @bo1_fut_profit_acc_id = .SD_ACCID_FROM_EFFNO(@bo1_plan_money_id, '91.2') END if isnull(@bo_nkd_profit_sum,0)>0 begin select @bo1_comm_1='Доход по КД' select @d_acc_id=@bo1_pnkd_acc_id select @k_acc_id=@bo1_fut_profit_acc_id select @d_subc_str=@subc_pnkd select @k_subc_str=%P2L_SUBC% end else begin select @bo1_comm_1='Убыток по КД' select @bo1_nkd_profit_sum=@bo1_nkd_profit_sum*(-1.0) select @d_acc_id=@bo1_fut_profit_acc_id select @k_acc_id=@bo1_pnkd_acc_id select @d_subc_str=%P2L_SUBC% select @k_subc_str=@subc_pnkd end select @bo1_nkd_profit_sum=round(@bo1_nkd_profit_sum,2) if @is_calc_profit = 1 -- Если рассчитываем прибыль begin if @d_acc_id<>@k_acc_id -- чтобы не было лишней пров.по ПИФ begin --if (@bo1_plan_money_id<>@bo_plan_buch_id) --begin --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --.EXIT_MESSAGE_PARM('@bo1_nkd_profit_sum', @bo1_nkd_profit_sum) -- 10.10 --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_nkd_profit_sum,@bo1_money_plan_cur_id,%OP_DATE%,%STOCK_QTY%,%STOCK_QTY%,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) --возвращяем в зад значение @bo1_fut_profit_acc_id IF (.GET_CONST('CLIENT_CODE') = 'DEUTCHE') OR (.GET_CONST('CAPITAL_EXCLUSIVE') = 'CAPITAL_EXCLUSIVE') SELECT @bo1_fut_profit_acc_id = @tttemp --end end if isnull(@bo_nkd_profit_sum,0)>0 begin select @d_acc_id=@bo1_fut_profit_acc_id select @k_acc_id=@acc_pncd_cl select @d_subc_str=%P2L_SUBC% select @k_subc_str=@bo1_ext_subc end else begin select @d_acc_id=@acc_pncd_cl select @k_acc_id=@bo1_fut_profit_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=%P2L_SUBC% end if @d_acc_id<>@k_acc_id -- чтобы не было лишней пров.по ПИФ begin if (@bo1_plan_money_id<>@bo_plan_buch_id) begin .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_nkd_profit_sum,@bo1_money_plan_cur_id,%OP_DATE%,0,0,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end end end else if @is_calc_profit = 0 begin if isnull(@bo_nkd_profit_sum,0)>0 begin select @d_acc_id=@bo1_pnkd_acc_id select @k_acc_id=@acc_pncd_cl select @d_subc_str=@subc_pnkd select @k_subc_str=@bo1_ext_subc end else begin select @d_acc_id=@acc_pncd_cl select @k_acc_id=@bo1_pnkd_acc_id select @d_subc_str=@bo1_ext_subc select @k_subc_str=@subc_pnkd end if @d_acc_id<>@k_acc_id -- чтобы не было лишней пров.по ПИФ begin if (@bo1_plan_money_id<>@bo_plan_buch_id) begin .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_nkd_profit_sum,@bo1_money_plan_cur_id,%OP_DATE%,%STOCK_QTY%,%STOCK_QTY%,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end end end end end ---.EXIT_MESSAGE_PARM('@bo1_bal_short_sum',@bo1_perpose_id) --Конец блока проводок /*Блок проводок по счетам 3 клиентов*/ if (select code from t_purposes where id = @bo1_perpose_id) in (30,27,28,31,43,44,45,46,47,48,49,52,63,75,32,36) -- По сделкам and %CHARACTER_ID% = 2 -- Сделка клиентская begin if @bo1_in_out = 1 -- Покупка begin select @bo1_comm_1='Зачисление УНКД' select @d_acc_id=@fond_own_id select @k_acc_id=@acc_uncd_cl select @d_subc_str=@subc_pnkd select @k_subc_str=@subc_pnkd select @bo1_unkd_long_sum=round(@bo1_unkd_long_sum,2) .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_unkd_long_sum,@bo1_money_plan_cur_id,%OP_DATE%,0,0,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) if @bo_purpose_code not in (50,51,65,66,29,108,93) begin select @subc_for_check='' .SUBC_STR_ADD(@subc_for_check,'INVESTORS',@bo_investor_id) .SUBC_STR_ADD(@subc_for_check,'STOCK_EMIS',@bo_stock_id) ---- .SALDO(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@marg_acc_id,@subc_for_check,N,D,@bo1_c_sum,@bo1_q_sum) select @bo1_comm_1='Зачисление балансовой стоимости' select @d_acc_id=@fond_own_id select @k_acc_id=@fond_stock_own_id select @d_subc_str=@subc_pnkd select @k_subc_str=@subc_pnkd select @fond_sum=@bo1_bal_short_sum+@bo1_long_sum .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@fond_sum,@bo1_money_plan_cur_id,%OP_DATE%,0,%STOCK_QTY%,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end end else --- Продаже begin select @bo1_comm_1='Списание УНКД' select @d_acc_id=@acc_uncd_cl select @k_acc_id=@acc_pncd_cl select @d_subc_str=@subc_pnkd select @k_subc_str=@subc_pnkd select @bo1_unkd_bal_long_sum=round(@bo1_unkd_bal_long_sum,2) .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_unkd_bal_long_sum,@bo1_money_plan_cur_id,%OP_DATE%,0,0,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) if @bo_purpose_code not in (32,36) begin select @bo1_comm_1='Зачисление ПНКД' select @d_acc_id=@acc_pncd_cl select @k_acc_id=@fond_own_id select @d_subc_str=@subc_pnkd select @k_subc_str=@subc_pnkd select @bo1_unkd_long_sum=round(@bo1_unkd_long_sum,2) .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@bo1_unkd_long_sum,@bo1_money_plan_cur_id,%OP_DATE%,0,0,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end if @bo_purpose_code not in (50,51,65,66,32,110) begin select @bo1_comm_1='Списание балансовой стоимости' select @d_acc_id=@fond_stock_own_id select @k_acc_id=@fond_own_id select @d_subc_str=@subc_pnkd select @k_subc_str=@subc_pnkd select @bo1_bal_long_sum=round(@bo1_bal_long_sum,2) select @subc_for_check='' .GET_ITEM_FROM_TYPE_SUBC_STR(%HOME_SUBC%,'INVESTORS',@bo_investor_id) .SUBC_STR_ADD(@subc_for_check,'INVESTORS',@bo_investor_id) ---.SUBC_STR_ADD(@subc_for_check,'INVESTORS',@bo_stock_id) ---.ACCID_FROM_CONST2PLAN(@marg_acc_id,'BACK_ACC_OBLIG_MARG_DS',@bo1_plan_money_id,1,3,'Задолженность по ДС клиента',@bo1_mess_res) select @bo1_c_sum=0 ----.SALDO(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@marg_acc_id,@subc_for_check,N,D,@bo1_c_sum,N) select @fond_sum=@bo1_short_sum+@bo1_bal_long_sum .OPERATION_SBC(@bo1_owner_id,@bo1_plan_money_id,%OP_DATE%,@d_acc_id,@k_acc_id,@fond_sum,@bo1_money_plan_cur_id,%OP_DATE%,%STOCK_QTY%,0,@bo1_comm_1,Y,@operation_id,@id,@action_id,@action_history_id,null,null,@d_subc_str,@k_subc_str) end end end /*Конец блока проводок по счетам 3 клиентов*/ $ENDTEXT(15251639) $PATTERNARG(%STOCK_QTY%) name=Количество ЦБ order=10 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%SUM%) name=Сумма order=20 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%NKD_SUM%) name=Сумма УНКД order=30 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%OP_DATE%) name=Дата проводки order=40 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%RATE_DATE%) name=Дата курса order=50 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%CUR_ID%) name=Валюта проводки order=60 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%HOME_SUBC%) name=Внутреняя строка аналитики order=70 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%EXT_SUBC%) name=Внешняя строка аналитики order=80 comment=null mandatory=1 default='' choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%PNKD_SUBC%) name=Строка субконто ПНКД order=90 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%ACC_SUM%) name=Валютная сумма счета order=100 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%COMM2PURP2MOVE%) name=Формирование комментария к проводкам order=110 comment=Формирование комментария к проводкам(1 - формировать исходя из целевого назначения,0 - формировать исходя из исходного и целевого объекта) mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_ALLOW_SHORT4OWN%) name=Разрешаем короткую для себя order=120 comment=Разрешаем короткую для себя mandatory=1 default=@is_allow_short4own choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_ALLOW_SHORT4CLIENT%) name=Разрешаем короткую для клиента order=130 comment=Разрешаем короткую для клиента mandatory=1 default=@is_allow_short4client choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%TOTAL_OUT_SUM%) name=Общая сумма списания (вых) order=140 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%TOTAL_OUT_QTY%) name=Общее количество списано (вых) order=150 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%TOTAL_UNKD_SUM_OUT%) name=Общая сумма списанного купонного дохода. order=160 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_CALC_PROFIT%) name=Считаем прибыль order=170 comment=1 - считаем, 0 - не считаем, 2 - списание (принятие) - по балансовой(оценочной) стоимости mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%CHARACTER_ID%) name=Характер сделки order=180 comment=Характер сделки mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%P2L_SUBC%) name=Субконто по прибыли/убытку order=190 comment=Субконто по прибыли/убытку mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_REALIZ%) name=Через реализацию или нет order=200 comment=Через реализацию или нет mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_P2L_COMIS%) name=Использование счета пр/уб по комиссиям order=210 comment=Использование счета пр/уб по комиссиям mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%IS_COM_IN%) name=Использование счета для затрат по приобретению order=220 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%TOTAL_OUT_COM_IN%) name=Сумма списанных расходов на приобретение/списание order=230 comment=Сумма списанных расходов на приобретение/списание mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $ENDPATTERN