USP_DATAFORMTEMPLATE_EDIT_BATCHMEMBERSHIPDUESBATCHROW_9

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@SEQUENCE int IN
@BILLTOCONSTITUENTID uniqueidentifier IN
@TRANSACTIONCURRENCYID uniqueidentifier IN
@BASECURRENCYID uniqueidentifier IN
@BASEEXCHANGERATEID uniqueidentifier IN
@EXCHANGERATE decimal(20, 8) IN
@PDACCOUNTSYSTEMID uniqueidentifier IN
@POSTSTATUSCODE tinyint IN
@POSTDATE date IN
@DUESTYPECODE tinyint IN
@MEMBERSHIPRECIPIENT uniqueidentifier IN
@RENEWALRECIPIENT tinyint IN
@EFFORTID uniqueidentifier IN
@FINDERNUMBER nvarchar(19) IN
@APPEALID uniqueidentifier IN
@CHANNELCODEID uniqueidentifier IN
@DATE date IN
@MEMBERSHIPTRANSACTIONTYPECODE tinyint IN
@REVENUETYPECODE tinyint IN
@PAYADDITIONALTONEXTINSTALLMENT bit IN
@PAYADDITIONALMONEYAMOUNT money IN
@MEMBERSHIPPROGRAMID uniqueidentifier IN
@MEMBERSHIPLEVELID uniqueidentifier IN
@MEMBERSHIPLEVELTERMID uniqueidentifier IN
@MEMBERSHIPEXPIRESONDATE date IN
@MEMBERSHIPAMOUNT money IN
@MEMBERSHIPTRANSACTIONAMOUNT money IN
@EXISTINGMEMBERSHIPID uniqueidentifier IN
@MEMBERSHIPPLEDGEAMOUNT money IN
@CONTRIBUTORYDESIGNATIONID uniqueidentifier IN
@USEDISCOUNTRADIO tinyint IN
@DISCOUNTTYPE uniqueidentifier IN
@PROMOTIONCODE nvarchar(50) IN
@APPLIEDDISCOUNTID uniqueidentifier IN
@ADDDONATION bit IN
@DONATIONAMOUNT money IN
@GIVENANONYMOUSLY bit IN
@DONATIONOPPORTUNITYID uniqueidentifier IN
@DONATIONDESIGNATIONID uniqueidentifier IN
@DONATIONCATEGORYCODEID uniqueidentifier IN
@DECLINESGIFTAID bit IN
@PLEDGEFREQUENCYCODE tinyint IN
@PLEDGENUMBEROFINSTALLMENTS int IN
@PLEDGESTARTDATE datetime IN
@AUTOPAY bit IN
@SENDPLEDGEREMINDER bit IN
@CHECKDATE UDT_FUZZYDATE IN
@CHECKNUMBER nvarchar(20) IN
@REFERENCENUMBER nvarchar(20) IN
@REFERENCEDATE UDT_FUZZYDATE IN
@PAYMENTMETHODCODE tinyint IN
@DIRECTDEBITRESULTCODE nvarchar(10) IN
@DIRECTDEBITISREJECTED bit IN
@CONSTITUENTACCOUNTID uniqueidentifier IN
@REFERENCE nvarchar(255) IN
@AUTOMATICALLYRENEWMEMBERSHIP bit IN
@CREDITCARDID uniqueidentifier IN
@CREDITCARDNUMBER nvarchar(20) IN
@CREDITCARDTOKEN uniqueidentifier IN
@CARDHOLDERNAME nvarchar(255) IN
@EXPIRESON UDT_FUZZYDATE IN
@AUTHORIZATIONCODE nvarchar(20) IN
@REJECTIONMESSAGE nvarchar(500) IN
@CREDITTYPECODEID uniqueidentifier IN
@TRANSACTIONID uniqueidentifier IN
@PARTIALCREDITCARDNUMBER nvarchar(4) IN
@DONOTACKNOWLEDGE bit IN
@TAXDEDUCTIBLEAMOUNT money IN
@LETTERCODEID uniqueidentifier IN
@TRIBUTEID uniqueidentifier IN
@DONOTRECEIPT bit IN
@COMMENTS nvarchar(255) IN
@TOTALAMOUNT money IN
@EXISTINGMEMBERS xml IN
@EXISTINGCHILDREN xml IN
@MEMBERSHIPCARDS xml IN
@MEMBERSHIPRECOGNITION xml IN
@MEMBERSHIPPROGRAMADDON xml IN
@IMPORTADDON xml IN
@CAMPAIGNS xml IN
@SOLICITORS xml IN
@RECOGNITIONS xml IN
@BENEFITS xml IN
@PERCENTAGEBENEFITS xml IN
@INSTALLMENTS xml IN
@IMPORT bit IN
@NUMBEROFCHILDREN smallint IN
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN
@SOURCECODE nvarchar(50) IN
@MEMBERSHIPDECLINESGIFTAID bit IN
@DDISOURCECODEID uniqueidentifier IN
@DDISOURCEDATE date IN
@VENDORID nvarchar(50) IN
@MEMBERSHIPLEVELTYPECODEID uniqueidentifier IN
@CREDITCARDATTEMPTCOUNT tinyint IN
@NEWCONSTITUENT xml IN
@BBNCTRANID int IN
@ORIGINPAGEID int IN
@ORIGINPAGE nvarchar(100) IN
@BBNCID int IN
@BBISPROCESSORID uniqueidentifier IN
@NAMECODE tinyint IN
@SIMILARADDRESSCODE tinyint IN
@UNSIMILARADDRESSCODE tinyint IN
@NEWADDRESSENDDATECODE tinyint IN
@NEWADDRESSPRIMARYCODE tinyint IN
@BIRTHDATERULECODE tinyint IN
@DIFFERENTPHONECODE tinyint IN
@NEWPHONEENDDATECODE tinyint IN
@NEWPHONEPRIMARYCODE tinyint IN
@DIFFERENTEMAILCODE tinyint IN
@NEWEMAILENDDATECODE tinyint IN
@NEWEMAILPRIMARYCODE tinyint IN
@USEGLOBALSETTINGS bit IN
@CREATEHISTORICALNAMECODE tinyint IN
@SEPAMANDATEID uniqueidentifier IN
@ADDSEPAMANDATE bit IN
@SEPAMANDATECUSTOMIDENTIFIER nvarchar(35) IN
@SEPAMANDATESIGNATUREDATE date IN
@SEPAMANDATETYPECODE tinyint IN
@REQUIRECREDITCARDPROCESSING bit IN
@PAYOTHERAMOUNT money IN
@ISGENERATEDPAYMENT bit IN
@GLREVENUECATEGORYMAPPINGID uniqueidentifier IN
@SOLICITCODES xml IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_BATCHMEMBERSHIPDUESBATCHROW_9
(
  @ID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @SEQUENCE int,
  @BILLTOCONSTITUENTID uniqueidentifier,
  @TRANSACTIONCURRENCYID uniqueidentifier,
  @BASECURRENCYID uniqueidentifier,
  @BASEEXCHANGERATEID uniqueidentifier,
  @EXCHANGERATE decimal(20,8),
  @PDACCOUNTSYSTEMID uniqueidentifier,
  @POSTSTATUSCODE tinyint,
  @POSTDATE date,
  @DUESTYPECODE tinyint,
  @MEMBERSHIPRECIPIENT uniqueidentifier,
  @RENEWALRECIPIENT tinyint,
  @EFFORTID uniqueidentifier,
  @FINDERNUMBER nvarchar(19),
  @APPEALID uniqueidentifier,
  @CHANNELCODEID uniqueidentifier,
  @DATE date,
  @MEMBERSHIPTRANSACTIONTYPECODE tinyint,        -- 0 = Add, 1 = Renew, 2 = Pay, 3 = Upgrade

  @REVENUETYPECODE tinyint,                      -- 0 = Pay in full, 1 = Pay first/next installment, 2 = Pledge

  @PAYADDITIONALTONEXTINSTALLMENT bit,
  @PAYADDITIONALMONEYAMOUNT money,
  @MEMBERSHIPPROGRAMID uniqueidentifier,
  @MEMBERSHIPLEVELID uniqueidentifier,
  @MEMBERSHIPLEVELTERMID uniqueidentifier,
  @MEMBERSHIPEXPIRESONDATE date,
  @MEMBERSHIPAMOUNT money,
  @MEMBERSHIPTRANSACTIONAMOUNT money,
  @EXISTINGMEMBERSHIPID uniqueidentifier,
  @MEMBERSHIPPLEDGEAMOUNT money,
  @CONTRIBUTORYDESIGNATIONID uniqueidentifier,
  @USEDISCOUNTRADIO tinyint,
  @DISCOUNTTYPE uniqueidentifier,
  @PROMOTIONCODE nvarchar(50),
  @APPLIEDDISCOUNTID uniqueidentifier,

  @ADDDONATION bit,
  @DONATIONAMOUNT money,
  @GIVENANONYMOUSLY bit,
  @DONATIONOPPORTUNITYID uniqueidentifier,
  @DONATIONDESIGNATIONID uniqueidentifier,
  @DONATIONCATEGORYCODEID uniqueidentifier,
  @DECLINESGIFTAID bit,

  @PLEDGEFREQUENCYCODE tinyint,
  @PLEDGENUMBEROFINSTALLMENTS int,
  @PLEDGESTARTDATE datetime,
  @AUTOPAY bit,
  @SENDPLEDGEREMINDER bit,

  @CHECKDATE dbo.UDT_FUZZYDATE,
  @CHECKNUMBER nvarchar(20),
  @REFERENCENUMBER nvarchar(20),
  @REFERENCEDATE dbo.UDT_FUZZYDATE,
  @PAYMENTMETHODCODE tinyint,

  @DIRECTDEBITRESULTCODE nvarchar(10),
  @DIRECTDEBITISREJECTED bit,

  @CONSTITUENTACCOUNTID uniqueidentifier,
  @REFERENCE nvarchar(255),
  @AUTOMATICALLYRENEWMEMBERSHIP bit,
  @CREDITCARDID uniqueidentifier,
  @CREDITCARDNUMBER nvarchar(20),
  @CREDITCARDTOKEN uniqueidentifier,
  @CARDHOLDERNAME nvarchar(255),
  @EXPIRESON dbo.UDT_FUZZYDATE,
  @AUTHORIZATIONCODE nvarchar(20),
  @REJECTIONMESSAGE nvarchar(500),
  @CREDITTYPECODEID uniqueidentifier,
  @TRANSACTIONID uniqueidentifier,
  @PARTIALCREDITCARDNUMBER nvarchar(4),
  @DONOTACKNOWLEDGE bit,
  @TAXDEDUCTIBLEAMOUNT money,
  @LETTERCODEID uniqueidentifier,
  @TRIBUTEID uniqueidentifier,
  --@NEWEVENTREGISTRATION bit,

  @DONOTRECEIPT bit,
  @COMMENTS nvarchar(255),
  @TOTALAMOUNT money,

  @EXISTINGMEMBERS xml,
  @EXISTINGCHILDREN xml,
  @MEMBERSHIPCARDS xml,

  @MEMBERSHIPRECOGNITION xml,
  @MEMBERSHIPPROGRAMADDON xml,
  @IMPORTADDON xml,

  @CAMPAIGNS xml,
  @SOLICITORS xml,
  @RECOGNITIONS xml,

  @BENEFITS xml,
  @PERCENTAGEBENEFITS xml,

  @INSTALLMENTS xml,
  @IMPORT bit,
  @NUMBEROFCHILDREN smallint,       -- Temporary workaround for children not being implemented in 2012 Q1

  @OTHERPAYMENTMETHODCODEID uniqueidentifier,
  @SOURCECODE nvarchar(50),
  @MEMBERSHIPDECLINESGIFTAID bit,
  @DDISOURCECODEID uniqueidentifier,
  @DDISOURCEDATE date,
  @VENDORID nvarchar(50),
  @MEMBERSHIPLEVELTYPECODEID uniqueidentifier,
  @CREDITCARDATTEMPTCOUNT tinyint,
  @NEWCONSTITUENT xml,
  @BBNCTRANID int,
  @ORIGINPAGEID int,
  @ORIGINPAGE nvarchar(100),
  @BBNCID int,
  @BBISPROCESSORID uniqueidentifier,

  @NAMECODE tinyint,
  @SIMILARADDRESSCODE tinyint,
  @UNSIMILARADDRESSCODE tinyint,
  @NEWADDRESSENDDATECODE tinyint,
  @NEWADDRESSPRIMARYCODE tinyint,
  @BIRTHDATERULECODE  tinyint,
  @DIFFERENTPHONECODE tinyint,
  @NEWPHONEENDDATECODE tinyint,
  @NEWPHONEPRIMARYCODE tinyint,
  @DIFFERENTEMAILCODE tinyint,
  @NEWEMAILENDDATECODE tinyint,
  @NEWEMAILPRIMARYCODE tinyint,
  @USEGLOBALSETTINGS bit,
  @CREATEHISTORICALNAMECODE tinyint,
  @SEPAMANDATEID uniqueidentifier,
  @ADDSEPAMANDATE bit,
  @SEPAMANDATECUSTOMIDENTIFIER nvarchar(35),
  @SEPAMANDATESIGNATUREDATE date,
  @SEPAMANDATETYPECODE tinyint,
  @REQUIRECREDITCARDPROCESSING bit,
  @PAYOTHERAMOUNT money,
  @ISGENERATEDPAYMENT bit,
  @GLREVENUECATEGORYMAPPINGID uniqueidentifier,
  @SOLICITCODES xml
)
as
begin
  set nocount on;

  declare @BATCHID uniqueidentifier;

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

  if @MEMBERSHIPTRANSACTIONTYPECODE = 3
    select @EXISTINGMEMBERSHIPID = ID, @MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAMID from dbo.MEMBERSHIP where ID = @MEMBERSHIPPROGRAMID

  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 @CREDITCARDATTEMPTCOUNT is null
    set @CREDITCARDATTEMPTCOUNT = 0;
  if @REQUIRECREDITCARDPROCESSING is null
      set @REQUIRECREDITCARDPROCESSING = 0;

  if @SIMILARADDRESSCODE is null
    set @SIMILARADDRESSCODE = 3;
  if @UNSIMILARADDRESSCODE is null
    set @UNSIMILARADDRESSCODE = 3;
  if @NEWADDRESSENDDATECODE is null
    set @NEWADDRESSENDDATECODE = 0;
  if @NEWADDRESSPRIMARYCODE is null
    set @NEWADDRESSPRIMARYCODE = 1;
  if @BIRTHDATERULECODE is null
    set @BIRTHDATERULECODE = 0;
  if @DIFFERENTPHONECODE is null
    set @DIFFERENTPHONECODE = 3;
  if @NEWPHONEENDDATECODE is null
    set @NEWPHONEENDDATECODE = 0;
  if @NEWPHONEPRIMARYCODE is null
    set @NEWPHONEPRIMARYCODE = 1;
  if @DIFFERENTEMAILCODE is null
    set @DIFFERENTEMAILCODE = 3;
  if @NEWEMAILENDDATECODE is null
    set @NEWEMAILENDDATECODE = 0;
  if @NEWEMAILPRIMARYCODE is null
    set @NEWEMAILPRIMARYCODE = 1;
  if @USEGLOBALSETTINGS is null
    set @USEGLOBALSETTINGS = 1;
  if @NAMECODE is null
    set @NAMECODE = 1;
  if @CREATEHISTORICALNAMECODE is null
    set @CREATEHISTORICALNAMECODE = 1;
  if @RENEWALRECIPIENT is null
    set @RENEWALRECIPIENT = 0;
  if @ISGENERATEDPAYMENT is null
    set @ISGENERATEDPAYMENT = 0;  

  declare @CURRENTDATE datetime = getdate();

  --If we're using the 'Pay other amount' option, clear additional amount

  if @REVENUETYPECODE = 3
  begin
    set @PAYADDITIONALTONEXTINSTALLMENT = 0
    set @PAYADDITIONALMONEYAMOUNT = 0
  end

  declare @RECURRINGPROGRAMTYPECODE tinyint = 1;
  declare @MEMBERSHIPPROGRAMTYPECODE tinyint;

  select @MEMBERSHIPPROGRAMTYPECODE = PROGRAMTYPECODE
  from dbo.MEMBERSHIPPROGRAM
  where ID = @MEMBERSHIPPROGRAMID;

  begin try
  if @REVENUETYPECODE = 3 and @PAYOTHERAMOUNT <= 0
    raiserror('BBERR_INVALIDPAYOTHERAMOUNT', 13, 1);  

    /*Because of the way this batch in particular works, the findernumber parameter is a string instead of bigint, so we need to do some extra validation and casting.*/
    if len(isnull(@FINDERNUMBER, '')) = 0
      set @FINDERNUMBER = 0;

    if len(@FINDERNUMBER) > 0 and isNumeric(@FINDERNUMBER) = 0
      raiserror('BBERR_INVALIDFINDERNUMBER', 13, 1);

    declare @MARKETINGCONSTITUENTID uniqueidentifier = @BILLTOCONSTITUENTID;

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

    exec dbo.[USP_REVENUEBATCH_GETMARKETINGDATA]
      @FINDERNUMBER = @FINDERNUMBER,
      @CHANGEAGENTID = @CHANGEAGENTID,
      @CURRENTAPPUSERID = @CURRENTAPPUSERID,
      @SOURCECODE = @SOURCECODE output,
      @MAILINGID = @EFFORTID output,
      @APPEALID = @APPEALID output,
      @CONSTITUENTID = @MARKETINGCONSTITUENTID output,
      @BATCHID = @BATCHID,
      @IMPORT = @IMPORT;

    if @BBNCTRANID = 0
      set @BILLTOCONSTITUENTID = @MARKETINGCONSTITUENTID;


    declare @CONSTITUENTID uniqueidentifier;

    select @CONSTITUENTID = 
          case @DUESTYPECODE 
            when 0 then @BILLTOCONSTITUENTID 
            else @MEMBERSHIPRECIPIENT 
          end;

    --  Write Validation logic here.

    if @PDACCOUNTSYSTEMID is null
      set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)


    if @POSTSTATUSCODE is null
      set @POSTSTATUSCODE = 1

    if @ADDDONATION = 0 AND @SOLICITORS is not null
    begin
      set @SOLICITORS = null;
      set @DONATIONDESIGNATIONID = null;
      set @DONATIONCATEGORYCODEID = null;
    end

    if (select OBTAINLEVELCODE from dbo.MEMBERSHIPLEVEL where ID = @MEMBERSHIPLEVELID) = 1 and (select WHEREISREVENUETRACKEDCODE from dbo.MEMBERSHIPPROGRAM where ID = @MEMBERSHIPPROGRAMID) = 0 and @CONTRIBUTORYDESIGNATIONID is null
      raiserror('BBERR_CONTRIBUTORYDESIGNATIONID_REQUIRED', 13, 1);

    --Set currency parameters for backwards compatibility

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

    -- Ensure that we can add a payment of this transaction currency to the account system.

    if not exists(
        select 1
        from 
          dbo.CURRENCYSETTRANSACTIONCURRENCY
          inner join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSETTRANSACTIONCURRENCY.CURRENCYSETID
        where 
          PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID
          and CURRENCYSETTRANSACTIONCURRENCY.CURRENCYID = @TRANSACTIONCURRENCYID
      )
      raiserror('TRANSACTIONCURRENCYINVALIDFORACCOUNTSYSTEM',13,1)

    -- If the system has set that households can't be donors, verify that constituent isn't a household

    if dbo.UFN_INSTALLATIONINFO_GETHOUSEHOLDSCANBEDONORS() = 0 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID) = 1
      raiserror('HOUSEHOLDSCANNOTBEDONORS', 13, 1);

    -- if the group type can't be a donor, raise an error

    if exists(select GD.ID from dbo.GROUPDATA GD inner join dbo.GROUPTYPE GT on GD.GROUPTYPEID = GT.ID where GD.ID = @CONSTITUENTID and GT.CANBEDONOR = 0)
      raiserror('GROUPCANNOTBEDONOR', 13, 1);

    -- Adding or renewing

    if (@MEMBERSHIPTRANSACTIONTYPECODE = 0 or @MEMBERSHIPTRANSACTIONTYPECODE = 1 or @MEMBERSHIPTRANSACTIONTYPECODE = 3)
      begin
        exec dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_ADDRENEWPROGRAM 
              @CURRENTAPPUSERID,
              @ID,
              null,
              @MEMBERSHIPTRANSACTIONTYPECODE,
              @DATE,
              @MEMBERSHIPEXPIRESONDATE,
              @MEMBERSHIPPROGRAMID
              @MEMBERSHIPLEVELID,
              @MEMBERSHIPLEVELTERMID,
              @CONSTITUENTID,
              @REVENUETYPECODE,
              @EXISTINGMEMBERSHIPID,
              @MEMBERSHIPPROGRAMADDON,
              @EXISTINGMEMBERS,
              @MEMBERSHIPCARDS,
              @EXISTINGCHILDREN,
              @NUMBEROFCHILDREN;     -- Temporary workaround for children not being implemented in 2012 Q1


        -- Creating a pledge

        if @REVENUETYPECODE > 0 and @MEMBERSHIPPROGRAMTYPECODE <> @RECURRINGPROGRAMTYPECODE
          exec dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_PLEDGE @DATE, @MEMBERSHIPPLEDGEAMOUNT, @PLEDGEFREQUENCYCODE, @PLEDGESTARTDATE, @PLEDGENUMBEROFINSTALLMENTS, @INSTALLMENTS;

      end
    else
      exec dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_PAYPLEDGEDMEMBERSHIP
        @MEMBERSHIPTRANSACTIONTYPECODE,
        @DATE,
        @MEMBERSHIPEXPIRESONDATE,
        @MEMBERSHIPPROGRAMID
        @MEMBERSHIPLEVELID,
        @MEMBERSHIPLEVELTERMID,
        @CONSTITUENTID,
        @REVENUETYPECODE,
        @EXISTINGMEMBERSHIPID,
        @MEMBERSHIPPROGRAMADDON,
        @EXISTINGMEMBERS,
        @MEMBERSHIPCARDS,
        @EXISTINGCHILDREN,
        @NUMBEROFCHILDREN;    -- Temporary workaround for children not being implemented in 2012 Q1


    if @EXCHANGERATE is null
      set @EXCHANGERATE = 0;

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



    --Check if existing membership has changed, if so clear the revenue schedule  

    declare @OLDEXISTINGMEMBERSHIPID uniqueidentifier = (select EXISTINGMEMBERSHIPID from dbo.BATCHMEMBERSHIPDUES where BATCHMEMBERSHIPDUES.ID = @ID);
    if @OLDEXISTINGMEMBERSHIPID <> @EXISTINGMEMBERSHIPID
    begin
        declare @PLEDGEID uniqueidentifier = dbo.UFN_MEMBERSHIP_GETPLEDGE(@OLDEXISTINGMEMBERSHIPID);

        update dbo.REVENUESCHEDULE
        set 
          REVENUESCHEDULE.ISPENDING = 0,
          REVENUESCHEDULE.CHANGEDBYID = @CHANGEAGENTID,
          REVENUESCHEDULE.DATECHANGED = @CURRENTDATE
        from dbo.REVENUESCHEDULE
        where REVENUESCHEDULE.ID = @PLEDGEID;
    end

    update dbo.BATCHMEMBERSHIPDUES set
      SEQUENCE = @SEQUENCE,
      BILLTOCONSTITUENTID = @BILLTOCONSTITUENTID,
      DUESTYPECODE = @DUESTYPECODE,      -- Paying, giving, comping

      MEMBERSHIPRECIPIENTID = @MEMBERSHIPRECIPIENT,
      RENEWALRECIPIENTCODE = @RENEWALRECIPIENT,
      FINDERNUMBER = @FINDERNUMBER,
      APPEALID = @APPEALID,
      EFFORTID = @EFFORTID,
      CHANNELCODEID = @CHANNELCODEID,
      DATE = @DATE,
      MEMBERSHIPTRANSACTIONTYPECODE = @MEMBERSHIPTRANSACTIONTYPECODE,
      REVENUETYPECODE = @REVENUETYPECODE,
      PAYADDITIONALTONEXTINSTALLMENT = @PAYADDITIONALTONEXTINSTALLMENT,
      PAYADDITIONALMONEYAMOUNT = @PAYADDITIONALMONEYAMOUNT,
      MEMBERSHIPPROGRAMID = @MEMBERSHIPPROGRAMID,
      MEMBERSHIPLEVELID = @MEMBERSHIPLEVELID,
      MEMBERSHIPLEVELTERMID = @MEMBERSHIPLEVELTERMID,
      MEMBERSHIPEXPIRESONDATE = @MEMBERSHIPEXPIRESONDATE,
      MEMBERSHIPAMOUNT = @MEMBERSHIPAMOUNT,
      MEMBERSHIPTRANSACTIONAMOUNT = case when @REVENUETYPECODE = 3 then @PAYOTHERAMOUNT else @MEMBERSHIPTRANSACTIONAMOUNT end,
      EXISTINGMEMBERSHIPID = @EXISTINGMEMBERSHIPID,
      MEMBERSHIPPLEDGEAMOUNT = @MEMBERSHIPPLEDGEAMOUNT,
      CONTRIBUTORYDESIGNATIONID = @CONTRIBUTORYDESIGNATIONID,
      USEDISCOUNT = cast(@USEDISCOUNTRADIO as bit),
      MEMBERSHIPPROMOID = @DISCOUNTTYPE,
      PROMOTIONCODE = @PROMOTIONCODE,
      APPLIEDDISCOUNTID = @APPLIEDDISCOUNTID,
      ADDDONATION = @ADDDONATION,
      DONATIONAMOUNT = @DONATIONAMOUNT,
      DONATIONGIVENANONYMOUSLY = @GIVENANONYMOUSLY,
      DONATIONOPPORTUNITYID = @DONATIONOPPORTUNITYID,
      DONATIONSINGLEDESIGNATIONID = @DONATIONDESIGNATIONID,
      DONATIONCATEGORYCODEID = @DONATIONCATEGORYCODEID,
      DONATIONDECLINESGIFTAID = @DECLINESGIFTAID,
      PLEDGEFREQUENCYCODE = @PLEDGEFREQUENCYCODE,
      PLEDGENUMBEROFINSTALLMENTS = @PLEDGENUMBEROFINSTALLMENTS,
      PLEDGESTARTDATE = @PLEDGESTARTDATE,
      AUTOPAY = @AUTOPAY,
      SENDPLEDGEREMINDER = @SENDPLEDGEREMINDER,
      CHECKDATE = @CHECKDATE,
      CHECKNUMBER = @CHECKNUMBER,
      REFERENCENUMBER = @REFERENCENUMBER,
      REFERENCEDATE = @REFERENCEDATE,

      DIRECTDEBITRESULTCODE = @DIRECTDEBITRESULTCODE,
      DIRECTDEBITISREJECTED = @DIRECTDEBITISREJECTED,

      REFERENCE = @REFERENCE,
      CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID,
      PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
      AUTOMATICALLYRENEWMEMBERSHIP = @AUTOMATICALLYRENEWMEMBERSHIP,

      CREDITCARDID = @CREDITCARDID,
      AUTHORIZATIONCODE = @AUTHORIZATIONCODE,
      REJECTIONMESSAGE = @REJECTIONMESSAGE,
      TRANSACTIONID = @TRANSACTIONID,

      DONOTACKNOWLEDGE = @DONOTACKNOWLEDGE,
      TAXDEDUCTIBLEAMOUNT = @TAXDEDUCTIBLEAMOUNT,
      LETTERCODEID = @LETTERCODEID,
      TRIBUTEID = @TRIBUTEID,
      DONOTRECEIPT = @DONOTRECEIPT,
      COMMENTS = @COMMENTS,
      TOTALAMOUNT = @TOTALAMOUNT,

      PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
      BASECURRENCYID = @BASECURRENCYID,
      TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
      BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
      EXCHANGERATE = @EXCHANGERATE,

      -- platform stuff

      CHANGEDBYID = @CHANGEAGENTID,
      DATECHANGED = @CURRENTDATE,
      NUMBEROFCHILDREN = @NUMBEROFCHILDREN,-- Temporary workaround for children not being implemented in 2012 Q1

      OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID,
      POSTSTATUSCODE = @POSTSTATUSCODE,
      POSTDATE = @POSTDATE,
      SOURCECODE = @SOURCECODE,
      MEMBERSHIPDECLINESGIFTAID = @MEMBERSHIPDECLINESGIFTAID,
      DDISOURCECODEID = @DDISOURCECODEID,
      DDISOURCEDATE = @DDISOURCEDATE,
      VENDORID = isnull(@VENDORID, ''),
      MEMBERSHIPLEVELTYPECODEID = @MEMBERSHIPLEVELTYPECODEID,
      CREDITCARDATTEMPTCOUNT = @CREDITCARDATTEMPTCOUNT,
      NAMECODE = @NAMECODE,
      SIMILARADDRESSCODE = @SIMILARADDRESSCODE,
      UNSIMILARADDRESSCODE = @UNSIMILARADDRESSCODE,
      NEWADDRESSENDDATECODE = @NEWADDRESSENDDATECODE,
      NEWADDRESSPRIMARYCODE = @NEWADDRESSPRIMARYCODE,
      BIRTHDATERULECODE = @BIRTHDATERULECODE,
      DIFFERENTPHONECODE = @DIFFERENTPHONECODE,
      NEWPHONEENDDATECODE = @NEWPHONEENDDATECODE,
      NEWPHONEPRIMARYCODE = @NEWPHONEPRIMARYCODE,
      DIFFERENTEMAILCODE = @DIFFERENTEMAILCODE,
      NEWEMAILENDDATECODE = @NEWEMAILENDDATECODE,
      NEWEMAILPRIMARYCODE = @NEWEMAILPRIMARYCODE,
      USEGLOBALSETTINGS = @USEGLOBALSETTINGS,
      CREATEHISTORICALNAMECODE = @CREATEHISTORICALNAMECODE,

      SEPAMANDATEID = @SEPAMANDATEID,
      REQUIRECREDITCARDPROCESSING = @REQUIRECREDITCARDPROCESSING,
      ISGENERATEDPAYMENT = @ISGENERATEDPAYMENT,
      GLREVENUECATEGORYMAPPINGID = @GLREVENUECATEGORYMAPPINGID
    where ID = @ID;

    update dbo.BATCHMEMBERSHIPDUESBBNCINFO set
      BBNCTRANID = @BBNCTRANID
      PAGEID = @ORIGINPAGEID
      PAGENAME = @ORIGINPAGE,
      BBNCID = @BBNCID,
      NETCOMMUNITYTRANSACTIONPROCESSORID = @BBISPROCESSORID,
    CHANGEDBYID = @CHANGEAGENTID,
      DATECHANGED = @CURRENTDATE
    where BATCHMEMBERSHIPDUESID = @ID    

    --exec dbo.USP_MEMBERSHIPDUESBATCH_GETDONATIONSPLITS_UPDATEFROMXML @ID, @DONATIONSPLITS, @CHANGEAGENTID, @CURRENTDATE; 


    -- Insert into child tables

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETBENEFITS_UPDATEFROMXML @ID, @BENEFITS, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETPERCENTAGEBENEFITS_UPDATEFROMXML @ID, @PERCENTAGEBENEFITS, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETMEMBERS_UPDATEFROMXML @ID, @EXISTINGMEMBERS, @CHANGEAGENTID, @CURRENTDATE;

    --Children are intended for future release

    --exec dbo.USP_MEMBERSHIPDUESBATCH_GETCHILDREN_UPDATEFROMXML @ID, @EXISTINGCHILDREN, @CHANGEAGENTID, @CURRENTDATE;


    exec dbo.USP_MEMBERSHIPDUESBATCH_GETMEMBERSHIPCARDS_UPDATEFROMXML @ID, @MEMBERSHIPCARDS, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETMEMBERSHIPPROGRAMADDONS_UPDATEFROMXML @ID, @MEMBERSHIPPROGRAMADDON, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETMEMBERSHIPRECOGNITIONS_UPDATEFROMXML @ID, @MEMBERSHIPRECOGNITION, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETPLEDGEINSTALLMENTS_UPDATEFROMXML @ID, @INSTALLMENTS, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETDONATIONCAMPAIGNS_UPDATEFROMXML @ID, @CAMPAIGNS, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETDONATIONRECOGNITIONS_UPDATEFROMXML @ID, @RECOGNITIONS, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETDONATIONSOLICITORS_UPDATEFROMXML @ID, @SOLICITORS, @CHANGEAGENTID, @CURRENTDATE;

    exec dbo.USP_MEMBERSHIPDUESBATCH_GETSOLICITCODES_UPDATEFROMXML @ID, @SOLICITCODES, @CHANGEAGENTID, @CURRENTDATE;

    -- Get rid of any constituent edits for a constituent other than the one we ended up saving.

    delete from dbo.BATCHCONSTITUENTUPDATE
    where ID = @ID
    and PRIMARYRECORDID <> @BILLTOCONSTITUENTID

  end try

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

  return 0;
end