USP_DATAFORMTEMPLATE_ADD_PROGRAMDAILYADMISSION

The save procedure used by the add dataform template "Daily Admission Program Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@LOCATIONS xml IN Location
@PRICELISTID uniqueidentifier IN Load price list
@PRICES xml IN Prices
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@ONSALEINFORMATION xml IN Available for sale
@PROGRAMCATEGORYCODEID uniqueidentifier IN Category

Definition

Copy

        CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PROGRAMDAILYADMISSION
        (
            @ID uniqueidentifier = null output,
            @CHANGEAGENTID uniqueidentifier = null,
            @NAME nvarchar(100) = '',
            @DESCRIPTION nvarchar(255) = '',
            @LOCATIONS xml = null,
            @PRICELISTID uniqueidentifier = null,
            @PRICES xml = null,
            @CURRENTAPPUSERID uniqueidentifier,
            @ONSALEINFORMATION xml = null,
            @PROGRAMCATEGORYCODEID uniqueidentifier = null
        )
        as

        set nocount on;

        if @ID is null
            set @ID = newid()

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

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

        -- Default 0 for SEQUENCE since it is a new field and may not be passed in
        set @LOCATIONS = (
            select
                T.c.value('(CAPACITY)[1]','int') as 'CAPACITY',
                T.c.value('(EVENTLOCATIONID)[1]','uniqueidentifier') as 'EVENTLOCATIONID',
                T.c.value('(ID)[1]','uniqueidentifier') as 'ID',
                isnull(T.c.value('(SEQUENCE)[1]','int'), 0) as 'SEQUENCE'
            from
                @LOCATIONS.nodes('/LOCATIONS/ITEM') T(c)
            for xml raw('ITEM'),type,elements,root('LOCATIONS'),binary base64
        );

        if dbo.UFN_PRICELIST_ISEQUALTOPRICES(@PRICELISTID, @PRICES, 0) = 0 begin
            set @PRICELISTID = null;
        end

        begin try
            -- handle inserting the data
            insert into dbo.PROGRAM
            (
                ID, 
                NAME,
                DESCRIPTION,
                ISDAILYADMISSION,
                PRICELISTID,
                PROGRAMCATEGORYCODEID,
                ADDEDBYID,
                CHANGEDBYID,
                DATEADDED,
                DATECHANGED
            )
            values
            (
                @ID
                @NAME,
                @DESCRIPTION,
                1,
                @PRICELISTID,
                @PROGRAMCATEGORYCODEID,
                @CHANGEAGENTID
                @CHANGEAGENTID
                @CURRENTDATE
                @CURRENTDATE
            );

            exec dbo.USP_PROGRAM_GETSEQUENCEDLOCATIONS_ADDFROMXML @ID, @LOCATIONS, @CHANGEAGENTID;

            --populate the sales type with all available sales types
            if @ONSALEINFORMATION is not null
            begin
                insert into dbo.PROGRAMSALESMETHOD
                (
                    ID,
                    PROGRAMID,
                    SALESMETHODID,
                    ONSALETIME,
                    ADDEDBYID,
                    CHANGEDBYID,
                    DATEADDED,
                    DATECHANGED
                )
                select
                    newid(),
                    @ID,
                    T.onsaleinformation.value('(SALESMETHODID)[1]', 'uniqueidentifier') SALESMETHODID,
                    '0000',
                    @CHANGEAGENTID,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    @CURRENTDATE
                from @ONSALEINFORMATION.nodes('/ONSALEINFORMATION/ITEM') T(onsaleinformation)
                where T.onsaleinformation.value('(ISAVAILABLE)[1]', 'bit') = 1
            end

            exec dbo.USP_PROGRAM_GETPRICES_ADDFROMXML @ID, @PRICES, @CHANGEAGENTID, @CURRENTDATE;
        end try

        begin catch
            exec dbo.USP_RAISE_ERROR
            return 1
        end catch

        return 0