USP_DATALIST_JOURNALENTRIES

Parameters

Parameter Parameter Type Mode Description
@FINANCIALTRANSACTIONID uniqueidentifier IN
@DETAILID uniqueidentifier IN
@CURRENCYCODE tinyint IN
@POSTDATE date IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_JOURNALENTRIES
(
    @FINANCIALTRANSACTIONID uniqueidentifier
    ,@DETAILID uniqueidentifier = null
    ,@CURRENCYCODE tinyint = 0
    ,@POSTDATE date = null
)
as
    set nocount on;

    if @DETAILID = '00000000-0000-0000-0000-000000000000'
        set @DETAILID = null;

    --If we're coming from the order page, it sends in the order id

    if exists (select ID from dbo.SALESORDER where SALESORDER.ID = @FINANCIALTRANSACTIONID)
        select @FINANCIALTRANSACTIONID = REVENUEID from dbo.SALESORDER where SALESORDER.ID = @FINANCIALTRANSACTIONID

    declare @ORGANIZATIONCURRENCYID as uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

    set @CURRENCYCODE = isnull(@CURRENCYCODE, 0);

    declare @BASECURRENCYID uniqueidentifier
    select @BASECURRENCYID = CS.BASECURRENCYID
    from dbo.FINANCIALTRANSACTION FT
    inner join dbo.PDACCOUNTSYSTEM S on FT.PDACCOUNTSYSTEMID = S.ID
    inner join dbo.CURRENCYSET CS on CS.ID = S.CURRENCYSETID
    where FT.ID = @FINANCIALTRANSACTIONID;

    WITH DIST_CTE as (
        select 
            JE.ID
            ,LI.POSTDATE
            ,LI.POSTSTATUS
            ,LI.POSTSTATUSCODE
            ,A.ACCOUNTNUMBER
            ,A.ACCOUNTALIAS
            ,A.ACCOUNTDESCRIPTION
            ,case when JE.TRANSACTIONTYPECODE = 0 
                then case @CURRENCYCODE
                    when 0 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.TRANSACTIONAMOUNT , 0) else JE.TRANSACTIONAMOUNT end
                    when 1 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.BASEAMOUNT , 0) else JE.BASEAMOUNT end
                    else case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.ORGAMOUNT , 0) else JE.ORGAMOUNT end
                end
                else null 
            end [DEBITAMOUNT]
            ,case when JE.TRANSACTIONTYPECODE = 1
                then case @CURRENCYCODE
                    when 0 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.TRANSACTIONAMOUNT , 0) else JE.TRANSACTIONAMOUNT end
                    when 1 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.BASEAMOUNT , 0) else JE.BASEAMOUNT end
                    else case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.ORGAMOUNT , 0) else JE.ORGAMOUNT end
                end
                else null 
            end [CREDITAMOUNT]
            ,case when LI.TYPECODE = 1 then 'Reversal - ' else '' end + JE.COMMENT [COMMENT]
            ,case @CURRENCYCODE
                when 0 then JE.TRANSACTIONCURRENCYID 
                when 1 then @BASECURRENCYID
                else @ORGANIZATIONCURRENCYID end [CURRENCYID]
            ,case when LI.TYPECODE = 1 then 1 else 0 end [ISREVERSAL]
            ,case JE.TYPECODE
                when 0 then
                    case when isnull(ORIGINAL_JEX.TABLENAMECODE, JEX.TABLENAMECODE) is null then 999
                    else case isnull(ORIGINAL_JEX.TABLENAMECODE, JEX.TABLENAMECODE)
                        when 0 then 1
                        when 5 then case isnull(ORIGINAL_JEX.BENEFITTYPECODE, JEX.BENEFITTYPECODE) 
                            when 1 then 5 
                            when 2 then 105 
                            when 3 then 205 
                            when 4 then 998 end
                        when 6 then case LI.TYPECODE when 5 then 6 when 1 then 6 else 106 end
                        else isnull(ORIGINAL_JEX.TABLENAMECODE, JEX.TABLENAMECODE) end end
                else 997 end [TABLENAMECODE]
            ,JE.TRANSACTIONTYPECODE
            ,JE.GLACCOUNTID
            ,LI.DELETEDON
            ,LI.FINANCIALTRANSACTIONID
            ,RS.APPLICATIONCODE
            ,RS.TYPECODE RSTYPECODE
            ,FT.TYPECODE FTTYPECODE
            ,MT.DESCRIPTION MAPPINGTYPE
            ,FT.[DATE] FT_DATE
            ,case @CURRENCYCODE
                when 0 then FT.TRANSACTIONAMOUNT
                when 1 then FT.BASEAMOUNT
                else FT.ORGAMOUNT
             end [FT_AMOUNT]
            ,case @CURRENCYCODE
                when 0 then FT.TRANSACTIONCURRENCYID 
                when 1 then @BASECURRENCYID
                else @ORGANIZATIONCURRENCYID 
             end [FT_CURRENCYID]
            ,case when JEX.REVENUESPLITGIFTAIDID is not null 
                then
                    case when LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is not null
                        then FT.POSTSTATUSCODE
                        else LI.POSTSTATUSCODE
                    end
                else FT.POSTSTATUSCODE 
                end as [FT_POSTSTATUSCODE]
            ,LI.BATCHID
            ,isnull(JEX.REVENUESPLITGIFTAIDID, LI.ID) [FINANCIALTRANSACTIONLINEITEMID]
        from dbo.JOURNALENTRY JE
        inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID
        inner join dbo.FINANCIALTRANSACTION FT on FT.ID = LI.FINANCIALTRANSACTIONID
        inner join dbo.GLACCOUNT A on A.ID = JE.GLACCOUNTID
        left join dbo.REVENUESPLIT_EXT RS on RS.ID = isnull(LI.REVERSEDLINEITEMID, LI.ID)
        left join dbo.JOURNALENTRY_EXT ORIGINAL_JEX on JEX.REVERSEDGLTRANSACTIONID = ORIGINAL_JEX.ID
        left join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING MT on MT.ID = isnull(ORIGINAL_JEX.GLPAYMENTMETHODREVENUETYPEMAPPINGID, JEX.GLPAYMENTMETHODREVENUETYPEMAPPINGID)
        where LI.FINANCIALTRANSACTIONID = @FINANCIALTRANSACTIONID and LI.POSTSTATUSCODE != 3
            and (LI.POSTDATE = isnull(@POSTDATE, LI.POSTDATE))
            and (LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = isnull(@DETAILID, LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID)
                or (LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is null and @DETAILID is null)
                or (@DETAILID = @FINANCIALTRANSACTIONID and LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is null))

        union all

        select 
            JE.ID
            ,LI.POSTDATE
            ,LI.POSTSTATUS
            ,LI.POSTSTATUSCODE
            ,A.ACCOUNTNUMBER
            ,A.ACCOUNTALIAS
            ,A.ACCOUNTDESCRIPTION
            ,case when JE.TRANSACTIONTYPECODE = 0 
                then case @CURRENCYCODE
                    when 0 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.TRANSACTIONAMOUNT , 0) else JE.TRANSACTIONAMOUNT end
                    when 1 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.BASEAMOUNT , 0) else JE.BASEAMOUNT end
                    else case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.ORGAMOUNT , 0) else JE.ORGAMOUNT end
                end
                else null 
            end [DEBITAMOUNT]
            ,case when JE.TRANSACTIONTYPECODE = 1
                then case @CURRENCYCODE
                    when 0 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.TRANSACTIONAMOUNT , 0) else JE.TRANSACTIONAMOUNT end
                    when 1 then case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.BASEAMOUNT , 0) else JE.BASEAMOUNT end
                    else case when JE.TRANSACTIONCURRENCYID is null and JE.TYPECODE = 1 then nullif(JE.ORGAMOUNT , 0) else JE.ORGAMOUNT end
                end
                else null 
            end [CREDITAMOUNT]
            ,case when LI.TYPECODE = 1 then 'Reversal - ' else '' end + JE.COMMENT [COMMENT]
            ,case @CURRENCYCODE
                when 0 then JE.TRANSACTIONCURRENCYID 
                when 1 then @BASECURRENCYID
                else @ORGANIZATIONCURRENCYID end [CURRENCYID]
            ,case when LI.TYPECODE = 1 then 1 else 0 end [ISREVERSAL]
            ,case JE.TYPECODE
                when 0 then
                    case when isnull(ORIGINAL_JEX.TABLENAMECODE, JEX.TABLENAMECODE) is null then 999
                    else case isnull(ORIGINAL_JEX.TABLENAMECODE, JEX.TABLENAMECODE)
                        when 0 then 1
                        when 5 then case isnull(ORIGINAL_JEX.BENEFITTYPECODE, JEX.BENEFITTYPECODE) 
                            when 1 then 5 
                            when 2 then 105 
                            when 3 then 205 
                            when 4 then 998 end
                        when 6 then case LI.TYPECODE when 5 then 6 when 1 then 6 else 106 end
                        else isnull(ORIGINAL_JEX.TABLENAMECODE, JEX.TABLENAMECODE) end end
                else 997 end [TABLENAMECODE]
            ,JE.TRANSACTIONTYPECODE
            ,JE.GLACCOUNTID
            ,LI.DELETEDON
            ,LI.FINANCIALTRANSACTIONID
            ,RS.APPLICATIONCODE
            ,RS.TYPECODE RSTYPECODE
            ,FT.TYPECODE FTTYPECODE
            ,MT.DESCRIPTION MAPPINGTYPE
            ,FT.[DATE] FT_DATE
            ,case @CURRENCYCODE
                when 0 then FT.TRANSACTIONAMOUNT
                when 1 then FT.BASEAMOUNT
                else FT.ORGAMOUNT
             end [FT_AMOUNT]
            ,case @CURRENCYCODE
                when 0 then FT.TRANSACTIONCURRENCYID 
                when 1 then @BASECURRENCYID
                else @ORGANIZATIONCURRENCYID 
             end [FT_CURRENCYID]
            ,FT.POSTSTATUSCODE [FT_POSTSTATUSCODE]
            ,LI.BATCHID
            ,isnull(JEX.REVENUESPLITGIFTAIDID, LI.ID) [FINANCIALTRANSACTIONLINEITEMID]
        from dbo.JOURNALENTRY JE
        inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID
        inner join dbo.FINANCIALTRANSACTION FT on FT.ID = LI.FINANCIALTRANSACTIONID
        inner join dbo.GLACCOUNT A on A.ID = JE.GLACCOUNTID
        left join dbo.REVENUESPLIT_EXT RS on RS.ID = isnull(LI.REVERSEDLINEITEMID, LI.ID)
        left join dbo.JOURNALENTRY_EXT ORIGINAL_JEX on JEX.REVERSEDGLTRANSACTIONID = ORIGINAL_JEX.ID
        left join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING MT on MT.ID = isnull(ORIGINAL_JEX.GLPAYMENTMETHODREVENUETYPEMAPPINGID, JEX.GLPAYMENTMETHODREVENUETYPEMAPPINGID)
        where FT.PARENTID = @FINANCIALTRANSACTIONID and LI.POSTSTATUSCODE != 3 and FT.TYPECODE != 23
            and (LI.POSTDATE = isnull(@POSTDATE, LI.POSTDATE))
            and (LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = isnull(@DETAILID, LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID)
                or (LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is null and @DETAILID is null)
                or (@DETAILID = FT.ID and LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is null)))

    select T.ID
        ,T.POSTDATE
        ,T.POSTSTATUS
        ,isnull(nullif(T.ACCOUNTALIAS, ''), T.ACCOUNTNUMBER) ACCOUNTNUMBER
        ,T.ACCOUNTALIAS
        ,T.ACCOUNTDESCRIPTION
        ,T.DEBITAMOUNT
        ,T.CREDITAMOUNT
        ,T.COMMENT
        ,T.CURRENCYID
        ,T.ISREVERSAL
        ,T.TABLENAMECODE
        ,case when T.DELETEDON is null then 0 else 1 end DELETED
        ,T.TABLENAMECODE ACTUAL_TABLENAMECODE
        ,T.FINANCIALTRANSACTIONID
        ,T.TRANSACTIONTYPECODE
        ,T.APPLICATIONCODE
        ,T.RSTYPECODE
        ,T.FTTYPECODE
        ,T.MAPPINGTYPE
        ,BATCH.BATCHNUMBER BATCHID
        ,T.FT_DATE
        ,T.FT_AMOUNT
        ,T.FT_CURRENCYID
        ,T.FT_POSTSTATUSCODE
        ,T.FINANCIALTRANSACTIONLINEITEMID
    from DIST_CTE T
    left join dbo.BATCH on T.BATCHID = BATCH.ID
    order by T.POSTDATE desc, T.DELETEDON, T.ISREVERSAL, T.TRANSACTIONTYPECODE, isnull(nullif(T.ACCOUNTALIAS, ''), T.ACCOUNTNUMBER), T.DEBITAMOUNT, T.CREDITAMOUNT asc