USP_PROGRAMEVENT_INSERT
Inserts program events.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTS | xml | IN | |
@SCHEDULEID | uniqueidentifier | IN | |
@PROGRAMID | uniqueidentifier | IN | |
@NAME | nvarchar(100) | IN | |
@DESCRIPTION | nvarchar(500) | IN | |
@CAPACITY | int | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_PROGRAMEVENT_INSERT
(
@EVENTS xml = null,
@SCHEDULEID uniqueidentifier = null,
@PROGRAMID uniqueidentifier = null,
@NAME nvarchar(100) = null,
@DESCRIPTION nvarchar(500) = null,
@CAPACITY integer = null,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTDATE datetime = null
)
as
set nocount on;
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CURRENTDATE is null
set @CURRENTDATE = getdate()
declare @CURRENTSYSTEMDEFAULTDATE datetime
set @CURRENTSYSTEMDEFAULTDATE = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate())
begin try
declare @idoc int
exec sp_xml_preparedocument @idoc OUTPUT, @EVENTS
--handle the events first
insert into dbo.EVENT
(
ID,
SCHEDULEID,
PROGRAMID,
NAME,
DESCRIPTION,
CAPACITY,
STARTDATE,
STARTTIME,
ENDDATE,
ENDTIME,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
EVENTID,
@SCHEDULEID,
@PROGRAMID,
@NAME,
@DESCRIPTION,
@CAPACITY,
STARTDATE,
STARTTIME,
ENDDATE,
ENDTIME,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from openxml (@idoc,'/EVENTS/ITEM', 2)
with
(EVENTID uniqueidentifier,
STARTDATE date,
STARTTIME udt_HOURMINUTE,
ENDDATE date,
ENDTIME udt_HOURMINUTE,
ISCONFLICT bit)
where ISCONFLICT = 0
if exists(select 1 from dbo.PROGRAMSALESMETHOD where PROGRAMID = @PROGRAMID)
begin
insert into dbo.EVENTSALESMETHOD
(
ID,
EVENTID,
SALESMETHODID,
ONSALEDATE,
ONSALETIME,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
(
select
newid(),
p.eventid,
SALESMETHODID,
case ONSALETYPECODE
when 0 then @CURRENTSYSTEMDEFAULTDATE
when 1 then ONSALEDATE
when 2 then dateadd(day, -1 * ONSALETIMEBEFORE, P.STARTDATE)
when 3 then dateadd(week, -1 * ONSALETIMEBEFORE, P.STARTDATE)
when 4 then dateadd(month, -1 * ONSALETIMEBEFORE, p.startdate)
end,
case ONSALETYPECODE
when 0 then dbo.UFN_HOURMINUTE_GETFROMDATE(@CURRENTSYSTEMDEFAULTDATE)
else ONSALETIME
end,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.PROGRAMSALESMETHOD
inner join openxml (@idoc,'/EVENTS/ITEM', 2)
with
(EVENTID uniqueidentifier,
STARTDATE date,
STARTTIME udt_HOURMINUTE,
ENDDATE date,
ENDTIME udt_HOURMINUTE,
PROGRAMID uniqueidentifier,
ISCONFLICT bit) P on P.PROGRAMID = PROGRAMSALESMETHOD.PROGRAMID
where P.ISCONFLICT = 0
)
END
exec sp_xml_removedocument @idoc
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
end