TR_ITINERARYRESOURCE_INSERT_RESOURCE_UPDATE

Definition

Copy


                    CREATE trigger [dbo].[TR_ITINERARYRESOURCE_INSERT_RESOURCE_UPDATE] on [dbo].[ITINERARYRESOURCE] after insert not for replication
                        as begin
                            declare @CURRENTDATE datetime;                                        
                            set @CURRENTDATE = GetDate();

                            declare @CHANGEAGENTID uniqueidentifier;
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                            -- Update per-event consumable resources

                            update dbo.RESOURCE
                                set [QUANTITY] = [RESOURCE].[QUANTITY] - inserted.QUANTITYNEEDED,
                                    CHANGEDBYID = COALESCE(inserted.CHANGEDBYID, @CHANGEAGENTID),
                                    DATECHANGED = @CURRENTDATE
                            from dbo.RESOURCE
                                inner join inserted on RESOURCE.ID = inserted.RESOURCEID
                            where [RESOURCE].ISPERTICKETITEM = 0
                                and [RESOURCE].TYPECODE = 1

                            -- 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(dbo.UFN_RESOURCE_CALCULATEPERTICKETQUANTITY_2(inserted.PERTICKETQUANTITY * ITINERARYATTENDEE.QUANTITY, inserted.PERTICKETDIVISOR)) as qty,
                                    inserted.CHANGEDBYID
                                from dbo.RESOURCE
                                    inner join inserted on RESOURCE.ID = inserted.RESOURCEID
                                    inner join dbo.ITINERARYATTENDEE on inserted.ITINERARYID = ITINERARYATTENDEE.ITINERARYID
                                where [RESOURCE].ISPERTICKETITEM <> 0 and [RESOURCE].TYPECODE = 1    
                                group by [RESOURCE].ID, inserted.CHANGEDBYID) as VT
                            where [RESOURCE].ID = VT.ID
                        end