USP_SIMPLEDATALIST_FAFRegBenefitOptionAttributes
Return registration benefit option's attribute by eventprice id and registration role
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BENEFITOPTIONID | uniqueidentifier | IN | BenefitOptionID |
@APPUSERID | uniqueidentifier | IN | AppUserId |
Definition
Copy
create procedure dbo.USP_SIMPLEDATALIST_FAFRegBenefitOptionAttributes
(@BENEFITOPTIONID uniqueidentifier,
@APPUSERID as uniqueidentifier = null)
as
set nocount on;
declare @script as nvarchar(4000)
declare @PARAMDEF as nvarchar(2000)
declare @tablename nvarchar(200)
declare @i int
declare @total int
declare @category varchar(100)
declare @DATATYPE varchar(50)
declare @CODETABLECATALOGID uniqueidentifier
declare @CODETABLE nvarchar(200)
declare @VALUECOLUMNNAME varchar(256)
DECLARE @ATTRIBUTETABLE TABLE (ID int IDENTITY(1,1),TABLENAME nvarchar(100),CATEGORY varchar(100),DATATYPE varchar(50), CODETABLECATALOGID uniqueidentifier, VALUECOLUMNNAME varchar(256))
INSERT INTO @ATTRIBUTETABLE (TABLENAME,CATEGORY,DATATYPE,CODETABLECATALOGID,VALUECOLUMNNAME)
select TC.TABLENAME as ATTRIBUTETABLENAME, AC.NAME, AC.DATATYPE, AC.CODETABLECATALOGID, AC.VALUECOLUMNNAME
from
dbo.ATTRIBUTECATEGORY AC
inner join dbo.ATTRIBUTERECORDTYPE ART on ART.ID = AC.ATTRIBUTERECORDTYPEID
inner join dbo.RECORDTYPE RT on RT.ID = ART.RECORDTYPEID
inner join dbo.TABLECATALOG TC on TC.ID = AC.TABLECATALOGID
WHERE RT.NAME = 'Benefit Option'
and dbo.UFN_SECURITY_APPUSER_GRANTED_ATTRIBUTECATEGORY_IN_SYSTEMROLE(@APPUSERID,AC.ID) = 1
create table #BENEFITATTRIBUTES (ID uniqueidentifier, VALUE nvarchar(510),TABLENAME nvarchar(100),CATEGORY varchar(100))
SET @PARAMDEF = '@BENEFITOPTIONID uniqueidentifier, @tablename nvarchar(100), @category varchar(100), @CODETABLE nvarchar(200), @VALUECOLUMNNAME varchar(256) '
set @i = 1
select @total = COUNT(*) from @ATTRIBUTETABLE
WHILE (@i <= @total)
BEGIN
SET @script = ''
SET @tablename = ''
SET @DATATYPE = ''
SET @CODETABLECATALOGID = null
SET @CODETABLE = ''
SELECT @tablename = TABLENAME, @category = CATEGORY, @DATATYPE = DATATYPE,
@CODETABLECATALOGID = CODETABLECATALOGID,
@VALUECOLUMNNAME = VALUECOLUMNNAME
from @ATTRIBUTETABLE where ID = @i
IF @CODETABLECATALOGID IS NOT NULL
SELECT @CODETABLE = DBTABLENAME from dbo.CODETABLECATALOG where ID = @CODETABLECATALOGID
IF @DATATYPE = 'Yes/No'
SET @script = 'Insert into #BENEFITATTRIBUTES select ID, (CASE BOOLEANCODE when 1 then ''Yes'' else ''No'' END), @tablename, @category from ' + @tablename + ' where BENEFITOPTIONID = @BENEFITOPTIONID'
IF @DATATYPE in ('Number','Date','Currency','Fuzzy date','Time','Memo','Text')
SET @script = 'Insert into #BENEFITATTRIBUTES select ID, VALUE, @tablename, @category from ' + @tablename + ' where BENEFITOPTIONID = @BENEFITOPTIONID'
IF @DATATYPE = 'Code table'
SET @script = 'Insert into #BENEFITATTRIBUTES select A.ID, C.DESCRIPTION, @tablename, @category from ' + @tablename + ' as A
INNER JOIN ' + @CODETABLE + ' as C ON C.ID = A.'+ @VALUECOLUMNNAME +'
where A.BENEFITOPTIONID = @BENEFITOPTIONID'
IF @DATATYPE = 'Constituent record'
SET @script = 'Insert into #BENEFITATTRIBUTES select A.ID, C.NAME, @tablename, @category from ' + @tablename + ' as A
INNER JOIN dbo.CONSTITUENT (NOLOCK) as C ON C.ID = A.CONSTITUENTVALUEID
where A.BENEFITOPTIONID = @BENEFITOPTIONID'
exec sp_executesql @script, @PARAMDEF, @BENEFITOPTIONID, @tablename, @category, @CODETABLE, @VALUECOLUMNNAME
SET @i = @i + 1
END
select
BA.ID as VALUE,
BA.VALUE as LABEL
from #BENEFITATTRIBUTES BA
order by BA.VALUE
drop table #BENEFITATTRIBUTES