USP_DATALIST_SALESORDER_MEMBERSHIPS2

Parameters

Parameter Parameter Type Mode Description
@CONTEXTID uniqueidentifier IN

Definition

Copy


create procedure dbo.USP_DATALIST_SALESORDER_MEMBERSHIPS2
(
    @CONTEXTID uniqueidentifier
)
as
    set nocount on;

    declare @CURRENTDATE date = getdate();

    with MEMBERSHIP_CTE as
    (
        select
            SALESORDERITEM.ID,
            SALESORDERITEM.DESCRIPTION,
            SALESORDERITEM.PRICE,
            SALESORDERITEM.QUANTITY,
            SALESORDERITEM.TOTAL,
            coalesce(
                (
                    select top 1 MEMBER.ID
                    from dbo.MEMBER
                    where
                        MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
                        and MEMBER.CONSTITUENTID = SALESORDER.CONSTITUENTID
                ),
                (
                    select top 1 MEMBER.ID
                    from dbo.MEMBER
                    where
                        MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
                        and MEMBER.ISPRIMARY = 1
                        and MEMBER.ISDROPPED = 0
                )
            ) MEMBERID,
            MEMBERSHIP.ID as MEMBERSHIPID,
            case
                when exists(
                    select MEMBERSHIPCARD.ID
                    from dbo.MEMBERSHIPCARD
                    inner join.MEMBER on MEMBERSHIPCARD.MEMBERID = MEMBER.ID
                    where MEMBERSHIPCARD.STATUSCODE = 0
                        and @CURRENTDATE < MEMBERSHIPCARD.EXPIRATIONDATE
                        and MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
                ) then 1
                else 0
            end HASCARDSTOPRINT,
            (
                select MEMBERSHIPTRANSACTION.REVENUESPLITID
                from dbo.MEMBERSHIPTRANSACTION
                inner join dbo.FINANCIALTRANSACTIONLINEITEM as LI on LI.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID
                inner join SALESORDER on SALESORDER.REVENUEID = LI.FINANCIALTRANSACTIONID
                where
                    MEMBERSHIPTRANSACTION.MEMBERSHIPID = MEMBERSHIP.ID
                    and SALESORDER.ID = SALESORDERITEM.SALESORDERID
            ) as REVENUESPLITID,
            APPLIEDTICKETSSALESORDER.APPLIEDTOMEMBERSHIPSALESORDERID,
            case
                when APPLIEDTICKETSSALESORDER.APPLIEDTOMEMBERSHIPSALESORDERID is null then 0
                else 1
            end MEMBERSHIPHASAPPLIEDTICKETS
        from
            dbo.SALESORDER
        inner join
            dbo.SALESORDERITEM on SALESORDER.ID = SALESORDERITEM.SALESORDERID
        inner join
            dbo.SALESORDERITEMMEMBERSHIP on SALESORDERITEM.ID = SALESORDERITEMMEMBERSHIP.ID
        left join
            dbo.MEMBERSHIP on SALESORDERITEMMEMBERSHIP.MEMBERSHIPID = MEMBERSHIP.ID
        left join (
            select distinct
                SALESORDERITEMMEMBERSHIPITEMPROMOTION.SALESORDERITEMID SALESORDERITEMMEMBERSHIPID,
                APPLIEDITEM.SALESORDERID APPLIEDTOMEMBERSHIPSALESORDERID
            from
                dbo.SALESORDERITEM
            inner join
                dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION on SALESORDERITEM.ID = SALESORDERITEMMEMBERSHIPITEMPROMOTION.SALESORDERITEMID
            inner join
                dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEM on SALESORDERITEMMEMBERSHIPITEMPROMOTION.ID = SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEM.SALESORDERITEMMEMBERSHIPITEMPROMOTIONID
            inner join
                dbo.SALESORDERITEM APPLIEDITEM on SALESORDERITEMMEMBERSHIPITEMPROMOTIONAPPLIEDITEM.APPLIEDSALESORDERITEMID = APPLIEDITEM.ID
            where
                SALESORDERITEM.SALESORDERID = @CONTEXTID
        ) as APPLIEDTICKETSSALESORDER on SALESORDERITEMMEMBERSHIP.ID = APPLIEDTICKETSSALESORDER.SALESORDERITEMMEMBERSHIPID
        where
            SALESORDER.ID = @CONTEXTID
    )
    select
        ID,
        DESCRIPTION,
        PRICE,
        QUANTITY,
        TOTAL,
        MEMBERID,
        MEMBERSHIPID,
        HASCARDSTOPRINT,
        REVENUESPLITID,
        APPLIEDTOMEMBERSHIPSALESORDERID,
        MEMBERSHIPHASAPPLIEDTICKETS
    from MEMBERSHIP_CTE
    order by MEMBERSHIP_CTE.MEMBERSHIPID

    return 0;