USP_SALESORDER_ORDERPICKUPSEARCH

Search for reserved orders or tickets not yet printed.

Parameters

Parameter Parameter Type Mode Description
@MAXROWS int IN
@FROM date IN
@TO date IN
@PATRONFILTERPRESENT bit IN
@PATRONGROUPORGKEYNAME nvarchar(100) IN
@PATRONKEYNAME nvarchar(100) IN
@PATRONFIRSTNAME nvarchar(50) IN
@RECIPIENTFILTERPRESENT bit IN
@RECIPIENTGROUPORGKEYNAME nvarchar(100) IN
@RECIPIENTKEYNAME nvarchar(100) IN
@RECIPIENTFIRSTNAME nvarchar(50) IN
@INCLUDEALIAS bit IN
@INCLUDENICKNAME bit IN
@CARDNUMBER nvarchar(5) IN
@SEQUENCEID int IN
@MEMBERSHIPLOOKUPID nvarchar(20) IN
@DELIVERYMETHODID uniqueidentifier IN
@PROGRAMNAME nvarchar(25) IN

Definition

Copy


CREATE procedure dbo.USP_SALESORDER_ORDERPICKUPSEARCH
(
    @MAXROWS integer = 100,
    @FROM date,
    @TO date,
    @PATRONFILTERPRESENT bit = 0,
    @PATRONGROUPORGKEYNAME nvarchar(100) = null,
    @PATRONKEYNAME nvarchar(100) = null,
    @PATRONFIRSTNAME nvarchar(50) = null,
    @RECIPIENTFILTERPRESENT bit = 0,
    @RECIPIENTGROUPORGKEYNAME nvarchar(100) = null,
    @RECIPIENTKEYNAME nvarchar(100) = null,
    @RECIPIENTFIRSTNAME nvarchar(50) = null,
    @INCLUDEALIAS bit = 0,
    @INCLUDENICKNAME bit = 0,
    @CARDNUMBER nvarchar(5) = null,
    @SEQUENCEID int = null,
    @MEMBERSHIPLOOKUPID nvarchar(20) = null,
    @DELIVERYMETHODID uniqueidentifier = null,
    @PROGRAMNAME nvarchar(25) = null
)
as        
    set nocount on;

    declare @CARDNUMBERPRESENT bit = 0;
    declare @CREDITCARDMATCHSALESORDERIDS table (ID uniqueidentifier);

    if @CARDNUMBER is not null and @CARDNUMBER <> ''
    begin
        set @CARDNUMBERPRESENT = 1;

        insert into @CREDITCARDMATCHSALESORDERIDS
        select SALESORDERPAYMENT.SALESORDERID from dbo.SALESORDERPAYMENT
        inner join dbo.[REVENUEPAYMENTMETHOD] on SALESORDERPAYMENT.PAYMENTID = [REVENUEPAYMENTMETHOD].REVENUEID 
        inner join dbo.[CREDITCARDPAYMENTMETHODDETAIL] on [REVENUEPAYMENTMETHOD].PAYMENTMETHODCODE = 2 and [CREDITCARDPAYMENTMETHODDETAIL].ID = [REVENUEPAYMENTMETHOD].ID 
        where [CREDITCARDPAYMENTMETHODDETAIL].CREDITCARDPARTIALNUMBER like @CARDNUMBER escape '\'
    end

    declare @PATRONCONSTITUENTMATCHES table (ID uniqueidentifier)
    declare @RECIPIENTCONSTITUENTMATCHES table (ID uniqueidentifier)

    insert into @PATRONCONSTITUENTMATCHES
    select C.ID from dbo.CONSTITUENT C
    left outer join dbo.ALIAS A on A.CONSTITUENTID = C.ID
    where
    (
        @PATRONGROUPORGKEYNAME is not null and @PATRONGROUPORGKEYNAME <> ''
        and (
            ([ISORGANIZATION] = 1 or [ISGROUP] = 1)
            and (
                [C].[KEYNAME] like @PATRONGROUPORGKEYNAME escape '\'
                or (@INCLUDEALIAS = 1 and [A].[KEYNAME] like @PATRONGROUPORGKEYNAME escape '\')
            )
        )
    )
    or (
        @PATRONKEYNAME is not null and @PATRONKEYNAME <> ''
        and (
            ([ISORGANIZATION] = 0 and [ISGROUP] = 0)
            and (
                [C].[KEYNAME] like @PATRONKEYNAME escape '\'
                or (@INCLUDEALIAS = 1 and [A].[KEYNAME] like @PATRONKEYNAME escape '\')
            )
        )
    )
    or (
        @PATRONFIRSTNAME is not null and @PATRONFIRSTNAME <> ''
        and (
            [C].[FIRSTNAME] like @PATRONFIRSTNAME escape '\'
            or (@INCLUDEALIAS = 1 and [A].[FIRSTNAME] like @PATRONFIRSTNAME escape '\')
            or (@INCLUDENICKNAME = 1 and [C].[NICKNAME] like @PATRONFIRSTNAME escape '\')
        )
    );

    insert into @RECIPIENTCONSTITUENTMATCHES
    select C.ID from dbo.CONSTITUENT C
    left outer join dbo.ALIAS A on A.CONSTITUENTID = C.ID
    where
    (
        @RECIPIENTGROUPORGKEYNAME is not null and @RECIPIENTGROUPORGKEYNAME <> ''
        and (
            ([ISORGANIZATION] = 1 or [ISGROUP] = 1)
            and (
                [C].[KEYNAME] like @RECIPIENTGROUPORGKEYNAME escape '\'
                or (@INCLUDEALIAS = 1 and [A].[KEYNAME] like @RECIPIENTGROUPORGKEYNAME escape '\')
            )
        )
    )
    or (
        @RECIPIENTKEYNAME is not null and @RECIPIENTKEYNAME <> ''
        and (
            ([ISORGANIZATION] = 0 and [ISGROUP] = 0)
            and (
                [C].[KEYNAME] like @RECIPIENTKEYNAME escape '\'
                or (@INCLUDEALIAS = 1 and [A].[KEYNAME] like @RECIPIENTKEYNAME escape '\')
            )
        )
    )
    or (
        @RECIPIENTFIRSTNAME is not null and @RECIPIENTFIRSTNAME <> ''
        and (
            [C].[FIRSTNAME] like @RECIPIENTFIRSTNAME escape '\'
            or (@INCLUDEALIAS = 1 and [A].[FIRSTNAME] like @RECIPIENTFIRSTNAME escape '\')
            or (@INCLUDENICKNAME = 1 and [C].[NICKNAME] like @RECIPIENTFIRSTNAME escape '\')
        )
    );

    select distinct top(@MAXROWS)
        [SALESORDER].[ID], 
        RECIPIENTNAMEFORMAT.NAME as [RECIPIENTNAME],
        PATRONNAMEFORMAT.NAME as [PATRONNAME],
        [SALESORDER].[TRANSACTIONDATE], 
        convert(nvarchar(20), [SALESORDER].[SEQUENCEID]) as [SEQUENCEID], 
        [SALESORDER].[AMOUNT], 
        case when SALESORDER.STATUSCODE = 6 then [SALESORDER].[AMOUNT] else null end AMOUNTDUE, 
        (select dbo.UDA_BUILDLIST(SALESORDERITEM.DESCRIPTION) from (select top 10 [SALESORDERID], [TYPECODE], [DESCRIPTION] from dbo.[SALESORDERITEM] where [SALESORDERID] = [SALESORDER].[ID] and [TYPECODE] not in (3,4) order by [TYPECODE], [SALESORDERITEM].[DESCRIPTION]) as [SALESORDERITEM]) as [ITEMS] 
    from dbo.[SALESORDER] with (nolock)
    inner join dbo.[SALESORDERITEM] with (nolock) on [SALESORDER].[ID] = [SALESORDERITEM].[SALESORDERID]
    left join dbo.[SALESORDERITEMTICKET] with (nolock) on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
    left outer join dbo.TICKET on TICKET.SALESORDERITEMTICKETID = SALESORDERITEMTICKET.ID and [TICKET].STATUSCODE not in (2, 3)
    left outer join dbo.[EVENT] with (nolock) on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
    left outer join dbo.[PROGRAM] with (nolock) on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID] or [EVENT].[PROGRAMID] = [PROGRAM].[ID]
    left outer join dbo.PROGRAMDOCUMENT with (nolock) on PROGRAMDOCUMENT.PROGRAMID = PROGRAM.ID
    left outer join dbo.TICKETPRINTINFO with (nolock) on TICKETPRINTINFO.TICKETID = TICKET.ID
    left outer join dbo.[MEMBER] on [MEMBER].[CONSTITUENTID] = [SALESORDER].[CONSTITUENTID]
    left outer join dbo.[MEMBERSHIP] on [MEMBERSHIP].[ID] = [MEMBER].[MEMBERSHIPID]
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SALESORDER.RECIPIENTID) RECIPIENTNAMEFORMAT
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SALESORDER.CONSTITUENTID) PATRONNAMEFORMAT
    where
        (@PATRONFILTERPRESENT = 0 or [SALESORDER].[CONSTITUENTID] in (select ID from @PATRONCONSTITUENTMATCHES))
        and (@RECIPIENTFILTERPRESENT = 0 or [SALESORDER].[RECIPIENTID] in (select ID from @RECIPIENTCONSTITUENTMATCHES))
        and (@SEQUENCEID is null or [SALESORDER].[SEQUENCEID] = @SEQUENCEID)
        and (@MEMBERSHIPLOOKUPID is null or @MEMBERSHIPLOOKUPID = '' or [MEMBERSHIP].[LOOKUPID] like @MEMBERSHIPLOOKUPID escape '\')
        and (@CARDNUMBERPRESENT = 0 or [SALESORDER].[ID] in (select ID from @CREDITCARDMATCHSALESORDERIDS))
        and (@DELIVERYMETHODID is null or [SALESORDER].[DELIVERYMETHODID] = @DELIVERYMETHODID)
        and (@PROGRAMNAME is null or @PROGRAMNAME = '' or [PROGRAM].[NAME] like @PROGRAMNAME escape '\') 
        and [SALESORDER].[SALESMETHODTYPECODE] in (1,2)
        and convert(date, [SALESORDER].[TRANSACTIONDATE]) between @FROM and @TO
        and (
            [SALESORDER].[STATUSCODE] = 6
            or (
                PROGRAMDOCUMENT.ID is not null
                and TICKET.ID is not null
                and TICKETPRINTINFO.TICKETID is null
            )
        )
    order by [RECIPIENTNAME], [PATRONNAME], SALESORDER.TRANSACTIONDATE desc;

    return 0;