USP_BBNC_COMMITPROFILEUPDATEPRIMARYBUSINESS_1_1

Updates a constituent's primary business information from a NetCommunity profile transaction to the system from a given batch.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@ORGNAME nvarchar(100) IN
@ORGLINKID uniqueidentifier INOUT
@POSITION nvarchar(100) IN
@INDUSTRYCODEID uniqueidentifier IN
@UPDATEINDUSTRYCODEID bit IN
@COUNTRYID uniqueidentifier IN
@ADDRESSBLOCK nvarchar(150) IN
@CITY nvarchar(50) IN
@STATEID uniqueidentifier IN
@POSTCODE nvarchar(12) IN
@PROCESSADDRESS bit IN
@ADDNEWADDRESS bit IN
@ADDRESSTYPECODEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEPRIMARYBUSINESS_1_1
                (
                    @CONSTITUENTID uniqueidentifier = null,
                    @ORGNAME nvarchar(100) = '',
                    @ORGLINKID uniqueidentifier = null output,
                    @POSITION nvarchar(100) = '',
                    @INDUSTRYCODEID uniqueidentifier = null,
                    @UPDATEINDUSTRYCODEID bit = 0,
                    @COUNTRYID uniqueidentifier = null,
                    @ADDRESSBLOCK nvarchar(150) = '',
                    @CITY nvarchar(50) = '',
                    @STATEID uniqueidentifier = null,
                    @POSTCODE nvarchar(12) = '',
                    @PROCESSADDRESS bit = 0,
                    @ADDNEWADDRESS bit = 0,
                    @ADDRESSTYPECODEID uniqueidentifier = null,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @CHANGEDATE datetime = null
                ) as
                    set nocount on;

                    declare @RELATIONSHIPID uniqueidentifier;
                    declare @RELATIONSHIPSETID uniqueidentifier;
                    declare @ORGID uniqueidentifier;
                    declare @RELATIONSHIPTYPECODEID uniqueidentifier;
                    declare @RECIPROCALTYPECODEID uniqueidentifier;
                    declare @BUSINESSADDRESSTYPECODEID uniqueidentifier;
                    declare @BUSINESSADDRESSID uniqueidentifier;
                    declare @SEQUENCE int;
                    declare @ORGANIZATIONPRIMARYADDRESSTYPECODEID uniqueidentifier;
          declare @ISPRIMARY bit;

                    if @CONSTITUENTID is null
                        begin
                            raiserror('The constituent ID is required',16,1);
                            return -2;
                        end

                    if @CHANGEAGENTID is null
                        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                    if @CHANGEDATE is null
                        set @CHANGEDATE = getdate();

                    declare @INFOSOURCECODEID uniqueidentifier;
                    set @INFOSOURCECODEID = null;

                    --ORGANIZATIONPRIMARYADDRESSTYPECODEID can be null

                    select top (1)
                        @BUSINESSADDRESSTYPECODEID = [BUSINESSADDRESSTYPECODEID],
                        @ORGANIZATIONPRIMARYADDRESSTYPECODEID = [ORGANIZATIONPRIMARYADDRESSTYPECODEID],
                        @INFOSOURCECODEID = [INFOSOURCECODEID]
                    from
                        dbo.NETCOMMUNITYDEFAULTCODEMAP;

                    if @BUSINESSADDRESSTYPECODEID is null
                        begin
                            raiserror('You must define the default primary business address type code.',16,1);
                            return -2;
                        end

                    begin try
                        if @ORGLINKID is null
                        and (@ORGNAME is null or len(@ORGNAME) = 0)
                            begin
                                -- We no longer have a primary business, mark any existing relationship as not primary

                                update dbo.RELATIONSHIP set
                                    ISPRIMARYBUSINESS = 0,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CHANGEDATE
                                where
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
                                    and RELATIONSHIP.ISPRIMARYBUSINESS = 1;
                            end
                        else
                            begin
                                -- We will have a primary business

                                set @ORGID = @ORGLINKID;

                                if @ORGID is null
                                    begin
                                        -- We need a new primary business

                                        set @ORGID = newid();
                                        insert into dbo.CONSTITUENT 
                                        (
                                            ID,
                                            ISORGANIZATION,
                                            KEYNAME,
                                            ADDEDBYID,
                                            CHANGEDBYID,  
                                            DATEADDED,  
                                            DATECHANGED
                                        )
                                        values
                                        (
                                            @ORGID,
                                            -1,
                                            @ORGNAME,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );

                                        set @ORGLINKID = @ORGID; --JamesWill 09/27/2007 CR284214-092707 


                    --add origin information

                    if @INFOSOURCECODEID is not null
                    begin
                      exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTORIGIN @ID = @ORGID,
                      @CHANGEAGENTID=@CHANGEAGENTID,
                      @INFOSOURCECODEID = @INFOSOURCECODEID,
                      @REVENUEID = null
                    end


                                    end

                                -- If there is an existing primary business relationship with a different org, mark it as not primary

                                update dbo.RELATIONSHIP set
                                    ISPRIMARYBUSINESS = 0,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CHANGEDATE
                                where
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
                                    and RELATIONSHIP.RECIPROCALCONSTITUENTID <> @ORGID
                                    and RELATIONSHIP.ISPRIMARYBUSINESS = 1;

                                -- Use the existing relationship if the organization is the same

                                select
                                    @RELATIONSHIPID = ID
                                from
                                    dbo.RELATIONSHIP
                                where
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
                                    and RELATIONSHIP.RECIPROCALCONSTITUENTID = @ORGID
                                    and RELATIONSHIP.ISPRIMARYBUSINESS = 0;

                                update dbo.RELATIONSHIP set
                                    ISPRIMARYBUSINESS = 1,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CHANGEDATE
                                where
                                    RELATIONSHIP.ID = @RELATIONSHIPID;


                                -- If we did not find an update an existing non-primary relationship for this org, look for an existing primary relationship

                                select
                                    @RELATIONSHIPID = ID,
                                    @RELATIONSHIPSETID = RELATIONSHIPSETID
                                from
                                    dbo.RELATIONSHIP
                                where
                                    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
                                    and RELATIONSHIP.RECIPROCALCONSTITUENTID = @ORGID
                                    and RELATIONSHIP.ISPRIMARYBUSINESS = 1;

                                if @RELATIONSHIPID is null
                                    begin
                                        -- We need a new primary business relationship


                                        select top 1
                                            @RELATIONSHIPTYPECODEID = [PRIMARYBUSINESSRELATIONSHIPTYPECODEID], 
                                            @RECIPROCALTYPECODEID = [PRIMARYBUSINESSRECIPROCALTYPECODEID]
                                        from
                                            dbo.NETCOMMUNITYDEFAULTCODEMAP;

                                        if @RELATIONSHIPTYPECODEID is null or @RECIPROCALTYPECODEID is null
                                            begin
                                                raiserror('You must define the default relationship type codes for primary business relationships.',16,1);
                                                return -2;
                                            end

                                        set @RELATIONSHIPSETID = newid();
                                        insert into dbo.RELATIONSHIPSET
                                        (
                                            ID,
                                            ADDEDBYID,
                                            CHANGEDBYID,
                                            DATEADDED,
                                            DATECHANGED
                                        )
                                        values
                                        (
                                            @RELATIONSHIPSETID,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );


                                        set @RELATIONSHIPID = newid();
                                        insert into dbo.RELATIONSHIP
                                        (
                                            ID,
                                            RELATIONSHIPSETID,
                                            RELATIONSHIPCONSTITUENTID,
                                            RECIPROCALCONSTITUENTID,
                                            RELATIONSHIPTYPECODEID,
                                            RECIPROCALTYPECODEID,
                                            ISPRIMARYBUSINESS,
                                            ADDEDBYID,
                                            CHANGEDBYID,
                                            DATEADDED,
                                            DATECHANGED
                                        )
                                        values
                                        (
                                            @RELATIONSHIPID,
                                            @RELATIONSHIPSETID,
                                            @CONSTITUENTID,
                                            @ORGID,
                                            @RELATIONSHIPTYPECODEID,
                                            @RECIPROCALTYPECODEID,
                                            1,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );

                                        declare @PRIMARYSOFTCREDITRELATIONSHIPEXISTS bit = 0
                                        declare @PRIMARYSOFTCREDITMATCHFACTOR decimal(5,2) = 100
                                        declare @PRIMARYRECOGNITIONTYPECODEID uniqueidentifier = null
                                        declare @PRIMARYCONSTITUENTTYPE tinyint = 0
                                        declare @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS bit = 0
                                        declare @RECIPROCALSOFTCREDITMATCHFACTOR decimal(5,2) = 100
                                        declare @RECIPROCALRECOGNITIONTYPECODEID uniqueidentifier = null
                    declare @RECIPROCALCONSTITUENTTYPE tinyint = 0

                                        select @PRIMARYCONSTITUENTTYPE = case 
                                            when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISGROUP(ID) = 1 then 3 --Household

                                            when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(ID) = 1 then 2 -- Group

                                            when ISORGANIZATION = 1 then 1 --Organization

                                            else 0 end --Individual

                                        from dbo.CONSTITUENT where ID = @CONSTITUENTID;

                                        select @RECIPROCALCONSTITUENTTYPE = case 
                                            when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISGROUP(ID) = 1 then 3 --Household

                                            when ISGROUP = 1 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(ID) = 1 then 2 -- Group

                                            when ISORGANIZATION = 1 then 1 --Organization

                                            else 0 end --Individual

                                        from dbo.CONSTITUENT where ID = @ORGID;

                                        -- add default recognition credits if creating a new relationship

                                        select @PRIMARYSOFTCREDITRELATIONSHIPEXISTS = 1,
                                            @PRIMARYRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
                                            @PRIMARYSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
                                        from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD      
                                        where RRD.CONSTITUENTTYPECODE=@PRIMARYCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RELATIONSHIPTYPECODEID

                                        select @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS = 1,
                                            @RECIPROCALRECOGNITIONTYPECODEID=RRD.REVENUERECOGNITIONTYPECODEID,
                                            @RECIPROCALSOFTCREDITMATCHFACTOR= RRD.MATCHFACTOR
                                        from dbo.RECOGNITIONRELATIONSHIPDEFAULT as RRD      
                                        where RRD.CONSTITUENTTYPECODE=@RECIPROCALCONSTITUENTTYPE and RRD.RELATIONSHIPTYPECODEID=@RECIPROCALTYPECODEID

                                        exec dbo.USP_RECOGNITIONDEFAULTSUPDATE @CONSTITUENTID, @ORGID,
                                            NULL, NULL, @PRIMARYSOFTCREDITRELATIONSHIPEXISTS, @PRIMARYSOFTCREDITMATCHFACTOR,
                                            @PRIMARYRECOGNITIONTYPECODEID, @RECIPROCALSOFTCREDITRELATIONSHIPEXISTS
                                            @RECIPROCALSOFTCREDITMATCHFACTOR, @RECIPROCALRECOGNITIONTYPECODEID, @CHANGEAGENTID, 0;

                                    end
                                else
                                    begin
                                        --Add relationshipsetid if missing

                                        if @RELATIONSHIPSETID is null
                                            exec dbo.USP_RELATIONSHIPSET_RETROCREATE @RELATIONSHIPSETID output, @CHANGEAGENTID, @RELATIONSHIPID
                                    end

                                --Update job information;

                                declare @LASTJOBINFOID uniqueidentifier;
                                select top 1 
                                    @LASTJOBINFOID = ID
                                from dbo.RELATIONSHIPJOBINFO
                                where RELATIONSHIPSETID = @RELATIONSHIPSETID
                                order by STARTDATE asc;

                                --An update is added if no position is passed then the current is removed.

                                if len(coalesce(@POSITION, '')) > 0
                                begin
                                    --add if not present

                                    if @LASTJOBINFOID is null
                                        insert into dbo.RELATIONSHIPJOBINFO
                                        (
                                            RELATIONSHIPSETID,
                                            JOBTITLE,
                                            ADDEDBYID,
                                            CHANGEDBYID,
                                            DATEADDED,
                                            DATECHANGED
                                        )
                                        values
                                        (
                                            @RELATIONSHIPSETID,
                                            @POSITION,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );
                                    else
                                        update 
                                            dbo.RELATIONSHIPJOBINFO
                                        set
                                            [JOBTITLE] = @POSITION,
                                            [CHANGEDBYID] = @CHANGEAGENTID,
                                            [DATECHANGED] = @CHANGEDATE
                                        where
                                        [ID] = @LASTJOBINFOID;
                                end
                                else
                                    exec dbo.USP_RELATIONSHIPJOBINFO_DELETEBYID_WITHCHANGEAGENTID @LASTJOBINFOID, @CHANGEAGENTID;

                                -- Now ORGID points to the correct record and RELATIONSHIPID points

                                --  to the correct relationship but the data that hangs off of it

                                --  may need to be updated.


                                if @UPDATEINDUSTRYCODEID = 1
                                    if exists (select 1 from dbo.ORGANIZATIONDATA where [ID] = @ORGID)
                                        update dbo.ORGANIZATIONDATA set
                                            INDUSTRYCODEID = @INDUSTRYCODEID,
                                            CHANGEDBYID = @CHANGEAGENTID,
                                            DATECHANGED = @CHANGEDATE
                                        where
                                            ID = @ORGID
                                            and
                                            (
                                                (INDUSTRYCODEID is null and @INDUSTRYCODEID is not null)
                                                or
                                                (INDUSTRYCODEID is not null and @INDUSTRYCODEID is null)
                                                or
                                                INDUSTRYCODEID <> @INDUSTRYCODEID
                                            );
                                    else
                                        if @INDUSTRYCODEID is not null
                                            insert into dbo.ORGANIZATIONDATA
                                            (
                                                ID,
                                                INDUSTRYCODEID,
                                                ADDEDBYID,
                                                CHANGEDBYID,
                                                DATEADDED,
                                                DATECHANGED
                                            )
                                            values
                                            (
                                                @ORGID,
                                                @INDUSTRYCODEID,
                                                @CHANGEAGENTID,
                                                @CHANGEAGENTID,
                                                @CHANGEDATE,
                                                @CHANGEDATE
                                            );

                                declare @CONSTITADDRESSID uniqueidentifier;
                                set @CONSTITADDRESSID = newid();

                                -- Create a default address for this organization based on entered data

                                -- TMV 05/01/2007 CR272710-041307 Don't add an address to the organization if we're not adding an address to the individual

                                if not exists (select 1 from dbo.ADDRESS where [CONSTITUENTID] = @ORGID)
                                            and @PROCESSADDRESS = 1
                                    begin
                                        insert into dbo.ADDRESS
                                        (
                                            ID,
                                            CONSTITUENTID,
                                            ADDRESSTYPECODEID,
                                            ISPRIMARY,
                                            COUNTRYID,
                                            STATEID,
                                            ADDRESSBLOCK,
                                            CITY,
                                            POSTCODE,
                                            ADDEDBYID,
                                            CHANGEDBYID,
                                            DATEADDED,
                                            DATECHANGED
                                        )
                                        values
                                        (
                                            @CONSTITADDRESSID,
                                            @ORGID,
                                            @ORGANIZATIONPRIMARYADDRESSTYPECODEID, --TMV 05/01/2007 CR268676-030107

                                            1,
                                            coalesce(@COUNTRYID, dbo.UFN_COUNTRY_GETDEFAULT()),
                                            @STATEID,
                                            @ADDRESSBLOCK,
                                            @CITY,
                                            @POSTCODE,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );

                                        insert into dbo.ADDRESSVALIDATIONUPDATE
                                        (
                                            ID,
                                            INFOSOURCECODEID,
                                            ADDEDBYID,
                                            CHANGEDBYID,
                                            DATEADDED,
                                            DATECHANGED
                                        )
                                        values
                                        (
                                            @CONSTITADDRESSID,
                                            @INFOSOURCECODEID,
                                            @CHANGEAGENTID,
                                            @CHANGEAGENTID,
                                            @CHANGEDATE,
                                            @CHANGEDATE
                                        );

                                    end
                            end


                            if @PROCESSADDRESS = 1                            
                                begin
                                    select top (1)
                                        @BUSINESSADDRESSID = [ID]
                                    from
                                        dbo.ADDRESS
                                    where
                                        [CONSTITUENTID] = @CONSTITUENTID
                                        and [ADDRESSTYPECODEID] = @BUSINESSADDRESSTYPECODEID
                                    order by
                                        [ISPRIMARY] desc, [SEQUENCE];

                                    if @ADDNEWADDRESS = 0 and @BUSINESSADDRESSID is not null
                                        begin
                                            update dbo.ADDRESS set
                                                [COUNTRYID] = @COUNTRYID,
                                                [STATEID] = @STATEID,
                                                [ADDRESSBLOCK] = @ADDRESSBLOCK,
                                                [CITY] = @CITY,
                                                [POSTCODE] = @POSTCODE,
                                                [CHANGEDBYID] = @CHANGEAGENTID,
                                                [DATECHANGED] = @CHANGEDATE
                                            where
                                                [ID] = @BUSINESSADDRESSID;

                                            if exists (select ID from dbo.ADDRESSVALIDATIONUPDATE where ID = @BUSINESSADDRESSID)
                                                update dbo.ADDRESSVALIDATIONUPDATE set
                                                    INFOSOURCECODEID = @INFOSOURCECODEID,
                                                    CHANGEDBYID = @CHANGEAGENTID,
                                                    DATECHANGED = @CHANGEDATE
                                                where
                                                    ID = @BUSINESSADDRESSID
                                            else
                                                insert into dbo.ADDRESSVALIDATIONUPDATE
                                                (
                                                    ID,
                                                    INFOSOURCECODEID,
                                                    ADDEDBYID,
                                                    CHANGEDBYID,
                                                    DATEADDED,
                                                    DATECHANGED
                                                )
                                                values
                                                (
                                                    @BUSINESSADDRESSID,
                                                    @INFOSOURCECODEID,
                                                    @CHANGEAGENTID,
                                                    @CHANGEAGENTID,
                                                    @CHANGEDATE,
                                                    @CHANGEDATE
                                                )
                                        end
                                    else
                                        begin
                                            select
                                                @SEQUENCE = coalesce(max(SEQUENCE),0) + 1
                                            from
                                                dbo.ADDRESS
                                            where
                                                CONSTITUENTID = @CONSTITUENTID;

                                            declare @OLDADDRESSTYPECODEID uniqueidentifier
                      select @OLDADDRESSTYPECODEID = [ADDRESSTYPECODEID] from dbo.ADDRESS where [ID] = @BUSINESSADDRESSID

                      update dbo.ADDRESS set
                                                [ADDRESSTYPECODEID] = @ADDRESSTYPECODEID,
                                                [CHANGEDBYID] = @CHANGEAGENTID,
                                                [DATECHANGED] = @CHANGEDATE
                                            where
                                                [ID] = @BUSINESSADDRESSID;

                      if @OLDADDRESSTYPECODEID = @ADDRESSTYPECODEID and (select [ISPRIMARY] from dbo.ADDRESS where [ID] = @BUSINESSADDRESSID) = 0
                        update dbo.ADDRESS set
                          [HISTORICALENDDATE] = convert(date,@CHANGEDATE),
                          [CHANGEDBYID] = @CHANGEAGENTID,
                                                  [DATECHANGED] = @CHANGEDATE
                        where
                          [ID] = @BUSINESSADDRESSID

                                            set @BUSINESSADDRESSID = newid();

                      --When linked user don't have any address and an address is added by profile update batch then it'll consider as primary address by default.

                      set @ISPRIMARY= 0;
                                            if not exists (select 1 from dbo.ADDRESS where [CONSTITUENTID] = @CONSTITUENTID)
                                                begin 
                                                    Set @ISPRIMARY =1
                                                end

                                            insert into dbo.[ADDRESS]
                                            (
                                                [ID],
                                                [CONSTITUENTID],
                                                [ADDRESSTYPECODEID],
                                                [ISPRIMARY],
                                                [COUNTRYID],
                                                [STATEID],
                                                [ADDRESSBLOCK],
                                                [CITY],
                                                [POSTCODE],
                                                [SEQUENCE],
                                                [ADDEDBYID],
                                                [CHANGEDBYID],
                                                [DATEADDED],
                                                [DATECHANGED]
                                            )
                                            values
                                            (
                                                @BUSINESSADDRESSID,
                                                @CONSTITUENTID,
                                                @BUSINESSADDRESSTYPECODEID,
                                                @ISPRIMARY,
                                                @COUNTRYID,
                                                @STATEID,
                                                @ADDRESSBLOCK,
                                                @CITY,
                                                @POSTCODE,
                                                @SEQUENCE,
                                                @CHANGEAGENTID,
                                                @CHANGEAGENTID,
                                                @CHANGEDATE,
                                                @CHANGEDATE
                                            );

                                            insert into dbo.ADDRESSVALIDATIONUPDATE
                                            (
                                                ID,
                                                INFOSOURCECODEID,
                                                ADDEDBYID,
                                                CHANGEDBYID,
                                                DATEADDED,
                                                DATECHANGED
                                            )
                                            values
                                            (
                                                @BUSINESSADDRESSID,
                                                @INFOSOURCECODEID,
                                                @CHANGEAGENTID,
                                                @CHANGEAGENTID,
                                                @CHANGEDATE,
                                                @CHANGEDATE
                                            )
                                        end
                                end
                    end try
                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                    return 0;