USP_SEARCHLIST_UNSETTLEDCREDITCARDTRANSACTION

Searches for unsettled credit card transactions.

Parameters

Parameter Parameter Type Mode Description
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@CARDHOLDERNAME nvarchar(100) IN Cardholder name
@ORGANIZATIONAMOUNT money IN Organization amount
@STARTDATE datetime IN Date from
@ENDDATE datetime IN To
@CREDITTYPECODEID uniqueidentifier IN Credit card type
@AUTHORIZATIONCODE nvarchar(20) IN Authorization code
@LASTFOURDIGITS nvarchar(10) IN Last 4 digits
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@TRANSACTIONAMOUNT decimal(19, 4) IN

Definition

Copy


                CREATE procedure dbo.USP_SEARCHLIST_UNSETTLEDCREDITCARDTRANSACTION
                (
                    @MAXROWS smallint = 500,
                    @CARDHOLDERNAME nvarchar(100) = null,
                    @ORGANIZATIONAMOUNT money = null,
                    @STARTDATE datetime = null,
                    @ENDDATE datetime = null,
                    @CREDITTYPECODEID uniqueidentifier = null,
                    @AUTHORIZATIONCODE nvarchar(20) = null,
                    @LASTFOURDIGITS nvarchar(10) = null,
                    @CURRENTAPPUSERID uniqueidentifier,
                    @TRANSACTIONAMOUNT decimal(19,4) = null
                )
                as

                    declare
                        @APPUSERISSYSADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID),
                        @FEATUREID uniqueidentifier = '9151decb-5734-4fd9-8884-7d18aba1e2ed';

                    declare @SITESFORUSERONFEATURE table (SITEID uniqueidentifier);
                    insert into @SITESFORUSERONFEATURE
                    select * from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@FEATUREID,2);

                    set @CARDHOLDERNAME = replace(replace(@CARDHOLDERNAME,'[','\['),']','\]');
                    set @CARDHOLDERNAME = replace(replace(@CARDHOLDERNAME,'*','%'),'?','_');
                    set @CARDHOLDERNAME = replace(@CARDHOLDERNAME,' ','%');
                    set @CARDHOLDERNAME = '%' + coalesce(@CARDHOLDERNAME,'') + '%' ;

                    set @LASTFOURDIGITS = replace(replace(@LASTFOURDIGITS,'[','\['),']','\]');
                    set @LASTFOURDIGITS = replace(replace(@LASTFOURDIGITS,'*','%'),'?','_');
                    set @LASTFOURDIGITS = '%' + coalesce(@LASTFOURDIGITS,'%') + '%';

                    set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
                    set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);

                    declare @ORGCURRENCYID uniqueidentifier = (select ID from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1);

                    with TRANSACTIONS_CTE as 
                    (

                        select
                            [CREDITCARDPAYMENTMETHODDETAIL].[ID],
                            [CREDITCARDPAYMENTMETHODDETAIL].[CARDHOLDERNAME] as [NAME],
                            [FINANCIALTRANSACTION].[TRANSACTIONAMOUNT] as [AMOUNT],
                            [FINANCIALTRANSACTION].[TRANSACTIONCURRENCYID] [CURRENCYID],
                            cast([FINANCIALTRANSACTION].[DATE] as datetime) as [DATE],
                            [CREDITTYPECODE].[DESCRIPTION] as [CREDITCARDTYPE],
                            [CREDITCARDPAYMENTMETHODDETAIL].[AUTHORIZATIONCODE],
                            [CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER]
                        from dbo.[CREDITCARDPAYMENTMETHODDETAIL]
                        inner join dbo.[REVENUEPAYMENTMETHOD] on [REVENUEPAYMENTMETHOD].[ID] = [CREDITCARDPAYMENTMETHODDETAIL].[ID]
                        inner join dbo.[FINANCIALTRANSACTION] on [FINANCIALTRANSACTION].[ID] = [REVENUEPAYMENTMETHOD].[REVENUEID]
                        inner join dbo.[CREDITTYPECODE] on [CREDITTYPECODE].[ID] = [CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID]
                        where
                            [CREDITCARDPAYMENTMETHODDETAIL].[SETTLEMENTTYPECODE] = 0
                            and [CREDITCARDPAYMENTMETHODDETAIL].[CARDHOLDERNAME] like @CARDHOLDERNAME
                            and (@TRANSACTIONAMOUNT is null or @TRANSACTIONAMOUNT = [FINANCIALTRANSACTION].[TRANSACTIONAMOUNT])
                            and ((@STARTDATE is null and @ENDDATE is null) or
                                (@STARTDATE is null and [FINANCIALTRANSACTION].[DATE] <= @ENDDATE) or
                                (@ENDDATE is null and [FINANCIALTRANSACTION].[DATE] >= @STARTDATE) or
                                ([FINANCIALTRANSACTION].[DATE] between @STARTDATE and @ENDDATE))
                            and (@CREDITTYPECODEID is null or [CREDITTYPECODE].[ID] = @CREDITTYPECODEID)
                            and (@AUTHORIZATIONCODE is null or [CREDITCARDPAYMENTMETHODDETAIL].[AUTHORIZATIONCODE] = @AUTHORIZATIONCODE)
                            and ([CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER] like @LASTFOURDIGITS)
                            and (
                                    ( --if there's no revenue

                                    select
                                        count(ID)
                                    from dbo.FINANCIALTRANSACTIONLINEITEM
                                    where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                                    ) = 0
                                or
                                    (--Check site security  

                                    select 
                                        count(*)   
                                    from dbo.UFN_SITEID_MAPFROM_REVENUEID(FINANCIALTRANSACTION.ID) as SITE  
                                    where (
                                        @APPUSERISSYSADMIN = 1 or 
                                        exists (
                                            select 1 
                                            from @SITESFORUSERONFEATURE
                                            where SITEID=[SITE].[SITEID] or (SITEID is null and [SITE].[SITEID] is null)
                                        )
                                    ) 
                                ) > 0)

                        union all

                        select distinct
                            [CREDITPAYMENT].[ID],
                            [CREDITCARDPAYMENTMETHODDETAIL].[CARDHOLDERNAME] as [NAME],
                            -[CREDITPAYMENT].[AMOUNT],
                            [FINANCIALTRANSACTION].[TRANSACTIONCURRENCYID] as [CURRENCYID],
                            [CREDITPAYMENT].[DATEADDED] as [DATE],
                            [CREDITTYPECODE].[DESCRIPTION] as [CREDITCARDTYPE],
                            [CREDITCARDPAYMENTMETHODDETAIL].[AUTHORIZATIONCODE],
                            [CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER]
                        from dbo.[CREDITPAYMENT]
                        left join dbo.[FINANCIALTRANSACTIONLINEITEM] [ORIGINALPAYMENTFTMLINEITEM] on [CREDITPAYMENT].[REVENUESPLITID] = [ORIGINALPAYMENTFTMLINEITEM].[ID]
                        inner join dbo.REVENUEPAYMENTMETHOD on ([REVENUEPAYMENTMETHOD].[REVENUEID] = [CREDITPAYMENT].[REVENUEID] or [REVENUEPAYMENTMETHOD].[REVENUEID] = [ORIGINALPAYMENTFTMLINEITEM].[FINANCIALTRANSACTIONID])
                        inner join dbo.[FINANCIALTRANSACTION] on [FINANCIALTRANSACTION].[ID] = [REVENUEPAYMENTMETHOD].[REVENUEID]
                        inner join dbo.[CREDITCARDPAYMENTMETHODDETAIL] on [CREDITCARDPAYMENTMETHODDETAIL].[ID] = [REVENUEPAYMENTMETHOD].[ID]
                        inner join dbo.[CREDITTYPECODE] on [CREDITTYPECODE].[ID] = [CREDITCARDPAYMENTMETHODDETAIL].[CREDITTYPECODEID]
                        where
                            [CREDITPAYMENT].[SETTLEMENTTYPECODE] = 0
                            and [CREDITCARDPAYMENTMETHODDETAIL].[CARDHOLDERNAME] like @CARDHOLDERNAME
                            and (@TRANSACTIONAMOUNT is null or @TRANSACTIONAMOUNT = -[CREDITPAYMENT].[AMOUNT])
                            and ((@STARTDATE is null and @ENDDATE is null) or
                                (@STARTDATE is null and [CREDITPAYMENT].[DATEADDED] <= @ENDDATE) or
                                (@ENDDATE is null and [CREDITPAYMENT].[DATEADDED] >= @STARTDATE) or
                                ([CREDITPAYMENT].[DATEADDED] between @STARTDATE and @ENDDATE))
                            and (@CREDITTYPECODEID is null or [CREDITTYPECODE].[ID] = @CREDITTYPECODEID)
                            and (@AUTHORIZATIONCODE is null or [CREDITCARDPAYMENTMETHODDETAIL].[AUTHORIZATIONCODE] = @AUTHORIZATIONCODE)
                            and ([CREDITCARDPAYMENTMETHODDETAIL].[CREDITCARDPARTIALNUMBER] like @LASTFOURDIGITS)
                    )
                    select top(@MAXROWS)
                        [ID],
                        [NAME],
                        [AMOUNT],
                        [CURRENCYID],
                        [DATE],
                        [CREDITCARDTYPE],
                        [AUTHORIZATIONCODE],
                        [CREDITCARDPARTIALNUMBER]
                    from TRANSACTIONS_CTE
                    order by [DATE] desc