USP_DATAFORMTEMPLATE_VIEW_ITINERARYINFORMATIONDETAIL

The load procedure used by the view dataform template "Itinerary Information Detail View Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@TRACKNAME nvarchar(100) INOUT Track
@ATTENDEES xml INOUT Visitors
@ITEMS xml INOUT Items
@COMBINEDRESOURCES xml INOUT Resources

Definition

Copy

            CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_ITINERARYINFORMATIONDETAIL
            (
                @ID uniqueidentifier,
                @DATALOADED bit = 0 output,
                @TRACKNAME nvarchar(100) = null output,
                @ATTENDEES xml = null output,
                @ITEMS xml = null output,
                @COMBINEDRESOURCES xml = null output
            )
            as
                set nocount on;

                set @DATALOADED = 0;

                select 
                    @DATALOADED = 1,
                    @TRACKNAME = isnull(TRACK.NAME,'')
                from dbo.ITINERARY
                left join dbo.TRACK on TRACK.ID = ITINERARY.TRACKID
                where ITINERARY.ID = @ID

                if @DATALOADED = 1
                begin
                    declare @ATTENDEECOUNT int
                    set @ATTENDEECOUNT = isnull(
                        (
                            select sum(ITINERARYATTENDEE.QUANTITY) from dbo.ITINERARYATTENDEE 
                            where ITINERARYATTENDEE.ITINERARYID = @ID
                        ),0
                    )

                    set @COMBINEDRESOURCES = 
                    (
                        select
                            ID,
                            NAME,
                            QUANTITYNEEDED,
                            STARTDATETIME,
                            ENDDATETIME,
                            ISSCHEDULED
                        from
                        (
                            -- All itinerary resources
                            select 
                                RESOURCE.ID as ID,
                                RESOURCE.NAME as NAME,
                                case RESOURCE.ISPERTICKETITEM
                                    when 0 then
                                        ITINERARYRESOURCE.QUANTITYNEEDED
                                    else
                                        dbo.UFN_RESOURCE_CALCULATEPERTICKETQUANTITY_2(@ATTENDEECOUNT * ITINERARYRESOURCE.PERTICKETQUANTITY, ITINERARYRESOURCE.PERTICKETDIVISOR)
                                end as QUANTITYNEEDED,
                                ITINERARY.STARTDATETIME as STARTDATETIME,
                                ITINERARY.ENDDATETIME as ENDDATETIME,
                                1 as ISSCHEDULED
                            from dbo.ITINERARYRESOURCE
                            inner join dbo.RESOURCE    on ITINERARYRESOURCE.RESOURCEID = RESOURCE.ID
                            inner join dbo.ITINERARY on ITINERARYRESOURCE.ITINERARYID = ITINERARY.ID
                            where
                                ITINERARY.ID = @ID

                            union all

                            -- All itinerary item resources
                            select 
                                RESOURCE.ID as ID,
                                RESOURCE.NAME as NAME,
                                case RESOURCE.ISPERTICKETITEM
                                    when 0 then
                                        ITINERARYITEMRESOURCE.QUANTITYNEEDED
                                    else
                                        dbo.UFN_RESOURCE_CALCULATEPERTICKETQUANTITY_2(@ATTENDEECOUNT * ITINERARYITEMRESOURCE.PERTICKETQUANTITY, ITINERARYITEMRESOURCE.PERTICKETDIVISOR)
                                end as QUANTITYNEEDED,
                                ITINERARYITEM.STARTDATETIME as STARTDATETIME, 
                                ITINERARYITEM.ENDDATETIME as ENDDATETIME,
                                case ITINERARYITEM.ITEMTYPECODE when 3 then 0 else 1 end as ISSCHEDULED
                            from dbo.ITINERARYITEMRESOURCE
                            inner join dbo.RESOURCE on ITINERARYITEMRESOURCE.RESOURCEID = RESOURCE.ID
                            inner join dbo.ITINERARYITEM on ITINERARYITEMRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                            where 
                                ITINERARYITEM.ITINERARYID = @ID

                            union all

                            select 
                                VOLUNTEERTYPE.ID as ID,
                                VOLUNTEERTYPE.NAME as NAME,
                                ITINERARYSTAFFRESOURCE.QUANTITYNEEDED,
                                ITINERARY.STARTDATETIME as STARTDATETIME,
                                ITINERARY.ENDDATETIME as ENDDATETIME,
                                1 as ISSCHEDULED
                            from dbo.ITINERARYSTAFFRESOURCE
                            inner join dbo.ITINERARY on ITINERARYSTAFFRESOURCE.ITINERARYID = ITINERARY.ID
                            left outer join dbo.JOB on ITINERARYSTAFFRESOURCE.JOBID = JOB.ID
                            left outer join dbo.VOLUNTEERTYPE on
                                ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                            where
                                ITINERARY.ID = @ID

                            union all

                            select 
                                VOLUNTEERTYPE.ID as ID,
                                VOLUNTEERTYPE.NAME as NAME,
                                ITINERARYITEMSTAFFRESOURCE.QUANTITYNEEDED,
                                ITINERARYITEM.STARTDATETIME as STARTDATETIME, 
                                ITINERARYITEM.ENDDATETIME as ENDDATETIME,
                                case ITINERARYITEM.ITEMTYPECODE when 3 then 0 else 1 end as ISSCHEDULED
                            from dbo.ITINERARYITEMSTAFFRESOURCE
                            inner join dbo.ITINERARYITEM on ITINERARYITEMSTAFFRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                            inner join dbo.ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID
                            left outer join dbo.JOB    on ITINERARYITEMSTAFFRESOURCE.JOBID = JOB.ID
                            left outer join dbo.VOLUNTEERTYPE on
                                ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                            where 
                                ITINERARY.ID = @ID
                        ) [COMBINEDRESOURCES]
                        for xml raw('ITEM'),type,elements,root('COMBINEDRESOURCES'),binary base64                    
                    );

                    set @ATTENDEES = dbo.UFN_ITINERARY_GETATTENDEES_TOITEMLISTXML(@ID);

                    set @ITEMS = dbo.UFN_ITINERARY_GETITINERARYITEMSINFO_TOITEMLISTXML(@ID);
                end



                return 0;