USP_BBNC_COMMITMGINFORMATION

Adds a matching gift company's information from a Blackbaud Internet Solutions donation transaction to the system from a given batch.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@BBNCMAPID int INOUT
@KEYNAME nvarchar(100) IN
@MATCHINGFACTOR decimal(5, 2) IN
@MAXMATCHPERGIFT money IN
@ADDRESS nvarchar(300) IN
@CITY nvarchar(100) IN
@STATEID uniqueidentifier IN
@COUNTRYID uniqueidentifier IN
@ZIP nvarchar(20) IN
@PHONE nvarchar(50) IN
@FAX nvarchar(50) IN
@INDUSTRYCODEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@ALIAS nvarchar(100) IN
@WEBADDRESS nvarchar(2047) IN
@MINMATCHPERGIFT money IN
@MAXMATCHANNUAL money IN
@TOTALMATCH money IN
@MATCHNOTES nvarchar(max) IN

Definition

Copy


            CREATE procedure dbo.USP_BBNC_COMMITMGINFORMATION
            (
                @ID uniqueidentifier = null output,
                @BBNCMAPID int = null output
                @KEYNAME nvarchar(100) = '',
                @MATCHINGFACTOR decimal(5, 2) = 0,
                @MAXMATCHPERGIFT money = 0,

                @ADDRESS nvarchar(300) = '',
                @CITY nvarchar(100) = '',
                @STATEID uniqueidentifier = null,
                @COUNTRYID uniqueidentifier = null,
                @ZIP nvarchar(20) = '',
                @PHONE nvarchar(50) = '',
                @FAX nvarchar(50) = '',
                @INDUSTRYCODEID uniqueidentifier = null,

                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null,

                @ALIAS nvarchar(100) = null,
                @WEBADDRESS nvarchar(2047) = null,
                @MINMATCHPERGIFT money = null,
                @MAXMATCHANNUAL money = null,
                @TOTALMATCH money = null,
                @MATCHNOTES nvarchar(max) = null
            )
            as
            set nocount on;

            declare @KEYNAMEBODY nvarchar(100);
            declare @KEYNAMEPREFIX nvarchar(50);
            declare @MGTYPECODEID uniqueidentifier;

            declare @ADDRESSTYPECODEID uniqueidentifier; 
            declare @PHONETYPECODEID uniqueidentifier;
            declare @FAXTYPECODEID uniqueidentifier;
            declare @ALIASTYPECODEID uniqueidentifier;
            declare @INFOSOURCECODEID uniqueidentifier;
            if @ID is null
                set @ID = newid();

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

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

            exec dbo.USP_PARSE_ORGANIZATION_NAME @KEYNAME, @KEYNAMEBODY output, @KEYNAMEPREFIX output;

            begin try
                select 
                    @MGTYPECODEID = MGCONDITIONTYPECODEID,
                    @ADDRESSTYPECODEID = BUSINESSADDRESSTYPECODEID,
                    @PHONETYPECODEID = BUSINESSPHONECODEID,
                    @FAXTYPECODEID = FAXPHONECODEID,
                    @ALIASTYPECODEID = MGALIASTYPECODEID,
          @INFOSOURCECODEID = INFOSOURCECODEID
                from dbo.NETCOMMUNITYDEFAULTCODEMAP;

                if (select count(ID) from dbo.CONSTITUENT where ID = @ID) > 0
                begin
                    --CONSTITUENT record already exists

                    update dbo.CONSTITUENT 
                        set KEYNAME = @KEYNAMEBODY,
                            KEYNAMEPREFIX = @KEYNAMEPREFIX,
                            ISORGANIZATION = 1,
                            WEBADDRESS = coalesce(@WEBADDRESS, N''),
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CHANGEDATE
                    where ID = @ID;

                    --Cache CONTEXT INFO

                    declare @contextCache varbinary(128);
                    set @contextCache = CONTEXT_INFO();

                    if not @CHANGEAGENTID is null
                        set CONTEXT_INFO @CHANGEAGENTID;

                    delete from ALIAS where CONSTITUENTID = @ID and ALIASTYPECODEID = @ALIASTYPECODEID;

                    --Restore CONTEXT INFO 

                    if not @contextCache is null
                        set CONTEXT_INFO @contextCache

                    if not @ALIAS is null and len(@ALIAS) > 0
                    begin
                        insert into dbo.ALIAS(ID, CONSTITUENTID, ALIASTYPECODEID, KEYNAME, FIRSTNAME, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(newid(), @ID, @ALIASTYPECODEID, @ALIAS, N'', @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
                    end


                    if not @INDUSTRYCODEID is null
                    begin
                        if (select count(ID) from dbo.ORGANIZATIONDATA where ID = @ID) > 0 
                        begin
                            --Update org data

                            update dbo.ORGANIZATIONDATA 
                                set INDUSTRYCODEID = @INDUSTRYCODEID,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CHANGEDATE
                            where ID = @ID;
                        end
                        else
                        begin
                            --Create new org data 

                            insert into dbo.ORGANIZATIONDATA(ID, INDUSTRYCODEID, NUMEMPLOYEES, NUMSUBSIDIARIES, PARENTCORPID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values(@ID, @INDUSTRYCODEID, 0, 0, null, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE); 
                        end
                    end

                    if len(@ADDRESS) > 0 or len(@CITY) > 0 or len(@ZIP) > 0 or not @STATEID is null or not @COUNTRYID is null
                    begin
                        --Create or update the address

                        declare @ADDRESSID uniqueidentifier;
                        select top (1)
                            @ADDRESSID = ID
                        from
                            dbo.ADDRESS
                        where
                            CONSTITUENTID = @ID and ADDRESSTYPECODEID = @ADDRESSTYPECODEID
                        order by
                            ISPRIMARY, SEQUENCE;

                        if @ADDRESSID is not null
                        begin
                            --Address already exists 

                            update dbo.ADDRESS 
                                set ADDRESSBLOCK = @ADDRESS,
                                    CITY = @CITY,
                                    STATEID = @STATEID,
                                    POSTCODE = @ZIP,
                                    COUNTRYID = @COUNTRYID,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CHANGEDATE
                            where ID = @ADDRESSID;
                        end
                        else
                        begin
                            declare @ADDRESSISPRIMARY bit;
                            declare @ADDRESSSEQUENCE int;
                            select
                                @ADDRESSISPRIMARY = case when count(ADDRESS.ID) = 0 then 1 else 0 end,
                                @ADDRESSSEQUENCE = coalesce(max(ADDRESS.SEQUENCE), 0) + 1
                            from
                                dbo.ADDRESS
                            where
                                CONSTITUENTID = @ID;

                            --Address does not exist

                            insert into dbo.ADDRESS(ID, CONSTITUENTID, ADDRESSTYPECODEID, ISPRIMARY, COUNTRYID, STATEID, ADDRESSBLOCK, CITY, POSTCODE, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values(newid(), @ID, @ADDRESSTYPECODEID, @ADDRESSISPRIMARY, @COUNTRYID, @STATEID, @ADDRESS, @CITY, @ZIP, @ADDRESSSEQUENCE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
                        end
                    end

                    declare @PHONEISPRIMARY bit;
                    declare @PHONESEQUENCE int;

                    if len(@PHONE) > 0
                    begin
                        --Create or update the phone

                        declare @PHONEID uniqueidentifier;
                        select top (1)
                            @PHONEID = ID
                        from
                            dbo.PHONE
                        where
                            CONSTITUENTID = @ID and PHONETYPECODEID = @PHONETYPECODEID
                        order by
                            ISPRIMARY, SEQUENCE;

                        if @PHONEID is not null 
                        begin
                            --Phone already exists

                            update dbo.PHONE
                                set NUMBER = @PHONE,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CHANGEDATE
                            where ID = @PHONEID;
                        end
                        else
                        begin 
                            --Phone does not exist

                            select
                                @PHONEISPRIMARY = case when count(PHONE.ID) = 0 then 1 else 0 end,
                                @PHONESEQUENCE = coalesce(max(PHONE.SEQUENCE),0) + 1
                            from
                                dbo.PHONE
                            where
                                CONSTITUENTID = @ID;

                            insert into dbo.PHONE(ID, CONSTITUENTID, PHONETYPECODEID, ISPRIMARY, NUMBER, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values(newid(), @ID, @PHONETYPECODEID, @PHONEISPRIMARY, @PHONE, @PHONESEQUENCE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
                        end
                    end

                    if len(@FAX) > 0
                    begin
                        --Create or update the fax

                        declare @FAXID uniqueidentifier;
                        select top (1)
                            @FAXID = ID
                        from
                            dbo.PHONE
                        where
                            CONSTITUENTID = @ID and PHONETYPECODEID = @FAXTYPECODEID
                        order by
                            ISPRIMARY, SEQUENCE;

                        if @FAXID is not null
                        begin
                            --Phone already exists

                            update dbo.PHONE
                                set NUMBER = @FAX,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CHANGEDATE
                            where ID = @FAXID;
                        end
                        else
                        begin 
                            --Fax does not exist

                            select
                                @PHONEISPRIMARY = case when count(PHONE.ID) = 0 then 1 else 0 end,
                                @PHONESEQUENCE = coalesce(max(PHONE.SEQUENCE),0) + 1
                            from
                                dbo.PHONE
                            where
                                CONSTITUENTID = @ID;

                            insert into dbo.PHONE(ID, CONSTITUENTID, PHONETYPECODEID, ISPRIMARY, NUMBER, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values(newid(), @ID, @FAXTYPECODEID, @PHONEISPRIMARY, @FAX, @PHONESEQUENCE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
                        end
                    end
                end
                else
                begin
                    --CONSTITUENT record does not exist

                    insert into dbo.CONSTITUENT(ID, KEYNAME, KEYNAMEPREFIX, ISORGANIZATION, WEBADDRESS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values(@ID, @KEYNAMEBODY, @KEYNAMEPREFIX, 1, coalesce(@WEBADDRESS, N''), @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

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

                    if not @ALIAS is null and len(@ALIAS) > 0
                        insert into dbo.ALIAS(ID, CONSTITUENTID, ALIASTYPECODEID, KEYNAME, FIRSTNAME, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(newid(), @ID, @ALIASTYPECODEID, @ALIAS, N'', @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                    if not @INDUSTRYCODEID is null
                        insert into dbo.ORGANIZATIONDATA(ID, INDUSTRYCODEID, NUMEMPLOYEES, NUMSUBSIDIARIES, PARENTCORPID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(@ID, @INDUSTRYCODEID, 0, 0, null, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE); 

                    if len(@ADDRESS) > 0 or len(@CITY) > 0 or len(@ZIP) > 0 or not @STATEID is null or not @COUNTRYID is null
                        insert into dbo.ADDRESS(ID, CONSTITUENTID, ADDRESSTYPECODEID, ISPRIMARY, COUNTRYID, STATEID, ADDRESSBLOCK, CITY, POSTCODE, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(newid(), @ID, @ADDRESSTYPECODEID, 1, @COUNTRYID, @STATEID, @ADDRESS, @CITY, @ZIP, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                    if len(@PHONE) > 0
                        insert into dbo.PHONE(ID, CONSTITUENTID, PHONETYPECODEID, ISPRIMARY, NUMBER, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values(newid(), @ID, @PHONETYPECODEID, 1, @PHONE, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                    if len(@FAX) > 0
                        insert into dbo.PHONE(ID, CONSTITUENTID, PHONETYPECODEID, ISPRIMARY, NUMBER, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            select newid(), @ID, @FAXTYPECODEID, case when len(@PHONE) > 0 then 0 else 1 end, @FAX, case when len(@PHONE) > 0 then 2 else 1 end, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE;
                end

                select @BBNCMAPID = SEQUENCEID from dbo.CONSTITUENT where ID = @ID;

                if (select count(ID) from dbo.MATCHINGGIFTCONDITION where ORGANIZATIONID = @ID and MATCHINGGIFTCONDITIONTYPECODEID = @MGTYPECODEID) > 0
                begin
                    --MATCHINGGIFTCONDITION record already exists

                    update dbo.MATCHINGGIFTCONDITION
                        set MATCHINGFACTOR = @MATCHINGFACTOR,
                            MAXMATCHPERGIFT = @MAXMATCHPERGIFT,
                            MINMATCHPERGIFT = coalesce(@MINMATCHPERGIFT, 0),
                            MAXMATCHANNUAL = coalesce(@MAXMATCHANNUAL, 0),
                            MAXMATCHTOTAL = coalesce(@TOTALMATCH, 0),
                            NOTES = coalesce(@MATCHNOTES, N''),
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CHANGEDATE
                    where ORGANIZATIONID = @ID and MATCHINGGIFTCONDITIONTYPECODEID = @MGTYPECODEID;

                end
                else
                begin
                    --MATCHINGGIFTCONDITION record does not exist

                    insert into dbo.MATCHINGGIFTCONDITION(ID, ORGANIZATIONID, MATCHINGGIFTCONDITIONTYPECODEID, MATCHINGFACTOR, MAXMATCHPERGIFT, MINMATCHPERGIFT, MAXMATCHANNUAL, MAXMATCHTOTAL, NOTES, [SEQUENCE], ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values(newid(), @ID, @MGTYPECODEID, @MATCHINGFACTOR, @MAXMATCHPERGIFT, coalesce(@MINMATCHPERGIFT, 0), coalesce(@MAXMATCHANNUAL, 0), coalesce(@TOTALMATCH, 0), coalesce(@MATCHNOTES, N''), coalesce((select max(SEQUENCE) from dbo.MATCHINGGIFTCONDITION where ORGANIZATIONID = @ID) + 1, 0), @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
                end
            end try
            begin catch
                exec dbo.USP_RAISE_ERROR;
                return 1;
            end catch

            return 0;