USP_DATAFORMTEMPLATE_EDITLOAD_CONSTITUENTDATAREVIEW_PHONE

The load procedure used by the edit dataform template "Constituent Data Review Phone Edit Data Form"

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.
@STARTTIME UDT_HOURMINUTE INOUT Call after
@ENDTIME UDT_HOURMINUTE INOUT Call before
@INFOSOURCECODEID uniqueidentifier INOUT Information source
@INFOSOURCECOMMENTS nvarchar(256) INOUT Comments
@COUNTRYID uniqueidentifier INOUT Country
@STARTDATE date INOUT Start date
@ENDDATE date INOUT End date
@DONOTCALLREASONCODEID uniqueidentifier INOUT Reason
@ISCONFIDENTIAL bit INOUT This phone number is confidential
@COUNTRYCODES xml INOUT
@CONSTITUENTDATAREVIEWROLLBACKREASONID uniqueidentifier INOUT Reason
@FORCEDPRIMARY bit INOUT
@CANEDITPRIMARY bit INOUT
@INVALIDFIELDS nvarchar(256) INOUT
@ORIGINCODE tinyint INOUT Origin
@SEASONALSTARTDATE UDT_MONTHDAY INOUT Start date
@SEASONALENDDATE UDT_MONTHDAY INOUT End date
@DONOTTEXT bit INOUT

Definition

Copy

                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_CONSTITUENTDATAREVIEW_PHONE (
                    @ID uniqueidentifier,  -- this is PHONEAUDIT.ID
                    @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,
                    @STARTTIME dbo.UDT_HOURMINUTE = null output,
                    @ENDTIME dbo.UDT_HOURMINUTE = null output,
                    @INFOSOURCECODEID uniqueidentifier = null output,
                    @INFOSOURCECOMMENTS nvarchar(256) = null output,
                    @COUNTRYID uniqueidentifier = null output,
                    @STARTDATE date = null output,
                    @ENDDATE date = null output,
                    @DONOTCALLREASONCODEID uniqueidentifier = null output,
                    @ISCONFIDENTIAL bit = null output,
                    @COUNTRYCODES xml = null output,
                    @CONSTITUENTDATAREVIEWROLLBACKREASONID uniqueidentifier = null output,
                    @FORCEDPRIMARY bit = null output,
                    @CANEDITPRIMARY bit = null output,
                    @INVALIDFIELDS nvarchar(256) = null output,
                    @ORIGINCODE tinyint = null output,
                    @SEASONALSTARTDATE dbo.UDT_MONTHDAY = null output,
                    @SEASONALENDDATE dbo.UDT_MONTHDAY = null output,
                    @DONOTTEXT bit = null output
                )
                as
                    set nocount on;

                    declare @CONSTITUENTID uniqueidentifier;
                    declare @PHONEID uniqueidentifier;

                    set @FORCEDPRIMARY = 0;
                    set @CANEDITPRIMARY = 0;

                    exec dbo.USP_CONSTITUENTDATAREVIEW_PHONE_LOADAUDITDATA
                        @ID
                        @DATALOADED output
                        @PHONEID output
                        @CONSTITUENTID output,
                        @PHONETYPECODEID output
                        @NUMBER output
                        @PRIMARY output,
                        @DONOTCALL output
                        @SPOUSENAME output
                        @SPOUSEHASMATCHINGPHONE output,
                        @UPDATEMATCHINGSPOUSEPHONE output
                        @MATCHINGHOUSEHOLDMEMBERS output,
                        @STARTTIME output
                        @ENDTIME output
                        @INFOSOURCECODEID output,
                        @INFOSOURCECOMMENTS output
                        @COUNTRYID output
                        @STARTDATE output,
                        @ENDDATE output
                        @DONOTCALLREASONCODEID output
                        @ISCONFIDENTIAL output
                        @ORIGINCODE output,
                        @SEASONALSTARTDATE output,
                        @SEASONALENDDATE output,
                        @DONOTTEXT output;

                    if @DATALOADED = 0
                        raiserror('Could not find the requested audit record.', 13, 1);

                    declare @CURRENTDATE date;
                    set @CURRENTDATE = getdate();

                    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
                    );

                    select @COUNTRYCODES = dbo.UFN_COUNTRY_GETCOUNTRYCODES_TOITEMLISTXML();

                    -- handle primary
                    declare @CURRENTPRIMARY bit;

                    select @CURRENTPRIMARY = ISPRIMARY
                    from dbo.PHONE
                    where ID = @PHONEID;

                    if @PRIMARY = 0 and @CURRENTPRIMARY = 1
                    begin
                        set @PRIMARY = 1;
                        set @FORCEDPRIMARY = 1;
                    end
                    else
                    begin
                        -- if current primary is 0, there must be another
                        -- primary record, allow user to edit primary checkbox
                        if @PRIMARY = 1 and @CURRENTPRIMARY = 0
                            set @CANEDITPRIMARY = 1;
                    end

                    exec dbo.USP_CONSTITUENTDATAREVIEW_PHONE_CHECKGUIDS
                        @INVALIDFIELDS output,
                        @PHONETYPECODEID output,
                        @INFOSOURCECODEID output,
                        @COUNTRYID output,
                        @DONOTCALLREASONCODEID output

                    return 0;