USP_DATALIST_SALESORDER_EVENTREGISTRATIONS

Lists all event registrations belonging to a sales order.

Parameters

Parameter Parameter Type Mode Description
@CONTEXTID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_SALESORDER_EVENTREGISTRATIONS
(
    @CONTEXTID uniqueidentifier
)
as
    set nocount on;

    --The top node

    select 
        SALESORDERITEM.ID,
        null as SALESORDERITEMID,
        case 
            when FT.DATE is not null then
                'Refund ' + convert(nvarchar(20), cast(FT.DATE as datetime), 1) + ', ' + NF.NAME
            else
                NF.NAME
        end REGISTRANTNAME,
        EVENT.NAME as DESCRIPTION,
        EVENT.STARTDATE,
        EVENT.STARTTIME,
        REGISTRANTAMOUNTS.QUANTITY,
        REGISTRANTAMOUNTS.AMOUNT,
        SALESORDERITEM.TOTAL as ORDERAMOUNT,
        SALESORDERITEMEVENTREGISTRATION.REGISTRANTID as REGISTRANTID,
        case 
            when FT.DATE is not null then
                1
            else
                0
        end ISREFUND
    from
        dbo.SALESORDERITEM
    inner join
        dbo.SALESORDERITEMEVENTREGISTRATION on SALESORDERITEM.ID = SALESORDERITEMEVENTREGISTRATION.ID
    inner join
        dbo.REGISTRANT on SALESORDERITEMEVENTREGISTRATION.REGISTRANTID = REGISTRANT.ID
    inner join
        dbo.EVENT on REGISTRANT.EVENTID = EVENT.ID
    left outer join
        dbo.CREDITITEM_EXT as EXT on EXT.SALESORDERITEMID = SALESORDERITEM.ID
    left outer join
        dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = EXT.ID
    left outer join
        dbo.FINANCIALTRANSACTION as FT on FT.ID = LI.FINANCIALTRANSACTIONID
    outer apply
        dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) as NF
    outer apply (
        select
            isnull(sum(SALESORDERITEMEVENTREGISTRANTREGISTRATION.QUANTITY), 0) as QUANTITY,
            isnull(sum(SALESORDERITEMEVENTREGISTRANTREGISTRATION.AMOUNT), 0) as AMOUNT
        from dbo.SALESORDERITEMEVENTREGISTRANTREGISTRATION
        where SALESORDERITEMEVENTREGISTRANTREGISTRATION.SALESORDERITEMEVENTREGISTRATIONID = SALESORDERITEM.ID
    ) as REGISTRANTAMOUNTS
    where
        SALESORDERITEM.SALESORDERID = @CONTEXTID
    group by 
        EXT.GROUPID,
        SALESORDERITEM.ID,
        EVENT.NAME,
        EVENT.STARTDATE,
        EVENT.STARTTIME,
        SALESORDERITEM.TOTAL,
        SALESORDERITEMEVENTREGISTRATION.REGISTRANTID,
        FT.DATE,
        NF.NAME,
        REGISTRANTAMOUNTS.QUANTITY,
        REGISTRANTAMOUNTS.AMOUNT

    --The leaf nodes

    union all
    select 
        null,
        SALESORDERITEM.ID as SALESORDERITEMID,
        null as REGISTRANTNAME,
        EVENT.NAME + ' - ' + EVENTPRICE.NAME as DESCRIPTION,
        null as STARTDATE,
        null as STARTTIME,
        SALESORDERITEMEVENTREGISTRANTREGISTRATION.QUANTITY,
        SALESORDERITEMEVENTREGISTRANTREGISTRATION.AMOUNT as REGISTRATIONAMOUNT,
        null as ORDERAMOUNT,
        SALESORDERITEMEVENTREGISTRATION.REGISTRANTID as REGISTRANTID,
        case 
            when exists (select * from dbo.CREDITITEM_EXT as EXT where EXT.SALESORDERITEMID = SALESORDERITEM.ID) then
                1
            else
                0
        end ISREFUND
    from
        dbo.SALESORDERITEM
    inner join
        dbo.SALESORDERITEMEVENTREGISTRATION on SALESORDERITEM.ID = SALESORDERITEMEVENTREGISTRATION.ID
    inner join
        dbo.SALESORDERITEMEVENTREGISTRANTREGISTRATION on SALESORDERITEMEVENTREGISTRATION.ID = SALESORDERITEMEVENTREGISTRANTREGISTRATION.SALESORDERITEMEVENTREGISTRATIONID
    inner join
        dbo.REGISTRANT on SALESORDERITEMEVENTREGISTRATION.REGISTRANTID = REGISTRANT.ID
    inner join
        dbo.EVENT on REGISTRANT.EVENTID = EVENT.ID
    inner join
        dbo.EVENTPRICE on SALESORDERITEMEVENTREGISTRANTREGISTRATION.EVENTPRICEID = EVENTPRICE.ID
    where
        SALESORDERITEM.SALESORDERID = @CONTEXTID
    order by
        DESCRIPTION;

    return 0;