USP_DATALIST_REVENUEGLDISTRIBUTIONDEPOSIT

A datalist of revenue GL distribution (projected or user-defined) by Deposit

Parameters

Parameter Parameter Type Mode Description
@DEPOSITID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@SYSTEMDISTRIBUTION bit IN System distributions

Definition

Copy


CREATE procedure dbo.USP_DATALIST_REVENUEGLDISTRIBUTIONDEPOSIT (
    @DEPOSITID uniqueidentifier
    ,@SYSTEMDISTRIBUTION bit = 0
) as 
    set nocount on;

    declare @TempTbl Table (
        ID uniqueidentifier
        ,TYPECODE tinyint
        ,GLDISTRIBUTIONID uniqueidentifier
        ,DESCRIPTION nvarchar(100)
        ,TRANSACTIONTYPE nvarchar(100)
        ,ACCOUNT nvarchar(100)
        ,PROJECT nvarchar(100)
        ,AMOUNT money
        ,REFERENCE nvarchar(255)
        ,TRANSACTIONAMOUNT money
        ,BASEAMOUNT money
        ,ORGANIZATIONAMOUNT money
        ,TRANSACTIONCURRENCYID uniqueidentifier
        ,BASECURRENCYID uniqueidentifier
        ,ACCOUNTALIAS nvarchar(255)
        ,ISO4217 nvarchar(3)
        ,CURRENCYSYMBOL nvarchar(5)
        ,SYMBOLDISPLAYSETTINGCODE tinyint
        ,DECIMALDIGITS tinyint
        ,TRANSACTIONDEBITAMOUNT money
        ,TRANSACTIONCREDITAMOUNT money
        ,ORGANIZATIONDEBITAMOUNT money
        ,ORGANIZATIONCREDITAMOUNT money
        ,BASEDEBITAMOUNT money
        ,BASECREDITAMOUNT money
        ,BASEISO4217 nvarchar(3)
        ,BASECURRENCYSYMBOL nvarchar(5)
        ,BASESYMBOLDISPLAYSETTINGCODE tinyint
        ,BASEDECIMALDIGITS tinyint
        ,ORGISO4217 nvarchar(3)
        ,ORGCURRENCYSYMBOL nvarchar(5)
        ,ORGSYMBOLDISPLAYSETTINGCODE tinyint
        ,ORGDECIMALDIGITS tinyint
    );

    declare @BASECURRENCYID uniqueidentifier;
    declare @BASEISO4217 nvarchar(3);
    declare @BASECURRENCYSYMBOL nvarchar(5);
    declare @BASEDECIMALDIGITS tinyint;
    declare @BASESYMBOLDISPLAYSETTINGCODE tinyint;

    declare @ORGISO4217 nvarchar(3);
    declare @ORGCURRENCYSYMBOL nvarchar(5);
    declare @ORGDECIMALDIGITS tinyint;
    declare @ORGSYMBOLDISPLAYSETTINGCODE tinyint;

    select @BASECURRENCYID = BAT.BASECURRENCYID
    from dbo.BANKACCOUNTTRANSACTION BAT
    where BAT.ID = @DEPOSITID;

    select 
        @BASEISO4217 = CURRENCYPROPERTIES.ISO4217,
        @BASECURRENCYSYMBOL = CURRENCYPROPERTIES.CURRENCYSYMBOL,
        @BASEDECIMALDIGITS = CURRENCYPROPERTIES.DECIMALDIGITS,
        @BASESYMBOLDISPLAYSETTINGCODE = CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE        
    from
    dbo.UFN_CURRENCY_GETPROPERTIES(@BASECURRENCYID) CURRENCYPROPERTIES 

    select 
        @ORGISO4217 = CURRENCY.ISO4217,
        @ORGCURRENCYSYMBOL = CURRENCY.CURRENCYSYMBOL,
        @ORGDECIMALDIGITS = CURRENCY.DECIMALDIGITS,
        @ORGSYMBOLDISPLAYSETTINGCODE = CURRENCY.SYMBOLDISPLAYSETTINGCODE        
        from dbo.CURRENCY
    where CURRENCY.ISORGANIZATIONCURRENCY = 1;

    insert into @TempTbl (ID, TYPECODE, GLDISTRIBUTIONID, DESCRIPTION, TRANSACTIONTYPE, ACCOUNT, PROJECT, AMOUNT, REFERENCE, TRANSACTIONAMOUNT, BASEAMOUNT, ORGANIZATIONAMOUNT, TRANSACTIONCURRENCYID, BASECURRENCYID, ACCOUNTALIAS,ISO4217,CURRENCYSYMBOL,SYMBOLDISPLAYSETTINGCODE,DECIMALDIGITS,TRANSACTIONDEBITAMOUNT,TRANSACTIONCREDITAMOUNT,ORGANIZATIONDEBITAMOUNT,ORGANIZATIONCREDITAMOUNT,BASEDEBITAMOUNT,BASECREDITAMOUNT,BASEISO4217,BASECURRENCYSYMBOL,BASESYMBOLDISPLAYSETTINGCODE,BASEDECIMALDIGITS,ORGISO4217,ORGCURRENCYSYMBOL,ORGSYMBOLDISPLAYSETTINGCODE,ORGDECIMALDIGITS)
    select 
        BANKACCOUNTDEPOSITPAYMENT.ID
        ,1 as [TYPECODE]
        ,isnull(JEX.DISTRIBUTIONTABLEID, JE.ID) as GLDISTRIBUTIONID
        ,MAP.DESCRIPTION
        ,JE.TRANSACTIONTYPE
        ,coalesce(GLACCOUNT.ACCOUNTNUMBER,JEX.ACCOUNT,'') ACCOUNT
        ,JEX.PROJECT
        ,JE.BASEAMOUNT AMOUNT
        ,JE.COMMENT REFERENCE
        ,case when JE.TRANSACTIONCURRENCYID is null then nullif(JE.TRANSACTIONAMOUNT, 0) else JE.TRANSACTIONAMOUNT end
        ,case when JE.TRANSACTIONCURRENCYID is null then nullif(JE.BASEAMOUNT, 0) else JE.BASEAMOUNT end
        ,case when JE.TRANSACTIONCURRENCYID is null then nullif(JE.ORGAMOUNT, 0) else JE.ORGAMOUNT end
        ,JE.TRANSACTIONCURRENCYID
        ,@BASECURRENCYID
        ,GLACCOUNT.ACCOUNTALIAS
        ,CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE
        ,CURRENCYPROPERTIES.CURRENCYSYMBOL
        ,CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE
        ,CURRENCYPROPERTIES.DECIMALDIGITS
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.TRANSACTIONAMOUNT  else 0 end as TRANSACTIONDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.TRANSACTIONAMOUNT  else 0 end as TRANSACTIONCREDITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.ORGAMOUNT  else 0 end as ORGANIZATIONDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.ORGAMOUNT  else 0 end as ORGANIZATIONCREDITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.BASEAMOUNT  else 0 end as BASEDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.BASEAMOUNT  else 0 end as BASECREDITAMOUNT     
        ,@BASEISO4217 as BASEISO4217
        ,@BASECURRENCYSYMBOL as BASECURRENCYSYMBOL
        ,@BASESYMBOLDISPLAYSETTINGCODE as BASESYMBOLDISPLAYSETTINGCODE
        ,@BASEDECIMALDIGITS as BASEDECIMALDIGITS
        ,@ORGISO4217 as ORGISO4217
        ,@ORGCURRENCYSYMBOL as ORGCURRENCYSYMBOL
        ,@ORGSYMBOLDISPLAYSETTINGCODE as ORGSYMBOLDISPLAYSETTINGCODE
        ,@ORGDECIMALDIGITS as ORGDECIMALDIGITS
    from dbo.JOURNALENTRY JE
    inner join dbo.JOURNALENTRY_EXT JEX on JEX.ID = JE.ID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID
    inner join dbo.BANKACCOUNTDEPOSITPAYMENT on BANKACCOUNTDEPOSITPAYMENT.ID = LI.FINANCIALTRANSACTIONID
    inner join dbo.GLACCOUNT on GLACCOUNT.ID = JE.GLACCOUNTID
    left join dbo.JOURNALENTRY_EXT ADJX on ADJX.REVERSEDGLTRANSACTIONID = JE.ID
    left join dbo.JOURNALENTRY ADJ on ADJ.ID = ADJX.ID
    left join dbo.FINANCIALTRANSACTIONLINEITEM ADJ_LI on ADJ_LI.ID = ADJ.FINANCIALTRANSACTIONLINEITEMID
    inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as MAP on JEX.GLPAYMENTMETHODREVENUETYPEMAPPINGID = MAP.ID
    outer apply dbo.UFN_CURRENCY_GETPROPERTIES(JE.TRANSACTIONCURRENCYID) CURRENCYPROPERTIES  
    where BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = @DEPOSITID
    and (JEX.OUTDATED = 0 or (JEX.OUTDATED = 1 and ADJ_LI.POSTSTATUSCODE = 3))
    and JE.TYPECODE = case @SYSTEMDISTRIBUTION when 1 then 1 else 0 end
    and JEX.TABLENAMECODE in (1, 2)

    union all

    select
        FT.ID
        ,2 as [TYPECODE]
        ,isnull(JEX.DISTRIBUTIONTABLEID, JE.ID) as GLDISTRIBUTIONID
        ,'' as [DESCRIPTION]
        ,JE.TRANSACTIONTYPE
        ,GLACCOUNT.ACCOUNTNUMBER ACCOUNT
        ,JEX.PROJECT
        ,JE.BASEAMOUNT AMOUNT
        ,JE.COMMENT REFERENCE
        ,case when JE.TRANSACTIONCURRENCYID is null then nullif(JE.TRANSACTIONAMOUNT, 0) else JE.TRANSACTIONAMOUNT end
        ,case when JE.TRANSACTIONCURRENCYID is null then nullif(JE.BASEAMOUNT, 0) else JE.BASEAMOUNT end
        ,case when JE.TRANSACTIONCURRENCYID is null then nullif(JE.ORGAMOUNT, 0) else JE.ORGAMOUNT end
        ,JE.TRANSACTIONCURRENCYID
        ,@BASECURRENCYID
        ,GLACCOUNT.ACCOUNTALIAS
        ,CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE
        ,CURRENCYPROPERTIES.CURRENCYSYMBOL
        ,CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE
        ,CURRENCYPROPERTIES.DECIMALDIGITS
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.TRANSACTIONAMOUNT  else 0 end as TRANSACTIONDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.TRANSACTIONAMOUNT  else 0 end as TRANSACTIONCREDITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.ORGAMOUNT  else 0 end as ORGANIZATIONDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.ORGAMOUNT  else 0 end as ORGANIZATIONCREDITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.BASEAMOUNT  else 0 end as BASEDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.BASEAMOUNT  else 0 end as BASECREDITAMOUNT     
        ,@BASEISO4217 as BASEISO4217
        ,@BASECURRENCYSYMBOL as BASECURRENCYSYMBOL
        ,@BASESYMBOLDISPLAYSETTINGCODE as BASESYMBOLDISPLAYSETTINGCODE
        ,@BASEDECIMALDIGITS as BASEDECIMALDIGITS
        ,@ORGISO4217 as ORGISO4217
        ,@ORGCURRENCYSYMBOL as ORGCURRENCYSYMBOL
        ,@ORGSYMBOLDISPLAYSETTINGCODE as ORGSYMBOLDISPLAYSETTINGCODE
        ,@ORGDECIMALDIGITS as ORGDECIMALDIGITS
    from dbo.JOURNALENTRY JE
    inner join dbo.JOURNALENTRY_EXT JEX on JEX.ID = JE.ID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID
    inner join dbo.FINANCIALTRANSACTION FT on FT.ID = LI.FINANCIALTRANSACTIONID
    inner join dbo.BANKACCOUNTDEPOSITCORRECTION_EXT on BANKACCOUNTDEPOSITCORRECTION_EXT.ID = FT.ID
    inner join dbo.GLACCOUNT on GLACCOUNT.ID = JE.GLACCOUNTID
    outer apply dbo.UFN_CURRENCY_GETPROPERTIES(JE.TRANSACTIONCURRENCYID) CURRENCYPROPERTIES
    where FT.PARENTID = @DEPOSITID and JE.TYPECODE = (case @SYSTEMDISTRIBUTION when 1 then 1 else 0 end )and FT.TYPECODE in (24,25)

    union all

    select
        CREDITITEM.CREDITID as ID
        ,3 as [TYPECODE]
        ,isnull(JEX.DISTRIBUTIONTABLEID, JE.ID) as GLDISTRIBUTIONID
        ,'' as [DESCRIPTION]
        ,JE.TRANSACTIONTYPE
        ,isnull(GLACCOUNT.ACCOUNTNUMBER,'') as ACCOUNT
        ,''
        ,JE.BASEAMOUNT AMOUNT
        ,isnull(convert(nvarchar(255),JE.COMMENT),'') REFERENCE
        ,nullif(JE.TRANSACTIONAMOUNT, 0)
        ,nullif(JE.TRANSACTIONAMOUNT, 0)
        ,nullif(JE.TRANSACTIONAMOUNT, 0)
        ,@BASECURRENCYID
        ,@BASECURRENCYID
        ,GLACCOUNT.ACCOUNTALIAS
        ,CURRENCYPROPERTIES.ISO4217 as ISOCURRENCYCODE
        ,CURRENCYPROPERTIES.CURRENCYSYMBOL
        ,CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE
        ,CURRENCYPROPERTIES.DECIMALDIGITS 
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.TRANSACTIONAMOUNT  else 0 end as TRANSACTIONDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.TRANSACTIONAMOUNT  else 0 end as TRANSACTIONCREDITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.ORGAMOUNT  else 0 end as ORGANIZATIONDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.ORGAMOUNT  else 0 end as ORGANIZATIONCREDITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 0 then JE.BASEAMOUNT  else 0 end as BASEDEBITAMOUNT
        ,case JE.TRANSACTIONTYPECODE when 1 then JE.BASEAMOUNT  else 0 end as BASECREDITAMOUNT   
        ,@BASEISO4217 as BASEISO4217
        ,@BASECURRENCYSYMBOL as BASECURRENCYSYMBOL
        ,@BASESYMBOLDISPLAYSETTINGCODE as BASESYMBOLDISPLAYSETTINGCODE
        ,@BASEDECIMALDIGITS as BASEDECIMALDIGITS
        ,@ORGISO4217 as ORGISO4217
        ,@ORGCURRENCYSYMBOL as ORGCURRENCYSYMBOL
        ,@ORGSYMBOLDISPLAYSETTINGCODE as ORGSYMBOLDISPLAYSETTINGCODE
        ,@ORGDECIMALDIGITS as ORGDECIMALDIGITS
    from dbo.JOURNALENTRY JE
    inner join dbo.JOURNALENTRY_EXT JEX on JEX.ID = JE.ID
    inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID
    inner join dbo.CREDITITEM_EXT CREDITITEM on CREDITITEM.ID = LI.ID
    inner join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT on JEX.CREDITPAYMENTID = BANKACCOUNTDEPOSITCREDITPAYMENT.ID
    inner join dbo.GLACCOUNT on GLACCOUNT.ID = JE.GLACCOUNTID
    outer apply dbo.UFN_CURRENCY_GETPROPERTIES(isnull(JE.TRANSACTIONCURRENCYID, @BASECURRENCYID)) CURRENCYPROPERTIES  
    where BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID = @DEPOSITID and JE.TYPECODE = case @SYSTEMDISTRIBUTION when 1 then 1 else 0 end

    select ID, TYPECODE, GLDISTRIBUTIONID, DESCRIPTION, TRANSACTIONTYPE, ACCOUNT, PROJECT, AMOUNT, REFERENCE, TRANSACTIONAMOUNT, BASEAMOUNT, ORGANIZATIONAMOUNT, TRANSACTIONCURRENCYID, BASECURRENCYID, ACCOUNTALIAS,ISO4217,CURRENCYSYMBOL,SYMBOLDISPLAYSETTINGCODE,DECIMALDIGITS,TRANSACTIONDEBITAMOUNT,TRANSACTIONCREDITAMOUNT,ORGANIZATIONDEBITAMOUNT,ORGANIZATIONCREDITAMOUNT,BASEDEBITAMOUNT,BASECREDITAMOUNT,BASEISO4217,BASECURRENCYSYMBOL,BASESYMBOLDISPLAYSETTINGCODE,BASEDECIMALDIGITS,ORGISO4217,ORGCURRENCYSYMBOL,ORGSYMBOLDISPLAYSETTINGCODE,ORGDECIMALDIGITS
    from @TempTbl
    order by TRANSACTIONTYPE desc, ACCOUNT asc;