USP_GLOBALCHANGE_SPONSORSHIPADJUSTRATE

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN
@ASOF datetime IN
@NUMBERADDED int INOUT
@NUMBEREDITED int INOUT
@NUMBERDELETED int INOUT
@SPONSORSHIPPROGRAMID uniqueidentifier IN
@IDSETREGISTERID uniqueidentifier IN
@NEWRATE tinyint IN
@AMOUNT money IN
@REVENUEDEVELOPMENTFUNCTIONCODEID uniqueidentifier IN
@MARKETINGOPTION bit IN
@SOURCECODE nvarchar(50) IN
@APPEALID uniqueidentifier IN
@MAILINGID uniqueidentifier IN
@CHANNELCODEID uniqueidentifier IN
@TRANSACTIONCURRENCYID uniqueidentifier IN
@UPDATERECOGNITIONCREDITS bit IN

Definition

Copy


CREATE procedure dbo.USP_GLOBALCHANGE_SPONSORSHIPADJUSTRATE
(
    @CHANGEAGENTID uniqueidentifier = null,
    @ASOF as datetime = null,
    @NUMBERADDED int = 0 output,
    @NUMBEREDITED int = 0 output,
    @NUMBERDELETED int = 0 output,
    @SPONSORSHIPPROGRAMID uniqueidentifier,
    @IDSETREGISTERID uniqueidentifier,
    @NEWRATE tinyint = 0,
    @AMOUNT money,
    @REVENUEDEVELOPMENTFUNCTIONCODEID uniqueidentifier,
    @MARKETINGOPTION bit = 0,
    @SOURCECODE nvarchar(50) = null,
    @APPEALID uniqueidentifier = null,
    @MAILINGID uniqueidentifier = null,
    @CHANNELCODEID uniqueidentifier = null,
  @TRANSACTIONCURRENCYID uniqueidentifier = null,
  @UPDATERECOGNITIONCREDITS bit = 0
)
as            
    set nocount off;

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate();
    set @NUMBERADDED = 0;
    set @NUMBEREDITED = 0;
    set @NUMBERDELETED = 0

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

  if @TRANSACTIONCURRENCYID is null
    set @TRANSACTIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

    begin try
    declare @REVENUEID uniqueidentifier;
    declare @RESETRECOGNITIONCREDITS tinyint = 0; -- no update

    declare @TempTbl table(ID uniqueidentifier)

    if @UPDATERECOGNITIONCREDITS = 1
      set @RESETRECOGNITIONCREDITS = 2; -- update based on defaults


    if(@SPONSORSHIPPROGRAMID is not null)
      insert into @TempTbl(ID) 
      select REVENUESPLIT.REVENUEID
      from dbo.SPONSORSHIP
      inner join dbo.REVENUESPLIT on REVENUESPLIT.ID = SPONSORSHIP.REVENUESPLITID
      where SPONSORSHIP.SPONSORSHIPPROGRAMID = @SPONSORSHIPPROGRAMID
      and SPONSORSHIP.STATUSCODE = 1
      and REVENUESPLIT.REVENUEID is not null
      and REVENUESPLIT.TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID;
    else
      insert into @TempTbl(ID)
      select REVENUESPLIT.REVENUEID
      from dbo.SPONSORSHIP S
      inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on S.ID = IDSET.ID
      inner join dbo.REVENUESPLIT on REVENUESPLIT.ID = S.REVENUESPLITID
      where REVENUESPLIT.REVENUEID is not null
      and S.STATUSCODE = 1
      and REVENUESPLIT.TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID;


    declare SPONSORSHIP_CURSOR cursor local fast_forward for
      select ID from @TempTbl;

    open SPONSORSHIP_CURSOR;
    fetch next from SPONSORSHIP_CURSOR into @REVENUEID;

    while (@@FETCH_STATUS = 0)
        begin
      declare @REVENUERID uniqueidentifier = null
      declare    @CONSTITUENTID uniqueidentifier = null
      declare    @CONSTITUENTNAME nvarchar(255) = null
      declare    @DATE datetime = null
      declare    @REVENUESPLITAMOUNT money = null
      declare    @SPLITS xml = null
      declare    @FREQUENCYCODE tinyint = null
      declare @ENDDATE datetime = null
      declare @STARTDATE datetime = null
      declare @FINDERNUMBER bigint = null
      declare @SOURCECODEX nvarchar(50) = null
      declare @APPEALIDX uniqueidentifier = null
      declare @GIVENANONYMOUSLY bit = null
      declare @MAILINGIDX uniqueidentifier = null
      declare @CHANNELCODEIDX uniqueidentifier = null
      declare @DONOTACKNOWLEDGE bit = null
      declare @MAXSOLICITORAMOUNT money = null
      declare @TSLONG bigint = 0
      declare @SINGLEDESIGNATIONID uniqueidentifier = null
      declare @FINDERNUMBERVALID bit = null
      declare @REFERENCE nvarchar(255) = null
      declare @CATEGORYCODEID uniqueidentifier = null
      declare @SENDREMINDER bit
      declare @NEXTINSTALLMENTID uniqueidentifier;
            declare @BASEEXCHANGERATEID uniqueidentifier;
            declare @EXCHANGERATE decimal(20,8);
            declare @HADSPOTRATE bit;
            declare @RATECHANGED bit;

      exec dbo.USP_DATAFORMTEMPLATE_EDITLOAD_RECURRINGGIFT_2  
        @REVENUEID,
        0,
        @REVENUERID out,
        @CONSTITUENTID out,
        @CONSTITUENTNAME out,
        @DATE out,
        @REVENUESPLITAMOUNT out,
   @SPLITS out,
        @FREQUENCYCODE out,
        @ENDDATE out,
        @STARTDATE out,
        @FINDERNUMBER out,
        @SOURCECODEX out,
        @APPEALIDX out,
        @GIVENANONYMOUSLY out,
        @MAILINGIDX out,
        @CHANNELCODEIDX out,
        @DONOTACKNOWLEDGE out,
        @MAXSOLICITORAMOUNT out,
        @TSLONG out,
        @SINGLEDESIGNATIONID out,
        @FINDERNUMBERVALID out,
        @REFERENCE out,
        @CATEGORYCODEID out,
        @SENDREMINDER out,
        @NEXTINSTALLMENTID out,
                @BASEEXCHANGERATEID = @BASEEXCHANGERATEID output,
                @EXCHANGERATE = @EXCHANGERATE output,
                @HADSPOTRATE = @HADSPOTRATE output,
                @RATECHANGED = @RATECHANGED output;

          if @MARKETINGOPTION = 0 --retain original values

          begin
              set @SOURCECODE = @SOURCECODEX;
              set @APPEALID = @APPEALIDX;
              set @MAILINGID = @MAILINGIDX;
              set @CHANNELCODEID = @CHANNELCODEIDX;
          end
          else
              set @FINDERNUMBER = 0;

      if @NEWRATE = 0
        set @REVENUESPLITAMOUNT = @AMOUNT
      if @NEWRATE = 1
        set @REVENUESPLITAMOUNT = @REVENUESPLITAMOUNT + @AMOUNT

      set @SPLITS.modify('replace value of (/SPLITS/ITEM/AMOUNT/text())[1] with sql:variable("@REVENUESPLITAMOUNT")')

      begin try
        exec dbo.USP_DATAFORMTEMPLATE_EDIT_RECURRINGGIFT_5
          @REVENUEID,
          @CHANGEAGENTID,
          @DATE,
          @REVENUESPLITAMOUNT,
          @SPLITS,
          @FREQUENCYCODE,
          @ENDDATE,
          @STARTDATE,
          @FINDERNUMBER,
          @SOURCECODE,
          @APPEALID,
          @GIVENANONYMOUSLY,
          @MAILINGID,
          @CHANNELCODEID,
          @DONOTACKNOWLEDGE,
          @REFERENCE,
          @CATEGORYCODEID,
          @SENDREMINDER,
          @NEXTINSTALLMENTID,
          @REVENUEDEVELOPMENTFUNCTIONCODEID,
          @TRANSACTIONCURRENCYID,
          @BASEEXCHANGERATEID,
                    @EXCHANGERATE,
                    @HADSPOTRATE,
                    @RATECHANGED,
          @RESETRECOGNITIONCREDITS;
      end try
      begin catch

      end catch
            set @NUMBEREDITED = @NUMBEREDITED + 1

            fetch next from SPONSORSHIP_CURSOR into
                @REVENUEID
        end
        close SPONSORSHIP_CURSOR;
        deallocate SPONSORSHIP_CURSOR;
    end try
    begin catch
    close SPONSORSHIP_CURSOR;
        deallocate SPONSORSHIP_CURSOR;
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch