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