USP_DATAFORMTEMPLATE_EDITLOAD_SALESORDERITEMTICKETCOMBINATION

The load procedure used by the edit dataform template "Sales Order Item Ticket Combination Edit Data 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.
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@ORDERID uniqueidentifier INOUT Order ID
@TICKETCOMBINATIONID uniqueidentifier INOUT Ticket combination ID
@EVENTS xml INOUT Events
@PRICETYPES xml INOUT Prices
@CURRENTDATE datetime INOUT
@SAMEDAYEVENT bit INOUT Same day event
@COMBINATIONNAME nvarchar(100) INOUT Name
@COMBINATIONID uniqueidentifier INOUT Combination ID
@PROGRAMGROUPS xml INOUT Program group
@ALLOWPASTEVENTS bit INOUT Allow sales to past events
@SALESMETHODTYPECODE tinyint INOUT
@DATA xml INOUT
@OPTIONS xml INOUT
@CALLBACKURL nvarchar(255) INOUT
@SYSTEMTYPENAME nvarchar(255) INOUT
@ASSEMBLYNAME nvarchar(255) INOUT
@ATTRIBUTES xml INOUT
@CATEGORYNAME nvarchar(255) INOUT
@EXPIREDCALLBACKURL nvarchar(255) INOUT

Definition

