USP_CONSTITUENTNAMEFORMATS_GETDEFAULTADDRESSEE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@ADDRESSEENAMEFORMATID | uniqueidentifier | INOUT | |
@SALUTATIONNAMEFORMATID | uniqueidentifier | INOUT |
Definition
Copy
create procedure dbo.USP_CONSTITUENTNAMEFORMATS_GETDEFAULTADDRESSEE
(
@CONSTITUENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@ADDRESSEENAMEFORMATID uniqueidentifier = null output,
@SALUTATIONNAMEFORMATID uniqueidentifier = null output
)
as
set nocount on;
--A constituent ID must be provided.
if @CONSTITUENTID is null
return null;
--Set the addressee and salutation fields with defaults when this constituent
--has either a primary addressee/salutation name format or has only a single name
--format.
declare @ISORGANIZATION bit;
declare @ISGROUP bit;
select
@ISORGANIZATION = CONSTITUENT.ISORGANIZATION,
@ISGROUP = CONSTITUENT.ISGROUP
from
dbo.CONSTITUENT
where
CONSTITUENT.ID = @CONSTITUENTID;
if @ISORGANIZATION = 1 or @ISGROUP = 1
begin
--The constituent name formats simple list only returns one row for organizations and groups/households;
--select it by default.
set @ADDRESSEENAMEFORMATID = @CONSTITUENTID;
set @SALUTATIONNAMEFORMATID = @CONSTITUENTID;
end
else
begin
--For individuals
declare @AVAILABLENAMEFORMAT table
(
ID uniqueidentifier,
PRIMARYADDRESSEE bit,
PRIMARYSALUTATION bit
);
insert into @AVAILABLENAMEFORMAT (ID, PRIMARYADDRESSEE, PRIMARYSALUTATION)
select top 2 --We only need up to two: the two primary values or the sole value when only one exists
NAMEFORMAT.ID,
NAMEFORMAT.PRIMARYADDRESSEE,
NAMEFORMAT.PRIMARYSALUTATION
from
dbo.NAMEFORMAT
where
NAMEFORMAT.CONSTITUENTID = @CONSTITUENTID
and
(
NAMEFORMAT.SITEID is null
or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID, NAMEFORMAT.SITEID) = 1
)
order by
NAMEFORMAT.PRIMARYADDRESSEE desc,
NAMEFORMAT.PRIMARYSALUTATION desc;
if @@ROWCOUNT > 1
begin
--There are multiple available name formats, only set defaults
--if a primary addressee/saluation name format is specified.
select
@ADDRESSEENAMEFORMATID = ID
from
@AVAILABLENAMEFORMAT
where
PRIMARYADDRESSEE = 1;
select
@SALUTATIONNAMEFORMATID = ID
from
@AVAILABLENAMEFORMAT
where
PRIMARYSALUTATION = 1;
end
else
begin
--There are either zero or one available name formats.
--If there is just one, select it by default.
select
@ADDRESSEENAMEFORMATID = ID,
@SALUTATIONNAMEFORMATID = ID
from
@AVAILABLENAMEFORMAT;
end
end
return 0;