USP_DATAFORMTEMPLATE_EDITLOAD_PHONE_2
The load procedure used by the edit dataform template "Phone Edit Form 2"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@PHONETYPECODEID | uniqueidentifier | INOUT | Type |
@NUMBER | nvarchar(100) | INOUT | Number |
@PRIMARY | bit | INOUT | Set as primary phone number |
@DONOTCALL | bit | INOUT | Do not call this phone number |
@SPOUSENAME | nvarchar(154) | INOUT | |
@SPOUSEHASMATCHINGPHONE | bit | INOUT | |
@UPDATEMATCHINGSPOUSEPHONE | bit | INOUT | Update matching phone information for household |
@ISHOUSEHOLD | bit | INOUT | |
@ISHOUSEHOLDMEMBER | bit | INOUT | |
@UPDATEMATCHINGHOUSEHOLDPHONE | bit | INOUT | Update matching phone numbers in household |
@MATCHINGHOUSEHOLDMEMBERS | xml | INOUT | Household members |
@TSLONG | bigint | INOUT | Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_PHONE_2 (
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@PHONETYPECODEID uniqueidentifier = null output,
@NUMBER nvarchar(100) = null output,
@PRIMARY bit = null output,
@DONOTCALL bit = null output,
@SPOUSENAME nvarchar(154) = null output,
@SPOUSEHASMATCHINGPHONE bit = null output,
@UPDATEMATCHINGSPOUSEPHONE bit = null output,
@ISHOUSEHOLD bit = null output,
@ISHOUSEHOLDMEMBER bit = null output,
@UPDATEMATCHINGHOUSEHOLDPHONE bit = null output,
@MATCHINGHOUSEHOLDMEMBERS xml = null output,
@TSLONG bigint = 0 output
)
as
set nocount on;
declare @SPOUSEID uniqueidentifier;
set @DATALOADED = 0;
set @TSLONG = 0;
set @SPOUSEHASMATCHINGPHONE = 0;
set @UPDATEMATCHINGSPOUSEPHONE = 0;
if exists(select object_id from sys.objects where type = 'U' and name = 'RELATIONSHIP') begin
select
@DATALOADED = 1,
@PHONETYPECODEID = PHONE.PHONETYPECODEID,
@NUMBER = PHONE.NUMBER,
@PRIMARY = PHONE.ISPRIMARY,
@DONOTCALL = PHONE.DONOTCALL,
@SPOUSEID = SPOUSE.ID,
@SPOUSENAME = SPOUSE.NAME,
@TSLONG = PHONE.TSLONG
from
dbo.PHONE
left join dbo.RELATIONSHIP on RELATIONSHIP.RELATIONSHIPCONSTITUENTID = PHONE.CONSTITUENTID and RELATIONSHIP.ISSPOUSE = 1
left join dbo.CONSTITUENT as SPOUSE on SPOUSE.ID = RELATIONSHIP.RECIPROCALCONSTITUENTID
where
PHONE.ID = @ID;
if exists (
select PHONE.ID
from dbo.PHONE
where
PHONE.CONSTITUENTID = @SPOUSEID and
PHONE.NUMBER = @NUMBER
) begin
set @SPOUSEHASMATCHINGPHONE = 1;
set @UPDATEMATCHINGSPOUSEPHONE = 1;
end
end
else begin
select
@DATALOADED = 1,
@PHONETYPECODEID = PHONE.PHONETYPECODEID,
@NUMBER = PHONE.NUMBER,
@PRIMARY = PHONE.ISPRIMARY,
@DONOTCALL = PHONE.DONOTCALL,
@TSLONG = PHONE.TSLONG
from
dbo.PHONE
where
PHONE.ID = @ID;
end
declare @CURRENTDATE date;
set @CURRENTDATE = getdate();
declare @CONSTITUENTID uniqueidentifier;
select @CONSTITUENTID = CONSTITUENTID from dbo.PHONE where ID = @ID;
set @ISHOUSEHOLD = dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID);
set @ISHOUSEHOLDMEMBER = case when exists (
select 1
from dbo.GROUPMEMBER GM
left outer join dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
left outer join dbo.GROUPDATA GD on GD.ID = GM.GROUPID
where GM.MEMBERID = @CONSTITUENTID
and GD.GROUPTYPECODE = 0
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE))
or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))
) then 1 else 0 end;
set @MATCHINGHOUSEHOLDMEMBERS = (
select
CONSTITUENTID,
NAME,
RELATIONSHIPTOPRIMARY
from
dbo.UFN_PHONE_MATCHINGHOUSEHOLDRECORDS(@CONSTITUENTID, @NUMBER, @PHONETYPECODEID)
for xml raw('ITEM'), type, elements, root('MATCHINGHOUSEHOLDMEMBERS'), binary base64
);
return 0;