Copy


            CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_SALESORDERITEMTICKETCOMBINATION(
                @ID uniqueidentifier,
                @DATALOADED bit = 0 output,
                @TSLONG bigint = 0 output,
                @ORDERID uniqueidentifier = null output,
                @TICKETCOMBINATIONID uniqueidentifier = null output,
                @EVENTS xml = null output,
                @PRICETYPES xml = null output,
                @CURRENTDATE datetime = null output,
                @SAMEDAYEVENT bit = null output,
                @COMBINATIONNAME nvarchar(100) = null output,
                @COMBINATIONID uniqueidentifier = null output,
                @PROGRAMGROUPS xml = null output,
                @ALLOWPASTEVENTS bit = null output,
                @SALESMETHODTYPECODE tinyint = null output,
                @DATA xml = null output,
                @OPTIONS xml = null output,
                @CALLBACKURL nvarchar(255) = null output,
                @SYSTEMTYPENAME nvarchar(255) = null output,
                @ASSEMBLYNAME nvarchar(255) = null output,
                @ATTRIBUTES xml = null output,
                @CATEGORYNAME nvarchar(255) = null output,
                @EXPIREDCALLBACKURL nvarchar(255) = null output
            )
            as
                set nocount on;

                set @DATALOADED = 0;
                set @TSLONG = 0;                

                declare @PROGRAMID uniqueidentifier;

                select top 1
                    @DATALOADED = 1,
                    @ORDERID = SALESORDERID,
                    @TICKETCOMBINATIONID = TICKETCOMBINATIONID,
                    @COMBINATIONID = COMBINATIONID,
                    @SALESMETHODTYPECODE = SALESORDER.SALESMETHODTYPECODE,
                    @DATA = SALESORDERITEM.DATA,
                    @OPTIONS = SALESORDERITEM.OPTIONS,
                    @CALLBACKURL = SALESORDERITEM.CALLBACKURL,
                    @SYSTEMTYPENAME = SALESORDERITEM.SYSTEMTYPENAME,
                    @ASSEMBLYNAME = SALESORDERITEM.ASSEMBLYNAME,
                    @ATTRIBUTES = SALESORDERITEM.ATTRIBUTES,
                    @CATEGORYNAME = SALESORDERITEM.CATEGORYNAME,
                    @EXPIREDCALLBACKURL = SALESORDERITEM.EXPIREDCALLBACKURL
                from dbo.SALESORDERITEM
                inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
                inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
                inner join dbo.SALESORDER on SALESORDERITEM.SALESORDERID = SALESORDER.ID
                where SALESORDERITEM.ID = @ID;

                select 
                    @COMBINATIONNAME = COMBINATION.NAME, 
                    @SAMEDAYEVENT = EVENTSSAMEDAY
                from dbo.COMBINATION where COMBINATION.ID = @COMBINATIONID

                declare @SALESMETHODID uniqueidentifier
                select @SALESMETHODID = ID
                from dbo.SALESMETHOD
                where TYPECODE = @SALESMETHODTYPECODE

                select @EVENTS = (
                    select 
                        distinct SALESORDERITEMTICKETCOMBINATION.PROGRAMGROUPID,
                        isnull(EVENT.ID , PROGRAM.ID) as ID,
                        isnull(EVENT.NAME, PROGRAM.NAME) as EVENTNAME,
                        EVENT.STARTDATE as EVENTDATE,
                        EVENT.STARTTIME as STARTTIME,
                        EVENT.ENDTIME as ENDTIME,
                        case 
                            when EVENT.ID is null then 1
                            else 0
                        end as ISDAILYADMISSION,
                        case when [EVENT].[ID] is not null then dbo.UFN_EVENT_GETAVAILABILITY([EVENT].[ID]) else 0 end as [AVAILABILITY]
                    from dbo.SALESORDERITEMTICKETCOMBINATION 
                    inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKETCOMBINATION.ID = SALESORDERITEMTICKET.ID 
                    inner join dbo.SALESORDERITEM on SALESORDERITEMTICKET.ID = SALESORDERITEM.ID
                    left join dbo.PROGRAM on PROGRAM.ID = SALESORDERITEMTICKET.PROGRAMID 
                    left join dbo.EVENT on EVENT.ID = SALESORDERITEMTICKET.EVENTID
                    where SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = @TICKETCOMBINATIONID
                    for xml raw ('ITEM'), type, elements, root('EVENTS'), BINARY BASE64
                )

                select @PRICETYPES = (
                    select distinct 
                        COMBINATIONPRICETYPE.ID,
                        dbo.UFN_PRICETYPECODE_GETDESCRIPTION(COMBINATIONPRICETYPE.PRICETYPECODEID) as PRICETYPE,
                        COMBINATIONPRICETYPE.PRICETYPECODEID,
                        COMBINATIONPRICETYPE.SEQUENCE,
                        dbo.UFN_COMBINATION_GETPRICE(@COMBINATIONID, COMBINATIONPRICETYPE.ID) as FACEPRICE,
                        isnull(SALESORDERITEM.QUANTITY, 0) as QUANTITY
                    from dbo.COMBINATIONPRICETYPE
                    inner join dbo.[COMBINATION] on COMBINATIONPRICETYPE.[COMBINATIONID] = [COMBINATION].[ID]
                    inner join dbo.PRICETYPECODE on PRICETYPECODE.ID = COMBINATIONPRICETYPE.PRICETYPECODEID
                    left join (dbo.SALESORDERITEMTICKETCOMBINATION 
                                inner join dbo.SALESORDERITEMTICKET on SALESORDERITEMTICKETCOMBINATION.ID = SALESORDERITEMTICKET.ID 
                                inner join dbo.SALESORDERITEM on SALESORDERITEMTICKET.ID = SALESORDERITEM.ID) 
                            on [COMBINATIONPRICETYPE].PRICETYPECODEID  = [SALESORDERITEMTICKET].[PRICETYPECODEID]
                                            and [COMBINATION].[ID] = [COMBINATIONPRICETYPE].[COMBINATIONID] 
                                            and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = @TICKETCOMBINATIONID
                    where COMBINATIONPRICETYPE.COMBINATIONID = @COMBINATIONID and
              (SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID is null or SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = @TICKETCOMBINATIONID) and 
              PRICETYPECODE.ACTIVE = 1 and
                            not exists (select 1 
                                        from dbo.SALESMETHODEXCLUDEDPRICETYPE 
                                        where SALESMETHODEXCLUDEDPRICETYPE.SALESMETHODID = @SALESMETHODID and
                                        SALESMETHODEXCLUDEDPRICETYPE.PRICETYPECODEID = COMBINATIONPRICETYPE.PRICETYPECODEID)
                    order by COMBINATIONPRICETYPE.SEQUENCE asc
                    for xml raw ('ITEM'), type, elements, root('PRICETYPES'), BINARY BASE64
                )         

                set @PROGRAMGROUPS = (
                    select ID, NAME, IDSETREGISTERID as SELECTIONID
                    from dbo.PROGRAMGROUP where PROGRAMGROUP.COMBINATIONID = @COMBINATIONID
                    for xml raw('ITEM'),type,elements,root('PROGRAMGROUPS'),BINARY BASE64
                )

                set @CURRENTDATE = sysdatetimeoffset();

                --If events in the past are in the cart, we'll need to show the past events in the event selection form
                if exists (
                    select 1
                    from dbo.[EVENTSALESMETHOD]
                    inner join dbo.[EVENT] as [EVENT] on [EVENTSALESMETHOD].[EVENTID] = [EVENT].[ID]
                    inner join @EVENTS.nodes('/EVENTS/ITEM') T(items) on [EVENT].[ID] = T.items.value('(ID)[1]','uniqueidentifier')
                    inner join dbo.[PROGRAMSALESMETHOD] on EVENT.[PROGRAMID] = [PROGRAMSALESMETHOD].[PROGRAMID]
                    where
                          @CURRENTDATE > case [PROGRAMSALESMETHOD].[ONSALEENDTYPECODE] 
                                when 0 then convert(datetime, [EVENT].[STARTDATETIMEWITHOFFSET])
                                when 1 then convert(datetime, dateadd(mi, -1 * [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET]))
                                when 2 then convert(datetime, dateadd(hh, -1 * [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET]))
                                when 3 then convert(datetime, dateadd(mi, [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET]))
                            end
                )
                    set @ALLOWPASTEVENTS = 1
                else
                    set @ALLOWPASTEVENTS = 0

                return 0;