# Date: 15/09/06 # Version: 105 $PATTERN(.LIFO_FIFO_BEGIN_NOW) name=Начало цикла LIFO_FIFO через текущие остатки class=2 product=ALD_SQL pattern_text=$TEXT(17150340) #ifndef #lifo_fifo_begin_now #define #lifo_fifo_begin_now declare @in_no_part2 varchar(255), @msg varchar(100) .INT_VAR(@acc_is_pas_now) .ID_VAR(@doc_method_lf) .MONEY_VAR(@saldo_lf) -- Остаток на счете суммовой .MONEY_VAR(@saldo_acc_lf) -- Остаток на счете валютный .MONEY_VAR(@q_saldo_lf) -- Остаток на счете количественный .MONEY_VAR(@qty_rest_lf) -- Остаток от количества для проведения .MONEY_VAR(@bal_sum_total_lf) -- Сумма нарастающим итогом .MONEY_VAR(@bal_sum_total_acc_lf) -- Сумма нарастающим итогом в валюте .MONEY_VAR(@part_qty_lf) -- Количество по выбранной партии .MONEY_VAR(@sum_partion_qty_lf) -- Количество общее по всем партиям списания -- Используемые параметры .ID_VAR(@subc2_id_lf) -- Аналитика .MONEY_VAR(@op_qty_lf) -- Количество для проводки .MONEY_VAR(@op_sum_lf) -- Сумма для проводки .MONEY_VAR(@op_sum_acc_lf) -- Сумма для проводки в валюте .ID_VAR(@acc_cur_id_lf) --- Валюта суммы declare @price_out_lf double precision -- Цена списания для проводки declare @price_out_acc_lf double precision -- Цена списания для проводки в валюте .ID_VAR(@op_repo_part2_id) -- ID первой части сделки РЕПО #endif --------Начальные Проверки EXEC ----------------- if convert(numeric, %GRP_SUBC% ) is null begin raiserror 40000 'Не задан тип субконто для партии' return end .ACC_DEB_OR_CRED(%ACCOUNT%,@acc_is_pas_now) --------Конец проверки ----------------- select @doc_method_lf = %DOC_METHOD% select @qty_rest_lf = %OUT_QTY% select @bal_sum_total_lf = 0 select @bal_sum_total_acc_lf = 0 if @doc_method_lf =1 declare tmp_cur_fifo cursor for select s.item_id, sum(o.saldo * o.deb_or_cred), sum(isnull(o.saldo_qty,0)*o.deb_or_cred),sum(o.saldo_accur * o.deb_or_cred), ISNULL(o.acc_cur_id, 10000000000027474) from t_account_now o, t_accnow_subconto s, td_depo_docs d where o.plan2partner_id = %PLAN2PARTNER_ID% and o.acc_id = %ACCOUNT% and o.subc_eff_num like isnull('%'+ %SUBC_STR% +'%','%') and o.id = s.id and s.subconto_type_id = %GRP_SUBC% and s.item_id = d.id and isnull(d.lf_date,in_date)0 begin select @saldo_lf = @saldo_lf * @acc_is_pas_now select @saldo_acc_lf = @saldo_acc_lf * @acc_is_pas_now select @q_saldo_lf = @q_saldo_lf * @acc_is_pas_now /* Для LIFO-FIFO и др., кроме средневзвешенной*/ /* Закомментарено, поскольку партионного нет if @doc_method_lf !=3 -- Для LIFO-FIFO begin */ if @q_saldo_lf < @qty_rest_lf select @op_qty_lf = @q_saldo_lf else select @op_qty_lf = @qty_rest_lf /* Закомментарено, поскольку партионного нет end else begin select @op_qty_lf = @qty_rest_lf end */ --- Вычисление суммы if @op_qty_lf = @q_saldo_lf begin select @op_sum_lf = round(@saldo_lf,2) select @op_sum_acc_lf = round(@saldo_acc_lf,2) end else begin select @price_out_lf = convert(double precision,@saldo_lf)/convert(double precision,@q_saldo_lf) select @op_sum_lf = convert(money,round((@op_qty_lf * @price_out_lf),2)) select @price_out_acc_lf = convert(double precision,@saldo_acc_lf)/convert(double precision,@q_saldo_lf) select @op_sum_acc_lf = convert(money,round((@op_qty_lf * @price_out_acc_lf),2)) end select @qty_rest_lf = @qty_rest_lf - @op_qty_lf select @bal_sum_total_lf = @bal_sum_total_lf + @op_sum_lf select @bal_sum_total_acc_lf = @bal_sum_total_acc_lf + @op_sum_acc_lf $ENDTEXT(17150340) $PATTERNARG(%DATE_CALC%) name=Дата операции order=2 comment=Дата операции mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%PLAN2PARTNER_ID%) name=План счетов владельца order=3 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%ACCOUNT%) name=Счет плана счетов order=5 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%GRP_SUBC%) name=Субконто для партий order=8 comment=Переменная содержащая тип субконто для группировки mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%ITEM_ID%) name=сделка order=10 comment=сделка mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%SUBC_STR%) name=Строка субконто order=90 comment=Строка субконто для фильтрации mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%DOC_METHOD%) name=Метод поиска документа списания order=100 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $PATTERNARG(%OUT_QTY%) name=Количество для списания order=110 comment=null mandatory=1 default=null choose_type=null choose_action=null choose_field=null $ENDPATTERNARG $ENDPATTERN