USP_DATALIST_LEDGERACCOUNT
Returns a list of defined ledger accounts.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DESCRIPTION | nvarchar(400) | IN | Description |
@CATEGORY | tinyint | IN | Category |
@VIEWONLYINACTIVE | bit | IN | View only accounts with inactive segments |
@INCLUDEINACTIVE | bit | IN | Include inactive |
@MAXNUMROWS | int | IN | Limit |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_LEDGERACCOUNT (
@DESCRIPTION nvarchar(400) = null,
@CATEGORY tinyint = null,
@VIEWONLYINACTIVE bit = 0,
@INCLUDEINACTIVE bit = 0,
@MAXNUMROWS int = 100,
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier
)
as
set nocount on;
if not @DESCRIPTION is null
set @DESCRIPTION = replace(ltrim(rtrim(@DESCRIPTION)),'*','%');
set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
if dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
select top (@MAXNUMROWS)
GLACCOUNT.ID ID,
GLACCOUNT.ACCOUNTSTRING ACCOUNT,
GLACCOUNT.ACCOUNTDESCRIPTION DESCRIPTION,
ACCOUNTCODE.CATEGORY CATEGORY,
ACCOUNTCODE.SUBCATEGORY SUBCATEGORY,
case INACTIVELEMENTS.INACTIVECOUNT when 0 then '' else 'RES:warning' end as IMAGEKEY,
GLACCOUNT.ACTIVE
from
dbo.GLACCOUNT
cross apply
(select COUNT(1) INACTIVECOUNT
from
(select ID, DATAELEMENTID from
(select ID, DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID
from dbo.GLACCOUNT l
where l.ID = GLACCOUNT.ID
) as p
unpivot
(DATAELEMENTID for dColumn in
(DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID)
) as unPvt
) ACCOUNTELEMENTS
inner join dbo.PDACCOUNTSEGMENTVALUE on ACCOUNTELEMENTS.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
where PDACCOUNTSEGMENTVALUE.ISACTIVE = 0
) INACTIVELEMENTS
inner join dbo.PDACCOUNTSYSTEM on GLACCOUNT.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
left join dbo.ACCOUNTCODE on ACCOUNTCODEID = ACCOUNTCODE.ID
left join dbo.PDACCOUNTSEGMENTVALUE on GLACCOUNT.ACCOUNTCODEID = PDACCOUNTSEGMENTVALUE.ID
where
GLACCOUNT.ACCOUNTDESCRIPTION like isnull(@DESCRIPTION + '%', '%')
and GLACCOUNT.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID and PDACCOUNTSYSTEM.ISBASICGL = 0
and ((@CATEGORY is null) or (ACCOUNTCODE.CATEGORYCODE = @CATEGORY))
and (INACTIVELEMENTS.INACTIVECOUNT > 0 or @VIEWONLYINACTIVE = 0)
and (GLACCOUNT.ACTIVE = 1 or @INCLUDEINACTIVE = 1)
order by
ACCOUNTSTRING
;
else
begin
declare @STCOUNT int
select @STCOUNT = COUNT(ID) from dbo.PDACCOUNTSTRUCTURE where PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID and ELEMENTTYPECODE=1
declare @T table (ACCOUNTID uniqueidentifier primary key, ELEMENTCOUNT int)
insert @T (ACCOUNTID, ELEMENTCOUNT)
select ID, COUNT(DATAELEMENTID) ELEMENTCOUNT
from
(select ID, DATAELEMENTID from
(select ID, DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID
from dbo.GLACCOUNT l
) as p
unpivot
(DATAELEMENTID for dColumn in
(DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID)
) as unPvt
inner join dbo.UFN_ACCOUNTINGELEMENT_ELEMENTSFORUSER(@CURRENTAPPUSERID) F1 on unPvt.DATAELEMENTID = F1.ELEMENTID
) ACCOUNTELEMENTS
group by ID
having COUNT(DATAELEMENTID) = @STCOUNT
select top (@MAXNUMROWS)
GLACCOUNT.ID ID,
GLACCOUNT.ACCOUNTSTRING ACCOUNT,
GLACCOUNT.ACCOUNTDESCRIPTION DESCRIPTION,
ACCOUNTCODE.CATEGORY CATEGORY,
ACCOUNTCODE.SUBCATEGORY SUBCATEGORY,
case INACTIVELEMENTS.INACTIVECOUNT when 0 then '' else 'RES:warning' end as IMAGEKEY,
GLACCOUNT.ACTIVE
from
dbo.GLACCOUNT
cross apply
(select COUNT(1) INACTIVECOUNT
from
(select ID, DATAELEMENTID from
(select ID, DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID
from dbo.GLACCOUNT l
where l.ID = GLACCOUNT.ID
) as p
unpivot
(DATAELEMENTID for dColumn in
(DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID)
) as unPvt
) ACCOUNTELEMENTS
inner join dbo.PDACCOUNTSEGMENTVALUE on ACCOUNTELEMENTS.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
where PDACCOUNTSEGMENTVALUE.ISACTIVE = 0
) INACTIVELEMENTS
inner join dbo.PDACCOUNTSYSTEM on GLACCOUNT.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
left join dbo.ACCOUNTCODE on ACCOUNTCODEID = ACCOUNTCODE.ID
left join dbo.PDACCOUNTSEGMENTVALUE on GLACCOUNT.ACCOUNTCODEID = PDACCOUNTSEGMENTVALUE.ID
where
GLACCOUNT.ACCOUNTDESCRIPTION like isnull(@DESCRIPTION + '%', '%')
and GLACCOUNT.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID and PDACCOUNTSYSTEM.ISBASICGL = 0
and ((@CATEGORY is null) or (ACCOUNTCODE.CATEGORYCODE = @CATEGORY))
and (INACTIVELEMENTS.INACTIVECOUNT > 0 or @VIEWONLYINACTIVE = 0)
and (GLACCOUNT.ACTIVE = 1 or @INCLUDEINACTIVE = 1)
and GLACCOUNT.ID in (select ACCOUNTID from @T)
order by
ACCOUNTSTRING
;
end