UFN_MKTASKLADDER_GETMONEYFIELDS
Returns a table containing the money fields associated with a given query view.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@QUERYVIEWCATALOGID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.[UFN_MKTASKLADDER_GETMONEYFIELDS]
(
@QUERYVIEWCATALOGID uniqueidentifier
)
returns @T table
(
[RECORDTYPE] nvarchar(100),
[PARENTTYPE] nvarchar(100),
[NAME] nvarchar(128),
[DISPLAYNAME] nvarchar(128),
[OBJECTNAME] nvarchar(128),
[OBJECTTYPE] nvarchar(100),
[PRIMARYKEYFIELD] nvarchar(128),
[OBJECTKEY] nvarchar(257),
[CURRENCYID] uniqueidentifier
)
as
begin
declare @RECORDTYPEID uniqueidentifier;
declare @RECORDTYPENAME nvarchar(100);
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
set @ORGANIZATIONCURRENCYID = dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]();
select
@RECORDTYPENAME = (select [NAME] from dbo.[RECORDTYPE] where [ID] = [QUERYVIEWCATALOG].[RECORDTYPEID]),
@RECORDTYPEID = [RECORDTYPEID]
from dbo.[QUERYVIEWCATALOG]
where [ID] = @QUERYVIEWCATALOGID;
with xmlnamespaces ('bb_appfx_queryview' as qvns, 'bb_appfx_commontypes' as common)
insert into @T ([RECORDTYPE], [PARENTTYPE], [NAME], [DISPLAYNAME], [OBJECTNAME], [OBJECTTYPE], [PRIMARYKEYFIELD], [OBJECTKEY], [CURRENCYID])
-- find any smartfields that are defined as money and match the record type
select
@RECORDTYPENAME as [RECORDTYPE],
'Smart Field' as [PARENTTYPE],
[SMARTFIELD].[VALUECOLUMNNAME] as [NAME],
[SMARTFIELD].[NAME] as [DISPLAYNAME],
[TABLECATALOG].[TABLENAME] as [OBJECTNAME],
'Smart Field' as [OBJECTTYPE],
'ID' as [PRIMARYKEYFIELD],
([SMARTFIELD].[VALUECOLUMNNAME] + '.' + [TABLECATALOG].[TABLENAME]) as [OBJECTKEY],
isnull([SMARTFIELD].[CURRENCYID], @ORGANIZATIONCURRENCYID) as [CURRENCYID]
from dbo.[SMARTFIELD]
inner join dbo.[SMARTFIELDCATALOG] on [SMARTFIELDCATALOG].[ID] = [SMARTFIELD].[SMARTFIELDCATALOGID]
inner join dbo.[TABLECATALOG] on [TABLECATALOG].[ID] = [SMARTFIELD].[TABLECATALOGID]
where [SMARTFIELDCATALOG].[DATATYPECODE] = 3 -- Money = 3
and [SMARTFIELDCATALOG].[RECORDTYPEID] = @RECORDTYPEID
union
-- find any queryview fields that are defined as money and match the record type
select
@RECORDTYPENAME as [RECORDTYPE],
[QUERYVIEWCATALOG].[DISPLAYNAME] as [PARENTTYPE],
c.[name] as [NAME],
(select top(1) isnull(T.c.value('(@Caption)[1]','nvarchar(255)'), T.c.value('(@Name)[1]','nvarchar(255)'))
from [QUERYVIEWCATALOG].[OUTPUTDEFINITIONXML].nodes('QueryViewOutput/qvns:OutputFields/qvns:OutputField') T(c)
where T.c.value('(@Name)[1]','nvarchar(255)') = c.[name]
and isnull(T.c.value('(@IsHidden)[1]','bit'), '0') in ('0', 'false')) as [DISPLAYNAME],
[QUERYVIEWCATALOG].[OBJECTNAME] as [OBJECTNAME],
[QUERYVIEWCATALOG].[OBJECTTYPENAME] as [OBJECTTYPENAME],
[QUERYVIEWCATALOG].[PRIMARYKEYFIELD] as [PRIMARYKEYFIELD],
(c.[name] + '.' + [QUERYVIEWCATALOG].[OBJECTNAME]) as [OBJECTNAME],
@ORGANIZATIONCURRENCYID as [CURRENCYID]
from dbo.[QUERYVIEWCATALOG]
inner join sys.objects o on o.[name] = [QUERYVIEWCATALOG].[OBJECTNAME]
inner join sys.columns c on c.[object_id] = o.[object_id]
where [QUERYVIEWCATALOG].[RECORDTYPEID] = @RECORDTYPEID
and [QUERYVIEWCATALOG].[PRIMARYKEYFIELD] is not null
and dbo.[UFN_INSTALLEDPRODUCTS_OPTIONALPRODUCTSINSTALLED]([QUERYVIEWCATALOG].[QUERYVIEWSPEC].query('qvns:QueryViewSpec/common:InstalledProductList')) = 1
and dbo.[UFN_INSTALLEDPRODUCTS_OPTIONALPRODUCTSINSTALLED](
(select top(1) T.c.query('./common:InstalledProductList')
from [QUERYVIEWCATALOG].[OUTPUTDEFINITIONXML].nodes('QueryViewOutput/qvns:OutputFields/qvns:OutputField') T(c)
where T.c.value('(@Name)[1]', 'nvarchar(255)') = c.[name] and isnull(T.c.value('(@IsHidden)[1]', 'bit'), '0') in ('0', 'false'))) = 1
and (select top(1) T.c.value('(@DataType)[1]', 'nvarchar(255)')
from [QUERYVIEWCATALOG].[OUTPUTDEFINITIONXML].nodes('QueryViewOutput/qvns:OutputFields/qvns:OutputField') T(c)
where T.c.value('(@Name)[1]', 'nvarchar(255)') = c.[name] and isnull(T.c.value('(@IsHidden)[1]', 'bit'), '0') in ('0', 'false')) = 'Money'
order by [PARENTTYPE];
return;
end