USP_REPORT_ACCOUNTCODE_SUMMARY
This returns data for the summary version of the account code ledger detail report.
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_SUMMARY
(
@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);
create table #DATAELEMENTS (DATAELEMENTID uniqueidentifier)
declare @COLUMN as int;
select @COLUMN = SEGMENTCOLUMN
from PDACCOUNTSTRUCTURE
where ID=@ACCOUNTSTRUCTUREID;
exec dbo.USP_REPORT_ELEMENTACTIVITY_GETSTARTENDDATES @DATETYPE, @STARTDATE output, @ENDDATE output;
insert into #BALANCE exec dbo.USP_REPORT_ELEMENTBALANCE @STARTDATE, @ACCOUNTCODEQUERY, @ACCOUNTCODEID, @COLUMN, @ACCOUNTSTRUCTUREID, @INCLUDENOTPOSTED
declare @QUERYSTRING nvarchar(200)
if @ACCOUNTCODEQUERY is not null
set @QUERYSTRING = ' inner join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@ACCOUNTCODEQUERY) as SELECTION on JE.DATAELEMENT'+cast(@COLUMN as nvarchar(3))+N'ID = SELECTION.[ID]'
else
set @QUERYSTRING = ''
if @ACCOUNTCODEID is not null
begin
insert into #DATAELEMENTS(DATAELEMENTID)
values(@ACCOUNTCODEID)
end
else
begin
if @ACCOUNTCODEQUERY is not null
begin
insert into #DATAELEMENTS(DATAELEMENTID)
select SELECTION.ID
from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@ACCOUNTCODEQUERY) as SELECTION
inner join dbo.PDACCOUNTSEGMENTVALUE on selection.ID = PDACCOUNTSEGMENTVALUE.ID
where @INCLUDEINACTIVE = 1 or PDACCOUNTSEGMENTVALUE.ISACTIVE = 1
end
else
begin
insert into #DATAELEMENTS(DATAELEMENTID)
select ID
from dbo.PDACCOUNTSEGMENTVALUE
where PDACCOUNTSTRUCTUREID = @ACCOUNTSTRUCTUREID
and (@INCLUDEINACTIVE = 1 or ISACTIVE = 1)
end
end
set @SQLTOEXEC =
'select
FP.ENDDATE as TRANSACTIONDATE,
DE.SHORTDESCRIPTION as SHORTID,
DE.DESCRIPTION as DESCRIPTION,
ACTST.DESCRIPTION as ELEMENTNAME,
isnull(SUM(case T4.TRANSACTIONTYPECODE WHEN 0 THEN T4.AMOUNT END),0) as DEBITAMOUNT,
isnull(SUM(case T4.TRANSACTIONTYPECODE WHEN 1 THEN T4.AMOUNT END),0) as CREDITAMOUNT,
isnull(SUM(T4.AMOUNT *
(case when ACCOUNTCODE.ID is not null then
case when T4.TRANSACTIONTYPECODE = (ACCOUNTCODE.NORMALBALANCECODE-1) then
case when ACCOUNTCODE.ID is not null then case ACCOUNTCODE.CONTRAACCOUNT when 1 then -1 else 1 end else 1 end
else case when ACCOUNTCODE.ID is not null then case ACCOUNTCODE.CONTRAACCOUNT when 1 then 1 else -1 end else -1 end end
else case T4.TRANSACTIONTYPECODE when 0 then 1 else -1 end end)),0) as AMOUNT,
isnull(BALANCE.BALANCE,0) as BALANCE,
FP.GLFISCALYEARID as FISCALYEARID
from
(select * from
(select DE.DATAELEMENTID
from #DATAELEMENTS DE
left join (select distinct JE.DATAELEMENT'+cast(@COLUMN as nvarchar(3))+N'ID as DATAELEMENTID
from dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FINANCIALTRANSACTIONID
inner join dbo.JOURNALENTRY JE on FTLI.ID = JE.FINANCIALTRANSACTIONLINEITEMID' + @QUERYSTRING +
' where ((FT.TYPECODE = 103 and JE.POSTDATE between @STARTDATE and @ENDDATE)
or (FT.TYPECODE <> 103 and FTLI.POSTDATE between @STARTDATE and @ENDDATE))
and (@ACCOUNTCODEID is null or JE.DATAELEMENT'+cast(@COLUMN as nvarchar(3))+N'ID = @ACCOUNTCODEID)
and (@INCLUDENOTPOSTED = 1 or FTLI.POSTSTATUSCODE = 2)) T on DE.DATAELEMENTID = T.DATAELEMENTID
left join #BALANCE BALANCE2 on BALANCE2.DATAELEMENTID = DE.DATAELEMENTID
where @ACCOUNTCODEID is not null or @INCLUDENOACTIVITY = 1 or T.DATAELEMENTID is not null or isnull(BALANCE2.BALANCE,0) <> 0) T5
cross join
(select ID as FISCALPERIODID
from dbo.GLFISCALPERIOD
where ((STARTDATE >= @STARTDATE and STARTDATE <= @ENDDATE)
or (ENDDATE >= @STARTDATE and ENDDATE <= @ENDDATE))) T2) T3
inner join dbo.PDACCOUNTSEGMENTVALUE DE on T3.DATAELEMENTID = DE.ID
inner join dbo.PDACCOUNTSTRUCTURE ACTST on DE.PDACCOUNTSTRUCTUREID = ACTST.ID
inner join dbo.GLFISCALPERIOD FP on T3.FISCALPERIODID = FP.ID
left outer join
(select JE.AMOUNT, JE.TRANSACTIONTYPECODE, JE.DATAELEMENT'+cast(@COLUMN as nvarchar(3))+N'ID as DATAELEMENTID,
case FT.TYPECODE when 103 then JE.POSTDATE else FTLI.POSTDATE end as TRANSACTIONDATE
from dbo.FINANCIALTRANSACTION FT
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on FT.ID = FINANCIALTRANSACTIONID
inner join dbo.JOURNALENTRY JE on FTLI.ID = JE.FINANCIALTRANSACTIONLINEITEMID' + @QUERYSTRING +
' where ((FT.TYPECODE = 103 and JE.POSTDATE between @STARTDATE and @ENDDATE)
or (FT.TYPECODE <> 103 and FTLI.POSTDATE between @STARTDATE and @ENDDATE))
and (@INCLUDENOTPOSTED = 1 or FTLI.POSTSTATUSCODE = 2)) T4 on T4.TRANSACTIONDATE between FP.STARTDATE and FP.ENDDATE and T4.DATAELEMENTID = T3.DATAELEMENTID
left outer join dbo.ACCOUNTCODE on DE.ID = ACCOUNTCODE.ID
left join #BALANCE BALANCE on BALANCE.DATAELEMENTID = DE.ID
group by DE.SHORTDESCRIPTION, DE.DESCRIPTION, FP.ENDDATE, ACTST.DESCRIPTION, BALANCE.BALANCE, FP.GLFISCALYEARID';
exec sp_executesql @SQLTOEXEC,
N'@STARTDATE datetime, @ENDDATE datetime, @ACCOUNTCODEID uniqueidentifier, @INCLUDENOTPOSTED bit, @INCLUDENOACTIVITY bit, @ACCOUNTCODEQUERY uniqueidentifier',
@STARTDATE=@STARTDATE, @ENDDATE=@ENDDATE, @ACCOUNTCODEID=@ACCOUNTCODEID, @INCLUDENOTPOSTED=@INCLUDENOTPOSTED, @INCLUDENOACTIVITY=@INCLUDENOACTIVITY, @ACCOUNTCODEQUERY=@ACCOUNTCODEQUERY;