USP_MATCHFINDER_GETSYSTEMDATA_FORCONSTITUENT
Returns the data currently stored in the system for an organization, for integration with the MatchFinder Online service.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@XMLOUTPUT | xml | INOUT | |
@RETURNDATA | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_MATCHFINDER_GETSYSTEMDATA_FORCONSTITUENT(@CONSTITUENTID uniqueidentifier, @XMLOUTPUT xml = null output, @RETURNDATA bit = 1)
as
set nocount on;
begin try
declare @ADDRESSTYPECODEID uniqueidentifier;
declare @PHONETYPECODEID uniqueidentifier;
declare @FAXTYPECODEID uniqueidentifier;
declare @CONTACTTYPECODEID uniqueidentifier;
declare @CONTACTRELATIONSHIPTYPECODEID uniqueidentifier;
declare @CONTACTRECIPROCALRELATIONSHIPTYPECODEID uniqueidentifier;
declare @CONTACTEMAILADDRESSTYPECODEID uniqueidentifier;
declare @ALIASTYPECODEID uniqueidentifier;
declare @MATCHINGGIFTCONDITIONTYPECODEID uniqueidentifier;
exec dbo.USP_MATCHFINDER_LOADCONFIG 1, @ADDRESSTYPECODEID output, 1, @PHONETYPECODEID output, 1, @FAXTYPECODEID output,
1, @CONTACTTYPECODEID output, 1, @CONTACTRELATIONSHIPTYPECODEID output,
1, @CONTACTRECIPROCALRELATIONSHIPTYPECODEID output, 1, @CONTACTEMAILADDRESSTYPECODEID output,
0, @ALIASTYPECODEID output, 1, @MATCHINGGIFTCONDITIONTYPECODEID output
declare @R table
(
ORGNAME nvarchar(100),
WEBADDRESS nvarchar(2047),
ADDRESS nvarchar(150),
PHONE nvarchar(100),
FAX nvarchar(100),
CONTACTID uniqueidentifier,
CONTACTNAME nvarchar(160),
CONTACTEMAIL nvarchar(100),
ALIAS nvarchar(100),
INDUSTRY nvarchar(100),
MATCHINGGIFTCONDITIONID uniqueidentifier,
MATCHINGFACTOR decimal(5,2),
MINMATCHPERGIFT money,
MAXMATCHPERGIFT money,
MAXMATCHANNUAL money,
MAXMATCHTOTAL money,
MATCHNOTES nvarchar(max),
CURRENCYID uniqueidentifier
);
insert into @R(ORGNAME, WEBADDRESS, ADDRESS, PHONE, FAX, CONTACTID, CONTACTNAME, CONTACTEMAIL, ALIAS, INDUSTRY, MATCHINGGIFTCONDITIONID, MATCHINGFACTOR, MINMATCHPERGIFT, MAXMATCHPERGIFT, MAXMATCHANNUAL, MAXMATCHTOTAL, MATCHNOTES, CURRENCYID)
select
CONSTITUENT.KEYNAME as [ORGNAME],
CONSTITUENT.WEBADDRESS as [WEBADDRESS],
case when ADDRESS.ID is null then N''
else dbo.UFN_BUILDFULLADDRESS([ADDRESS].ID, [ADDRESS].ADDRESSBLOCK, [ADDRESS].CITY, [ADDRESS].STATEID, [ADDRESS].POSTCODE, [ADDRESS].COUNTRYID) end as [ADDRESS],
case when PHONE.ID is null then N''
else PHONE.NUMBER end as [PHONE],
case when [FAX].ID is null then N''
else [FAX].NUMBER end as [FAX],
[CONTACT].ID as [CONTACTID],
case when [CONTACT].ID is null then N''
else [CONTACT].NAME end as [CONTACTNAME],
case when EMAILADDRESS.ID is null then N''
else EMAILADDRESS.EMAILADDRESS end as [CONTACTEMAIL],
case when [ALIAS].ID is null then N''
else [ALIAS].ALIAS end as [ALIAS],
case when ORGANIZATIONDATA.INDUSTRYCODEID is null then N''
else (select DESCRIPTION from dbo.INDUSTRYCODE where INDUSTRYCODE.ID = ORGANIZATIONDATA.INDUSTRYCODEID) end as [INDUSTRY],
MATCHINGGIFTCONDITION.ID as [MATCHINGGIFTCONDITIONID],
case when MATCHINGGIFTCONDITION.ID is null then 0
else MATCHINGGIFTCONDITION.MATCHINGFACTOR end as [MATCHINGFACTOR],
case when MATCHINGGIFTCONDITION.ID is null then 0
else MATCHINGGIFTCONDITION.MINMATCHPERGIFT end as [MINMATCHPERGIFT],
case when MATCHINGGIFTCONDITION.ID is null then 0
else MATCHINGGIFTCONDITION.MAXMATCHPERGIFT end as [MAXMATCHPERGIFT],
case when MATCHINGGIFTCONDITION.ID is null then 0
else MATCHINGGIFTCONDITION.MAXMATCHANNUAL end as [MAXMATCHANNUAL],
case when MATCHINGGIFTCONDITION.ID is null then 0
else MATCHINGGIFTCONDITION.MAXMATCHTOTAL end as [MAXMATCHTOTAL],
case when MATCHINGGIFTCONDITION.ID is null then N''
else MATCHINGGIFTCONDITION.NOTES end as [MATCHNOTES],
case when MATCHINGGIFTCONDITION.ID is null then dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
else MATCHINGGIFTCONDITION.BASECURRENCYID end as [CURRENCYID]
from dbo.CONSTITUENT
left join dbo.ORGANIZATIONDATA on ORGANIZATIONDATA.ID = CONSTITUENT.ID
left join
(
select top 1
ADDRESS.CONSTITUENTID as [ORGID],
ADDRESS.ID,
ADDRESS.ADDRESSBLOCK,
ADDRESS.CITY,
ADDRESS.STATEID,
ADDRESS.POSTCODE,
ADDRESS.COUNTRYID
from dbo.ADDRESS
where ADDRESS.CONSTITUENTID = @CONSTITUENTID
and ADDRESS.ADDRESSTYPECODEID = @ADDRESSTYPECODEID
order by ADDRESS.ISPRIMARY desc, ADDRESS.CITY, ADDRESS.ADDRESSBLOCK
) as [ADDRESS] on [ADDRESS].ORGID = CONSTITUENT.ID
left join dbo.PHONE on PHONE.CONSTITUENTID = CONSTITUENT.ID and PHONE.PHONETYPECODEID = @PHONETYPECODEID
left join dbo.PHONE as [FAX] on [FAX].CONSTITUENTID = CONSTITUENT.ID and [FAX].PHONETYPECODEID = @FAXTYPECODEID
left join
(
--select top 0
--@CONSTITUENTID as [ORGID],
--CONSTITUENT.NAME,
--CONSTITUENT.ID
--from dbo.CONSTITUENT
select top 1
@CONSTITUENTID as [ORGID],
[CONTACTCONSTITUENT].NAME,
[CONTACTCONSTITUENT].ID
from dbo.RELATIONSHIP
inner join dbo.CONSTITUENT as [CONTACTCONSTITUENT] on [CONTACTCONSTITUENT].ID = RELATIONSHIP.RELATIONSHIPCONSTITUENTID
where RELATIONSHIP.RECIPROCALCONSTITUENTID = @CONSTITUENTID
and RELATIONSHIP.ISCONTACT = 1
and RELATIONSHIP.CONTACTTYPECODEID = @CONTACTTYPECODEID
order by RELATIONSHIP.ISPRIMARYCONTACT desc, [CONTACTCONSTITUENT].KEYNAME, [CONTACTCONSTITUENT].FIRSTNAME, [CONTACTCONSTITUENT].MIDDLENAME, RELATIONSHIP.DATEADDED
) as [CONTACT] on [CONTACT].ORGID = CONSTITUENT.ID
left join dbo.EMAILADDRESS on EMAILADDRESS.CONSTITUENTID = [CONTACT].ID and EMAILADDRESS.EMAILADDRESSTYPECODEID = @CONTACTEMAILADDRESSTYPECODEID
left join
(
select top 1
@CONSTITUENTID as [ORGID],
ALIAS.KEYNAME as [ALIAS],
ALIAS.ID
from dbo.ALIAS
where ALIAS.CONSTITUENTID = @CONSTITUENTID
and ALIAS.ALIASTYPECODEID = @ALIASTYPECODEID
) as [ALIAS] on [ALIAS].ORGID = CONSTITUENT.ID
left join dbo.MATCHINGGIFTCONDITION on MATCHINGGIFTCONDITION.ORGANIZATIONID = CONSTITUENT.ID and MATCHINGGIFTCONDITION.MATCHINGGIFTCONDITIONTYPECODEID = @MATCHINGGIFTCONDITIONTYPECODEID
where CONSTITUENT.ID = @CONSTITUENTID
and CONSTITUENT.ISORGANIZATION = 1
--I want to have this wrapped up for other procedures to be able to call to get the data. I can't use a TVF because I want to call raiserror
--when various settings aren't configured (at the top of this SP). So pass the data out as XML. Only do the final select if the caller
--passes 1 for @RETURNDATA (so that the caller can choose to use the XML, the result set from this SP, or both)
set @XMLOUTPUT =
(
select
ORGNAME, WEBADDRESS, ADDRESS, PHONE, FAX, CONTACTID, CONTACTNAME, CONTACTEMAIL, ALIAS, INDUSTRY, MATCHINGGIFTCONDITIONID, MATCHINGFACTOR, MINMATCHPERGIFT, MAXMATCHPERGIFT, MAXMATCHANNUAL, MAXMATCHTOTAL, MATCHNOTES, CURRENCYID
from @R
for xml raw('ITEM'), type, elements, root('SYSTEMDATA'), binary base64
)
if @RETURNDATA = 1
select
ORGNAME, WEBADDRESS, ADDRESS, PHONE, FAX, CONTACTID, CONTACTNAME, CONTACTEMAIL, ALIAS, INDUSTRY, MATCHINGGIFTCONDITIONID, MATCHINGFACTOR, MINMATCHPERGIFT, MAXMATCHPERGIFT, MAXMATCHANNUAL, MAXMATCHTOTAL, MATCHNOTES, CURRENCYID
from @R;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;