create proc dbo.%PROC% @stock_qty .PIF_PAY_TYPE, @alloc_sum money, @pay_owner_id numeric, @agent_dog_id numeric, @owner_id numeric, @operday datetime, @paydate datetime, @partdate datetime, @agent_proc money, @stock_price money out, -- цена пая на @paydate @payment_sum money out, -- сумма оплаты = цена пая на кол-во за вычетом комиссии и налога @agent_comis_sum money out, -- агенту = (цена пая на кол-во) - (цена пая без комиссии на кол-во) @agent_proc_calc money out as begin begin tran declare @agent_comis money, @stock_price_allocate money, @stock_price_calc decimal(36,16) --kashuba_av 30.01.06 begin Выбираем значение поля "Тип рассчета сумм" declare @fond_calc_type int select @fond_calc_type = (select fond_calc_type from td_pay_fond where id = @owner_id) --kashuba_av 30.01.06 end -- Цена пая select @stock_price = .PIF_PAY_PRICE(@owner_id,@paydate) if @stock_price is null .EXIT_MESSAGE('Для данного фонда не задана цена пая') .PIF_ROUND_PAYS(@owner_id, @stock_qty, @stock_qty) -- Получение процента комиссии if isnull(@agent_dog_id,0) <> 0 begin select @partdate=.DATE_NORM(@partdate,B) select @operday=.DATE_NORM(@operday,B) if @agent_proc is null BEGIN .PIF_AGENT_PROC4PARTION(@agent_dog_id,@operday,@partdate,@agent_proc_calc) END else select @agent_proc_calc=@agent_proc end else select @agent_proc_calc=0 -- Цена выкупа пая select @stock_price_calc = @stock_price - @stock_price * isnull(@agent_proc_calc,0) / 100.0 .PIF_ROUND_MONEY(@owner_id,@stock_price_calc,@stock_price_allocate) --kashuba_av 30.01.06 begin Если в поле "Тип рассчета сумм" стоит ПРСД, то округляем до 2-х знаков if @fond_calc_type=3 begin select @stock_price_allocate = round(( @stock_price - @stock_price * isnull(@agent_proc_calc,0) / 100.0),2) end --kashuba_av 30.01.06 end -- Сумма комиссии if @agent_proc_calc=0 select @agent_comis_sum = 0 else select @agent_comis_sum = round((@stock_qty * @stock_price - @stock_qty * @stock_price_allocate),2) -- Сумма к выплате select @payment_sum = round((@stock_qty * @stock_price - isnull(@agent_comis_sum,0)),2) if rtrim(ltrim(.GET_CONST('CLIENT_CODE'))) = 'WEBINVEST' -- в Веб-Инвесте так считают: begin select @payment_sum = round(@stock_qty * @stock_price_allocate,4) select @agent_comis_sum = round((@stock_qty * @stock_price - @payment_sum),2) select @payment_sum = round(@stock_qty * @stock_price_allocate,2) end --kashuba_av 30.01.06 begin Если в поле "Тип рассчета сумм" стоит ПРСД, то округляем до 2-х знаков каждое умножение if @fond_calc_type=3 begin if @agent_proc_calc=0 select @agent_comis_sum = 0 else -- select @agent_comis_sum = round((@stock_qty * @stock_price - @stock_qty * @stock_price_allocate),2) select @agent_comis_sum = round((@stock_qty * @stock_price),2) - round((@stock_qty * @stock_price_allocate),2) select @payment_sum = round((@stock_qty * @stock_price - isnull(@agent_comis_sum,0)),2) end --kashuba_av 30.01.06 end commit tran end