UFN_CREDIT_GENERATEDISCOUNTGLDISTRIBUTION

Returns the GL distributions for a discount.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CREDITID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_CREDIT_GENERATEDISCOUNTGLDISTRIBUTION(@CREDITID uniqueidentifier)
            returns table 
            as return 
            /*    Getting Discount distributions    */
            --Rewrote this function to use a CTE because it allows SQL to make a better execution plan that is based only on the discount

            -- line items instead of ALL the line items.

            WITH LI_CTE as (
                select distinct FINANCIALTRANSACTION.ID as REVENUEID,
                    CREDITITEM.ID as CREDITITEMID,
                    CREDITITEM.CREDITID as CREDITID,
                    CREDITITEM_LI.POSTDATE as POSTDATE,
                    case CREDITITEM_LI.POSTSTATUSCODE when 2 then 0 when 3 then 2 else 1 end as POSTSTATUSCODE,
                    ((CREDITITEM_LI.QUANTITY * CREDITITEM_LI.UNITVALUE) - CREDITITEM.DISCOUNTS) as AMOUNT,
                    REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                    FINANCIALTRANSACTION.TYPECODE as REVENUETRANSACTIONTYPECODE,
                    FINANCIALTRANSACTIONLINEITEM.ID LIID,
                    REVENUESPLIT_EXT.TYPECODE,
                    REVENUESPLIT_EXT.APPLICATIONCODE
                from dbo.CREDITITEM_EXT CREDITITEM
                inner join dbo.FINANCIALTRANSACTIONLINEITEM CREDITITEM_LI on CREDITITEM_LI.ID = CREDITITEM.ID
                inner join dbo.FINANCIALTRANSACTIONLINEITEM on CREDITITEM_LI.SOURCELINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
                inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
                inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.REVENUEID    
                where CREDITITEM.CREDITID = @CREDITID)

            select 
                T.REVENUEID
                ,T.CREDITITEMID
                ,T.CREDITID
                ,dbo.UFN_POSTTOGLPROCESS_GETGLPAYMENTMETHODREVENUETYPEMAPPINGID(99, T.REVENUETRANSACTIONTYPECODE, T.TYPECODE, T.APPLICATIONCODE, tf.TRANSACTIONTYPECODE) as GLPAYMENTMETHODREVENUETYPEMAPPINGID
                ,tf.TRANSACTIONTYPECODE
                ,T.POSTDATE
                ,T.POSTSTATUSCODE
                ,tf.ACCOUNTSTRING
                ,tf.PROJECTCODE as PROJECT
                ,T.AMOUNT
                ,tf.ERRORMESSAGE
                ,T.PAYMENTMETHODCODE
                ,T.REVENUETRANSACTIONTYPECODE
                ,tf.ACCOUNTID as ACCOUNTID
                ,convert(varchar(max),tf.MAPPEDVALUES) as MAPPEDVALUES
            from LI_CTE T
            cross apply dbo.UFN_REVENUE_GENERATEGLACCOUNT(T.LIID, T.REVENUETRANSACTIONTYPECODE,T.TYPECODE, T.APPLICATIONCODE, 99, null) as tf