USP_DATAFORMTEMPLATE_ADD_DAILYSALESORDER_TICKET

The save procedure used by the add dataform template "Daily Sales Order Item Ticket Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@EVENTID uniqueidentifier IN Start time
@PRICETYPECODEID uniqueidentifier IN Price type
@QUANTITY int IN Quantity
@FACEPRICE money IN Ticket price
@SALESORDERID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CONSTITUENTID uniqueidentifier IN Host
@REGISTRANTS xml IN Registrants
@ISPREREGISTEREDEVENT bit IN
@MARKREGISTRANTSATTENDED bit IN Mark registrants as attended
@DAILYSALESPROGRAMBUTTONID uniqueidentifier IN

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_DAILYSALESORDER_TICKET
                    (
                        @ID uniqueidentifier output,
                        @EVENTID uniqueidentifier = null,
                        @PRICETYPECODEID uniqueidentifier = null,
                        @QUANTITY integer = 1,
                        @FACEPRICE money = 0,
                        @SALESORDERID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        --Preregistered events

                        @CURRENTAPPUSERID uniqueidentifier,
                        @CONSTITUENTID uniqueidentifier = null,
                        @REGISTRANTS xml = null,
                        @ISPREREGISTEREDEVENT bit = 0,
                        @MARKREGISTRANTSATTENDED bit = 0,
                        @DAILYSALESPROGRAMBUTTONID uniqueidentifier = null
                    )
                    as
                        set nocount on;

                        if @CHANGEAGENTID is null  
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        declare @CURRENTDATE datetime;
                        set @CURRENTDATE = getdate();

                        -- A shortcut to save data chunk transmission
                        if @DAILYSALESPROGRAMBUTTONID is not null
                        begin
                            select
                                @PRICETYPECODEID = DAILYSALEITEMPROGRAM.PRICETYPECODEID,
                                @FACEPRICE = isnull(PROGRAMEVENTPRICE.FACEPRICE, PROGRAMPRICE.FACEPRICE)
                                --@FACEPRICE = FACEPRICE
                            from dbo.DAILYSALEITEMPROGRAM
                            inner join dbo.PROGRAMPRICE
                                on DAILYSALEITEMPROGRAM.PRICETYPECODEID = PROGRAMPRICE.PRICETYPECODEID
                                and DAILYSALEITEMPROGRAM.PROGRAMID = PROGRAMPRICE.PROGRAMID
                            left outer join dbo.PROGRAMEVENTPRICE
                                on PROGRAMEVENTPRICE.EVENTID = @EVENTID
                                and PROGRAMEVENTPRICE.PRICETYPECODEID = DAILYSALEITEMPROGRAM.PRICETYPECODEID
                            where DAILYSALEITEMPROGRAM.ID = @DAILYSALESPROGRAMBUTTONID
                        end

                        if @ISPREREGISTEREDEVENT = 0 
                        begin
                            declare @PRICETYPE nvarchar(100)
                            select @PRICETYPE = dbo.UFN_PRICETYPECODE_GETDESCRIPTION(@PRICETYPECODEID)

                            set @ID = dbo.UFN_SALESORDERITEM_GETEXISTINGIDFOREVENT(@SALESORDERID, @EVENTID, @PRICETYPECODEID);

                            if @ID is null begin
                                set @ID = newid();
                            end

                            declare @PRICETYPES xml = null;
                            set @PRICETYPES = (
                                select
                                    @ID [SALESORDERITEMID],
                                    @QUANTITY [QUANTITY],
                                    @PRICETYPECODEID [PRICETYPECODEID],
                                    @PRICETYPE [PRICETYPE],
                                    @FACEPRICE [FACEPRICE]
                                for xml raw ('ITEM'), type, elements, root('PRICETYPES'), BINARY BASE64
                            )
                        end

                        begin try
                            exec dbo.USP_SALESORDER_ISCOMPLETE_RAISERROR @SALESORDERID, @EXCLUDEGROUPSALES = 1;

                            if @ISPREREGISTEREDEVENT = 0 
                            begin
                                exec dbo.USP_SALESORDERITEMTICKETS_ADD
                                    @SALESORDERID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @EVENTID,
                                    @PRICETYPES
                            end
                            else
                            begin
                                if exists (
                                    select 1
                                    from dbo.[CONSTITUENT]
                                    where 
                                        [ISGROUP] = 1 and
                                        [ID] = @CONSTITUENTID
                                )
                                begin
                                    raiserror('BBERR_HOST_INVALIDGROUPCONSTITUENT', 13, 1);
                                end

                                exec dbo.USP_SALESORDER_PREREGISTEREDPROGRAMEVENTTICKET_ADD 
                                    @SALESORDERID,
                                    @CHANGEAGENTID,
                                    @CURRENTAPPUSERID,
                                    @EVENTID,
                                    @CONSTITUENTID,
                                    @REGISTRANTS,
                                    @CURRENTDATE,
                                    @MARKREGISTRANTSATTENDED;

                                --For daily sales, we want to return the ID of the top sales order item created for these tickets
                                select top 1 @ID = SALESORDERITEM.ID
                                from dbo.SALESORDERITEM
                                inner join dbo.SALESORDERITEMTICKET
                                    on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
                                where
                                    SALESORDERITEMTICKET.EVENTID = @EVENTID and
                                    SALESORDERITEM.SALESORDERID = @SALESORDERID
                            end
                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                    return 0;