USP_DATAFORMTEMPLATE_ADD_RESERVATIONCOPY_PRELOAD

The load procedure used by the edit dataform template "Reservation Copy Add Data Form"

Parameters

Parameter Parameter Type Mode Description
@CONTEXTRESERVATIONID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CONSTITUENTID uniqueidentifier INOUT Patron
@CONTACTRELATIONSHIPID uniqueidentifier INOUT Contact
@NAME nvarchar(100) INOUT Reservation name
@CONTEXTARRIVALDATE date INOUT
@CHECKCAPACITY bit INOUT
@CAPACITYNEEDED int INOUT Capacity needed
@NUMBEROFDAYS int INOUT
@RESOURCES xml INOUT Resources
@STAFFRESOURCES xml INOUT Staffing resources

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_RESERVATIONCOPY_PRELOAD
                    (
                        @CONTEXTRESERVATIONID uniqueidentifier,
                        @CONSTITUENTID uniqueidentifier = null output,
                        @CONTACTRELATIONSHIPID uniqueidentifier = null output,
                        @NAME nvarchar(100) = null output,
                        @CONTEXTARRIVALDATE date = null output,
                        @CHECKCAPACITY bit = null output,
                        @CAPACITYNEEDED int = null output,
                        @NUMBEROFDAYS int = null output,
                        @RESOURCES xml = null output,
                        @STAFFRESOURCES xml = null output
                    )
                    as
                        set nocount on;

                        declare @CONTACTCONSTITUENTID uniqueidentifier;
                        declare @CONTACTADDRESSID uniqueidentifier;
                        declare @ISORGANIZATION bit;
                        declare @CONSTITUENTKEYNAME nvarchar(100);
                        declare @CONTACTKEYNAME nvarchar(100);

                        select
                            @CONSTITUENTID = case when CONSTITUENT.ISINACTIVE = 0 then SALESORDER.CONSTITUENTID else null end,
                            @ISORGANIZATION = CONSTITUENT.ISORGANIZATION,
                            @CONSTITUENTKEYNAME = CONSTITUENT.KEYNAME,
                            @CONTACTCONSTITUENTID = case when CONTACT.ISINACTIVE = 0 then SALESORDER.RECIPIENTID else null end,
                            @CONTACTRELATIONSHIPID = SALESORDER.CONTACTRELATIONSHIPID,
                            @CONTACTKEYNAME = CONTACT.KEYNAME,
                            @CONTACTADDRESSID = SALESORDER.ADDRESSID,
                            @CONTEXTARRIVALDATE = RESERVATION.ARRIVALDATE,
                            @NUMBEROFDAYS = datediff(day, RESERVATION.STARTDATETIME, RESERVATION.ENDDATETIME) + 1
                        from
                            dbo.SALESORDER
                        inner join
                            dbo.RESERVATION on SALESORDER.ID = RESERVATION.ID
                        inner join
                            dbo.CONSTITUENT on SALESORDER.CONSTITUENTID = CONSTITUENT.ID
                        left outer join
                            dbo.CONSTITUENT as CONTACT on SALESORDER.RECIPIENTID = CONTACT.ID
                        where
                            RESERVATION.ID = @CONTEXTRESERVATIONID;

                        if @CONSTITUENTID is not null
                            set @NAME = @CONSTITUENTKEYNAME;

                        if @ISORGANIZATION = 1 and @CONTACTCONSTITUENTID is not null
                            set @NAME = @NAME + ' - ' + @CONTACTKEYNAME;

                        select top 1 @CHECKCAPACITY = case when MAXIMUMCAPACITY > 0 then 1 else 0 end from dbo.GROUPSALESDEFAULT;

                        set @CAPACITYNEEDED = dbo.UFN_RESERVATION_TOTALVISITORCOUNT(@CONTEXTRESERVATIONID);

                        set @RESOURCES = 
                        (
                            select
                                ID,
                                ITINERARYID,
                                ITINERARYITEMID,
                                QUANTITYNEEDED,
                                RESOURCEID,
                                ISPERTICKETITEM,
                                ISREQUIREDRESOURCE,
                                REQUIREDRESOURCEQUANTITY,
                                STARTTIME,
                                ENDTIME
                            from
                            (
                                -- All itinerary resources
                                select 
                                    ITINERARYRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    null as ITINERARYITEMID,
                                    ITINERARYRESOURCE.QUANTITYNEEDED,
                                    ITINERARYRESOURCE.RESOURCEID,
                                    RESOURCE.ISPERTICKETITEM,
                                    case when (GROUPTYPEREQUIREDRESOURCE.ID is null) then 0 else 1 end as ISREQUIREDRESOURCE,
                                    coalesce(GROUPTYPEREQUIREDRESOURCE.QUANTITYNEEDED, 0) as REQUIREDRESOURCEQUANTITY,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.STARTDATETIME) as STARTTIME,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.ENDDATETIME) as ENDTIME
                                from dbo.ITINERARYRESOURCE
                                inner join dbo.RESOURCE    on ITINERARYRESOURCE.RESOURCEID = RESOURCE.ID
                                inner join dbo.ITINERARY on ITINERARYRESOURCE.ITINERARYID = ITINERARY.ID
                                left outer join dbo.GROUPTYPEREQUIREDRESOURCE on 
                                    (ITINERARYRESOURCE.RESOURCEID = GROUPTYPEREQUIREDRESOURCE.RESOURCEID) and
                                    (ITINERARY.GROUPSALESGROUPTYPECODEID = GROUPTYPEREQUIREDRESOURCE.GROUPSALESGROUPTYPECODEID)
                                where 
                                    ITINERARY.RESERVATIONID = @CONTEXTRESERVATIONID

                                union all

                                -- All itinerary item resources
                                select 
                                    ITINERARYITEMRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    ITINERARYITEM.ID as ITINERARYITEMID,
                                    ITINERARYITEMRESOURCE.QUANTITYNEEDED,
                                    ITINERARYITEMRESOURCE.RESOURCEID,
                                    RESOURCE.ISPERTICKETITEM,
                                    0 as ISREQUIREDRESOURCE,
                                    0 as REQUIREDRESOURCEQUANTITY,
                                    ITINERARYITEM.STARTTIME,
                                    ITINERARYITEM.ENDTIME
                                from dbo.ITINERARYITEMRESOURCE
                                inner join dbo.RESOURCE on ITINERARYITEMRESOURCE.RESOURCEID = RESOURCE.ID
                                inner join dbo.ITINERARYITEM on ITINERARYITEMRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                                inner join dbo.ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID
                                where 
                                    ITINERARY.RESERVATIONID = @CONTEXTRESERVATIONID    
                            ) [RESOURCES]
                            for xml raw('ITEM'),type,elements,root('RESOURCES'),binary base64
                        );

                        set @STAFFRESOURCES = 
                        (
                            select
                                ID,
                                ITINERARYID,
                                ITINERARYITEMID,
                                QUANTITYNEEDED,
                                VOLUNTEERTYPEID,
                                JOBID,
                                JOBOCCURRENCEID,
                                FILLEDBYCODE,
                                ISREQUIREDRESOURCE,
                                REQUIREDRESOURCEQUANTITY,
                                STARTTIME,
                                ENDTIME
                            from
                            (
                                select 
                                    ITINERARYSTAFFRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    null as ITINERARYITEMID,
                                    ITINERARYSTAFFRESOURCE.QUANTITYNEEDED,
                                    ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID,
                                    ITINERARYSTAFFRESOURCE.JOBID,
                                    ITINERARYSTAFFRESOURCE.JOBOCCURRENCEID,
                                    ITINERARYSTAFFRESOURCE.FILLEDBYCODE,
                                    case when (GROUPTYPEREQUIREDSTAFFRESOURCE.ID is null) then 0 else 1 end as ISREQUIREDRESOURCE,
                                    coalesce(GROUPTYPEREQUIREDSTAFFRESOURCE.QUANTITYNEEDED, 0) as REQUIREDRESOURCEQUANTITY,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.STARTDATETIME) as STARTTIME,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.ENDDATETIME) as ENDTIME
                                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.GROUPTYPEREQUIREDSTAFFRESOURCE on 
                                    (ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID = GROUPTYPEREQUIREDSTAFFRESOURCE.VOLUNTEERTYPEID) and
                                    (ITINERARYSTAFFRESOURCE.JOBID = GROUPTYPEREQUIREDSTAFFRESOURCE.JOBID) and
                                    (ITINERARYSTAFFRESOURCE.FILLEDBYCODE = GROUPTYPEREQUIREDSTAFFRESOURCE.FILLEDBYCODE) and
                                    (ITINERARY.GROUPSALESGROUPTYPECODEID = GROUPTYPEREQUIREDSTAFFRESOURCE.GROUPSALESGROUPTYPECODEID)
                                left outer join dbo.VOLUNTEERTYPE on
                                    ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                                where 
                                    ITINERARY.RESERVATIONID = @CONTEXTRESERVATIONID

                                union all

                                select 
                                    ITINERARYITEMSTAFFRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    ITINERARYITEM.ID as ITINERARYITEMID,
                                    ITINERARYITEMSTAFFRESOURCE.QUANTITYNEEDED,
                                    ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID,
                                    ITINERARYITEMSTAFFRESOURCE.JOBID,
                                    ITINERARYITEMSTAFFRESOURCE.JOBOCCURRENCEID,
                                    ITINERARYITEMSTAFFRESOURCE.FILLEDBYCODE,
                                    0 as ISREQUIREDRESOURCE,
                                    0 as REQUIREDRESOURCEQUANTITY,
                                    ITINERARYITEM.STARTTIME,
                                    ITINERARYITEM.ENDTIME
                                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.RESERVATIONID = @CONTEXTRESERVATIONID
                            ) [STAFFRESOURCES]
                            for xml raw('ITEM'),type,elements,root('STAFFRESOURCES'),binary base64                    
                        );

                        return 0;