USP_DATAFORMTEMPLATE_ADD_SPONSORSHIPBATCHCOMMIT

The save procedure used by the add dataform template "Sponsorship Batch Commit Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@VALIDATEONLY bit IN Validate Only
@CONSTITUENTID uniqueidentifier IN Corresponding sponsor
@DONORID uniqueidentifier IN Financial sponsor
@PLANNEDENDDATE datetime IN Expiration date
@SPONSORSHIPPROGRAMID uniqueidentifier IN Sponsorship program
@SPONSORSHIPLOCATIONID uniqueidentifier IN Location
@GENDERCODE int IN Gender
@SPROPPAGERANGEID uniqueidentifier IN Age range
@ISHIVPOSITIVECODE int IN HIV positive
@HASCONDITIONCODE int IN Disability/Illness
@ISORPHANEDCODE int IN Orphaned
@SPROPPPROJECTCATEGORYCODEID uniqueidentifier IN Category
@SPONSORSHIPOPPORTUNITYIDCHILD uniqueidentifier IN Child
@SPONSORSHIPOPPORTUNITYIDPROJECT uniqueidentifier IN Project
@SPONSORSHIPOPPORTUNITYTYPECODE tinyint IN Sponsorship Opportunity Type
@ISSOLESPONSORSHIP bit IN Sole sponsorship
@STARTDATE date IN Start Date
@ENDDATE date IN End Date
@AMOUNT money IN Amount
@PAYMENTMETHODCODE tinyint IN Payment method
@FREQUENCYCODE tinyint IN Frequency
@AUTOPAY bit IN Pay installments automatically
@REFERENCEDATE UDT_FUZZYDATE IN Reference date
@REFERENCENUMBER nvarchar(20) IN Reference no.
@CARDHOLDERNAME nvarchar(255) IN Name on card
@CREDITCARDNUMBER nvarchar(20) IN Card number
@CREDITTYPECODEID uniqueidentifier IN Card type
@EXPIRESON UDT_FUZZYDATE IN Expires on
@CONSTITUENTACCOUNTID uniqueidentifier IN Account
@REVENUESCHEDULEENDDATE datetime IN Payment end date
@REVENUESCHEDULESTARTDATE datetime IN Payment start date
@CREDITCARDTOKEN uniqueidentifier IN Credit card token
@ISTRANSIENTCARD bit IN Is transient credit card
@RESERVEDOPPORTUNITYID uniqueidentifier IN Reserved child
@RESERVATIONKEYID uniqueidentifier IN Reservation key
@SENDREMINDER bit IN Send reminders
@FINDERNUMBER bigint IN Finder number
@SOURCECODE nvarchar(50) IN Source code
@APPEALID uniqueidentifier IN Appeal
@MAILINGID uniqueidentifier IN Effort
@CHANNELCODEID uniqueidentifier IN Inbound channel
@REFERENCE nvarchar(255) IN Reference
@REVENUECATEGORYCODEID uniqueidentifier IN Revenue category
@ISGIFTSPONSORSHIP bit IN Is gift sponsorship
@EXPIRATIONREASONID uniqueidentifier IN Expiration reason
@BID uniqueidentifier IN Batch helper id
@PARTIALCREDITCARDNUMBER nvarchar(4) IN Partial card number
@TRANSACTIONCURRENCYID uniqueidentifier IN Transaction currency
@BASECURRENCYID uniqueidentifier IN Base currency
@BASEEXCHANGERATEID uniqueidentifier IN Base exchange rate
@EXCHANGERATE decimal(20, 8) IN Exchange rate
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@BATCHNUMBER nvarchar(100) IN
@COMMITMENTID nvarchar(100) IN Commitment ID
@SEPAMANDATEID uniqueidentifier IN
@ADDSEPAMANDATE bit IN
@SEPAMANDATECUSTOMIDENTIFIER nvarchar(35) IN
@SEPAMANDATESIGNATUREDATE date IN
@SEPAMANDATETYPECODE tinyint IN
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN
@IMPORT bit IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SPONSORSHIPBATCHCOMMIT
(
  @ID uniqueidentifier = null output,
  @CHANGEAGENTID uniqueidentifier = null,
  @VALIDATEONLY bit = 0,
  @CONSTITUENTID uniqueidentifier = null,
  @DONORID uniqueidentifier= null,
  @PLANNEDENDDATE datetime = null,
  @SPONSORSHIPPROGRAMID uniqueidentifier = null,
  @SPONSORSHIPLOCATIONID uniqueidentifier = null,
  @GENDERCODE int = 0,
  @SPROPPAGERANGEID uniqueidentifier = null,
  @ISHIVPOSITIVECODE int = 0,
  @HASCONDITIONCODE int = 0,
  @ISORPHANEDCODE int = 0,
  @SPROPPPROJECTCATEGORYCODEID uniqueidentifier = null,
  @SPONSORSHIPOPPORTUNITYIDCHILD uniqueidentifier = null,
  @SPONSORSHIPOPPORTUNITYIDPROJECT uniqueidentifier = null,
  @SPONSORSHIPOPPORTUNITYTYPECODE tinyint = null,
  @ISSOLESPONSORSHIP bit = 0,
  @STARTDATE date = null,
  @ENDDATE date = null,
  @AMOUNT money = 0,
  @PAYMENTMETHODCODE tinyint = 2,
  @FREQUENCYCODE tinyint = 3,
  @AUTOPAY bit = 1,
  @REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
  @REFERENCENUMBER nvarchar(20) = '',
  @CARDHOLDERNAME nvarchar(255) = '',
  @CREDITCARDNUMBER nvarchar(20) = '',
  @CREDITTYPECODEID uniqueidentifier = null,
  @EXPIRESON dbo.UDT_FUZZYDATE = null,
  @CONSTITUENTACCOUNTID uniqueidentifier = null,
  @REVENUESCHEDULEENDDATE datetime = null,
  @REVENUESCHEDULESTARTDATE datetime = null,
  @CREDITCARDTOKEN uniqueidentifier = null,
  @ISTRANSIENTCARD bit = null,
  @RESERVEDOPPORTUNITYID uniqueidentifier = null,
  @RESERVATIONKEYID uniqueidentifier = null,
  @SENDREMINDER bit = 0,
  @FINDERNUMBER bigint = 0,
  @SOURCECODE nvarchar(50) = '',
  @APPEALID uniqueidentifier = null,
  @MAILINGID uniqueidentifier = null,
  @CHANNELCODEID uniqueidentifier = null,
  @REFERENCE nvarchar(255) = null,
  @REVENUECATEGORYCODEID uniqueidentifier = null,
  @ISGIFTSPONSORSHIP bit = 0,
  @EXPIRATIONREASONID uniqueidentifier = null,
  @BID uniqueidentifier = null,
  @PARTIALCREDITCARDNUMBER nvarchar(4) = '',
  @TRANSACTIONCURRENCYID uniqueidentifier = null,
  @BASECURRENCYID uniqueidentifier = null,
  @BASEEXCHANGERATEID uniqueidentifier = null,
  @EXCHANGERATE decimal(20,8) = null,
  @CURRENTAPPUSERID uniqueidentifier = null,
  @BATCHNUMBER nvarchar(100) = null,
  @COMMITMENTID nvarchar(100) = '',
  @SEPAMANDATEID uniqueidentifier = null,
  @ADDSEPAMANDATE bit = 0,
  @SEPAMANDATECUSTOMIDENTIFIER nvarchar(35) = '',
  @SEPAMANDATESIGNATUREDATE date = null,
  @SEPAMANDATETYPECODE tinyint = 0,
  @OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
  @IMPORT bit = 0
)
as
  set nocount on;

  if @ID is null
    set @ID = newid()

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

  declare @CURRENTDATE datetime
  set @CURRENTDATE = getdate()
  declare @BATCHID uniqueidentifier;

  begin try

    if @PAYMENTMETHODCODE = 10 --Other

    begin
      if @OTHERPAYMENTMETHODCODEID is null
        raiserror('Please enter an ''Other method'' for other payment method sponsorship.', 13, 1);
    end

    select 
      @CREDITCARDTOKEN = C.CREDITCARDTOKEN
    from dbo.CREDITCARD C inner join dbo.BATCHSPONSORSHIP BS on BS.CREDITCARDID = C.ID
    where BS.ID = @ID

    select 
      @BATCHID = [BS].[BATCHID]
    from dbo.[BATCHSPONSORSHIP] [BS]
    where [BS].[ID] = @ID;

    if @REVENUESCHEDULESTARTDATE is null
      set @REVENUESCHEDULESTARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE)

    if @FINDERNUMBER is null
      set @FINDERNUMBER = 0;


    /* Validate all marketing data and dependent fields */
    exec dbo.[USP_REVENUEBATCH_VALIDATEMARKETINGDATA]
      @FINDERNUMBER = @FINDERNUMBER,
      @SOURCECODE = @SOURCECODE,
      @MAILINGID = @MAILINGID,
      @APPEALID = @APPEALID,
      @CONSTITUENTID = @DONORID,
      @BATCHID = @BATCHID;

    --if we have a finder number make sure the constituent has been added to the tables

    if isnull(@FINDERNUMBER, 0) > 0
      exec dbo.USP_DATAFORMTEMPLATE_ADD_ACQUISITIONLISTMEMBER @CONSTITUENTID OUTPUT, @CHANGEAGENTID, @FINDERNUMBER;

    --add new constituent

    if not exists(select ID from dbo.CONSTITUENT where ID=@CONSTITUENTID)
      exec dbo.USP_SPONSORSHIPBATCH_CONSTITUENT_ADD 
        @CONSTITUENTID OUTPUT
        @CHANGEAGENTID
        @CONSTITUENTID
        @CONSTITUENTACCOUNTID
        @CONSTITUENTACCOUNTID output,
        0,
        0;

    --add new donor

    if @DONORID is null
    begin
      set @DONORID= @CONSTITUENTID
      set @ISGIFTSPONSORSHIP = 0
    end
    else
    begin
      set @ISGIFTSPONSORSHIP = 1
      if not exists(select ID from dbo.CONSTITUENT where ID=@DONORID)
        exec dbo.USP_SPONSORSHIPBATCH_CONSTITUENT_ADD 
          @DONORID OUTPUT
          @CHANGEAGENTID
          @DONORID
          @CONSTITUENTACCOUNTID
          @CONSTITUENTACCOUNTID output,
          0,
          0;
    end


    declare @SPONSORSHIPOPPORTUNITYID uniqueidentifier;
    declare @MATCHEDOPPORTUNITYID uniqueidentifier;

    select @SPONSORSHIPOPPORTUNITYID = SPONSORSHIPOPPORTUNITYID from dbo.BATCHSPONSORSHIP where ID=@BID

    if @SPONSORSHIPOPPORTUNITYID is not null
    begin  
      if exists(select ID from dbo.SPONSORSHIPOPPORTUNITYCHILD where ID= @SPONSORSHIPOPPORTUNITYID)
        if @RESERVEDOPPORTUNITYID is null    
          begin
            set @SPONSORSHIPOPPORTUNITYIDCHILD = @SPONSORSHIPOPPORTUNITYID
          end
      else
        set @SPONSORSHIPOPPORTUNITYIDPROJECT = @SPONSORSHIPOPPORTUNITYID
    end
    else
    begin
      declare @TEMP table(SPONSORSHIPOPPORTUNITY uniqueidentifier,NAME nvarchar(255), OFFERSOLESPONSORSHIP bit,
                          GENDER nvarchar(7),BIRTHDATE nvarchar(25), LOOKUPID nvarchar(36),
                          LOCATION nvarchar(max), CATEGORY nvarchar(100))
      insert into @TEMP
        exec dbo.USP_DATALIST_SPONSORSHIPOPPORTUNITYMATCH
          @CHANGEAGENTID,
          @SPONSORSHIPPROGRAMID,
          @SPONSORSHIPLOCATIONID,
          @GENDERCODE,
          @SPROPPAGERANGEID,
          @ISHIVPOSITIVECODE,
          @HASCONDITIONCODE,
          @ISORPHANEDCODE,
          @SPROPPPROJECTCATEGORYCODEID,
          @CONSTITUENTID,
          @ISSOLESPONSORSHIP,
          @DONORID

      select top 1 @SPONSORSHIPOPPORTUNITYID = SPONSORSHIPOPPORTUNITY from @TEMP

      if @SPONSORSHIPOPPORTUNITYID is null
        raiserror ('No matching opportunity found', 13,1);

      set @MATCHEDOPPORTUNITYID = @SPONSORSHIPOPPORTUNITYID;
      set @SPONSORSHIPOPPORTUNITYIDCHILD = null;
      set @SPONSORSHIPOPPORTUNITYIDPROJECT = null;

    end

    if @AMOUNT is null
      set @AMOUNT =0

    -- Multicurrency setup


    declare @BASEAMOUNT money;
    declare @ORGANIZATIONAMOUNT money;
    declare @ORGANIZATIONCURRENCYID uniqueidentifier;
    declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;

    set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();


    if @BASECURRENCYID is null
    begin
      set @BASECURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID)
    end

    if @TRANSACTIONCURRENCYID is null
      set @TRANSACTIONCURRENCYID = @BASECURRENCYID;

    if @EXCHANGERATE is null
      set @EXCHANGERATE = 0;

    -- Create the base exchange rate when "Spot rate" is selected.


    if @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
    begin
      set @BASEEXCHANGERATEID = newid();

      insert into dbo.CURRENCYEXCHANGERATE(
        ID, 
        FROMCURRENCYID,
        TOCURRENCYID,
        RATE,
        ASOFDATE,
        TYPECODE,
        SOURCECODEID,
        ADDEDBYID, 
        CHANGEDBYID, 
        DATEADDED, 
        DATECHANGED
      )
      values(
        @BASEEXCHANGERATEID,
        @TRANSACTIONCURRENCYID,
        @BASECURRENCYID,
        @EXCHANGERATE,
        @CURRENTDATE,
        2,
        null,
        @CHANGEAGENTID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        @CURRENTDATE
      );
    end

    declare @CREDITCARDPARTIALNUMBER nvarchar(4) = ''
    set @CREDITCARDPARTIALNUMBER = case when @PAYMENTMETHODCODE = 98 then @PARTIALCREDITCARDNUMBER else @CREDITCARDNUMBER end;

    exec dbo.USP_DATAFORMTEMPLATE_ADD_SPONSORSHIP
      @ID,
      @CHANGEAGENTID,
      @DONORID,
      @CONSTITUENTID,
      @SPONSORSHIPPROGRAMID,
      @SPONSORSHIPLOCATIONID,
      @GENDERCODE,
      @SPROPPAGERANGEID,
      @ISHIVPOSITIVECODE,
      @HASCONDITIONCODE,
      @ISORPHANEDCODE,
      @SPROPPPROJECTCATEGORYCODEID,
      @SPONSORSHIPOPPORTUNITYIDCHILD,
      @SPONSORSHIPOPPORTUNITYIDPROJECT,
      @ISSOLESPONSORSHIP,
      @STARTDATE,
      @AMOUNT,
      @PAYMENTMETHODCODE,
      @REFERENCEDATE,
      @REFERENCENUMBER,
      @CARDHOLDERNAME,
      @CREDITCARDPARTIALNUMBER,
      @CREDITTYPECODEID,
      @EXPIRESON,
      @CONSTITUENTACCOUNTID,
      @FREQUENCYCODE,
      @REVENUESCHEDULEENDDATE,
      @REVENUESCHEDULESTARTDATE,
      @AUTOPAY,
      @CREDITCARDTOKEN,
      @ISGIFTSPONSORSHIP,
      @PLANNEDENDDATE,
      @RESERVEDOPPORTUNITYID,
      @RESERVATIONKEYID,
      @MATCHEDOPPORTUNITYID,
      @SENDREMINDER,
      @FINDERNUMBER,
      @SOURCECODE,
      @APPEALID,
      @MAILINGID,
      @CHANNELCODEID,
      @REFERENCE,
      @REVENUECATEGORYCODEID,
      @EXPIRATIONREASONID,
      @TRANSACTIONCURRENCYID,
      @BASEEXCHANGERATEID,
      @EXCHANGERATE,
      @CURRENTAPPUSERID,
      @BATCHNUMBER,
      default,
      @SEPAMANDATEID,
      0, --@CARRYFORWARDPASTDUE

      null, --@CARRYFORWARDPASTDUEAMOUNT

      @OTHERPAYMENTMETHODCODEID


    if @COMMITMENTID <> ''
      update dbo.SPONSORSHIPCOMMITMENT
      set CUSTOMIDENTIFIER = @COMMITMENTID
      from dbo.SPONSORSHIPCOMMITMENT SC
      inner join SPONSORSHIP S on S.SPONSORSHIPCOMMITMENTID = SC.ID
      where @ID = S.ID

  end try

  begin catch
    exec dbo.[USP_RAISE_ERROR];
    return 1;
  end catch

  return 0;