USP_REPORT_PREPOSTTOGLMULTICURRENCY

Parameters

Parameter Parameter Type Mode Description
@ID nvarchar(36) IN

Definition

Copy

Create procedure [dbo].[USP_REPORT_PREPOSTTOGLMULTICURRENCY](@ID nvarchar(36)) 
as
begin 

    set transaction isolation level read uncommitted

    set nocount on;

    declare @filterTable varchar(150)
    declare @sql nvarchar(4000);
    declare @depositFilterTable varchar(150);
    declare @adjustmentFiltertable varchar(150);
    declare @AllRevenues bit = 1
    declare @AllAdjustments bit = 1
    declare @AllDeposits bit = 1

    declare @BASECURRENCYID uniqueidentifier;
    declare @BASEISOCURRENCYCODE nvarchar(3);
    declare @BASECURRENCYSYMBOL nvarchar(5);
    declare @BASEDECIMALDIGITS tinyint;
    declare @BASECURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;

    declare @ORGISOCURRENCYCODE nvarchar(3);
    declare @ORGCURRENCYSYMBOL nvarchar(5);
    declare @ORGDECIMALDIGITS tinyint;
    declare @ORGCURRENCYSYMBOLDISPLAYSETTINGCODE tinyint;

    declare @PDACCOUNTSYSTEMID nvarchar(36);
    set @PDACCOUNTSYSTEMID = (select PDACCOUNTSYSTEMID from dbo.POSTTOGLPROCESS p where p.ID = @ID);  

    select @AllRevenues = case t1.POSTINGOPTIONCODE when 3 then 0 else 1 end
    from dbo.POSTTOGLPROCESS as t1
    where t1.ID = @ID;

    select @AllAdjustments = case t1.ADJUSTMENTPOSTINGOPTIONCODE when 2 then 0 else 1 end
    from dbo.POSTTOGLPROCESS as t1
    where t1.ID = @ID;

    select @AllDeposits = case t1.DEPOSITPOSTINGOPTIONCODE when 1 then 0 else 1 end
    from dbo.POSTTOGLPROCESS as t1
    where t1.ID = @ID;

    select 
        @BASECURRENCYID = coalesce(CURRENCYSET.BASECURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY())
    from
        dbo.POSTTOGLPROCESS
        left join dbo.PDACCOUNTSYSTEM ON POSTTOGLPROCESS.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
        left join dbo.CURRENCYSET ON PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
    where 
        POSTTOGLPROCESS.ID = @ID;

    select 
        @BASEISOCURRENCYCODE = CURRENCYPROPERTIES.ISO4217,
        @BASECURRENCYSYMBOL = CURRENCYPROPERTIES.CURRENCYSYMBOL,
        @BASEDECIMALDIGITS = CURRENCYPROPERTIES.DECIMALDIGITS,
        @BASECURRENCYSYMBOLDISPLAYSETTINGCODE = CURRENCYPROPERTIES.SYMBOLDISPLAYSETTINGCODE        
    from
         dbo.UFN_CURRENCY_GETPROPERTIES(@BASECURRENCYID) CURRENCYPROPERTIES;

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

    select 
        @filterTable= 'dbo.' + t2.DBOBJECTNAME + case t2.objecttype when 1 then '()' else '' end
    from 
        dbo.POSTTOGLPROCESS as t1
        inner join dbo.IDSETREGISTER as t2 on t1.IDSETREGISTERID=t2.ID 
    where 
        t1.ID = @ID ;

    select 
        @depositFilterTable= 'dbo.' + t2.DBOBJECTNAME + case t2.objecttype when 1 then '()' else '' end
    from 
        dbo.POSTTOGLPROCESS as t1
        inner join dbo.IDSETREGISTER as t2 on t1.DEPOSITIDSETREGISTERID=t2.ID 
    where 
        t1.ID = @ID ;

    select 
        @adjustmentFiltertable= 'dbo.' + t2.DBOBJECTNAME + case t2.objecttype when 1 then '()' else '' end
    from 
        dbo.POSTTOGLPROCESS as t1
        inner join IDSETREGISTER as t2 on t1.ADJUSTMENTIDSETREGISTERID=t2.ID 
    where 
        t1.ID = @ID ;

    create table #FilterTable (ID uniqueidentifier)
    create table #AdjustmentTable (ID uniqueidentifier)
    create table #DepositTable (ID uniqueidentifier)

    if @filterTable is not null
        begin
        set @SQL = 'insert into #FilterTable (ID) select ID from '+@filterTable
        exec (@SQL)
        set @AllRevenues = 0
        end

    if @adjustmentFiltertable is not null
        begin
        set @SQL = 'insert into #AdjustmentTable (ID) select ID from '+@adjustmentFiltertable
        exec (@SQL)
        set @AllAdjustments = 0
        end

    if @depositFilterTable is not null
        begin
        set @SQL = 'insert into #DepositTable (ID) select ID from '+@depositFilterTable
        exec (@SQL)
        set @AllDeposits = 0
        end    

    select 
        f1.ID, 
        f1.REVENUEID, 
        f1.DEPOSITCORRECTIONID, 
        f1.ADJUSTMENTID,
                f1.ACCOUNT as ACCOUNT2,
        isnull(nullif(ga.ACCOUNTALIAS,''),f1.ACCOUNT) as ACCOUNT,
        f1.LOOKUPID, 
        f1.POSTDATE, 
        f1.TRANSACTIONTYPECODE, 
        f1.AMOUNT, 
        f1.JOURNAL, 
        f1.REFERENCE, 
        f1.DEPOSITID, 
        f1.DEPOSITLINKID, 
        f1.DEPOSITNUMBER, 
        f1.PERIODID, 
        f1.SUMMARYDATE, 
        f1.GROUPBY, 
        f1.ISEXCEPTION, 
        f1.EXCEPTIONREASON,
        @BASEISOCURRENCYCODE as ISOCURRENCYCODE,
        @BASECURRENCYSYMBOL as CURRENCYSYMBOL,
        @BASEDECIMALDIGITS as CURRENCYDECIMALDIGITS,
        @BASECURRENCYSYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE, 
        f1.TRANSACTIONAMOUNT, 
        f1.TRANSACTIONISOCURRENCYCODE, 
        f1.TRANSACTIONCURRENCYSYMBOL, 
        f1.TRANSACTIONCURRENCYDECIMALDIGITS, 
        f1.TRANSACTIONCURRENCYSYMBOLDISPLAYSETTINGCODE, 
        f1.ORGANIZATIONAMOUNT,
        @ORGISOCURRENCYCODE as ORGANIZATIONISOCURRENCYCODE,
        @ORGCURRENCYSYMBOL as ORGANIZATIONCURRENCYSYMBOL,
        @ORGDECIMALDIGITS as ORGANIZATIONCURRENCYDECIMALDIGITS,
        @ORGCURRENCYSYMBOLDISPLAYSETTINGCODE as ORGANIZATIONCURRENCYSYMBOLDISPLAYSETTINGCODE,
        f1.CREDITID,
        ga.ACCOUNTDESCRIPTION,
        ga.ACCOUNTALIAS
    from 
        dbo.UFN_PREPOST_DATA(@ID) as f1 
            inner join dbo.GLACCOUNT ga on ga.ACCOUNTNUMBER = f1.ACCOUNT and ga.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
    where 
        (f1.REVENUEIDGUID is not null and (f1.REVENUEIDGUID in (select ID from #FilterTable) or @AllRevenues = 1)  and f1.DEPOSITID is null)
        or
        (f1.ADJUSTMENTIDGUID is not null and (f1.ADJUSTMENTIDGUID in (select ID from #AdjustmentTable) or @AllAdjustments = 1))
        or
        (f1.DEPOSITID is not null and (f1.DEPOSITID in (select ID from #DepositTable) or @AllDeposits = 1))
        or
        (f1.REVENUEIDGUID is null and f1.ADJUSTMENTIDGUID is null and f1.DEPOSITID is null and @AllRevenues = 1)

    drop table #FilterTable 
    drop table #AdjustmentTable 
    drop table #DepositTable

end