USP_NAMINGOPPORTUNITYREVENUERECOGNITION_ADD

Adds a naming opportunity recognition for a revenue split or constituent record.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@REVENUESPLITID uniqueidentifier IN
@NAMINGOPPORTUNITYID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@CONSTITUENTNAMEFORMATID uniqueidentifier IN
@CUSTOMNAMEFORMAT nvarchar(100) IN
@STARTDATE UDT_FUZZYDATE IN
@ENDDATE UDT_FUZZYDATE IN
@AMOUNT money IN
@QUANTITY int IN
@INSCRIPTION nvarchar(max) IN
@SPECIALREQUEST nvarchar(max) IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


          create procedure dbo.USP_NAMINGOPPORTUNITYREVENUERECOGNITION_ADD
          (
            @ID uniqueidentifier output,
            @REVENUESPLITID uniqueidentifier,
            @NAMINGOPPORTUNITYID uniqueidentifier,
            @CONSTITUENTID uniqueidentifier,
            @CONSTITUENTNAMEFORMATID uniqueidentifier = null,
            @CUSTOMNAMEFORMAT nvarchar(100) = '',
            @STARTDATE dbo.UDT_FUZZYDATE = '00000000',
            @ENDDATE dbo.UDT_FUZZYDATE = '00000000',
            @AMOUNT money,
            @QUANTITY int,
            @INSCRIPTION nvarchar(max) = '',
            @SPECIALREQUEST nvarchar(max) = '',
            @CHANGEAGENTID uniqueidentifier
          )
          as
          begin
              begin try
                if @ID is null
                    set @ID = newid();
                if @CHANGEAGENTID is null
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
                declare @CHANGEDATE datetime;
                set @CHANGEDATE = getdate();

                if @STARTDATE is null
                    set @STARTDATE = '00000000';
                if @ENDDATE is null
                    set @ENDDATE = '00000000';

                --Sanitize the name format to make it agree with our rules

                if not @CONSTITUENTNAMEFORMATID is null
                    set @CUSTOMNAMEFORMAT = N'';

                declare @EXISTINGRECOGNITIONS int;
                declare @MAXRECOGNITIONS int;

                select @MAXRECOGNITIONS = coalesce(QUANTITY, 0) from dbo.NAMINGOPPORTUNITY where ID = @NAMINGOPPORTUNITYID;
                select @EXISTINGRECOGNITIONS = coalesce(sum(QUANTITY), 0) from dbo.NAMINGOPPORTUNITYRECOGNITION where NAMINGOPPORTUNITYID = @NAMINGOPPORTUNITYID;

                declare @BASECURRENCYID uniqueidentifier;
                declare @CURRENCYEXCHANGERATEID uniqueidentifier;
                declare @ORGANIZATIONAMOUNT money;
                declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                select
                    @BASECURRENCYID = BASECURRENCYID
                from
                    dbo.NAMINGOPPORTUNITY
                where    
                    NAMINGOPPORTUNITY.ID = @NAMINGOPPORTUNITYID

                if (@ORGANIZATIONCURRENCYID = @BASECURRENCYID)
                begin
                    set @ORGANIZATIONAMOUNT = @AMOUNT;
                end
                else
                begin
                    set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @CHANGEDATE, 0, null);
                    set @ORGANIZATIONAMOUNT = dbo.UFN_CURRENCY_CONVERT(@AMOUNT, @CURRENCYEXCHANGERATEID);
                end

                if @EXISTINGRECOGNITIONS + @QUANTITY > @MAXRECOGNITIONS
                    raiserror('ERR_TOOMANYRECOGNITIONS', 13, 1);
                else    
                begin
                    insert into dbo.NAMINGOPPORTUNITYRECOGNITION(ID, NAMINGOPPORTUNITYID, CONSTITUENTID, STARTDATE, ENDDATE, AMOUNT, QUANTITY, INSCRIPTION, SPECIALREQUEST, CONSTITUENTNAMEFORMATID, CUSTOMNAMEFORMAT, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID, BASECURRENCYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values(@ID, @NAMINGOPPORTUNITYID, @CONSTITUENTID, @STARTDATE, @ENDDATE, @AMOUNT, @QUANTITY, @INSCRIPTION, @SPECIALREQUEST, @CONSTITUENTNAMEFORMATID, @CUSTOMNAMEFORMAT, @ORGANIZATIONAMOUNT, @CURRENCYEXCHANGERATEID, @BASECURRENCYID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                    if @REVENUESPLITID is not null
                      insert into dbo.NAMINGOPPORTUNITYRECOGNITIONREVENUESPLIT(NAMINGOPPORTUNITYRECOGNITIONID, REVENUESPLITID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                          values(@ID, @REVENUESPLITID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
                end
            end try
            begin catch
                exec dbo.USP_RAISE_ERROR;
                return 1;
            end catch

            return 0;
          end