USP_DATALIST_COAUPDATESUBMITPROCESSOUTPUT

Returns a list of records for AddressFinder submit process output.

Parameters

Parameter Parameter Type Mode Description
@SELECTIONID uniqueidentifier IN SelectionID
@INCLUDECONSTITUENTDNM bit IN Include constituents marked as Do Not Mail
@ISPRIMARY bit IN Is primary
@ADDRESSTYPECODEID uniqueidentifier IN Address type
@INCLUDEADDRESSESDNM bit IN Include addresses marked as Do Not Mail
@MAXROWS int IN Input parameter indicating the maximum number of rows to return.
@OWNERID uniqueidentifier IN
@SUBMITHOUSEHOLD bit IN
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.

Definition

Copy


                    CREATE procedure dbo.USP_DATALIST_COAUPDATESUBMITPROCESSOUTPUT
                    (
                        @SELECTIONID uniqueidentifier = null,
                        @INCLUDECONSTITUENTDNM bit = 0,
                        @ISPRIMARY bit = 0,
                        @ADDRESSTYPECODEID uniqueidentifier = null,
                        @INCLUDEADDRESSESDNM bit = 0,
                        @MAXROWS int,
                        @OWNERID uniqueidentifier = null,
                        @SUBMITHOUSEHOLD bit = 0,
                        @CURRENTAPPUSERID uniqueidentifier = null,
                        @SECURITYFEATUREID uniqueidentifier = null,
                        @SECURITYFEATURETYPE tinyint = null
                    )
                    as
                        set nocount on;

                        declare @BYPASSSECURITY bit;
                        declare @BPID uniqueidentifier;
                        declare @BYPASSSITESECURITY bit;
                        set @BYPASSSECURITY = 0;
                        set @BPID = '113412a7-daa5-4ef6-9c0d-8aaa9024e06a';
                        set @CURRENTAPPUSERID = @OWNERID;
                        set @BYPASSSITESECURITY = 0;

                        if @OWNERID is not null
                        begin
                            select @BYPASSSECURITY = dbo.UFN_APPUSER_ISSYSADMIN(@OWNERID);

                            if @BYPASSSECURITY = 0
                                begin
                                    select @BYPASSSECURITY = dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESS_IN_NONRACROLE(@OWNERID, @BPID);
                                    select @BYPASSSITESECURITY = dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESS_IN_NONSITEROLE(@OWNERID, @BPID);
                                end
                            else
                                set @BYPASSSITESECURITY = 1;
                        end
                        else
                            begin
                                set @BYPASSSECURITY = 1;
                                set @BYPASSSITESECURITY = 1;
                            end

                        if @SUBMITHOUSEHOLD = 1
                        begin
                            declare @MATCHING table(ADDRESSID uniqueidentifier, CONSTITUENTID uniqueidentifier, GROUPID uniqueidentifier, ISPRIMARY bit, ADDRESSBLOCK nvarchar(150), CITY nvarchar(100), POSTCODE nvarchar(12), STATEID uniqueidentifier, ADDRESSTYPECODEID uniqueidentifier);
                            insert into @MATCHING
                            (ADDRESSID, CONSTITUENTID, GROUPID, ISPRIMARY, ADDRESSBLOCK, CITY, POSTCODE, STATEID, ADDRESSTYPECODEID)
                            (select
                                ADDRESSID, 
                                CONSTITUENTID, 
                                GROUPID, 
                                ISPRIMARY, 
                                ADDRESSBLOCK, 
                                CITY, 
                                POSTCODE, 
                                STATEID, 
                                ADDRESSTYPECODEID 
                            from dbo.UFN_COAUPDATE_GETMATCHINGHOUSEHOLDS(@INCLUDECONSTITUENTDNM, @ISPRIMARY, @ADDRESSTYPECODEID, @INCLUDEADDRESSESDNM, @SELECTIONID, @OWNERID));
                        end

                        declare @SELECTION table (CONSTITUENTID uniqueidentifier, ADDRESSID uniqueidentifier, LOOKUPID nvarchar(100), CONSTITUENTNAME nvarchar(154), ORGNAME nvarchar(154), ADDRESS nvarchar(150), CITY nvarchar(50), STATE nvarchar(100), POSTCODE nvarchar(12));

                        if @BYPASSSECURITY = 0 or @BYPASSSITESECURITY = 0
                        begin
                            if @SELECTIONID is not null
                            begin
                                insert into @SELECTION
                                (CONSTITUENTID, ADDRESSID, LOOKUPID, CONSTITUENTNAME, ORGNAME, ADDRESS, CITY, STATE, POSTCODE)
                                (select top(@MAXROWS) CONSTITUENTID,
                                    ADDRESS.ID as ADDRESSID,
                                    CONSTITUENT.LOOKUPID as LOOKUPID,
                                    case when CONSTITUENT.ISORGANIZATION = 0 then CONSTITUENT.NAME end as CONSTITUENTNAME,
                                    case when CONSTITUENT.ISORGANIZATION = 1 then CONSTITUENT.NAME end as ORGNAME,
                                    ADDRESS.ADDRESSBLOCK as ADDRESS,
                                    ADDRESS.CITY as CITY,
                                    dbo.UFN_STATE_GETDESCRIPTION(ADDRESS.STATEID) as STATE,
                                    ADDRESS.POSTCODE as POSTCODE
                                from dbo.CONSTITUENT
                                inner join  dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) SELECTION on CONSTITUENT.ID = SELECTION.ID and @SELECTIONID is not null
                                inner join dbo.ADDRESS on ADDRESS.CONSTITUENTID = CONSTITUENT.ID
                                inner join dbo.COUNTRY on COUNTRY.ID = ADDRESS.COUNTRYID and COUNTRY.USEFORCOAUPDATE = 1
                                left join dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITIDS_FORBUSINESSPROCESS(@OWNERID, @BPID) as CONSTIT_RACS on CONSTITUENT.ID = CONSTIT_RACS.ID
                                where (CONSTITUENT.DONOTMAIL = @INCLUDECONSTITUENTDNM or CONSTITUENT.DONOTMAIL = 0) and
                                    (ADDRESS.ISPRIMARY = @ISPRIMARY or @ISPRIMARY = 0) and
                                    (ADDRESS.ADDRESSTYPECODEID = @ADDRESSTYPECODEID or @ADDRESSTYPECODEID is null) and
                                    (ADDRESS.DONOTMAIL = @INCLUDEADDRESSESDNM or ADDRESS.DONOTMAIL = 0) and
                                    (CONSTITUENT.ID not in (select ID from dbo.DECEASEDCONSTITUENT)) and
                                    (@BYPASSSECURITY = 1 or CONSTIT_RACS.ID is not null) and
                                    (@BYPASSSITESECURITY = 1 or
                                        exists(
                                            select 1 from dbo.CONSTITUENT C
                                            left join dbo.CONSTITUENTSITE on CONSTITUENTSITE.CONSTITUENTID = C.ID
                                            where
                                                C.ID = CONSTITUENT.ID
                                            and 
                                                (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[CONSTITUENTSITE].[SITEID] or (SITEID is null and [CONSTITUENTSITE].[SITEID] is null)))
                                        )
                                    )
                                );
                            end
                            else
                            begin
                                insert into @SELECTION
                                (CONSTITUENTID, ADDRESSID, LOOKUPID, CONSTITUENTNAME, ORGNAME, ADDRESS, CITY, STATE, POSTCODE)
                                (select top(@MAXROWS) CONSTITUENTID,
                                    ADDRESS.ID as ADDRESSID,
                                    CONSTITUENT.LOOKUPID as LOOKUPID,
                                    case when CONSTITUENT.ISORGANIZATION = 0 then CONSTITUENT.NAME end as CONSTITUENTNAME,
                                    case when CONSTITUENT.ISORGANIZATION = 1 then CONSTITUENT.NAME end as ORGNAME,
                                    ADDRESS.ADDRESSBLOCK as ADDRESS,
                                    ADDRESS.CITY as CITY,
                                    dbo.UFN_STATE_GETDESCRIPTION(ADDRESS.STATEID) as STATE,
                                    ADDRESS.POSTCODE as POSTCODE
                                from dbo.CONSTITUENT
                                inner join dbo.ADDRESS on ADDRESS.CONSTITUENTID = CONSTITUENT.ID
                                inner join dbo.COUNTRY on COUNTRY.ID = ADDRESS.COUNTRYID and COUNTRY.USEFORCOAUPDATE = 1
                                left join dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITIDS_FORBUSINESSPROCESS(@OWNERID, @BPID) as CONSTIT_RACS on CONSTITUENT.ID = CONSTIT_RACS.ID
                                where (CONSTITUENT.DONOTMAIL = @INCLUDECONSTITUENTDNM or CONSTITUENT.DONOTMAIL = 0) and
                                    (ADDRESS.ISPRIMARY = @ISPRIMARY or @ISPRIMARY = 0) and
                                    (ADDRESS.ADDRESSTYPECODEID = @ADDRESSTYPECODEID or @ADDRESSTYPECODEID is null) and
                                    (ADDRESS.DONOTMAIL = @INCLUDEADDRESSESDNM or ADDRESS.DONOTMAIL = 0) and
                                    (CONSTITUENT.ID not in (select ID from dbo.DECEASEDCONSTITUENT)) and
                                    (@BYPASSSECURITY = 1 or CONSTIT_RACS.ID is not null) and
                                    (@BYPASSSITESECURITY = 1 or
                                        exists(
                                            select 1 from dbo.CONSTITUENT C
                                            left join dbo.CONSTITUENTSITE on CONSTITUENTSITE.CONSTITUENTID = C.ID
                                            where
                                                C.ID = CONSTITUENT.ID
                                            and 
                                                (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[CONSTITUENTSITE].[SITEID] or (SITEID is null and [CONSTITUENTSITE].[SITEID] is null)))
                                        )
                                    )
                                );
                            end
                        end
                        else
                        begin
                            if @SELECTIONID is not null
                            begin
                                insert into @SELECTION
                                (CONSTITUENTID, ADDRESSID, LOOKUPID, CONSTITUENTNAME, ORGNAME, ADDRESS, CITY, STATE, POSTCODE)
                                (select top(@MAXROWS) CONSTITUENTID,
                                    ADDRESS.ID as ADDRESSID,
                                    CONSTITUENT.LOOKUPID as LOOKUPID,
                                    case when CONSTITUENT.ISORGANIZATION = 0 then CONSTITUENT.NAME end as CONSTITUENTNAME,
                                    case when CONSTITUENT.ISORGANIZATION = 1 then CONSTITUENT.NAME end as ORGNAME,
                                    ADDRESS.ADDRESSBLOCK as ADDRESS,
                                    ADDRESS.CITY as CITY,
                                    dbo.UFN_STATE_GETDESCRIPTION(ADDRESS.STATEID) as STATE,
                                    ADDRESS.POSTCODE as POSTCODE
                                from dbo.CONSTITUENT
                                inner join  dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SELECTIONID) SELECTION on CONSTITUENT.ID = SELECTION.ID and @SELECTIONID is not null
                                inner join dbo.ADDRESS on ADDRESS.CONSTITUENTID = CONSTITUENT.ID
                                inner join dbo.COUNTRY on COUNTRY.ID = ADDRESS.COUNTRYID and COUNTRY.USEFORCOAUPDATE = 1
                                where (CONSTITUENT.DONOTMAIL = @INCLUDECONSTITUENTDNM or CONSTITUENT.DONOTMAIL = 0) and
                                    (ADDRESS.ISPRIMARY = @ISPRIMARY or @ISPRIMARY = 0) and
                                    (ADDRESS.ADDRESSTYPECODEID = @ADDRESSTYPECODEID or @ADDRESSTYPECODEID is null) and
                                    (ADDRESS.DONOTMAIL = @INCLUDEADDRESSESDNM or ADDRESS.DONOTMAIL = 0) and
                                    (CONSTITUENT.ID not in (select ID from dbo.DECEASEDCONSTITUENT)));
                            end
                            else
                            begin
                                insert into @SELECTION
                                (CONSTITUENTID, ADDRESSID, LOOKUPID, CONSTITUENTNAME, ORGNAME, ADDRESS, CITY, STATE, POSTCODE)
                                (select top(@MAXROWS) CONSTITUENTID,
                                    ADDRESS.ID as ADDRESSID,
                                    CONSTITUENT.LOOKUPID as LOOKUPID,
                                    case when CONSTITUENT.ISORGANIZATION = 0 then CONSTITUENT.NAME end as CONSTITUENTNAME,
                                    case when CONSTITUENT.ISORGANIZATION = 1 then CONSTITUENT.NAME end as ORGNAME,
                                    ADDRESS.ADDRESSBLOCK as ADDRESS,
                                    ADDRESS.CITY as CITY,
                                    dbo.UFN_STATE_GETDESCRIPTION(ADDRESS.STATEID) as STATE,
                                    ADDRESS.POSTCODE as POSTCODE
                                from dbo.CONSTITUENT
                                inner join dbo.ADDRESS on ADDRESS.CONSTITUENTID = CONSTITUENT.ID
                                inner join dbo.COUNTRY on COUNTRY.ID = ADDRESS.COUNTRYID and COUNTRY.USEFORCOAUPDATE = 1
                                where (CONSTITUENT.DONOTMAIL = @INCLUDECONSTITUENTDNM or CONSTITUENT.DONOTMAIL = 0) and
                                    (ADDRESS.ISPRIMARY = @ISPRIMARY or @ISPRIMARY = 0) and
                                    (ADDRESS.ADDRESSTYPECODEID = @ADDRESSTYPECODEID or @ADDRESSTYPECODEID is null) and
                                    (ADDRESS.DONOTMAIL = @INCLUDEADDRESSESDNM or ADDRESS.DONOTMAIL = 0) and
                                    (CONSTITUENT.ID not in (select ID from dbo.DECEASEDCONSTITUENT)));
                            end
                        end

                        if @SUBMITHOUSEHOLD = 1
                        begin
                            select
                                CONSTITUENTID,
                                ADDRESSID,
                                LOOKUPID,
                                CONSTITUENTNAME,
                                ORGNAME,
                                ADDRESS,
                                CITY,
                                STATE,
                                POSTCODE
                            from @SELECTION
                            where
                                ADDRESSID not in (select ADDRESSID from @MATCHING)

                            union all

                            select distinct
                                ADDRESS.CONSTITUENTID,
                                ADDRESS.ID,
                                CONSTITUENT.LOOKUPID,
                                case when CONSTITUENT.ISORGANIZATION = 0 then (coalesce(CGM.NAME, CONSTITUENT.NAME)) end,
                                case when CONSTITUENT.ISORGANIZATION = 1 then CONSTITUENT.NAME end,
                                ADDRESS.ADDRESSBLOCK,
                                ADDRESS.CITY,
                                STATE.DESCRIPTION,
                                ADDRESS.POSTCODE
                            from dbo.CONSTITUENT as CONSTITUENT
                            inner join dbo.ADDRESS on 
                                ADDRESS.CONSTITUENTID = CONSTITUENT.ID
                            inner join @MATCHING MATCHING on 
                                ADDRESS.ID = MATCHING.ADDRESSID
                            left join dbo.GROUPMEMBER on 
                                CONSTITUENT.ID = GROUPMEMBER.GROUPID 
                                and GROUPMEMBER.ISPRIMARY = 1
                            left join dbo.CONSTITUENT CGM on 
                                GROUPMEMBER.MEMBERID = CGM.ID 
                            left join dbo.STATE on 
                                MATCHING.STATEID = STATE.ID    
                            where
                                CONSTITUENT.ISGROUP = 1;
                        end
                        else
                        begin
                            select
                                CONSTITUENTID,
                                ADDRESSID,
                                LOOKUPID,
                                CONSTITUENTNAME,
                                ORGNAME,
                                ADDRESS,
                                CITY,
                                STATE,
                                POSTCODE
                            from @SELECTION
                        end