UFN_REFUND_GETCREDITACCOUNT_GROUPSALES

Return

Return Type
nvarchar(100)

Parameters

Parameter Parameter Type Mode Description
@CREDITPAYMENTID uniqueidentifier IN

Definition

Copy


            create function dbo.UFN_REFUND_GETCREDITACCOUNT_GROUPSALES(@CREDITPAYMENTID uniqueidentifier)
            returns nvarchar(100)
            as begin
                declare @ACCOUNT nvarchar(100) = '';
                declare @ACCOUNTID uniqueidentifier;
                declare @CREDITCARDSUBTYPEID uniqueidentifier;
                declare @OTHERSUBTYPEID uniqueidentifier;
                declare @PAYMENTMETHOD int;
                declare @PDACCOUNTSEGMENTVALUEID uniqueidentifier;
                declare @ACCOUNTCODE nvarchar(100);

                select
                    @CREDITCARDSUBTYPEID = case
                        when CREDITPAYMENT.PAYMENTMETHODCODE = 2
                            then CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID
                        else
                            null
                        end,
                    @OTHERSUBTYPEID = CREDITPAYMENT.OTHERPAYMENTMETHODCODEID
                from dbo.CREDITPAYMENT
                inner join dbo.CREDIT on CREDITPAYMENT.CREDITID = CREDIT.ID
                inner join dbo.REVENUEPAYMENTMETHOD on  CREDITPAYMENT.REVENUEID = REVENUEPAYMENTMETHOD.REVENUEID
                left join dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID 
                where CREDITPAYMENT.ID = @CREDITPAYMENTID;

                select @PAYMENTMETHOD =
                    case PAYMENTMETHODCODE
                    when 0 then 1 -- cash

                    when 1 then 2 --check

                    when 2 then 4 -- credit card

                    when 3 then 8 --direct debit

                    when 10 then 16 --other

                    end
                from dbo.CREDITPAYMENT
                where CREDITPAYMENT.ID = @CREDITPAYMENTID

                select
                    @ACCOUNTID = MAP.DEBITGLACCOUNTID,
                    @PDACCOUNTSEGMENTVALUEID = MAP.DEBITPDACCOUNTSEGMENTVALUEID
                from
                    dbo.PDACCOUNTCODEMAPPING MAP
                    left join dbo.PDACCOUNTCODEMAPPINGSUBTYPE SUBTYPE on SUBTYPE.PDACCOUNTCODEMAPPINGID = MAP.ID
                where
                    MAP.OFFICEID = 2 --ticketing payments

                    and MAP.APPLICATIONTYPE = 1 --applied to orders

                    and MAP.REVENUETYPE & 8192 = 8192 --unearned revenue

                    and MAP.PAYMENTMETHOD & @PAYMENTMETHOD = @PAYMENTMETHOD --given payment method

                    and
                        ((@CREDITCARDSUBTYPEID is null or SUBTYPE.ID is null or SUBTYPE.SUBTYPEID = @CREDITCARDSUBTYPEID)
                                or (SUBTYPE.ADDITIONALSUBTYPE = 2 and SUBTYPE.SUBTYPEID = '99999999-9999-9999-9999-999999999999')) -- "All subtypes" mapping option for credit cards

                    and
                        ((@OTHERSUBTYPEID is null or SUBTYPE.ID is null or SUBTYPE.SUBTYPEID = @OTHERSUBTYPEID)
                                or (SUBTYPE.ADDITIONALSUBTYPE = 4 AND SUBTYPE.SUBTYPEID = '99999999-9999-9999-9999-999999999999')) -- "All subtypes" mapping option for Other payment methods


                if @ACCOUNTID is null
                begin
                    if @PDACCOUNTSEGMENTVALUEID is not null
                        begin
                            declare @SOURCEACCOUNTID uniqueidentifier

                            select
                                @SOURCEACCOUNTID = JE.GLACCOUNTID
                            from
                                dbo.CREDITPAYMENT CP
                                inner join dbo.FINANCIALTRANSACTION REFUND on REFUND.ID = CP.CREDITID
                                inner join dbo.FINANCIALTRANSACTIONLINEITEM REFUNDLI on REFUNDLI.FINANCIALTRANSACTIONID = REFUND.ID
                                inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = REFUNDLI.SOURCELINEITEMID
                                inner join dbo.REVENUESPLIT_EXT RSX on RSX.ID = LI.ID
                                inner join dbo.JOURNALENTRY JE on JE.FINANCIALTRANSACTIONLINEITEMID = LI.ID
                            where
                                CP.ID = @CREDITPAYMENTID
                                and RSX.TYPECODE = 19
                                and JE.TRANSACTIONTYPECODE = 0

                            select
                                @ACCOUNTCODE = SHORTDESCRIPTION
                            from
                                PDACCOUNTSEGMENTVALUE
                            where
                                ID = @PDACCOUNTSEGMENTVALUEID 
                                and PDACCOUNTSTRUCTUREID = '90C72BDA-7994-401B-8A9F-7B36FA65D9FC'; --primary sequence id (account code)


                            select @ACCOUNT = @ACCOUNT + CASE WHEN VALUE.PDACCOUNTSTRUCTUREID = '90C72BDA-7994-401B-8A9F-7B36FA65D9FC' 
                                    THEN @ACCOUNTCODE
                                    ELSE VALUE.SHORTDESCRIPTION END + SUBSTRING(STRUCT.SEPARATOR, 0, 2)
                            from
                                dbo.PDACCOUNTSEGMENT SEG
                                inner join dbo.PDACCOUNTSTRUCTURE STRUCT on SEG.PDACCOUNTSTRUCTUREID = STRUCT.ID
                                inner join dbo.PDACCOUNTSEGMENTVALUE VALUE on SEG.PDACCOUNTSEGMENTVALUEID = VALUE.ID
                            where
                                SEG.GLACCOUNTID = @SOURCEACCOUNTID 
                                and STRUCT.PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
                            order by STRUCT.SEQUENCE asc;

                            set @ACCOUNT = SUBSTRING(@ACCOUNT, 0, LEN(@ACCOUNT));
                        end
                end
            else
                begin
                    select @ACCOUNT = ACCOUNTNUMBER
                    from dbo.GLACCOUNT
                    where ID = @ACCOUNTID;
                end

                return @ACCOUNT

            end