USP_REPORT_PREPOSTTOGLMULTICURRENCY_SUBREPORT

Parameters

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

Definition

Copy

create procedure dbo.USP_REPORT_PREPOSTTOGLMULTICURRENCY_SUBREPORT(@ID nvarchar(36))
with execute as owner
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;

    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 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 dbo.IDSETREGISTER as t2 on t1.ADJUSTMENTIDSETREGISTERID=t2.ID 
    where 
        t1.ID = @ID;

    declare @JOURNAL nvarchar(255);    

    if exists(select CUSTOMJOURNAL from dbo.POSTTOGLPROCESSCUSTOMJOURNAL where len(replace(CUSTOMJOURNAL,' ','')) > 0)
        select @JOURNAL = CUSTOMJOURNAL from dbo.POSTTOGLPROCESSCUSTOMJOURNAL
    else
        select @JOURNAL = PRODUCT from dbo.INSTALLATIONINFO;        

    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 
        @JOURNAL as JOURNAL, --f1.Journal, 

        t2.YEARID as YEARID, 
        t1.SEQUENCE as PERIOD, 
        sum(case TRANSACTIONTYPECODE when 0 then f1.AMOUNT else 0 end) TOTALDEBIT,
        sum(case TRANSACTIONTYPECODE when 1 then f1.AMOUNT else 0 end) TOTALCREDIT,
        @BASEISOCURRENCYCODE as ISOCURRENCYCODE,
        @BASECURRENCYSYMBOL as CURRENCYSYMBOL,
        @BASEDECIMALDIGITS as CURRENCYDECIMALDIGITS,
        @BASECURRENCYSYMBOLDISPLAYSETTINGCODE as CURRENCYSYMBOLDISPLAYSETTINGCODE,
        sum(case TRANSACTIONTYPECODE when 0 then f1.ORGANIZATIONAMOUNT else 0 end) ORGANIZATIONTOTALDEBIT,
        sum(case TRANSACTIONTYPECODE when 1 then f1.ORGANIZATIONAMOUNT else 0 end) ORGANIZATIONTOTALCREDIT,
        @ORGISOCURRENCYCODE as ORGANIZATIONISOCURRENCYCODE,
        @ORGCURRENCYSYMBOL as ORGANIZATIONCURRENCYSYMBOL,
        @ORGDECIMALDIGITS as ORGANIZATIONCURRENCYDECIMALDIGITS,
        @ORGCURRENCYSYMBOLDISPLAYSETTINGCODE as ORGANIZATIONCURRENCYSYMBOLDISPLAYSETTINGCODE
    from 
        dbo.UFN_PREPOST_DATA(@ID) f1
        inner join GLFISCALPERIOD as t1 on f1.PERIODID = t1.ID
        inner join GLFISCALYEAR as t2 on t1.GLFISCALYEARID = t2.ID
    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)
    Group By t2.YEARID, t1.SEQUENCE
    Order By t2.YEARID, t1.SEQUENCE

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

end