TR_ITINERARYATTENDEE_UPDATE_RESOURCE_UPDATE
Definition
Copy
CREATE trigger [dbo].[TR_ITINERARYATTENDEE_UPDATE_RESOURCE_UPDATE] on [dbo].[ITINERARYATTENDEE] after update not for replication
as begin
declare @CURRENTDATE datetime;
set @CURRENTDATE = GetDate();
declare @CHANGEAGENTID uniqueidentifier;
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
-- Update per-ticket consumable itinerary resources
update dbo.RESOURCE
set [QUANTITY] = [RESOURCE].[QUANTITY] - qty,
CHANGEDBYID = COALESCE(VT.CHANGEDBYID, @CHANGEAGENTID),
DATECHANGED = @CURRENTDATE
from (
select
[RESOURCE].ID,
sum(ITINERARYRESOURCE.PERTICKETQUANTITY * (inserted.QUANTITY - deleted.QUANTITY)) as qty,
inserted.CHANGEDBYID
from dbo.RESOURCE
inner join dbo.ITINERARYRESOURCE on RESOURCE.ID = ITINERARYRESOURCE.RESOURCEID
inner join inserted on ITINERARYRESOURCE.ITINERARYID = inserted.ITINERARYID
inner join deleted on inserted.ID = deleted.ID
where [RESOURCE].ISPERTICKETITEM <> 0 and [RESOURCE].TYPECODE = 1
group by [RESOURCE].ID, inserted.CHANGEDBYID) as VT
where [RESOURCE].ID = VT.ID
-- Update per-ticket consumable itinerary item resources
update dbo.RESOURCE
set [QUANTITY] = [RESOURCE].[QUANTITY] - qty,
CHANGEDBYID = COALESCE(VT.CHANGEDBYID, @CHANGEAGENTID),
DATECHANGED = @CURRENTDATE
from (
select
[RESOURCE].ID,
sum(ITINERARYITEMRESOURCE.PERTICKETQUANTITY * (inserted.QUANTITY - deleted.QUANTITY)) as qty,
inserted.CHANGEDBYID
from dbo.RESOURCE
inner join dbo.ITINERARYITEMRESOURCE on RESOURCE.ID = ITINERARYITEMRESOURCE.RESOURCEID
inner join dbo.ITINERARYITEM on ITINERARYITEMRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
inner join inserted on ITINERARYITEM.ITINERARYID = inserted.ITINERARYID
inner join deleted on inserted.ID = deleted.ID
where [RESOURCE].ISPERTICKETITEM <> 0 and [RESOURCE].TYPECODE = 1
group by [RESOURCE].ID, inserted.CHANGEDBYID) as VT
where [RESOURCE].ID = VT.ID
-- Update per-ticket consumable scheduled event itinerary item resources
update dbo.RESOURCE
set [QUANTITY] = [RESOURCE].[QUANTITY] - qty,
CHANGEDBYID = COALESCE(VT.CHANGEDBYID, @CHANGEAGENTID),
DATECHANGED = @CURRENTDATE
from (
select
[RESOURCE].ID,
sum(EVENTRESOURCE.PERTICKETQUANTITY * (inserted.QUANTITY - deleted.QUANTITY)) as qty,
inserted.CHANGEDBYID
from dbo.RESOURCE
inner join dbo.EVENTRESOURCE on RESOURCE.ID = EVENTRESOURCE.RESOURCEID
inner join dbo.ITINERARYITEM on EVENTRESOURCE.EVENTID = ITINERARYITEM.EVENTID
inner join inserted on ITINERARYITEM.ITINERARYID = inserted.ITINERARYID
inner join deleted on inserted.ID = deleted.ID
where [RESOURCE].ISPERTICKETITEM <> 0 and [RESOURCE].TYPECODE = 1
group by [RESOURCE].ID, inserted.CHANGEDBYID) as VT
where [RESOURCE].ID = VT.ID
end