create procedure dbo.%PROC% @sid varchar(30) = null, .ARGLIST as declare @action_id numeric, @id numeric, @user_id numeric, @state_id numeric, @type_id numeric, @item_name varchar(100), @new_state_id numeric begin tran select @action_id = %ACTION_ID% select @id = convert(numeric, @sid) .CHECK_USER .CHECK_UPDATE .ARGCONVERT .TEST_UNIQUE declare @nominal money declare @stock_type numeric declare @period numeric select @nominal=(select stock_nominal from td_stock_emis where id=@stock_id) if @nominal is null .EXIT_MESSAGE('Для ЦБ не задан номинал') select @stock_type=(select stock_type_id from td_stock_emis where id=@stock_id) -- if @stock_type not in (7) /* Облигация */ -- .EXIT_MESSAGE('Купоны могут быть внесены только для облигаций') if (@income_sum is null) and (@income_percent is null) .EXIT_MESSAGE('Введите сумму купона, либо процент доходности') if EXISTS(select 1 from td_stock_coupons where stock_id = @stock_id and td_stock_coupons.id <> @id -- 17.04.2006 -- and (((@date_b <= date_b) and (@date_e >= date_b)) -- or ((@date_b <= date_e) and (@date_e >= date_e))) and (((@date_b < date_b) and (@date_e > date_b)) or ((@date_b < date_e) and (@date_e > date_e))) and .ITEMS_EXISTS_BY_TYPE_STATE(td_stock_coupons.id,'STOCK_COUPONS','CRT')) .EXIT_MESSAGE('Период действия купона пересекается с уже существующим') if @coupon_rate_ind = 1 select @income_percent = null else select @income_sum = null .UPDATE if @day_basis_code = 1 begin select @coupon_period = 360.0 * (datepart(year, @date_e) - datepart(year, @date_b)) + 30.0 * (datepart(month, @date_e) - datepart(month, @date_b)) + (datepart(day, @date_e) - datepart(day, @date_b)) + 1 if datepart(day, @date_b) = 31 select @coupon_period = @coupon_period - 1 if datepart(day, @date_e) = 31 select @coupon_period = @coupon_period - 1 end else select @coupon_period = datediff(day, @date_b, @date_e) + 1 if isnull(@coupon_period, -1) < 0 .EXIT_MESSAGE('Неверно введен период действия купона') .UPDATE_ITEMS .UPDATE .RELGEN .UPDATE_STATE .ACTION_HISTORY commit tran