USP_SEARCHLIST_PAYMENT

Search for a payment.

Parameters

Parameter Parameter Type Mode Description
@PAYMENTSOURCE nvarchar(255) IN Reference
@PAYMENTDATE datetime IN Payment date from
@PAYMENTMETHOD tinyint IN Payment method
@DEPOSITNUMBER nvarchar(64) IN Deposit number
@AMOUNT decimal(20, 4) IN Amount
@POSTSTATUSCODE tinyint IN Post status
@POSTDATE datetime IN Post date
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@EXCLUDELINKEDPAYMENTS bit IN Exclude linked payments
@APPLICATIONCODE tinyint IN Application
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@PDACCOUNTSYSTEMID uniqueidentifier IN Account system
@NUMSYSTEMS tinyint IN Number of account systems
@PAYMENTENDDATE datetime IN To

Definition

Copy


                CREATE procedure dbo.USP_SEARCHLIST_PAYMENT
                (
                    @PAYMENTSOURCE nvarchar(255) = null,
                    @PAYMENTDATE datetime = null,
                    --@PAYMENTMETHODCODE tinyint = null,

                    @PAYMENTMETHOD tinyint = null,
                    @DEPOSITNUMBER nvarchar(64) = null,
                    @AMOUNT decimal(20, 4) = null,
                    @POSTSTATUSCODE tinyint = null,
                    @POSTDATE datetime = null,
                    @MAXROWS smallint = 500,
                    @EXCLUDELINKEDPAYMENTS bit = 0,
                    @APPLICATIONCODE tinyint = null,
                    @CURRENTAPPUSERID uniqueidentifier = null,
                    @PDACCOUNTSYSTEMID uniqueidentifier = null,
                    @NUMSYSTEMS tinyint = null,
                    @PAYMENTENDDATE datetime = null
                )
                as
                    set nocount on;

                    declare @NUMBER integer
                    set @NUMBER = CAST(@DEPOSITNUMBER AS integer);
                    set @NUMSYSTEMS = dbo.UFN_PDACCOUNTSYSTEM_GETNUMBEROFSYSTEMSFORUSER(@CURRENTAPPUSERID);
                    declare @PAYMENTSTARTDATEOFFSET datetimeoffset = cast(@PAYMENTDATE as datetimeoffset)
                    declare @PAYMENTENDDATEOFFSET datetimeoffset = cast(@PAYMENTENDDATE as datetimeoffset)

                    select distinct top(@MAXROWS)
                        REVENUE.ID,
                        cast(REVENUE.DATE as datetime) as DATE,
                        REVENUE_EXT.REFERENCE AS [PAYMENTSOURCE],
                        REVENUE.TRANSACTIONAMOUNT [AMOUNT],
                        REVENUEPAYMENTMETHOD.PAYMENTMETHOD AS [PAYMENTMETHOD],
                        case when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 0 then [CASH].REFERENCENUMBER
                                when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 1 then [CHECK].CHECKNUMBER
                                when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2 then [CREDIT].CREDITCARDPARTIALNUMBER
                                when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 10 then [OTHER].REFERENCENUMBER
                            end AS [REFERENCE],
                        (select TRANSACTIONNUMBER from dbo.BANKACCOUNTTRANSACTION where ID = BANKACCOUNTDEPOSITPAYMENT.DEPOSITID),
                        (select dbo.UFN_BANKACCOUNT_GETACCOUNTNAME(BANKACCOUNTID) from BANKACCOUNTTRANSACTION where ID = BANKACCOUNTDEPOSITPAYMENT.DEPOSITID),
                        REVENUESPLIT_EXT.APPLICATION,
                        TRANSACTIONCURRENCY.ID as TRANSACTIONCURRENCYID,
                        Cast(REVENUE.TRANSACTIONAMOUNT as nvarchar(20)) + ' ' + 
                                    REVENUE.TYPE as DESCRIPTION
                    from 
                        dbo.FINANCIALTRANSACTION as REVENUE
                        inner join dbo.REVENUE_EXT on REVENUE.ID = REVENUE_EXT.ID
                        cross apply(select case when REVENUE.DELETEDON is null then REVENUE.TRANSACTIONCURRENCYID else null end as ID) TRANSACTIONCURRENCY
                        left outer join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                        left outer join dbo.BANKACCOUNTDEPOSITPAYMENT on REVENUE.ID = BANKACCOUNTDEPOSITPAYMENT.ID
                        left outer join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
                        left outer join dbo.CASHPAYMENTMETHODDETAIL as [CASH] on [CASH].ID = REVENUEPAYMENTMETHOD.ID
                        left outer join dbo.CHECKPAYMENTMETHODDETAIL as [CHECK] on [CHECK].ID = REVENUEPAYMENTMETHOD.ID 
                        left outer join dbo.CREDITCARDPAYMENTMETHODDETAIL as [CREDIT] on [CREDIT].ID = REVENUEPAYMENTMETHOD.ID
                        left outer join dbo.OTHERPAYMENTMETHODDETAIL as [OTHER] on [OTHER].ID = REVENUEPAYMENTMETHOD.ID
                        left join dbo.SALESORDERPAYMENT on SALESORDERPAYMENT.PAYMENTID = REVENUE.ID 
                        left join dbo.RECONCILIATION on SALESORDERPAYMENT.RECONCILIATIONID = RECONCILIATION.ID
                        inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = REVENUE.ID
                        inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
                        inner join dbo.PDACCOUNTSYSTEMFORREVENUE on REVENUE.ID = PDACCOUNTSYSTEMFORREVENUE.ID
                        inner join dbo.UFN_PDACCOUNTSYSTEM_GETSYSTEMIDSFORUSER(@CURRENTAPPUSERID) PDACCOUNTSYSTEMIDSFORUSER on PDACCOUNTSYSTEMFORREVENUE.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMIDSFORUSER.ID
                        inner join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.ID = PDACCOUNTSYSTEMIDSFORUSER.ID
                    where
                         (@PAYMENTSOURCE is null or (REVENUE_EXT.REFERENCE like @PAYMENTSOURCE + '%')) and
                         ((@PAYMENTSTARTDATEOFFSET is null or (REVENUE.DATE >= @PAYMENTSTARTDATEOFFSET)) and (@PAYMENTENDDATEOFFSET is null or (REVENUE.DATE <= @PAYMENTENDDATEOFFSET))) and
                         (@PAYMENTMETHOD is null or (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = @PAYMENTMETHOD)) and
                         (@AMOUNT is null or (REVENUE.TRANSACTIONAMOUNT = @AMOUNT)) and
                         (@NUMBER is null or (BANKACCOUNTTRANSACTION.TRANSACTIONNUMBER = @NUMBER and BANKACCOUNTTRANSACTION.TRANSACTIONFLAGCODE = 1)) and
                         (@POSTSTATUSCODE is null or (@POSTSTATUSCODE = case when REVENUE.POSTSTATUSCODE = 2 then 2 else 1 end)) and
                         (@POSTDATE is null or (REVENUE.POSTDATE = @POSTDATE)) and
                         (@EXCLUDELINKEDPAYMENTS = 0 or (BANKACCOUNTDEPOSITPAYMENT.DEPOSITID is null)) and
                         (REVENUE.TYPECODE = 0 and (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE IN (0,1,2,9,10))) and
                         (@APPLICATIONCODE is null or REVENUESPLIT_EXT.APPLICATIONCODE = @APPLICATIONCODE) and
                         (SALESORDERPAYMENT.ID is null or RECONCILIATION.STATUSCODE = 3) and 
                         (@PDACCOUNTSYSTEMID is null or (PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID)) 
                    order by 
                        cast(REVENUE.DATE as datetime) desc