create procedure dbo.%PROC% @sid varchar(30) = null, @cur2deal_id_s varchar(30), @item_name varchar(255), @item_remark varchar(255), @in_date_d varchar(30), @last_date_d varchar(30), @stock_id_s varchar(30) = null, @portfolio_sub_id_s varchar(30) = null, @sale_place_id_s varchar(30) = null as begin declare @id numeric, @action_id numeric, @state_id numeric, @new_state_id numeric, @user_id numeric declare @stock_id numeric, @portfolio_sub_id numeric, @sale_place_id numeric, @character_id numeric, @contract_id numeric, @query_type int select @stock_id=convert(numeric,@stock_id_s) select @portfolio_sub_id=convert(numeric,@portfolio_sub_id_s) select @sale_place_id=convert(numeric,@sale_place_id_s) declare @stock_id_nn numeric(18,0) declare @stock_id_bb numeric(18,0) declare @stock_id_ee numeric(18,0) if @stock_id is NULL begin select @stock_id_bb = -999999999999999998 select @stock_id_ee = 999999999999999999 end else select @stock_id_nn =@stock_id declare @portfolio_sub_id_nn numeric(18,0) declare @portfolio_sub_id_bb numeric(18,0) declare @portfolio_sub_id_ee numeric(18,0) if @portfolio_sub_id is NULL begin select @portfolio_sub_id_bb = -999999999999999998 select @portfolio_sub_id_ee = 999999999999999999 end else select @portfolio_sub_id_nn =@portfolio_sub_id declare @sale_place_id_nn numeric(18,0) declare @sale_place_id_bb numeric(18,0) declare @sale_place_id_ee numeric(18,0) if @sale_place_id is NULL begin select @sale_place_id_bb = -999999999999999998 select @sale_place_id_ee = 999999999999999999 end else select @sale_place_id_nn =@sale_place_id select @action_id=%ACTION_ID% select @user_id=(select id from t_users where login_name=.SUSER_NAME) select @id=convert(numeric,@sid) select @contract_id=contract_id, @query_type=query_type from td_queries where id = @id if exists(select 1 from tb_contracts where id=@contract_id and .ITEMS_EXISTS_BY_TYPE(tb_contracts.id,'CLIENT_CONTRACTS')) select @character_id=2 else select @character_id=1, @contract_id=null declare @cur_operday_id numeric declare @cur_operday_date datetime declare @cur2deal_id numeric declare @in_date datetime declare @last_date datetime declare @count_p numeric declare @count numeric declare @bill_in_id_s varchar(30) declare @type_exec int select @in_date=convert(datetime,@in_date_d,3) select @last_date=convert(datetime,@last_date_d,3) select @cur2deal_id=convert(numeric,@cur2deal_id_s) select @cur_operday_date = .OPERDAY select @type_exec=(select type_exec from td_queries where id=@id) --Если отмена или удаление if @type_exec=5 or @type_exec=6 begin -- Богаковский 20/07/2005 добавил отмену группы сделок if @type_exec=5 begin if exists(select 1 from tb_baysale_docitems where id=@cur2deal_id and ticket_type_id=1) begin .EXEC_ACTION(@cur2deal_id_s, 'DEALINGS_VIA_BROKER', 'ACTION_CANCEL_TS_BAY') end if exists(select 1 from tb_baysale_docitems where id=@cur2deal_id and ticket_type_id=2) begin .EXEC_ACTION(@cur2deal_id_s, 'DEALINGS_VIA_BROKER_SALE', 'ACTION_CANCEL_TS_SALE') end .ACTION_HISTORY .UPDATE_STATE end -- Богаковский 20/07/2005 добавил удаление группы сделок if @type_exec=6 begin if exists(select 1 from tb_baysale_docitems where id=@cur2deal_id and ticket_type_id=1) begin .EXEC_ACTION(@cur2deal_id_s, 'DEALINGS_VIA_BROKER', 'ACTION_MOVE1') end if exists(select 1 from tb_baysale_docitems where id=@cur2deal_id and ticket_type_id=2) begin .EXEC_ACTION(@cur2deal_id_s, 'DEALINGS_VIA_BROKER_SALE', 'ACTION_MOVE1') end .ACTION_HISTORY .UPDATE_STATE end end else begin -- Если не отмена и не удаление if @cur_operday_date<>@in_date begin if @type_exec=2 begin exec ap_group_bill_in @sid,@cur_operday_date,@cur_operday_date,@bill_in_id_s out if @query_type=1 begin if exists(select 1 from td_depo_docs where id=convert(numeric,@bill_in_id_s) and .ITEMS_EXISTS_BY_TYPE(td_depo_docs.id,'BILL_IN')) begin .EXEC_ACTION(@bill_in_id_s,'QUERY_GROUP2CONFIRM2DEALINGS','PODTB_BILL_IN') end else if exists(select 1 from td_depo_docs where id=convert(numeric,@bill_in_id_s) and .ITEMS_EXISTS_BY_TYPE(td_depo_docs.id,'BILL_OUT')) begin .EXEC_ACTION(@bill_in_id_s,'QUERY_GROUP2CONFIRM2DEALINGS','PODTB_BILL_OUT') end end end SET ROWCOUNT 1 SELECT @cur_operday_id = ( SELECT MAX(id) FROM t_operday WHERE date_oper_day = CONVERT(DATETIME, CONVERT(VARCHAR(10), @in_date, 103), 103) ) SET ROWCOUNT 0 -- begin tran if @type_exec=2 begin if @cur_operday_id is null begin select @cur_operday_date = convert(datetime, convert(varchar(10), @in_date, 103), 103) .TYPE_INIT('operday', 9) .TYPE_ASSIGN(date_oper_day, @cur_operday_date, 9) .TYPE_INSERT('operday','OPEN', 9) select @cur_operday_id = .TYPE_FIELD(id, 9) end update t_users set operday_id = @cur_operday_id where login_name = .SUSER_NAME -- commit tran end end if exists(select 1 from tb_baysale_docitems where id=@cur2deal_id and ticket_type_id=1) begin --.TRANSACTION_SAVE if @type_exec=3 begin .EXEC_ACTION(@cur2deal_id_s,'DEALINGS_VIA_BROKER','GET_COMIS_BAY_TS') end else begin .EXEC_ACTION(@cur2deal_id_s,'DEALINGS_VIA_BROKER','ACTION_MOVE_BAY_TS') end --.TRANSACTION_RESTORE end else if exists(select 1 from tb_baysale_docitems where id=@cur2deal_id and ticket_type_id=2) begin --.TRANSACTION_SAVE if @type_exec=3 begin .EXEC_ACTION(@cur2deal_id_s,'DEALINGS_VIA_BROKER_SALE','GET_COMIS_SALE_TS') end else begin .EXEC_ACTION(@cur2deal_id_s,'DEALINGS_VIA_BROKER_SALE','ACTION_MOVE_SALE_TS') end --.TRANSACTION_RESTORE end if @type_exec<>3 and @type_exec<>5 and @type_exec<>6 begin select @count=(select count(tb_baysale_docitems.id) from tb_baysale_docitems,td_depo_docs where in_date=@in_date and td_depo_docs.id=tb_baysale_docitems.id and (.ITEMS_EXISTS_BY_TYPE(tb_baysale_docitems.id,'DEALINGS_VIA_BROKER') or .ITEMS_EXISTS_BY_TYPE(tb_baysale_docitems.id,'DEALINGS_VIA_BROKER_SALE')) and isnull(tb_baysale_docitems.client_contract_id,0)=isnull(@contract_id,0) and (tb_baysale_docitems.stock_id between @stock_id_bb and @stock_id_ee or tb_baysale_docitems.stock_id=@stock_id_nn) and (tb_baysale_docitems.portfolio_sub_id between @portfolio_sub_id_bb and @portfolio_sub_id_ee or tb_baysale_docitems.portfolio_sub_id=@portfolio_sub_id_nn) and (tb_baysale_docitems.sale_place_id between @sale_place_id_bb and @sale_place_id_ee or tb_baysale_docitems.sale_place_id=@sale_place_id_nn) ) select @count_p=(select count(tb_baysale_docitems.id) from tb_baysale_docitems,td_depo_docs where in_date=@in_date and td_depo_docs.id=tb_baysale_docitems.id and (.ITEMS_EXISTS_BY_TYPE_STATE(tb_baysale_docitems.id,'DEALINGS_VIA_BROKER','PODT') or .ITEMS_EXISTS_BY_TYPE_STATE(tb_baysale_docitems.id,'DEALINGS_VIA_BROKER_SALE','PODT')) and isnull(tb_baysale_docitems.client_contract_id,0)=isnull(@contract_id,0) and (tb_baysale_docitems.stock_id between @stock_id_bb and @stock_id_ee or tb_baysale_docitems.stock_id=@stock_id_nn) and (tb_baysale_docitems.portfolio_sub_id between @portfolio_sub_id_bb and @portfolio_sub_id_ee or tb_baysale_docitems.portfolio_sub_id=@portfolio_sub_id_nn) and (tb_baysale_docitems.sale_place_id between @sale_place_id_bb and @sale_place_id_ee or tb_baysale_docitems.sale_place_id=@sale_place_id_nn) ) --.EXIT_MESSAGE_PARM('!!!',@last_date_d) if @last_date_d=@in_date_d begin if @count_p=@count begin begin tran .ACTION_HISTORY .UPDATE_STATE commit tran if @type_exec=2 begin exec ap_group_bill_in @sid,@in_date,@in_date,@bill_in_id_s out if @query_type=1 begin if exists(select 1 from td_depo_docs where id=convert(numeric,@bill_in_id_s) and .ITEMS_EXISTS_BY_TYPE(td_depo_docs.id,'BILL_IN')) begin .EXEC_ACTION(@bill_in_id_s,'QUERY_GROUP2CONFIRM2DEALINGS','PODTB_BILL_IN') end else if exists(select 1 from td_depo_docs where id=convert(numeric,@bill_in_id_s) and .ITEMS_EXISTS_BY_TYPE(td_depo_docs.id,'BILL_OUT')) begin .EXEC_ACTION(@bill_in_id_s,'QUERY_GROUP2CONFIRM2DEALINGS','PODTB_BILL_OUT') end end end end end end if @type_exec=3 begin .ACTION_HISTORY .UPDATE_STATE end end end