USP_SEARCHLIST_LEDGERACCOUNT
Search for accounts.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATAELEMENTS | xml | IN | DATAELEMENTS |
@DESCRIPTION | nvarchar(400) | IN | Description |
@CATEGORYCODE | tinyint | IN | Category |
@SUBCATEGORYCODE | tinyint | IN | Subcategory |
@ISCONTRA | bit | IN | Contra |
@INCLUDEINACTIVE | bit | IN | Include inactive |
@USERACCOUNTSTRING | nvarchar(130) | IN | User account string |
@MAXROWS | smallint | IN | Input parameter indicating the maximum number of rows to return. |
Definition
Copy
CREATE procedure dbo.USP_SEARCHLIST_LEDGERACCOUNT
(
@DATAELEMENTS xml = null,
@DESCRIPTION nvarchar(400) = '',
@CATEGORYCODE tinyint = null,
@SUBCATEGORYCODE tinyint = null,
@ISCONTRA bit = null,
@INCLUDEINACTIVE bit = 0,
@USERACCOUNTSTRING nvarchar(130) = null,
@MAXROWS smallint = 500
)
as
set @DESCRIPTION = coalesce(replace(@DESCRIPTION,'*','%'),'') + '%';
set @USERACCOUNTSTRING = coalesce(replace(@USERACCOUNTSTRING,'*','%'),'') + '%';
declare @SEPARATOR nvarchar(1)
select top 1 @SEPARATOR = SEPARATOR from dbo.PDACCOUNTSTRUCTURE
declare @ACCOUNTSTRING nvarchar(130)
set @ACCOUNTSTRING =
(select
coalesce(case when T1.DATAELEMENTID is null then '%'+@SEPARATOR else SHORTDESCRIPTION+@SEPARATOR end, '')
from NUMBERS
inner join PDACCOUNTSTRUCTURE on NUMBERS.NUM = PDACCOUNTSTRUCTURE.SEGMENTSEQUENCE
left join dbo.UFN_LEDGERACCOUNT_GETACCOUNTSEGMENTS_FROMITEMLISTXML(@DATAELEMENTS) T1 on PDACCOUNTSTRUCTURE.ID = T1.ACCOUNTSTRUCTUREID
left join PDACCOUNTSEGMENTVALUE on T1.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID
where PDACCOUNTSTRUCTURE.ELEMENTTYPECODE = 1
order by PDACCOUNTSTRUCTURE.SEGMENTSEQUENCE
for xml path(''), type).value('.','nvarchar(130)')
set @ACCOUNTSTRING = substring(@ACCOUNTSTRING, 1, len(@ACCOUNTSTRING)-1)
select top(@MAXROWS)
GLACCOUNT.ID,
--dbo.UFN_LEDGERACCOUNT_GETACCOUNTSTRING(GLACCOUNT.ID) as ACCOUNTSTRING,
GLACCOUNT.ACCOUNTSTRING as ACCOUNTSTRING,
GLACCOUNT.ACCOUNTDESCRIPTION,
ACCOUNTCODE.CATEGORY AS CATEGORY,
ACCOUNTCODE.SUBCATEGORY AS SUBCATEGORY
from
dbo.GLACCOUNT
left join dbo.ACCOUNTCODE on GLACCOUNT.ACCOUNTCODEID = ACCOUNTCODE.ID
where
(GLACCOUNT.ACCOUNTSTRING like @ACCOUNTSTRING)
and
(GLACCOUNT.ACCOUNTDESCRIPTION like @DESCRIPTION)
and
(@CATEGORYCODE is null or CATEGORYCODE = @CATEGORYCODE)
and
(@SUBCATEGORYCODE is null or SUBCATEGORYCODE = @SUBCATEGORYCODE)
and
(@ISCONTRA is null or CONTRAACCOUNT = @ISCONTRA)
and
(ACTIVE = 1 or @INCLUDEINACTIVE = 1)
and
((@USERACCOUNTSTRING is null) or (GLACCOUNT.ACCOUNTSTRING like @USERACCOUNTSTRING))
order by
ACCOUNTSTRING;