USP_DATAFORMTEMPLATE_VIEW_SALESORDERITEM

The load procedure used by the view dataform template "Sales Order Item 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.
@DESCRIPTION nvarchar(100) INOUT Description
@QUANTITY int INOUT Quantity
@PRICE money INOUT Price
@TYPECODE tinyint INOUT Type code
@TOTAL money INOUT Total
@FEES money INOUT Fees
@NAME nvarchar(100) INOUT Name
@PRICETYPE nvarchar(100) INOUT Price type
@STARTDATE datetime INOUT Date
@STARTTIME nvarchar(4) INOUT Time
@LOCATION nvarchar(100) INOUT Location
@MEMBERSHIPEXPIRATIONDATE datetime INOUT Expires on
@MEMBERSHIPLEVELTYPECODE nvarchar(100) INOUT Type
@MEMBERSHIPNUMBEROFCHILDREN smallint INOUT Children
@MEMBERSHIPGIVENBY nvarchar(154) INOUT Given by
@MEMBERSHIPMEMBERS xml INOUT Members
@PROMOTIONS money INOUT Promotions
@MEMBERSHIPADDONS xml INOUT

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_SALESORDERITEM
                (
                    @ID uniqueidentifier,
                    @DATALOADED bit = 0 output,
                    @DESCRIPTION nvarchar(100) = null output,
                    @QUANTITY int = null output,
                    @PRICE money = null output,
                    @TYPECODE tinyint = null output,
                    @TOTAL money = null output,
                    @FEES money = null output,
                    @NAME nvarchar(100) = null output,
                    @PRICETYPE nvarchar(100) = null output,
                    @STARTDATE datetime = null output,
                    @STARTTIME nvarchar(4) = null output,
                    @LOCATION nvarchar(100) = null output,
                    @MEMBERSHIPEXPIRATIONDATE datetime = null output,
                    @MEMBERSHIPLEVELTYPECODE nvarchar(100) = null output,
                    @MEMBERSHIPNUMBEROFCHILDREN smallint = null output,
                    @MEMBERSHIPGIVENBY nvarchar(154) = null output,
                    @MEMBERSHIPMEMBERS xml = null output,
                    @PROMOTIONS money = null output,
                    @MEMBERSHIPADDONS xml = null output
                )
                as
                    set nocount on;

                    set @DATALOADED = 0;

                    select
                        @DATALOADED = 1,
                        @DESCRIPTION = DESCRIPTION,
                        @QUANTITY = QUANTITY,
                        @PRICE = PRICE,
                        @TYPECODE = TYPECODE,
                        @TOTAL = TOTAL
                    from dbo.SALESORDERITEM
                    where ID = @ID

                    if @TYPECODE = 0 
                    begin
                        select @NAME = coalesce(EVENT.NAME, PROGRAM.NAME, ''),
                            @PRICETYPE = PRICETYPECODE.DESCRIPTION,
                            @STARTDATE = EVENT.STARTDATE,
                            @STARTTIME = EVENT.STARTTIME,
                            @LOCATION = dbo.UFN_EVENT_GETLOCATIONNAME(EVENT.ID)
                        from dbo.SALESORDERITEMTICKET
                        inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
                        left join dbo.EVENT on SALESORDERITEMTICKET.EVENTID = EVENT.ID
                        left join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
                        where SALESORDERITEMTICKET.ID = @ID;


                        declare @FEEDOLLARAMOUNT money = 0;

                        select 
                            @FEEDOLLARAMOUNT = sum(TOTAL)
                        from dbo.SALESORDERITEM
                        inner join dbo.SALESORDERITEMFEE on
                            SALESORDERITEM.ID = SALESORDERITEMFEE.ID
                        where SALESORDERITEMFEE.SALESORDERITEMID = @ID

                        if @FEEDOLLARAMOUNT is not null
                            set @FEES = @FEEDOLLARAMOUNT
                        else
                            set @FEES = 0.0

                        set @TOTAL = @TOTAL + @FEES

                    end


                    else if @TYPECODE = 1
                    begin

                        select
                            @PROMOTIONS = sum(AMOUNT)
                        from
                            dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION
                        where
                            SALESORDERITEMMEMBERSHIPITEMPROMOTION.SALESORDERITEMID = @ID

                        select
                            @MEMBERSHIPEXPIRATIONDATE = SALESORDERITEMMEMBERSHIP.EXPIRATIONDATE,
                            @MEMBERSHIPLEVELTYPECODE = dbo.UFN_MEMBERSHIPLEVELTYPECODE_GETDESCRIPTION(SALESORDERITEMMEMBERSHIP.MEMBERSHIPLEVELTYPECODEID),
                            @MEMBERSHIPNUMBEROFCHILDREN = SALESORDERITEMMEMBERSHIP.NUMBEROFCHILDREN,
                            @MEMBERSHIPGIVENBY = dbo.UFN_CONSTITUENT_BUILDNAME(SALESORDERITEMMEMBERSHIP.GIVENBYID),
                            @MEMBERSHIPMEMBERS = (
                                select dbo.UFN_CONSTITUENT_BUILDNAME(SALESORDERITEMMEMBER.CONSTITUENTID) [MEMBERNAME]
                                from dbo.SALESORDERITEMMEMBER
                                where SALESORDERITEMMEMBERSHIP.ID = SALESORDERITEMMEMBER.SALESORDERITEMMEMBERSHIPID
                                for xml raw('ITEM'),type,elements,root('MEMBERSHIPMEMBERS'),binary base64
                            )
                        from
                            dbo.SALESORDERITEMMEMBERSHIP
                        where
                            ID = @ID;

                        --All add-ons that have not been refunded

                        select
                            @MEMBERSHIPADDONS = (
                                select
                                    ADDON.NAME as ADDONNAME,
                                    SALESORDERITEM.QUANTITY - coalesce(sum(FTLI.QUANTITY), 0) as QUANTITY,
                                    SALESORDERITEM.PRICE,
                                    SALESORDERITEM.TOTAL - coalesce(sum(FTLI.ORGAMOUNT), 0) as TOTAL
                                from dbo.SALESORDERITEM
                                inner join dbo.SALESORDERITEMMEMBERSHIPADDON SOIMA
                                    on SALESORDERITEM.ID = SOIMA.ID
                                inner join dbo.ADDON 
                                    on SOIMA.ADDONID = ADDON.ID
                                left join dbo.CREDITITEM_EXT
                                    on CREDITITEM_EXT.SALESORDERITEMID = SALESORDERITEM.ID
                                left join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.ID = CREDITITEM_EXT.ID
                                where SALESORDERITEM.TYPECODE = 16
                                    and SOIMA.SALESORDERITEMMEMBERSHIPID = @ID
                                    and SALESORDERITEM.QUANTITY - coalesce(FTLI.QUANTITY, 0) > 0
                                group by
                                    SALESORDERITEM.ID,
                                    ADDON.NAME,
                                    SALESORDERITEM.QUANTITY,
                                    SALESORDERITEM.PRICE,
                                    SALESORDERITEM.TOTAL
                                for xml raw('ITEM'),type,elements,root('MEMBERSHIPADDONS'),binary base64
                            );



                    end
                    else if @TYPECODE = 16
                    begin
                        --Since we only pass in the id of one add-on, we have to get all the other

                        --refunded addons too.

                        declare @SALESORDERITEMMEMBERSHIPID uniqueidentifier

                        select
                            @SALESORDERITEMMEMBERSHIPID = SALESORDERITEMMEMBERSHIPID
                        from dbo.SALESORDERITEMMEMBERSHIPADDON
                        where ID = @ID

                        select
                            @MEMBERSHIPADDONS = (
                                select
                                    ADDON.NAME as ADDONNAME,
                                    sum(FINANCIALTRANSACTIONLINEITEM.QUANTITY) as QUANTITY,
                                    FINANCIALTRANSACTIONLINEITEM.UNITVALUE as PRICE,
                                    sum(FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT) as TOTAL
                                from dbo.SALESORDERITEMMEMBERSHIPADDON 
                                inner join CREDITITEM_EXT on CREDITITEM_EXT.SALESORDERITEMID = SALESORDERITEMMEMBERSHIPADDON.ID
                                inner join dbo.ADDON on ADDON.ID = SALESORDERITEMMEMBERSHIPADDON.ADDONID
                                inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = CREDITITEM_EXT.ID
                                where SALESORDERITEMMEMBERSHIPADDON.SALESORDERITEMMEMBERSHIPID = @SALESORDERITEMMEMBERSHIPID
                                group by SALESORDERITEMMEMBERSHIPADDON.ID, ADDON.NAME, FINANCIALTRANSACTIONLINEITEM.UNITVALUE
                            for xml raw('ITEM'),type,elements,root('MEMBERSHIPADDONS'),binary base64
                            )

                    end

                    return 0;