USP_DATAFORMTEMPLATE_EDIT_REVENUEBATCHROW_12

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CONSTITUENTID uniqueidentifier IN
@TYPECODE tinyint IN
@DATE datetime IN
@AMOUNT money IN
@PAYMENTMETHODCODE tinyint IN
@DONOTACKNOWLEDGE bit IN
@CHECKDATE UDT_FUZZYDATE IN
@CHECKNUMBER nvarchar(20) IN
@REFERENCEDATE UDT_FUZZYDATE IN
@REFERENCENUMBER nvarchar(20) IN
@CARDHOLDERNAME nvarchar(255) IN
@CREDITCARDNUMBER nvarchar(20) IN
@CREDITTYPECODEID uniqueidentifier IN
@AUTHORIZATIONCODE nvarchar(20) IN
@EXPIRESON UDT_FUZZYDATE IN
@ISSUER nvarchar(100) IN
@NUMBEROFUNITS decimal(20, 3) IN
@SYMBOL nvarchar(25) IN
@MEDIANPRICE decimal(19, 4) IN
@PROPERTYSUBTYPECODEID uniqueidentifier IN
@GIFTINKINDSUBTYPECODEID uniqueidentifier IN
@RECEIPTAMOUNT money IN
@DONOTRECEIPT bit IN
@CONSTITUENTACCOUNTID uniqueidentifier IN
@SPLITS xml IN
@SINGLEDESIGNATIONID uniqueidentifier IN
@REVENUESTREAMS xml IN
@APPLYTOSHOWNFORCONSTITUENTID uniqueidentifier IN
@SEQUENCE int IN
@INSTALLMENTFREQUENCYCODE tinyint IN
@INSTALLMENTSTARTDATE datetime IN
@INSTALLMENTENDDATE datetime IN
@NUMBEROFINSTALLMENTS int IN
@SOLICITORS xml IN
@BENEFITS xml IN
@FINDERNUMBER bigint IN
@SOURCECODE nvarchar(60) IN
@APPEALID uniqueidentifier IN
@FINDERNUMBERISVALID bit IN
@USERMODIFIEDBENEFITS bit IN
@BENEFITSWAIVED bit IN
@POSTDATE datetime IN
@POSTSTATUSCODE tinyint IN
@SENDPLEDGEREMINDER bit IN
@SALEDATE datetime IN
@SALEAMOUNT money IN
@BROKERFEE money IN
@SALEPOSTSTATUSCODE tinyint IN
@SALEPOSTDATE datetime IN
@NOTETITLE nvarchar(50) IN
@NOTEAUTHORID uniqueidentifier IN
@NOTEDATEENTERED datetime IN
@NOTETYPECODEID uniqueidentifier IN
@NOTETEXTNOTE nvarchar(max) IN
@MGMATCHINGCONSTITUENTID uniqueidentifier IN
@MGDATE datetime IN
@MGAMOUNT money IN
@MGPOSTDATE datetime IN
@MGPOSTSTATUSCODE tinyint IN
@MGCONDITIONID uniqueidentifier IN
@MGSPLITS xml IN
@GIVENANONYMOUSLY bit IN
@GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID uniqueidentifier IN
@USERMODIFIEDRECEIPTAMOUNT bit IN
@PLEDGESUBTYPEID uniqueidentifier IN
@REJECTIONCODEID uniqueidentifier IN
@CONSTITUENTLOOKUPID uniqueidentifier IN
@MAILINGID uniqueidentifier IN
@CHANNELCODEID uniqueidentifier IN
@INSTALLMENTS xml IN
@PAYMENTFORPLEDGEAMOUNT money IN
@RECOGNITIONS xml IN
@DIDRECOGNITIONSDEFAULT bit IN
@TRIBUTES xml IN
@UNAPPLIEDMATCHINGGIFTSPLITS xml IN
@UNAPPLIEDMATCHINGGIFTAMOUNT money IN
@RECEIPTTYPECODE tinyint IN
@NEWCONSTITUENT xml IN
@MGRELATIONSHIPID uniqueidentifier IN
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN
@LETTERCODEID uniqueidentifier IN
@ACKNOWLEDGEDATE datetime IN
@REFERENCE nvarchar(255) IN
@CATEGORYCODEID uniqueidentifier IN
@ACKNOWLEDGEEID uniqueidentifier IN
@APPLICATIONCODE tinyint IN
@OTHERTYPECODEID uniqueidentifier IN
@OPPORTUNITYID uniqueidentifier IN
@DIRECTDEBITRESULTCODE nvarchar(10) IN
@LOWPRICE decimal(19, 4) IN
@HIGHPRICE decimal(19, 4) IN
@NUMBEROFUNITSSOLD decimal(20, 3) IN
@USERMODIFIEDNUMBEROFUNITSSOLD bit IN
@CREDITCARDTOKEN uniqueidentifier IN
@REJECTIONMESSAGE nvarchar(250) IN
@PARTIALCREDITCARDNUMBER nvarchar(4) IN
@TAXDECLARATIONS xml IN
@STANDINGORDERCONSTITUENTACCOUNTID uniqueidentifier IN
@STANDINGORDERREFERENCENUMBER nvarchar(18) IN
@STANDINGORDERREFERENCEDATE UDT_FUZZYDATE IN
@STANDINGORDERSETUP bit IN
@STANDINGORDERSETUPDATE datetime IN
@TRANSACTIONID uniqueidentifier IN
@ISTRANSIENTCARD bit IN
@DECLINESGIFTAID bit IN
@DDISOURCECODEID uniqueidentifier IN
@DDISOURCEDATE date IN
@ISCOVENANT bit IN
@AMOUNTFORVAT money IN
@VATTAXRATEID uniqueidentifier IN
@VATAMOUNT money IN
@CURRENTAPPUSERID uniqueidentifier IN
@PERCENTAGEBENEFITS xml IN
@ISGIFTAIDSPONSORSHIP bit IN
@GENERATEREFERENCENUMBER bit IN
@SOURCECODEIMPORT nvarchar(60) IN
@MERCHANTACCOUNTID uniqueidentifier IN
@VENDORID nvarchar(50) IN

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUEBATCHROW_12
(
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier,
  @CONSTITUENTID uniqueidentifier,
  @TYPECODE tinyint,
  @DATE datetime,
  @AMOUNT money,
  @PAYMENTMETHODCODE tinyint,
  @DONOTACKNOWLEDGE bit,
  @CHECKDATE dbo.UDT_FUZZYDATE,
  @CHECKNUMBER nvarchar(20),
  @REFERENCEDATE dbo.UDT_FUZZYDATE,
  @REFERENCENUMBER nvarchar(20),
  @CARDHOLDERNAME nvarchar(255),
  @CREDITCARDNUMBER nvarchar(20),
  @CREDITTYPECODEID uniqueidentifier,
  @AUTHORIZATIONCODE nvarchar(20),
  @EXPIRESON dbo.UDT_FUZZYDATE,
  @ISSUER nvarchar(100),
  @NUMBEROFUNITS decimal(20,3),
  @SYMBOL nvarchar(25),
  @MEDIANPRICE decimal(19,4),
  @PROPERTYSUBTYPECODEID uniqueidentifier,
  @GIFTINKINDSUBTYPECODEID uniqueidentifier,
  @RECEIPTAMOUNT money,
  @DONOTRECEIPT bit,
  @CONSTITUENTACCOUNTID uniqueidentifier,
  @SPLITS xml,
  @SINGLEDESIGNATIONID uniqueidentifier,
  @REVENUESTREAMS xml,
  @APPLYTOSHOWNFORCONSTITUENTID uniqueidentifier,
  @SEQUENCE int,
  @INSTALLMENTFREQUENCYCODE tinyint,
  @INSTALLMENTSTARTDATE datetime,
  @INSTALLMENTENDDATE datetime,
  @NUMBEROFINSTALLMENTS int,
  @SOLICITORS xml,
  @BENEFITS xml,
  @FINDERNUMBER bigint,
  @SOURCECODE nvarchar(60),
  @APPEALID uniqueidentifier,
  @FINDERNUMBERISVALID bit,
  @USERMODIFIEDBENEFITS bit,
  @BENEFITSWAIVED bit,
  @POSTDATE datetime,
  @POSTSTATUSCODE tinyint,
  @SENDPLEDGEREMINDER bit,
  @SALEDATE datetime,
  @SALEAMOUNT money,
  @BROKERFEE money,
  @SALEPOSTSTATUSCODE tinyint,
  @SALEPOSTDATE datetime,
  @NOTETITLE nvarchar(50),
  @NOTEAUTHORID uniqueidentifier,
  @NOTEDATEENTERED datetime,
  @NOTETYPECODEID uniqueidentifier,
  @NOTETEXTNOTE nvarchar(max),
  @MGMATCHINGCONSTITUENTID uniqueidentifier,
  @MGDATE datetime,
  @MGAMOUNT money,
  @MGPOSTDATE datetime,
  @MGPOSTSTATUSCODE tinyint,
  @MGCONDITIONID uniqueidentifier,
  @MGSPLITS xml,
  @GIVENANONYMOUSLY bit,
  @GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID uniqueidentifier,
  @USERMODIFIEDRECEIPTAMOUNT bit,
  @PLEDGESUBTYPEID uniqueidentifier,
  @REJECTIONCODEID uniqueidentifier,
  @CONSTITUENTLOOKUPID uniqueidentifier,
  @MAILINGID uniqueidentifier,
  @CHANNELCODEID uniqueidentifier,
  @INSTALLMENTS xml,
  @PAYMENTFORPLEDGEAMOUNT money,
  @RECOGNITIONS xml,
  @DIDRECOGNITIONSDEFAULT bit,
  @TRIBUTES xml,
  @UNAPPLIEDMATCHINGGIFTSPLITS xml,
  @UNAPPLIEDMATCHINGGIFTAMOUNT money,
  @RECEIPTTYPECODE tinyint,
  @NEWCONSTITUENT xml,
  @MGRELATIONSHIPID uniqueidentifier,
  @OTHERPAYMENTMETHODCODEID uniqueidentifier,
  @LETTERCODEID uniqueidentifier,
  @ACKNOWLEDGEDATE datetime,
  @REFERENCE nvarchar(255),
  @CATEGORYCODEID uniqueidentifier,
  @ACKNOWLEDGEEID uniqueidentifier,
  @APPLICATIONCODE tinyint,
  @OTHERTYPECODEID uniqueidentifier,
  @OPPORTUNITYID uniqueidentifier,
  @DIRECTDEBITRESULTCODE nvarchar(10),
  @LOWPRICE decimal(19,4),
  @HIGHPRICE decimal(19,4),
  @NUMBEROFUNITSSOLD decimal(20,3),
  @USERMODIFIEDNUMBEROFUNITSSOLD bit,
  @CREDITCARDTOKEN uniqueidentifier,
  @REJECTIONMESSAGE nvarchar(250),
  -- PARTIALCREDITCARDNUMBER is used just to support import and so is only 
  -- actually used on RevenueBatchDataForm.Add.xml
  @PARTIALCREDITCARDNUMBER nvarchar(4),
  @TAXDECLARATIONS xml,
  @STANDINGORDERCONSTITUENTACCOUNTID uniqueidentifier, 
  @STANDINGORDERREFERENCENUMBER nvarchar(18), 
  @STANDINGORDERREFERENCEDATE dbo.UDT_FUZZYDATE,
  @STANDINGORDERSETUP bit,
  @STANDINGORDERSETUPDATE datetime,
  @TRANSACTIONID uniqueidentifier,
  @ISTRANSIENTCARD bit,
  @DECLINESGIFTAID bit,
  @DDISOURCECODEID uniqueidentifier,
  @DDISOURCEDATE date,
  @ISCOVENANT bit,
  @AMOUNTFORVAT money,
  @VATTAXRATEID uniqueidentifier,
  @VATAMOUNT money,
  @CURRENTAPPUSERID uniqueidentifier = null,
  @PERCENTAGEBENEFITS xml,
  @ISGIFTAIDSPONSORSHIP bit,
  @GENERATEREFERENCENUMBER bit,
  @SOURCECODEIMPORT nvarchar(60),
  @MERCHANTACCOUNTID uniqueidentifier,
  @VENDORID nvarchar(50)
)
as
begin
  set nocount on;

  declare @CURRENTDATE datetime;
  declare @BATCHID uniqueidentifier;

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

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

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

  if not @CHANGEAGENTID is null
    set CONTEXT_INFO @CHANGEAGENTID;

  begin try
   if @PAYMENTMETHODCODE = 11 --Standing order
      begin
        set @CONSTITUENTACCOUNTID = @STANDINGORDERCONSTITUENTACCOUNTID;
        --if @CONSTITUENTACCOUNTID is null
          --begin
            --raiserror('Standing order account must be specified for standing order payments', 13, 1)
          --end
        set @REFERENCEDATE = @STANDINGORDERREFERENCEDATE;

        if @GENERATEREFERENCENUMBER is null or @GENERATEREFERENCENUMBER = 1
          select 
            @STANDINGORDERREFERENCENUMBER = '',
            @GENERATEREFERENCENUMBER = 1
      end

    --JamesWill CR269707-031107 2007/03/19 Set default values for any non-nullable fields that might come in as null
    if @DONOTACKNOWLEDGE is null
      set @DONOTACKNOWLEDGE = 0;
    if @CHECKDATE is null
      set @CHECKDATE = '00000000';
    if @CHECKNUMBER is null
      set @CHECKNUMBER = '';
    if @REFERENCEDATE is null
      set @REFERENCEDATE = '00000000';
    if @REFERENCENUMBER is null
      set @REFERENCENUMBER = '';
    if @CARDHOLDERNAME is null
      set @CARDHOLDERNAME = '';
    if @CREDITCARDNUMBER is null
      set @CREDITCARDNUMBER = '';
    if @AUTHORIZATIONCODE is null
      set @AUTHORIZATIONCODE = '';
    if @EXPIRESON is null
      set @EXPIRESON = '00000000';
    if @ISSUER is null
      set @ISSUER = '';
    if @NUMBEROFUNITS is null
      set @NUMBEROFUNITS = 0;
    if @NUMBEROFUNITSSOLD is null
      set @NUMBEROFUNITSSOLD = 0;
    if @USERMODIFIEDNUMBEROFUNITSSOLD is null
      set @USERMODIFIEDNUMBEROFUNITSSOLD = 0;
    if @SYMBOL is null
      set @SYMBOL = '';
    if @MEDIANPRICE is null
      set @MEDIANPRICE = 0;
    if @LOWPRICE is null
      set @LOWPRICE = 0;
    if @HIGHPRICE is null
      set @HIGHPRICE = 0;
    if @RECEIPTAMOUNT is null
      set @RECEIPTAMOUNT = 0;
    if @DONOTRECEIPT is null
      set @DONOTRECEIPT = 0;
    if @NUMBEROFINSTALLMENTS is null
      set @NUMBEROFINSTALLMENTS = 1;
    if @SOURCECODE is null
      set @SOURCECODE = '';
    if @FINDERNUMBERISVALID is null
      set @FINDERNUMBERISVALID = 0;
    if @USERMODIFIEDBENEFITS is null
      set @USERMODIFIEDBENEFITS = 0;
    if @BENEFITSWAIVED is null
      set @BENEFITSWAIVED = 0;
    if @SENDPLEDGEREMINDER is null
      set @SENDPLEDGEREMINDER = 1;
    if @SALEAMOUNT is null
      set @SALEAMOUNT = 0;
    if @BROKERFEE is null
      set @BROKERFEE = 0;
    if @NOTETITLE is null 
      set @NOTETITLE = '';
    if @NOTETEXTNOTE is null
      set @NOTETEXTNOTE = '';
    if @MGAMOUNT is null
      set @MGAMOUNT = 0;
    if @MGPOSTSTATUSCODE is null
      set @MGPOSTSTATUSCODE = 1;
    if @GIVENANONYMOUSLY is null
      set @GIVENANONYMOUSLY = 0;
    if @USERMODIFIEDRECEIPTAMOUNT is null
      set @USERMODIFIEDRECEIPTAMOUNT = 0;
    if @PAYMENTFORPLEDGEAMOUNT is null
      set @PAYMENTFORPLEDGEAMOUNT = 0;
    if @DIDRECOGNITIONSDEFAULT is null
      set @DIDRECOGNITIONSDEFAULT = 0;
    if @STANDINGORDERREFERENCEDATE is null
      set @REFERENCEDATE = '00000000';
    if @STANDINGORDERSETUP is null
      set @STANDINGORDERSETUP = 0;
    if @STANDINGORDERREFERENCENUMBER is null
      set @STANDINGORDERREFERENCENUMBER = '';
    if @AMOUNTFORVAT is null
      set @AMOUNTFORVAT = 0;
    if @VATAMOUNT is null
      set @VATAMOUNT = 0;
    if @FINDERNUMBER is null
      set @FINDERNUMBER = 0;
    if cast(@SPLITS as nvarchar(max)) = '' 
      set @SPLITS = null;
    if not @SPLITS is null
      set @SINGLEDESIGNATIONID = null;
    if @PAYMENTMETHODCODE is null
      set @PAYMENTMETHODCODE = 255;
    /* JamesWill CR267402-021907 INSTALLMENTFREQUENCYCODE cannot be null in the database, but it can be null in the defaults */
    if @INSTALLMENTFREQUENCYCODE is null
    begin
      -- For Recurring Gifts, default to Monthly.  For other types, use Single Installment.
      if @TYPECODE = 3
        set @INSTALLMENTFREQUENCYCODE = 3;
      else
        set @INSTALLMENTFREQUENCYCODE = 5;
    end
    /* JamesWill CR265838-020507 2007/03/07 */
    if @POSTSTATUSCODE is null
      set @POSTSTATUSCODE = 255;
    if @SALEPOSTSTATUSCODE is null
      set @SALEPOSTSTATUSCODE = 255;
    if @RECEIPTTYPECODE is null
      set @RECEIPTTYPECODE = 255;
    if @APPLICATIONCODE is null
      set @APPLICATIONCODE = 255;

    if @PAYMENTFORPLEDGEAMOUNT is null
      set @PAYMENTFORPLEDGEAMOUNT = 0;


    /* Lookup and set all possible marketing data (via output params) from the data that was specified. */
    select
      @BATCHID = [BATCHID]
    from
      dbo.[BATCHREVENUE]
    where
      [ID] = @ID;

    declare @LOOKUPSINGLEDESIGNATION bit = (case when @SINGLEDESIGNATIONID is null and @SPLITS is null and @REVENUESTREAMS is null then 1 else 0 end);
    exec dbo.[USP_REVENUEBATCH_GETMARKETINGDATA]
      @FINDERNUMBER = @FINDERNUMBER,
      @LOOKUPSINGLEDESIGNATION = @LOOKUPSINGLEDESIGNATION,
      @CHANGEAGENTID = @CHANGEAGENTID,
      @CURRENTAPPUSERID = @CURRENTAPPUSERID,
      @SOURCECODE = @SOURCECODE output,
      @MAILINGID = @MAILINGID output,
      @APPEALID = @APPEALID output,
      @CONSTITUENTID = @CONSTITUENTID output,
      @FINDERNUMBERISVALID = @FINDERNUMBERISVALID output,
      @SINGLEDESIGNATIONID = @SINGLEDESIGNATIONID output,
      @BATCHID = @BATCHID;


    declare @CREDITCARDID uniqueidentifier;

    if @PAYMENTMETHODCODE = 2
      exec dbo.USP_CREDITCARD_SAVE
          @ID = @CREDITCARDID output,
          @CREDITCARDTOKEN = @CREDITCARDTOKEN,
          @CARDHOLDERNAME = @CARDHOLDERNAME,
          @CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER,
          @CREDITTYPECODEID = @CREDITTYPECODEID,
          @EXPIRESON = @EXPIRESON,
          @CHANGEAGENTID = @CHANGEAGENTID,
          @CURRENTDATE = @CURRENTDATE,
          @ISTRANSIENT = @ISTRANSIENTCARD;

    update dbo.BATCHREVENUE 
      set CONSTITUENTID = @CONSTITUENTID,
        TYPECODE = @TYPECODE,
        DATE = @DATE,
        PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
        DONOTACKNOWLEDGE = @DONOTACKNOWLEDGE,
        CHECKDATE = @CHECKDATE,
        CHECKNUMBER = @CHECKNUMBER,
        REFERENCEDATE = @REFERENCEDATE,
        REFERENCENUMBER = @REFERENCENUMBER,
        CREDITCARDID = @CREDITCARDID,
        AUTHORIZATIONCODE = @AUTHORIZATIONCODE,
        CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID
        AMOUNT = @AMOUNT
        RECEIPTAMOUNT = @RECEIPTAMOUNT
        DONOTRECEIPT = @DONOTRECEIPT,
        SEQUENCE = @SEQUENCE,
        INSTALLMENTFREQUENCYCODE = @INSTALLMENTFREQUENCYCODE,
        INSTALLMENTSTARTDATE = @INSTALLMENTSTARTDATE,
        INSTALLMENTENDDATE = @INSTALLMENTENDDATE,
        NUMBEROFINSTALLMENTS = @NUMBEROFINSTALLMENTS,
        APPLYTOSHOWNFORCONSTITUENTID = @APPLYTOSHOWNFORCONSTITUENTID,
        FINDERNUMBER = @FINDERNUMBER,
        SOURCECODE = @SOURCECODE,
        APPEALID = @APPEALID,
        FINDERNUMBERISVALID = @FINDERNUMBERISVALID,
        USERMODIFIEDBENEFITS = @USERMODIFIEDBENEFITS,
        BENEFITSWAIVED = @BENEFITSWAIVED,
        POSTDATE = @POSTDATE,
        POSTSTATUSCODE = @POSTSTATUSCODE,
        SENDPLEDGEREMINDER = @SENDPLEDGEREMINDER,
        SALEDATE = @SALEDATE,
        SALEAMOUNT = @SALEAMOUNT,
        BROKERFEE = @BROKERFEE,
        SALEPOSTSTATUSCODE = @SALEPOSTSTATUSCODE,
        SALEPOSTDATE = @SALEPOSTDATE,
        ISSUER = @ISSUER,
        MERCHANTACCOUNTID = @MERCHANTACCOUNTID,
        NUMBEROFUNITS = @NUMBEROFUNITS,
        SYMBOL = @SYMBOL,
        MEDIANPRICE = @MEDIANPRICE,
        GIFTINKINDSUBTYPECODEID = @GIFTINKINDSUBTYPECODEID,
        PROPERTYSUBTYPECODEID = @PROPERTYSUBTYPECODEID,
        NOTETITLE = @NOTETITLE,
        NOTEAUTHORID = @NOTEAUTHORID,
        NOTEDATEENTERED = @NOTEDATEENTERED,
        NOTETYPECODEID = @NOTETYPECODEID,
        NOTETEXTNOTE = @NOTETEXTNOTE,
        MGMATCHINGCONSTITUENTID = @MGMATCHINGCONSTITUENTID,
        MGDATE = @MGDATE,
        MGAMOUNT = @MGAMOUNT,
        MGPOSTDATE = null, --JamesWill CR275664-052107 2007/05/24 Matching gift claims are never posted
        MGPOSTSTATUSCODE = 2, --JamesWill CR275664-052107 2007/05/24 Matching gift claims are never posted
        MGCONDITIONID = @MGCONDITIONID,
        GIVENANONYMOUSLY = @GIVENANONYMOUSLY,
        GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID = @GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID,
        USERMODIFIEDRECEIPTAMOUNT = @USERMODIFIEDRECEIPTAMOUNT,
        PLEDGESUBTYPEID = @PLEDGESUBTYPEID,
        REJECTIONMESSAGE = @REJECTIONMESSAGE,
        MAILINGID = @MAILINGID,
        CHANNELCODEID = @CHANNELCODEID,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = @CURRENTDATE,
        PAYMENTFORPLEDGEAMOUNT = @PAYMENTFORPLEDGEAMOUNT,
        RECEIPTTYPECODE = @RECEIPTTYPECODE,
        MGRELATIONSHIPID =@MGRELATIONSHIPID,
        OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID,
        LETTERCODEID = @LETTERCODEID,
        ACKNOWLEDGEDATE = @ACKNOWLEDGEDATE,
        REFERENCE = @REFERENCE,
        GLREVENUECATEGORYMAPPINGID = @CATEGORYCODEID,
        ACKNOWLEDGEEID = @ACKNOWLEDGEEID,
        APPLICATIONCODE = @APPLICATIONCODE,
        OTHERTYPECODEID = @OTHERTYPECODEID,
        OPPORTUNITYID = @OPPORTUNITYID,
        DIRECTDEBITRESULTCODE = @DIRECTDEBITRESULTCODE,
        LOWPRICE = @LOWPRICE,
        HIGHPRICE = @HIGHPRICE,
        NUMBEROFUNITSSOLD = @NUMBEROFUNITSSOLD,
        USERMODIFIEDNUMBEROFUNITSSOLD = @USERMODIFIEDNUMBEROFUNITSSOLD,
        STANDINGORDERSETUP = @STANDINGORDERSETUP,
        STANDINGORDERSETUPDATE = @STANDINGORDERSETUPDATE,
        USESYSTEMGENERATEDREFERENCENUMBER = @GENERATEREFERENCENUMBER,
        STANDINGORDERREFERENCENUMBER = @STANDINGORDERREFERENCENUMBER,
        TRANSACTIONID = @TRANSACTIONID,
        DECLINESGIFTAID = coalesce(@DECLINESGIFTAID, 0),
        DDISOURCECODEID = @DDISOURCECODEID,
        DDISOURCEDATE = @DDISOURCEDATE,
        ISCOVENANT = @ISCOVENANT,
        AMOUNTFORVAT = @AMOUNTFORVAT,
        VATTAXRATEID = @VATTAXRATEID,
        VATAMOUNT = @VATAMOUNT,
        ISGIFTAIDSPONSORSHIP = coalesce(@ISGIFTAIDSPONSORSHIP, 0),
        VENDORID = isnull(@VENDORID, '')
      where ID = @ID;

    -- Create the splits collection with the single designation if the splits collection is null and the designation isn't
    if @SPLITS is null and @SINGLEDESIGNATIONID is not null
      begin
        set @SPLITS = (select
                         @SINGLEDESIGNATIONID as DESIGNATIONID,
                         @AMOUNT as AMOUNT,
                         @DECLINESGIFTAID as DECLINESGIFTAID,
                         1 as SEQUENCE,
                         @ISGIFTAIDSPONSORSHIP as ISGIFTAIDSPONSORSHIP
                       for xml raw('ITEM'),type,elements,root('SPLITS'),binary base64)
      end

    if @SPLITS is not null
      begin
        exec dbo.USP_REVENUEBATCH_SPLITSWITHCHILDREN_UPDATEFROMXML @ID, @SPLITS, @DATE, @CHANGEAGENTID, @CURRENTDATE;
      end
    else
      delete from dbo.BATCHREVENUESPLIT where BATCHREVENUEID = @ID;

    exec dbo.USP_REVENUEBATCH_GETRECOGNITIONS_UPDATEFROMXML @ID, @RECOGNITIONS, @CHANGEAGENTID;

    if @DIDRECOGNITIONSDEFAULT = 0
      begin
        -- Bug 67025 - AdamBu 12/3/09 - When DIDRECOGNITIONSDEFAULT is false we should redefault recognitions.
        --  We don't need to clear first because we can assume that RECOGNITIONS is null, so the previous
        --  call to USP_REVENUEBATCH_GETRECOGNITIONS_UPDATEFROMXML has already done that.

        -- Create default recognitions
        declare @SCAMOUNT money;

        if @REVENUESTREAMS is null 
          set @SCAMOUNT = @AMOUNT;
        else
          set @SCAMOUNT = @AMOUNT - (select SUM(APPLIED) from dbo.UFN_REVENUEBATCH_GETAPPLICATIONS_FROMITEMLISTXML(@REVENUESTREAMS));

        if @SCAMOUNT > 0
          begin
            insert into dbo.BATCHREVENUERECOGNITION
            (
              BATCHREVENUEID,
              CONSTITUENTID,
              REVENUERECOGNITIONTYPECODEID,
              AMOUNT,
              EFFECTIVEDATE,
              ADDEDBYID,
              CHANGEDBYID,
              DATEADDED,
              DATECHANGED
            )
            select
              @ID,
              RECOGNITIONS.CONSTITUENTID,
              RECOGNITIONS.REVENUERECOGNITIONTYPECODEID,
              RECOGNITIONS.AMOUNT,
              @date,
              @CHANGEAGENTID,
              @CHANGEAGENTID,
              @CURRENTDATE
              @CURRENTDATE
            from dbo.UFN_REVENUEBATCH_GETRECOGNITIONDEFAULTS(@GIVENANONYMOUSLY, @CONSTITUENTID, @SCAMOUNT, @DATE, null) as RECOGNITIONS;
          end
      end

    exec dbo.USP_REVENUEBATCH_GETSOLICITORS_UPDATEFROMXML @ID, @SOLICITORS, @CHANGEAGENTID;
    exec dbo.USP_REVENUEBATCH_GETBENEFITS_UPDATEFROMXML @ID, @BENEFITS, @CHANGEAGENTID;
    exec dbo.USP_REVENUEBATCH_GETBENEFITSPCT_UPDATEFROMXML @ID, @PERCENTAGEBENEFITS, @CHANGEAGENTID;
    exec dbo.USP_REVENUEBATCH_GETMATCHINGGIFTSPLITS_UPDATEFROMXML @ID, @MGSPLITS, @CHANGEAGENTID;
    exec dbo.USP_REVENUEBATCH_GETUNAPPLIEDMATCHINGGIFTSPLITS_UPDATEFROMXML @ID, @UNAPPLIEDMATCHINGGIFTSPLITS, @CHANGEAGENTID;
    exec dbo.USP_REVENUEBATCH_GETINSTALLMENTS_UPDATEFROMXML @ID, @INSTALLMENTS, @CHANGEAGENTID;
    exec dbo.USP_REVENUEBATCH_GETTRIBUTES_UPDATEFROMXML @ID, @TRIBUTES, @CHANGEAGENTID;
    exec dbo.USP_REVENUEBATCH_GETTAXDECLARATIONS_UPDATEFROMXML @ID, @TAXDECLARATIONS, @CHANGEAGENTID;

    --JamesWill CR268756-030207 2007/03/02
    --Unset the ISPENDING flag for all of the gifts we were previously applying to from a generated transaction
    update dbo.REVENUESCHEDULE
      set REVENUESCHEDULE.ISPENDING = 0,
        REVENUESCHEDULE.CHANGEDBYID = @CHANGEAGENTID,
        REVENUESCHEDULE.DATECHANGED = @CURRENTDATE
    where REVENUESCHEDULE.ID in (select REVENUEID from dbo.BATCHREVENUEAPPLICATION where BATCHREVENUEID = @ID and APPLIED > 0 and WASGENERATED = 1);

    declare @PLEDGEIDS as table (ID uniqueidentifier);
    insert into @PLEDGEIDS select BATCHREVENUEAPPLICATIONPLEDGEID from BATCHREVENUEAPPLICATION where BATCHREVENUEID = @ID
    delete from dbo.BATCHREVENUEAPPLICATIONPLEDGE where ID in (select ID from @PLEDGEIDS);

    declare @MEMBERSHIPIDS as table (ID uniqueidentifier);
    insert into @MEMBERSHIPIDS select BATCHREVENUEAPPLICATIONMEMBERSHIPID from BATCHREVENUEAPPLICATION where BATCHREVENUEID = @ID
    delete from dbo.BATCHREVENUEAPPLICATIONMEMBERSHIP where ID in (select ID from @MEMBERSHIPIDS);

    delete from BATCHREVENUEAPPLICATION where BATCHREVENUEID = @ID;

    exec dbo.USP_REVENUEBATCH_REVENUEAPPLICATIONS_ADDFROMXML @ID, @REVENUESTREAMS, @CHANGEAGENTID, @CURRENTDATE, @CURRENTAPPUSERID;

    --JamesWill CR268756-030207 2007/03/02
    --Set the ISPENDING flag for all gifts that we are currently applying to which were from a generated transaction
    update dbo.REVENUESCHEDULE
      set REVENUESCHEDULE.ISPENDING = 1,
        REVENUESCHEDULE.CHANGEDBYID = @CHANGEAGENTID,
        REVENUESCHEDULE.DATECHANGED = @CURRENTDATE
    where REVENUESCHEDULE.ID in (select REVENUEID from dbo.BATCHREVENUEAPPLICATION where BATCHREVENUEID = @ID and APPLIED > 0 and WASGENERATED = 1)

    if not @contextCache is null
      set CONTEXT_INFO @contextCache
  end try

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

  return 0
end