USP_REPORT_ACCOUNTCODE_DETAIL

This returns data for the account code report header section.

Parameters

Parameter Parameter Type Mode Description
@STARTDATE datetime IN
@ENDDATE datetime IN
@DATETYPE nvarchar(36) IN
@ACCOUNTCODEQUERY uniqueidentifier IN
@ACCOUNTCODEID uniqueidentifier IN
@ACCOUNTSTRUCTUREID uniqueidentifier IN
@INCLUDEINACTIVE bit IN
@INCLUDENOTPOSTED bit IN
@INCLUDENOACTIVITY bit IN

Definition

Copy


CREATE procedure dbo.USP_REPORT_ACCOUNTCODE_DETAIL(
 @STARTDATE datetime = null,
 @ENDDATE datetime = null,
 @DATETYPE nvarchar(36) = null,
 @ACCOUNTCODEQUERY uniqueidentifier = null,
 @ACCOUNTCODEID uniqueidentifier = null,
 @ACCOUNTSTRUCTUREID uniqueidentifier = null,
 @INCLUDEINACTIVE bit = 0,
 @INCLUDENOTPOSTED bit = 0,
 @INCLUDENOACTIVITY bit = 0
)
with execute as owner
as
set nocount on;

  declare @SQLTOEXEC nvarchar(max);

  create table #BALANCE (DATAELEMENTID uniqueidentifier, SHORTID nvarchar(100) collate DATABASE_DEFAULT, BALANCE money);

    exec dbo.USP_REPORT_ELEMENTACTIVITY_GETSTARTENDDATES @DATETYPE, @STARTDATE output, @ENDDATE output;

    declare @COLUMN as int;
    select @COLUMN = SEGMENTCOLUMN 
        from 
            PDACCOUNTSTRUCTURE 
        where PDACCOUNTSTRUCTURE.ID=@ACCOUNTSTRUCTUREID;



  insert into #BALANCE exec dbo.USP_REPORT_ELEMENTBALANCE @STARTDATE, @ACCOUNTCODEQUERY, @ACCOUNTCODEID, @COLUMN, @ACCOUNTSTRUCTUREID, @INCLUDENOTPOSTED

  set @SQLTOEXEC = 
                    'select    
             PDACCOUNTSEGMENTVALUE.SHORTDESCRIPTION as SHORTID,
             PDACCOUNTSEGMENTVALUE.DESCRIPTION as DESCRIPTION,
             PDACCOUNTSTRUCTURE.DESCRIPTION as ELEMENTNAME,
             T.POSTDATE as TRANSACTIONDATE,
            isnull(T.SEQUENCE,0) AS SEQUENCE,
             isnull(T.BATCHNUMBER,0) AS BATCHNUMBER,
             T.COMMENT AS JOURNALREF,
             (select case T.TRANSACTIONTYPECODE WHEN 0 THEN T.AMOUNT else 0 END) AS DEBITAMOUNT,
            (select case T.TRANSACTIONTYPECODE WHEN 1 THEN T.AMOUNT else 0 END) AS CREDITAMOUNT,
             case when AC.ID is not null then case AC.NORMALBALANCECODE when 2 then -1 else 1 end else 1 end AS BALANCETYPE,
             CASE WHEN T.TYPECODE = 101 THEN ''http://www.blackbaud.com?INVOICEID='' + CONVERT(nvarchar(36), T.FTID) ELSE '''' END as [INVOICEID],
             CASE WHEN T.TYPECODE = 102 THEN ''http://www.blackbaud.com?CREDITMEMOID='' + CONVERT(nvarchar(36), T.FTID) ELSE '''' END as [CREDITMEMOID],
             CASE WHEN T.TYPECODE = 103 THEN ''http://www.blackbaud.com?JOURNALENTRYBATCHID='' + CONVERT(nvarchar(36), T.FTLIID) ELSE '''' END as [JOURNALENTRYBATCHID],
             isnull(BALANCE.BALANCE,0) as BALANCE,
             case when AC.ID is not null then case AC.CONTRAACCOUNT when 1 then -1 else 1 end else 1 end as CONTRA,
             T.JOURNAL as JOURNAL,
             T.TYPECODE as TYPECODE,
             T.TRANDESCRIPTION as TRANDESCRIPTION,
             (select case T.POSTSTATUSCODE when 2 then 1 else 0 end) as POSTED,
             T.NAME as VENDOR
            from dbo.PDACCOUNTSEGMENTVALUE' + nchar(13);

            if @ACCOUNTCODEQUERY is not null
                    set @SQLTOEXEC = @SQLTOEXEC + 'inner join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@ACCOUNTCODEQUERY) as SELECTION on PDACCOUNTSEGMENTVALUE.[ID] = SELECTION.[ID]' + nchar(13);

                set @SQLTOEXEC = @SQLTOEXEC + 
            N'left join 
            (select JE.DATAELEMENT' + cast(@COLUMN as nvarchar(3)) + 'ID as DATAELEMENTID, JE.POSTDATE, JE.SEQUENCE, JEB.BATCHNUMBER, JE.COMMENT, JE.TRANSACTIONTYPECODE, 
            JE.AMOUNT, JC.DESCRIPTION as JOURNAL, FT.TYPECODE, FT.DESCRIPTION as TRANDESCRIPTION, FT.POSTSTATUSCODE, CONSTITUENT.NAME,
            FT.ID as FTID, FTLI.ID as FTLIID
            from dbo.JOURNALENTRY JE
            left join FINANCIALTRANSACTIONLINEITEM FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
            left join FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
            left join dbo.CONSTITUENT on CONSTITUENT.ID = FT.CONSTITUENTID
            left join dbo.JOURNALENTRYBATCH JEB on FT.ID = JEB.ID
            left join dbo.JOURNALCODE JC on JE.JOURNALCODEID = JC.ID
            where JE.POSTDATE between @STARTDATE and @ENDDATE
            and (@INCLUDENOTPOSTED = 1 or FT.POSTSTATUSCODE = 2)) T on T.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
            left join dbo.PDACCOUNTSTRUCTURE on PDACCOUNTSEGMENTVALUE.PDACCOUNTSTRUCTUREID = PDACCOUNTSTRUCTURE.ID
            left join dbo.ACCOUNTCODE AC on PDACCOUNTSEGMENTVALUE.ID = AC.ID
            left join #BALANCE BALANCE on BALANCE.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
                    where 
                          (@ACCOUNTCODEID is null or 
                          T.DATAELEMENTID = @ACCOUNTCODEID 
              or PDACCOUNTSEGMENTVALUE.ID = @ACCOUNTCODEID)
              and PDACCOUNTSTRUCTURE.SEGMENTCOLUMN = @COLUMN
              and (@ACCOUNTCODEID is not null or @INCLUDEINACTIVE = 1 or PDACCOUNTSEGMENTVALUE.ISACTIVE = 1)
              and (@ACCOUNTCODEID is not null or @INCLUDENOACTIVITY = 1 or T.DATAELEMENTID is not null or isnull(BALANCE.BALANCE,0) <> 0)
                          '

                exec sp_executesql @SQLTOEXEC
                    N'@STARTDATE datetime, @ENDDATE datetime, @ACCOUNTCODEID uniqueidentifier, @COLUMN int, @INCLUDEINACTIVE bit, @INCLUDENOTPOSTED bit, @INCLUDENOACTIVITY bit, @ACCOUNTCODEQUERY uniqueidentifier',
                    @STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @ACCOUNTCODEID=@ACCOUNTCODEID, @COLUMN=@COLUMN, @INCLUDEINACTIVE=@INCLUDEINACTIVE, @INCLUDENOTPOSTED=@INCLUDENOTPOSTED, @INCLUDENOACTIVITY=@INCLUDENOACTIVITY, @ACCOUNTCODEQUERY=@ACCOUNTCODEQUERY;

        drop table #BALANCE;