USP_DATAFORMTEMPLATE_EDITLOAD_2_REVENUEBATCHROW

The load procedure used by the edit dataform template "Revenue Batch Row 2 Edit Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@CONSTITUENTID uniqueidentifier INOUT Constituent
@TYPECODE tinyint INOUT Revenue type
@DATE datetime INOUT Date
@AMOUNT money INOUT Amount
@PAYMENTMETHODCODE tinyint INOUT Payment method
@DONOTACKNOWLEDGE bit INOUT Do not acknowledge
@CHECKDATE UDT_FUZZYDATE INOUT Check date
@CHECKNUMBER nvarchar(20) INOUT Check number
@REFERENCEDATE UDT_FUZZYDATE INOUT Reference date
@REFERENCENUMBER nvarchar(20) INOUT Reference number
@CARDHOLDERNAME nvarchar(255) INOUT Name on card
@CREDITCARDNUMBER nvarchar(20) INOUT Card number
@CREDITTYPECODEID uniqueidentifier INOUT Card type
@AUTHORIZATIONCODE nvarchar(20) INOUT Authorization code
@EXPIRESON UDT_FUZZYDATE INOUT Expires on
@ISSUER nvarchar(100) INOUT Issuer
@NUMBEROFUNITS decimal(20, 3) INOUT Stock number of units
@SYMBOL nvarchar(25) INOUT Symbol
@MEDIANPRICE decimal(19, 4) INOUT Median price
@PROPERTYSUBTYPECODEID uniqueidentifier INOUT Property subtype
@GIFTINKINDSUBTYPECODEID uniqueidentifier INOUT Gift-in-kind subtype
@RECEIPTAMOUNT money INOUT Receipt amount
@DONOTRECEIPT bit INOUT Do not receipt
@CONSTITUENTACCOUNTID uniqueidentifier INOUT Account
@SPLITS xml INOUT Designations
@SINGLEDESIGNATIONID uniqueidentifier INOUT Designation
@REVENUESTREAMS xml INOUT Revenue streams
@APPLYTOSHOWNFORCONSTITUENTID uniqueidentifier INOUT Apply to shown for constituent
@SEQUENCE int INOUT Sequence
@INSTALLMENTFREQUENCYCODE tinyint INOUT Installment frequency
@INSTALLMENTSTARTDATE datetime INOUT Installment start date
@INSTALLMENTENDDATE datetime INOUT Installment end date
@NUMBEROFINSTALLMENTS int INOUT No. installments
@SOLICITORS xml INOUT Solicitors
@BENEFITS xml INOUT Money benefits
@FINDERNUMBER bigint INOUT Finder number
@SOURCECODE nvarchar(60) INOUT Source code
@APPEALID uniqueidentifier INOUT Appeal
@FINDERNUMBERISVALID bit INOUT Finder number is valid
@USERMODIFIEDBENEFITS bit INOUT User modified benefits
@BENEFITSWAIVED bit INOUT User waived benefits
@POSTDATE datetime INOUT GL post date
@POSTSTATUSCODE tinyint INOUT GL post status
@SENDPLEDGEREMINDER bit INOUT Send reminders
@SALEDATE datetime INOUT Sale date
@SALEAMOUNT money INOUT Sale amount
@BROKERFEE money INOUT Sale fees
@SALEPOSTSTATUSCODE tinyint INOUT Sale GL post status
@SALEPOSTDATE datetime INOUT Sale GL post date
@NOTETITLE nvarchar(50) INOUT Note Title
@NOTEAUTHORID uniqueidentifier INOUT Note Author
@NOTEDATEENTERED datetime INOUT Note Date
@NOTETYPECODEID uniqueidentifier INOUT Note Type
@NOTETEXTNOTE nvarchar(max) INOUT Notes
@GIFTAMOUNT nvarchar(100) INOUT Gift amount
@GIVENANONYMOUSLY bit INOUT Given anonymously
@GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID uniqueidentifier INOUT Given anonymously defaulted for constituent
@USERMODIFIEDRECEIPTAMOUNT bit INOUT User modified receipt amount
@PLEDGESUBTYPEID uniqueidentifier INOUT Pledge subtype
@REJECTIONCODEID uniqueidentifier INOUT Rejection code
@CONSTITUENTLOOKUPID uniqueidentifier INOUT Lookup ID
@MAILINGID uniqueidentifier INOUT Effort
@CHANNELCODEID uniqueidentifier INOUT Inbound channel
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@INSTALLMENTS xml INOUT Installments
@PAYMENTFORPLEDGEAMOUNT money INOUT Payment for pledge amount
@RECOGNITIONS xml INOUT Recognition credits
@DIDRECOGNITIONSDEFAULT bit INOUT Did default recognition credits
@TRIBUTES xml INOUT Tributes
@UNAPPLIEDMATCHINGGIFTSPLITS xml INOUT Unapplied MG Split
@UNAPPLIEDMATCHINGGIFTAMOUNT money INOUT Applied
@RECEIPTTYPECODE tinyint INOUT Receipt type
@NEWCONSTITUENT xml INOUT New constituent
@OTHERPAYMENTMETHODCODEID uniqueidentifier INOUT Other method
@LETTERCODEID uniqueidentifier INOUT Letter
@ACKNOWLEDGEDATE datetime INOUT Acknowledge date
@REFERENCE nvarchar(255) INOUT Reference
@CATEGORYCODEID uniqueidentifier INOUT Revenue category
@ACKNOWLEDGEEID uniqueidentifier INOUT Acknowledgee
@APPLICATIONINFO nvarchar(60) INOUT Application
@OTHERTYPECODEID uniqueidentifier INOUT Other type
@OPPORTUNITYID uniqueidentifier INOUT Opportunity
@DIRECTDEBITRESULTCODE nvarchar(10) INOUT Result code
@LOWPRICE decimal(19, 4) INOUT Low price
@HIGHPRICE decimal(19, 4) INOUT High price
@NUMBEROFUNITSSOLD decimal(20, 3) INOUT Stock sale number of units
@USERMODIFIEDNUMBEROFUNITSSOLD bit INOUT User modified stock number of units sold
@CREDITCARDTOKEN uniqueidentifier INOUT Credit card token
@REJECTIONMESSAGE nvarchar(500) INOUT Rejection message
@PARTIALCREDITCARDNUMBER nvarchar(4) INOUT Partial card number
@ISEXISTINGCONSTITUENT bit INOUT Is existing constituent
@TAXDECLARATIONS xml INOUT Declarations
@CONSTITUENTTYPE tinyint INOUT Constituent type
@STANDINGORDERCONSTITUENTACCOUNTID uniqueidentifier INOUT Standing order account
@STANDINGORDERREFERENCEDATE UDT_FUZZYDATE INOUT Standing order reference date
@STANDINGORDERREFERENCENUMBER nvarchar(18) INOUT Standing order reference number
@STANDINGORDERSETUP bit INOUT Standing order has been setup
@STANDINGORDERSETUPDATE datetime INOUT Standing order setup date
@TRANSACTIONID uniqueidentifier INOUT Transaction ID
@ISTRANSIENTCARD bit INOUT Is transient credit card
@DECLINESGIFTAID bit INOUT Declines Gift Aid
@DDISOURCECODEID uniqueidentifier INOUT DDI source
@DDISOURCEDATE date INOUT DDI source date
@ISCOVENANT bit INOUT Is covenant gift
@AMOUNTFORVAT money INOUT Portion subject to VAT
@VATTAXRATEID uniqueidentifier INOUT VAT tax rate
@VATAMOUNT money INOUT VAT amount
@ADDITIONALAPPLICATIONSSTREAM xml INOUT Additional applications stream
@REVENUELOOKUPID nvarchar(100) INOUT Revenue ID
@APPLICATIONSOLICITORS xml INOUT Application solicitors
@APPLICATIONRECOGNITIONS xml INOUT Application recognitions
@MATCHINGGIFTS xml INOUT
@MGGENERATED bit INOUT MG Generated
@MGALTERED bit INOUT MG Altered
@PAYINGPENDINGREVENUEID uniqueidentifier INOUT Was paying pending revenue
@GIFTINKINDITEMNAME nvarchar(100) INOUT Item name
@GIFTINKINDDISPOSITIONCODE tinyint INOUT Disposition
@GIFTINKINDNUMBEROFUNITS int INOUT Gift-in-kind number of units
@GIFTINKINDFAIRMARKETVALUE money INOUT Fair market value per unit
@DIRECTDEBITISREJECTED bit INOUT Direct debit is rejected
@PERCENTAGEBENEFITS xml INOUT Percent benefits
@ISGIFTAIDSPONSORSHIP bit INOUT Gift Aid sponsorship
@OTHERCONSTITUENTAPPLICATIONINFO nvarchar(60) INOUT Other Application
@LOCKBOXID uniqueidentifier INOUT Lockbox
@LOCKBOXBATCHNUMBER nvarchar(100) INOUT Lockbox batch number
@LOCKBOXBATCHSEQUENCE int INOUT Lockbox batch sequence
@PDACCOUNTSYSTEMID uniqueidentifier INOUT Account system
@APPLICATIONBUSINESSUNITS xml INOUT Application business units
@TRANSACTIONCURRENCYID uniqueidentifier INOUT Transaction currency
@BASECURRENCYID uniqueidentifier INOUT Base currency
@BASEEXCHANGERATEID uniqueidentifier INOUT Base exchange rate
@EXCHANGERATE decimal(20, 8) INOUT Exchange rate
@BASEAMOUNT money INOUT Base amount
@GENERATEREFERENCENUMBER bit INOUT Automatically generate reference number
@APPLYBYPERCENT bit INOUT Apply by
@SOURCECODEIMPORT nvarchar(60) INOUT Source code (Import only)
@CURRENTBATCHROWID uniqueidentifier INOUT BatchRowID
@MERCHANTACCOUNTID uniqueidentifier INOUT Merchant account
@SETNULLBASEEXCHANGERATETOLATEST bit INOUT Use latest base exchange rate when not specified
@APPEALIDFORIMPORT uniqueidentifier INOUT
@SALE_LOWPRICE decimal(19, 4) INOUT
@SALE_MEDIANPRICE decimal(19, 4) INOUT
@SALE_HIGHPRICE decimal(19, 4) INOUT
@CREDITCARDATTEMPTCOUNT tinyint INOUT
@VENDORID nvarchar(50) INOUT
@CLIENTAPPLICENSEID nvarchar(100) INOUT
@BBNCTRANSACTIONPROCESSORID uniqueidentifier INOUT
@BBNCORIGINAPPEALID uniqueidentifier INOUT
@BBNCTRANID int INOUT
@BBNCID int INOUT
@BBNCORIGINPAGENAME nvarchar(100) INOUT
@BBNCORIGINPAGEID int INOUT
@EDITCONSTITUENTCONTEXT nvarchar(110) INOUT
@FINANCIALINSTITUTIONID uniqueidentifier INOUT
@ACCOUNTNUMBER nvarchar(50) INOUT
@ACCOUNTTYPE tinyint INOUT
@ACCOUNTNAME nvarchar(100) INOUT
@RECEIPTNUMBER nvarchar(30) INOUT
@RECEIPTSTACKSHORTNAME nvarchar(20) INOUT
@MARKGIFTASRECEIPTED bit INOUT
@EMAILID int INOUT
@EMAILNAME nvarchar(510) INOUT
@EMAILSUBJECT nvarchar(510) INOUT
@NAMECODE tinyint INOUT
@SIMILARADDRESSCODE tinyint INOUT
@UNSIMILARADDRESSCODE tinyint INOUT
@NEWADDRESSENDDATECODE tinyint INOUT
@NEWADDRESSPRIMARYCODE tinyint INOUT
@BIRTHDATERULECODE tinyint INOUT
@DIFFERENTPHONECODE tinyint INOUT
@NEWPHONEENDDATECODE tinyint INOUT
@NEWPHONEPRIMARYCODE tinyint INOUT
@DIFFERENTEMAILCODE tinyint INOUT
@NEWEMAILENDDATECODE tinyint INOUT
@NEWEMAILPRIMARYCODE tinyint INOUT
@USEGLOBALSETTINGS bit INOUT
@DOMANUALREVIEWFORAUTOMATCH bit INOUT
@CREATEHISTORICALNAMECODE tinyint INOUT
@CONSTITUENTHASEDITS bit INOUT
@FIRSTPAYMENTPROCESSED nvarchar(10) INOUT
@PAYMENTFORPLEDGERECEIPTAMOUNT money INOUT
@SEPAMANDATEID uniqueidentifier INOUT
@ADDSEPAMANDATE bit INOUT
@SEPAMANDATECUSTOMIDENTIFIER nvarchar(35) INOUT
@SEPAMANDATESIGNATUREDATE date INOUT
@SEPAMANDATETYPECODE tinyint INOUT
@FINANCIALINSTITUTIONNAME nvarchar(100) INOUT
@BANKINGSYSTEMID uniqueidentifier INOUT
@BRANCHNAME nvarchar(100) INOUT
@ROUTINGNUMBER nvarchar(9) INOUT
@SORTCODE nvarchar(6) INOUT
@BIC nvarchar(11) INOUT
@BANKCODE nvarchar(25) INOUT
@INSTALLMENTAMOUNT money INOUT
@REQUIRECREDITCARDPROCESSING bit INOUT
@NOTEHTMLNOTE nvarchar(max) INOUT
@ISGIVENANONYMOUSLYMANUALLYCHANGED bit INOUT
@IMPORT bit INOUT
@SOLICITCODES xml INOUT

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_2_REVENUEBATCHROW
(
  @ID uniqueidentifier,
  @DATALOADED bit = 0 output,
  @CONSTITUENTID uniqueidentifier = null output,
  @TYPECODE tinyint = null output,
  @DATE datetime = null output,
  @AMOUNT money = null output,
  @PAYMENTMETHODCODE tinyint = null output,
  @DONOTACKNOWLEDGE bit = null output,
  @CHECKDATE dbo.UDT_FUZZYDATE = null output,
  @CHECKNUMBER nvarchar(20) = null output,
  @REFERENCEDATE dbo.UDT_FUZZYDATE = null output,
  @REFERENCENUMBER nvarchar(20) = null output,
  @CARDHOLDERNAME nvarchar(255) = null output,
  @CREDITCARDNUMBER nvarchar(20) = null output,
  @CREDITTYPECODEID uniqueidentifier = null output,
  @AUTHORIZATIONCODE nvarchar(20) = null output,
  @EXPIRESON dbo.UDT_FUZZYDATE = null output,
  @ISSUER nvarchar(100) = null output,
  @NUMBEROFUNITS decimal(20,3) = null output,
  @SYMBOL nvarchar(25) = null output,
  @MEDIANPRICE decimal(19,4) = null output,
  @PROPERTYSUBTYPECODEID uniqueidentifier = null output,
  @GIFTINKINDSUBTYPECODEID uniqueidentifier = null output,
  @RECEIPTAMOUNT money = null output,
  @DONOTRECEIPT bit = null output,
  @CONSTITUENTACCOUNTID uniqueidentifier = null output,
  @SPLITS xml = null output,
  @SINGLEDESIGNATIONID uniqueidentifier = null output,
  @REVENUESTREAMS xml = null output,
  @APPLYTOSHOWNFORCONSTITUENTID uniqueidentifier = null output,
  @SEQUENCE int = null output,
  @INSTALLMENTFREQUENCYCODE tinyint = null output,
  @INSTALLMENTSTARTDATE datetime = null output,
  @INSTALLMENTENDDATE datetime = null output,
  @NUMBEROFINSTALLMENTS int = null output,
  @SOLICITORS xml = null output,
  @BENEFITS xml = null output,
  @FINDERNUMBER bigint = null output,
  @SOURCECODE nvarchar(60) = null output,
  @APPEALID uniqueidentifier = null output,
  @FINDERNUMBERISVALID bit = null output,
  @USERMODIFIEDBENEFITS bit = null output,
  @BENEFITSWAIVED bit = null output,
  @POSTDATE datetime = null output,
  @POSTSTATUSCODE tinyint = null output,
  @SENDPLEDGEREMINDER bit = null output,
  @SALEDATE datetime = null output,
  @SALEAMOUNT money = null output,
  @BROKERFEE money = null output,
  @SALEPOSTSTATUSCODE tinyint = null output,
  @SALEPOSTDATE datetime = null output,
  @NOTETITLE nvarchar(50) = null output,
  @NOTEAUTHORID uniqueidentifier = null output,
  @NOTEDATEENTERED datetime = null output ,
  @NOTETYPECODEID uniqueidentifier = null output,
  @NOTETEXTNOTE nvarchar(max) = null output,
  @GIFTAMOUNT nvarchar(100) = null output,
  @GIVENANONYMOUSLY bit = null output,
  @GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID uniqueidentifier = null output,
  @USERMODIFIEDRECEIPTAMOUNT bit = null output,
  @PLEDGESUBTYPEID uniqueidentifier = null output,
  @REJECTIONCODEID uniqueidentifier = null output,
  @CONSTITUENTLOOKUPID uniqueidentifier = null output,
  @MAILINGID uniqueidentifier = null output,
  @CHANNELCODEID uniqueidentifier = null output,
  @TSLONG bigint = 0 output,
  @INSTALLMENTS xml = null output,
  @PAYMENTFORPLEDGEAMOUNT money = null output,
  @RECOGNITIONS xml = null output,
  @DIDRECOGNITIONSDEFAULT bit = null output,
  @TRIBUTES xml = null output,
  @UNAPPLIEDMATCHINGGIFTSPLITS xml = null output,
  @UNAPPLIEDMATCHINGGIFTAMOUNT money = null output,
  @RECEIPTTYPECODE tinyint = null output,
  @NEWCONSTITUENT xml = null output,
  @OTHERPAYMENTMETHODCODEID uniqueidentifier = null output,
  @LETTERCODEID uniqueidentifier = null output,
  @ACKNOWLEDGEDATE datetime = null output,
  @REFERENCE nvarchar(255) = null output,
  @CATEGORYCODEID uniqueidentifier = null output,
  @ACKNOWLEDGEEID uniqueidentifier = null output,
  @APPLICATIONINFO nvarchar(60) = null output,
  @OTHERTYPECODEID uniqueidentifier = null output,
  @OPPORTUNITYID uniqueidentifier = null output,
  @DIRECTDEBITRESULTCODE nvarchar(10) = null output,
  @LOWPRICE decimal(19,4) = null output,
  @HIGHPRICE decimal(19,4) = null output,
  @NUMBEROFUNITSSOLD decimal(20,3) = null output,
  @USERMODIFIEDNUMBEROFUNITSSOLD bit = null output,
  @CREDITCARDTOKEN uniqueidentifier = null output,
  @REJECTIONMESSAGE nvarchar(500) = null output,
  -- PARTIALCREDITCARDNUMBER is used to support import and 

  -- credit card - last 4 digits recurring gifts

  @PARTIALCREDITCARDNUMBER nvarchar(4) = null output,
  @ISEXISTINGCONSTITUENT bit = null output,
  @TAXDECLARATIONS xml = null output,
  @CONSTITUENTTYPE tinyint = null output,
  @STANDINGORDERCONSTITUENTACCOUNTID uniqueidentifier = null output,
  @STANDINGORDERREFERENCEDATE dbo.UDT_FUZZYDATE = null output,
  @STANDINGORDERREFERENCENUMBER nvarchar(18) = null output,
  @STANDINGORDERSETUP bit = null output,
  @STANDINGORDERSETUPDATE datetime = null output,
  @TRANSACTIONID uniqueidentifier = null output,
  @ISTRANSIENTCARD bit = null output, -- Isn't set since it's write-only

  @DECLINESGIFTAID bit = null output,
  @DDISOURCECODEID uniqueidentifier = null output,
  @DDISOURCEDATE date = null output,
  @ISCOVENANT bit = null output,
  @AMOUNTFORVAT money = null output,
  @VATTAXRATEID uniqueidentifier = null output,
  @VATAMOUNT money = null output,
  @ADDITIONALAPPLICATIONSSTREAM xml = null output,
  @REVENUELOOKUPID nvarchar(100) = null output,
  @APPLICATIONSOLICITORS xml = null output,
  @APPLICATIONRECOGNITIONS xml = null output,
  @MATCHINGGIFTS xml = null output,
  @MGGENERATED bit = null output,
  @MGALTERED bit = null output,
  @PAYINGPENDINGREVENUEID uniqueidentifier = null output,
  @GIFTINKINDITEMNAME nvarchar(100) = null output,
  @GIFTINKINDDISPOSITIONCODE tinyint = null output,
  @GIFTINKINDNUMBEROFUNITS int = null output,
  @GIFTINKINDFAIRMARKETVALUE money = null output,
  @DIRECTDEBITISREJECTED bit = null output,
  @PERCENTAGEBENEFITS xml = null output,
  @ISGIFTAIDSPONSORSHIP bit = null output,
  @OTHERCONSTITUENTAPPLICATIONINFO nvarchar(60) = null output,
  @LOCKBOXID uniqueidentifier = null output,
  @LOCKBOXBATCHNUMBER nvarchar(100) = null output,
  @LOCKBOXBATCHSEQUENCE int = null output,
  @PDACCOUNTSYSTEMID uniqueidentifier = null output,
  @APPLICATIONBUSINESSUNITS xml = null output,
  @TRANSACTIONCURRENCYID uniqueidentifier = null output,
  @BASECURRENCYID uniqueidentifier = null output,
  @BASEEXCHANGERATEID uniqueidentifier = null output,
  @EXCHANGERATE decimal(20,8) = null output,
  @BASEAMOUNT money = null output,
  @GENERATEREFERENCENUMBER bit = null output,
  @APPLYBYPERCENT bit =null output,
  @SOURCECODEIMPORT nvarchar(60) = null output,
  @CURRENTBATCHROWID uniqueidentifier = null output,
  @MERCHANTACCOUNTID uniqueidentifier = null output,
  @SETNULLBASEEXCHANGERATETOLATEST bit = null output,
  @APPEALIDFORIMPORT uniqueidentifier = null output,
  @SALE_LOWPRICE decimal(19,4) = null output,
  @SALE_MEDIANPRICE decimal(19,4) = null output,
  @SALE_HIGHPRICE decimal(19,4) = null output,
  @CREDITCARDATTEMPTCOUNT tinyint = null output,
  @VENDORID nvarchar(50) = null output,
  @CLIENTAPPLICENSEID nvarchar(100) = null output,
  @BBNCTRANSACTIONPROCESSORID uniqueidentifier = null output
  @BBNCORIGINAPPEALID uniqueidentifier = null output,
  @BBNCTRANID int = null output,
  @BBNCID int = null output,
  @BBNCORIGINPAGENAME nvarchar(100) = null output,
  @BBNCORIGINPAGEID int = null output,
  @EDITCONSTITUENTCONTEXT nvarchar(110) = null output,
  @FINANCIALINSTITUTIONID uniqueidentifier = null output,
  @ACCOUNTNUMBER nvarchar(50) = null output,
  @ACCOUNTTYPE tinyint = null output,
  @ACCOUNTNAME nvarchar(100) = null output,
  @RECEIPTNUMBER nvarchar(30) = null output,
  @RECEIPTSTACKSHORTNAME nvarchar(20) = null output,
  @MARKGIFTASRECEIPTED bit = null output,
  @EMAILID int = null output,
  @EMAILNAME nvarchar(510) = null output,
  @EMAILSUBJECT nvarchar(510) = null output,
  @NAMECODE tinyint = null output,
  @SIMILARADDRESSCODE tinyint = null output,
  @UNSIMILARADDRESSCODE tinyint = null output,
  @NEWADDRESSENDDATECODE tinyint = null output,
  @NEWADDRESSPRIMARYCODE tinyint = null output,
  @BIRTHDATERULECODE  tinyint = null output,
  @DIFFERENTPHONECODE tinyint = null output,
  @NEWPHONEENDDATECODE tinyint = null output,
  @NEWPHONEPRIMARYCODE tinyint = null output,
  @DIFFERENTEMAILCODE tinyint = null output,
  @NEWEMAILENDDATECODE tinyint = null output,
  @NEWEMAILPRIMARYCODE tinyint = null output,
  @USEGLOBALSETTINGS bit = null output,
  @DOMANUALREVIEWFORAUTOMATCH bit = null output,
  @CREATEHISTORICALNAMECODE tinyint = null output,
  @CONSTITUENTHASEDITS bit = null output,
  @FIRSTPAYMENTPROCESSED nvarchar(10) = null output,
  @PAYMENTFORPLEDGERECEIPTAMOUNT money = null output,
  @SEPAMANDATEID uniqueidentifier = null output,
  @ADDSEPAMANDATE bit = null output,
  @SEPAMANDATECUSTOMIDENTIFIER nvarchar(35) = null output,
  @SEPAMANDATESIGNATUREDATE date = null output,
  @SEPAMANDATETYPECODE tinyint = null output,
  @FINANCIALINSTITUTIONNAME nvarchar(100) = null output,
  @BANKINGSYSTEMID uniqueidentifier = null output,
  @BRANCHNAME nvarchar(100) = null output,
  @ROUTINGNUMBER nvarchar(9) = null output,
  @SORTCODE nvarchar(6) = null output,
  @BIC nvarchar(11) = null output,
  @BANKCODE nvarchar(25) = null output,
  @INSTALLMENTAMOUNT money = null output,
  @REQUIRECREDITCARDPROCESSING bit = null output,
  @NOTEHTMLNOTE nvarchar(max) = null output,
  @ISGIVENANONYMOUSLYMANUALLYCHANGED bit = null output,
  @IMPORT bit = null output,
  @SOLICITCODES xml = null output
)
as
  set nocount on;

  set @DATALOADED = 0;
  set @TSLONG = 0;

  set @CURRENTBATCHROWID = @ID;

  select @DATALOADED = 1,
    @CONSTITUENTID = BATCHREVENUE.CONSTITUENTID,
    @TYPECODE = BATCHREVENUE.TYPECODE,
    @SINGLEDESIGNATIONID = BATCHREVENUE.SINGLEDESIGNATIONID,
    @SPLITS = dbo.UFN_REVENUEBATCH_GETSPLITS_TOITEMLISTXML(BATCHREVENUE.ID),
    @DATE = BATCHREVENUE.DATE,
    @PAYMENTMETHODCODE = BATCHREVENUE.PAYMENTMETHODCODE,
    @DONOTACKNOWLEDGE = BATCHREVENUE.DONOTACKNOWLEDGE,
    @CHECKDATE = BATCHREVENUE.CHECKDATE,
    @CHECKNUMBER = BATCHREVENUE.CHECKNUMBER,
    @REFERENCEDATE = BATCHREVENUE.REFERENCEDATE,
    @REFERENCENUMBER = BATCHREVENUE.REFERENCENUMBER,
    @CARDHOLDERNAME = case when BATCHREVENUE.PAYMENTMETHODCODE = 98 then BATCHREVENUE.CARDHOLDERNAME else CREDITCARD.CARDHOLDERNAME end,
    @CREDITCARDNUMBER = CREDITCARD.CREDITCARDPARTIALNUMBER,
    @PARTIALCREDITCARDNUMBER = BATCHREVENUE.CREDITCARDPARTIALNUMBER,
    @CREDITCARDTOKEN = CREDITCARD.CREDITCARDTOKEN,
    @CREDITTYPECODEID = case when BATCHREVENUE.PAYMENTMETHODCODE = 98 then BATCHREVENUE.CREDITTYPECODEID else CREDITCARD.CREDITTYPECODEID end,
    @AUTHORIZATIONCODE = BATCHREVENUE.AUTHORIZATIONCODE,
    @EXPIRESON = case when BATCHREVENUE.PAYMENTMETHODCODE = 98 then BATCHREVENUE.EXPIRESON else CREDITCARD.EXPIRESON end,
    @CONSTITUENTACCOUNTID = BATCHREVENUE.CONSTITUENTACCOUNTID, 
    @AMOUNT = BATCHREVENUE.AMOUNT, 
    @RECEIPTAMOUNT = BATCHREVENUE.RECEIPTAMOUNT, 
    @DONOTRECEIPT = BATCHREVENUE.DONOTRECEIPT,
    @REVENUESTREAMS = dbo.UFN_REVENUEBATCH_GETAPPLICATIONSWITHCHILDREN_TOITEMLISTXML(@ID),
    @APPLYTOSHOWNFORCONSTITUENTID = BATCHREVENUE.APPLYTOSHOWNFORCONSTITUENTID, 
    @PROPERTYSUBTYPECODEID = BATCHREVENUE.PROPERTYSUBTYPECODEID,
    @GIFTINKINDSUBTYPECODEID = BATCHREVENUE.GIFTINKINDSUBTYPECODEID,
    @SEQUENCE = BATCHREVENUE.SEQUENCE,
    @INSTALLMENTFREQUENCYCODE = BATCHREVENUE.INSTALLMENTFREQUENCYCODE,
    @INSTALLMENTSTARTDATE = case
                              when BATCHREVENUE.TYPECODE = 1 then coalesce(BATCHREVENUE.INSTALLMENTSTARTDATE, BATCHREVENUE.DATE)
                              else BATCHREVENUE.INSTALLMENTSTARTDATE
                            end,
    @INSTALLMENTENDDATE = BATCHREVENUE.INSTALLMENTENDDATE,
    @NUMBEROFINSTALLMENTS = BATCHREVENUE.NUMBEROFINSTALLMENTS,
    @BENEFITS = dbo.UFN_REVENUEBATCH_GETBENEFITS_TOITEMLISTXML(@ID),
    @PERCENTAGEBENEFITS = dbo.UFN_REVENUEBATCH_GETBENEFITSPCT_TOITEMLISTXML(@ID),
    @FINDERNUMBER = BATCHREVENUE.FINDERNUMBER,
    @SOURCECODE = BATCHREVENUE.SOURCECODE,
    @APPEALID = BATCHREVENUE.APPEALID,
    @FINDERNUMBERISVALID = BATCHREVENUE.FINDERNUMBERISVALID,
    @USERMODIFIEDBENEFITS = BATCHREVENUE.USERMODIFIEDBENEFITS,
    @BENEFITSWAIVED = BATCHREVENUE.BENEFITSWAIVED,
    @POSTDATE = BATCHREVENUE.POSTDATE,
    @POSTSTATUSCODE = BATCHREVENUE.POSTSTATUSCODE,
    @SENDPLEDGEREMINDER = BATCHREVENUE.SENDPLEDGEREMINDER,
    @SALEDATE = BATCHREVENUE.SALEDATE,
    @SALEAMOUNT = BATCHREVENUE.SALEAMOUNT,
    @BROKERFEE = BATCHREVENUE.BROKERFEE,
    @SALEPOSTSTATUSCODE = BATCHREVENUE.SALEPOSTSTATUSCODE,
    @SALEPOSTDATE = BATCHREVENUE.SALEPOSTDATE,
    @ISSUER = BATCHREVENUE.ISSUER,
    @MERCHANTACCOUNTID = BATCHREVENUE.MERCHANTACCOUNTID,
    @NUMBEROFUNITS = BATCHREVENUE.NUMBEROFUNITS,
    @SYMBOL = BATCHREVENUE.SYMBOL,
    @MEDIANPRICE = BATCHREVENUE.MEDIANPRICE,
    @NOTETITLE = BATCHREVENUE.NOTETITLE,
    @NOTEAUTHORID = BATCHREVENUE.NOTEAUTHORID,
    @NOTEDATEENTERED = BATCHREVENUE.NOTEDATEENTERED,
    @NOTETYPECODEID = BATCHREVENUE.NOTETYPECODEID,
    @NOTETEXTNOTE = BATCHREVENUE.NOTETEXTNOTE,
    @GIFTAMOUNT = 0,
    @GIVENANONYMOUSLY = BATCHREVENUE.GIVENANONYMOUSLY,
    @GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID = BATCHREVENUE.GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID,
    @USERMODIFIEDRECEIPTAMOUNT = BATCHREVENUE.USERMODIFIEDRECEIPTAMOUNT,
    @PLEDGESUBTYPEID = BATCHREVENUE.PLEDGESUBTYPEID,
    @REJECTIONMESSAGE = BATCHREVENUE.REJECTIONMESSAGE,
    @CONSTITUENTLOOKUPID = BATCHREVENUE.CONSTITUENTID,
    @DIDRECOGNITIONSDEFAULT = 1,
    @MAILINGID = MAILINGID,
    @CHANNELCODEID = CHANNELCODEID,
    @INSTALLMENTS = dbo.UFN_REVENUEBATCH_GETINSTALLMENTS_TOITEMLISTXML(@ID),
    @PAYMENTFORPLEDGEAMOUNT = PAYMENTFORPLEDGEAMOUNT,
    @TSLONG = BATCHREVENUE.TSLONG,
    @TRIBUTES = dbo.UFN_REVENUEBATCH_GETTRIBUTES_TOITEMLISTXML(@ID),
    @UNAPPLIEDMATCHINGGIFTSPLITS = dbo.UFN_REVENUEBATCH_GETUNAPPLIEDMATCHINGGIFTSPLITS_TOITEMLISTXML(BATCHREVENUE.ID),
    @RECEIPTTYPECODE = BATCHREVENUE.RECEIPTTYPECODE,
    @OTHERPAYMENTMETHODCODEID = BATCHREVENUE.OTHERPAYMENTMETHODCODEID,
    @LETTERCODEID = BATCHREVENUE.LETTERCODEID, 
    @ACKNOWLEDGEDATE = BATCHREVENUE.ACKNOWLEDGEDATE,
    @REFERENCE = BATCHREVENUE.REFERENCE,
    @CATEGORYCODEID = BATCHREVENUE.GLREVENUECATEGORYMAPPINGID,
    @ACKNOWLEDGEEID = BATCHREVENUE.ACKNOWLEDGEEID,
    @APPLICATIONINFO = BATCHREVENUE.APPLICATIONINFO,
    @OTHERTYPECODEID = BATCHREVENUE.OTHERTYPECODEID,
    @OPPORTUNITYID = BATCHREVENUE.OPPORTUNITYID,
    @DIRECTDEBITRESULTCODE = BATCHREVENUE.DIRECTDEBITRESULTCODE,
    @LOWPRICE = BATCHREVENUE.LOWPRICE,
    @HIGHPRICE = BATCHREVENUE.HIGHPRICE,
    @NUMBEROFUNITSSOLD = BATCHREVENUE.NUMBEROFUNITSSOLD,
    @USERMODIFIEDNUMBEROFUNITSSOLD = BATCHREVENUE.USERMODIFIEDNUMBEROFUNITSSOLD,
    @TAXDECLARATIONS = dbo.UFN_REVENUEBATCH_GETTAXDECLARATIONS_TOITEMLISTXML(BATCHREVENUE.ID),
    @STANDINGORDERSETUP = BATCHREVENUE.STANDINGORDERSETUP,
    @STANDINGORDERSETUPDATE = BATCHREVENUE.STANDINGORDERSETUPDATE,
    @STANDINGORDERREFERENCENUMBER = BATCHREVENUE.STANDINGORDERREFERENCENUMBER,
    @GENERATEREFERENCENUMBER = BATCHREVENUE.USESYSTEMGENERATEDREFERENCENUMBER,
    @TRANSACTIONID = BATCHREVENUE.TRANSACTIONID,
    @ISEXISTINGCONSTITUENT = case 
      when CONSTITUENT.ID is null 
        then 0 
      else 1 
    end,
    @DECLINESGIFTAID = BATCHREVENUE.DECLINESGIFTAID,
    @DDISOURCECODEID = DDISOURCECODEID,
    @DDISOURCEDATE = DDISOURCEDATE,
    @ISCOVENANT = ISCOVENANT,
    @AMOUNTFORVAT = AMOUNTFORVAT,
    @VATTAXRATEID = VATTAXRATEID,
    @VATAMOUNT = VATAMOUNT,
    @ADDITIONALAPPLICATIONSSTREAM = dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS_TOITEMLISTXML(@ID),
    @REVENUELOOKUPID = BATCHREVENUE.REVENUELOOKUPID,
    @MATCHINGGIFTS = dbo.UFN_REVENUEBATCH_GETENHANCEDMATCHINGGIFTS_2_TOITEMLISTXML(BATCHREVENUE.ID),
    @MGGENERATED = MGGENERATED,
    @MGALTERED = MGALTERED,
    @PAYINGPENDINGREVENUEID = PAYINGPENDINGREVENUEID,
    @GIFTINKINDITEMNAME = GIFTINKINDITEMNAME,
    @GIFTINKINDDISPOSITIONCODE = GIFTINKINDDISPOSITIONCODE,
    @GIFTINKINDNUMBEROFUNITS = GIFTINKINDNUMBEROFUNITS,
    @GIFTINKINDFAIRMARKETVALUE = GIFTINKINDFAIRMARKETVALUE,
    @DIRECTDEBITISREJECTED = BATCHREVENUE.DIRECTDEBITISREJECTED,
    @ISGIFTAIDSPONSORSHIP = BATCHREVENUE.ISGIFTAIDSPONSORSHIP,
    @OTHERCONSTITUENTAPPLICATIONINFO = BATCHREVENUE.APPLICATIONINFO,
    @LOCKBOXID = BATCHREVENUE.LOCKBOXID,
    @LOCKBOXBATCHNUMBER = BATCHREVENUE.LOCKBOXBATCHNUMBER,
    @LOCKBOXBATCHSEQUENCE = BATCHREVENUE.LOCKBOXBATCHSEQUENCE,
    @PDACCOUNTSYSTEMID = BATCHREVENUE.PDACCOUNTSYSTEMID,
    @TRANSACTIONCURRENCYID = BATCHREVENUE.TRANSACTIONCURRENCYID,
    @BASECURRENCYID = BATCHREVENUE.BASECURRENCYID,
    @BASEEXCHANGERATEID = BATCHREVENUE.BASEEXCHANGERATEID,
    @EXCHANGERATE = BATCHREVENUE.EXCHANGERATE,
    @APPLYBYPERCENT = BATCHREVENUE.APPLYBYPERCENT,
    @SETNULLBASEEXCHANGERATETOLATEST = 0,
    @SALE_LOWPRICE = BATCHREVENUE.SALE_LOWPRICE,
    @SALE_MEDIANPRICE = BATCHREVENUE.SALE_MEDIANPRICE,
    @SALE_HIGHPRICE = BATCHREVENUE.SALE_HIGHPRICE,
    @CREDITCARDATTEMPTCOUNT = BATCHREVENUE.CREDITCARDATTEMPTCOUNT,
    @VENDORID = BATCHREVENUE.VENDORID,
    @CLIENTAPPLICENSEID = BATCHREVENUE.CLIENTAPPLICENSEID,
    @RECEIPTNUMBER = case
      when BATCHREVENUE.RECEIPTNUMBER > 0
        then CAST(BATCHREVENUE.RECEIPTNUMBER AS NVARCHAR(30))
      else ''
    end,
    @RECEIPTSTACKSHORTNAME = BATCHREVENUE.RECEIPTSTACKSHORTNAME,
    @NAMECODE = BATCHREVENUE.NAMECODE,
    @SIMILARADDRESSCODE = BATCHREVENUE.SIMILARADDRESSCODE,
    @UNSIMILARADDRESSCODE = BATCHREVENUE.UNSIMILARADDRESSCODE,
    @NEWADDRESSENDDATECODE = BATCHREVENUE.NEWADDRESSENDDATECODE,
    @NEWADDRESSPRIMARYCODE = BATCHREVENUE.NEWADDRESSPRIMARYCODE,
    @BIRTHDATERULECODE  = BATCHREVENUE.BIRTHDATERULECODE,
    @DIFFERENTPHONECODE = BATCHREVENUE.DIFFERENTPHONECODE,
    @NEWPHONEENDDATECODE = BATCHREVENUE.NEWPHONEENDDATECODE,
    @NEWPHONEPRIMARYCODE = BATCHREVENUE.NEWPHONEPRIMARYCODE,
    @DIFFERENTEMAILCODE = BATCHREVENUE.DIFFERENTEMAILCODE,
    @NEWEMAILENDDATECODE = BATCHREVENUE.NEWEMAILENDDATECODE,
    @NEWEMAILPRIMARYCODE = BATCHREVENUE.NEWEMAILPRIMARYCODE,
    @USEGLOBALSETTINGS = BATCHREVENUE.USEGLOBALSETTINGS,
    @CREATEHISTORICALNAMECODE = BATCHREVENUE.CREATEHISTORICALNAMECODE,    
    @EDITCONSTITUENTCONTEXT = cast(BATCHREVENUE.CONSTITUENTID as nvarchar(36)) + '|' +cast(BATCHREVENUE.BATCHID as nvarchar(36)) +  '|' + cast(BATCHREVENUE.ID as nvarchar(36)),
    @PAYMENTFORPLEDGERECEIPTAMOUNT = BATCHREVENUE.PAYMENTFORPLEDGERECEIPTAMOUNT,
    @SEPAMANDATEID = BATCHREVENUE.SEPAMANDATEID,
    @INSTALLMENTAMOUNT = BATCHREVENUE.INSTALLMENTAMOUNT,
    @REQUIRECREDITCARDPROCESSING = BATCHREVENUE.REQUIRECREDITCARDPROCESSING,
    @NOTEHTMLNOTE = BATCHREVENUE.NOTEHTMLNOTE,
    @ISGIVENANONYMOUSLYMANUALLYCHANGED = 0,
    @IMPORT = 0   
  from dbo.BATCHREVENUE
    left join dbo.CREDITCARD ON BATCHREVENUE.CREDITCARDID = CREDITCARD.ID
    left join dbo.CONSTITUENT on CONSTITUENT.ID = BATCHREVENUE.CONSTITUENTID
  where BATCHREVENUE.ID = @ID

  set  @SOLICITCODES = dbo.UFN_BATCHREVENUE_GETCONSTITUENTSOLICITCODES_TOITEMLISTXML(@ID)

  select @DOMANUALREVIEWFORAUTOMATCH = DOMANUALREVIEWFORAUTOMATCH 
  from dbo.BATCHCONSTITUENTUPDATE 
  where BATCHCONSTITUENTUPDATE.ID = @ID

  /*
    Begin work synchronizing @SPLITS/@ADDITIONALAPPLICATIONSSTREAM with row fields that should correspond to a single application.
    Essentially, if we only have a single application we should not trust that the row values populated were correct as throughout time
    we have made changes to essentially deprecate the usage of these fields as an alternative to using the correct collections.
  */
    declare @ADDITIONALAPPLICATIONCOUNT int;
    declare @SPLITCOUNT int;

    select
      @ADDITIONALAPPLICATIONCOUNT = (select count(*) from @ADDITIONALAPPLICATIONSSTREAM.nodes('/ADDITIONALAPPLICATIONSSTREAM/ITEM') T(c)),
      @SPLITCOUNT = (select count(*) from @SPLITS.nodes('/SPLITS/ITEM') T(c));

    declare @SPLITS_DIDCAMPAIGNSDEFAULT bit;
    declare @SPLITS_CAMPAIGNS xml;

    --If the row is a payment and has exactly one additional application set the single application row fields from that additional application

    if @TYPECODE = 0 and @ADDITIONALAPPLICATIONCOUNT = 1
    begin

      select
        @SINGLEDESIGNATIONID = DESIGNATIONID,
        @OTHERTYPECODEID = OTHERTYPECODEID,
        @DECLINESGIFTAID = DECLINESGIFTAID,
        @OPPORTUNITYID = OPPORTUNITYID,
        @ISGIFTAIDSPONSORSHIP = ISGIFTAIDSPONSORSHIP,
        @CATEGORYCODEID = CATEGORYCODEID
      from
        dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS(@ID);

    end
    --Otherwise, if the row has exactly one split set the single application row fields from that split.  Payments should be included as

    -- at one point in time (at least 2.7) we stored single split payments in the BATCHREVENUESPLIT table.

    --In the case when we are transferring @SPLITS to @ADDITIONALAPPLICATIONSSTREAM we also need to pull the associated campaigns.

    else if @SPLITCOUNT = 1
    begin

      select
        @SINGLEDESIGNATIONID = DESIGNATIONID,
        @DECLINESGIFTAID = DECLINESGIFTAID,
        @ISGIFTAIDSPONSORSHIP = ISGIFTAIDSPONSORSHIP,
        @SPLITS_DIDCAMPAIGNSDEFAULT = DIDCAMPAIGNSDEFAULT,
        @SPLITS_CAMPAIGNS = CAMPAIGNS
      from
        dbo.UFN_REVENUEBATCH_GETSPLITS(@ID);

    end

    -- Sync the additional applications collection with the single application info field

    if @TYPECODE = 0 and len(@APPLICATIONINFO) = 3 and @ADDITIONALAPPLICATIONCOUNT = 0
      begin
        declare @APPTYPE integer = convert(integer, substring(@APPLICATIONINFO, 3, 1));

        set @ADDITIONALAPPLICATIONSSTREAM =
        (
          select
            ID,
            TYPECODE,
            APPLIED,
            DESIGNATIONID,
            OTHERTYPECODEID,
            DECLINESGIFTAID,
            OPPORTUNITYID,
            ISGIFTAIDSPONSORSHIP,
            CATEGORYCODEID,
            DIDCAMPAIGNSDEFAULT,
            CAMPAIGNS
          from
          (
              select
                newid() ID,
                @APPTYPE TYPECODE,
                @AMOUNT APPLIED,
                @SINGLEDESIGNATIONID DESIGNATIONID, 
                @OTHERTYPECODEID OTHERTYPECODEID,
                coalesce(@DECLINESGIFTAID, 0) DECLINESGIFTAID,
                @OPPORTUNITYID OPPORTUNITYID,
                coalesce(@ISGIFTAIDSPONSORSHIP, 0) ISGIFTAIDSPONSORSHIP,
                @CATEGORYCODEID CATEGORYCODEID,
                coalesce(@SPLITS_DIDCAMPAIGNSDEFAULT, 1) as DIDCAMPAIGNSDEFAULT,
                @SPLITS_CAMPAIGNS as CAMPAIGNS
          ) ADDITIONALAPPLICATION
          for xml raw('ITEM'), type, elements, root('ADDITIONALAPPLICATIONSSTREAM'), binary base64
        ); 

        if @SINGLEDESIGNATIONID is not null
          exec USP_REVENUEBATCH_ADDITIONALAPPLICATIONWITHCHILDREN_UPDATEFROMXML @ID, @ADDITIONALAPPLICATIONSSTREAM, @DATE;

    end
  /*
    End @SPLITS/@ADDITIONALAPPLICATIONSSTREAM synchronization
  */

  if @PAYMENTMETHODCODE = 255
    set @PAYMENTMETHODCODE = null;
  if @PAYMENTMETHODCODE = 11 --Standing order

  begin
    set @STANDINGORDERCONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID
    set @STANDINGORDERREFERENCEDATE = @REFERENCEDATE;
  end

  if @FINDERNUMBER = 0
    set @FINDERNUMBER = null;

  /* JamesWill CR267402-021907 INSTALLMENTFREQUENCYCODE cannot be null in the database, but it can be null in the defaults */
  if @INSTALLMENTFREQUENCYCODE = 255
    set @INSTALLMENTFREQUENCYCODE = null;

  /* JamesWill CR265838-020507 2007/03/07 */
  if @POSTSTATUSCODE = 255
    set @POSTSTATUSCODE = null;

  if @SALEPOSTSTATUSCODE = 255
    set @SALEPOSTSTATUSCODE = null;

  if @RECEIPTTYPECODE = 255
    set @RECEIPTTYPECODE = null;

  --Set default values for SEPA mandate fields only used in import

  set @ADDSEPAMANDATE = 0;
  set @SEPAMANDATECUSTOMIDENTIFIER = '';
  set @SEPAMANDATESIGNATUREDATE = null;
  set @SEPAMANDATETYPECODE = 0;

  -- Determine the constituent type

  declare @ISORGANIZATION bit, @ISGROUP bit, @ISHOUSEHOLD bit
  select
    @ISORGANIZATION = CONSTITUENT.ISORGANIZATION,
    @ISGROUP = CONSTITUENT.ISGROUP,
    @ISHOUSEHOLD = case 
      when ISGROUP = 1 and GROUPDATA.GROUPTYPECODE = 0 
        then 1 
      else 0 
    end
  from dbo.CONSTITUENT
    left join dbo.GROUPDATA on CONSTITUENT.ID = GROUPDATA.ID
  where CONSTITUENT.ID = @CONSTITUENTID

  -- If the fields weren't set, then the constituent must be a batch constituent

  if @ISORGANIZATION is null
    select
      @ISORGANIZATION = BATCHREVENUECONSTITUENT.ISORGANIZATION,
      @ISGROUP = BATCHREVENUECONSTITUENT.ISGROUP,
      @ISHOUSEHOLD = case 
        when ISGROUP = 1 and GROUPDATA.GROUPTYPECODE = 0 
          then 1 
        else 0 
      end
    from dbo.BATCHREVENUECONSTITUENT
      left join dbo.GROUPDATA on BATCHREVENUECONSTITUENT.ID = GROUPDATA.ID
    where BATCHREVENUECONSTITUENT.ID = @CONSTITUENTID

  if @ISORGANIZATION = 0 and @ISGROUP = 0
    set @CONSTITUENTTYPE = 0 -- Individual

  else
  begin
    if @ISORGANIZATION = 1
      set @CONSTITUENTTYPE = 1 -- Org

    else
    begin
      if @ISHOUSEHOLD = 1
        set @CONSTITUENTTYPE = 2 -- Household

      else
        set @CONSTITUENTTYPE = 3 -- Group

    end
  end

  -- Set recognitions collection if there are no additional applications OR the row is a payment and has exactly one additional application

  set @RECOGNITIONS = (
    select 
      AMOUNT, 
      CONSTITUENTID, 
      EFFECTIVEDATE, 
      BATCHREVENUERECOGNITION.ID, 
      REVENUERECOGNITIONTYPECODE.DESCRIPTION as RECOGNITIONTYPE, 
      REVENUERECOGNITIONTYPECODEID
    from dbo.BATCHREVENUERECOGNITION
      left join dbo.REVENUERECOGNITIONTYPECODE on BATCHREVENUERECOGNITION.REVENUERECOGNITIONTYPECODEID = REVENUERECOGNITIONTYPECODE.ID
    where BATCHREVENUEID = @ID 
      and (ADDITIONALAPPLICATIONTYPECODE is null or ADDITIONALAPPLICATIONTYPECODE = 255 or (@TYPECODE = 0 and @ADDITIONALAPPLICATIONCOUNT = 1))
    order by BATCHREVENUERECOGNITION.EFFECTIVEDATE
    for xml raw('ITEM'),type,elements,root('RECOGNITIONS'),BINARY BASE64
  )

  -- Do the same for solicitors (set if no additional applications OR the row is a payment and has exactly one additional application)

  set @SOLICITORS = (
    select 
      AMOUNT, 
      CONSTITUENTID, 
      ID, 
      SEQUENCE 
    from dbo.BATCHREVENUESOLICITOR
    where BATCHREVENUEID = @ID 
      and (ADDITIONALAPPLICATIONTYPECODE is null or ADDITIONALAPPLICATIONTYPECODE = 255 or (@TYPECODE = 0 and @ADDITIONALAPPLICATIONCOUNT = 1))
    for xml raw('ITEM'),type,elements,root('SOLICITORS'),BINARY BASE64
  )

  declare @APPLICATIONCODE tinyint;
  if @APPLICATIONINFO is not null
  begin
    if len(@APPLICATIONINFO) > 0
    begin
      if len(@APPLICATIONINFO) = 3
      begin
        set @APPLICATIONCODE = cast(substring(@APPLICATIONINFO, 3, 1) as tinyint);
      end
      else if len(@APPLICATIONINFO) >= 39
      begin
        --Bug 133370 - AdamBu - 1/10/11 - Replace the balance in the APPLICATIONINFO fields with the current balance.

        --  This will ensure that the value passed out of the dataform matches the value that will be used in the

        --  simple list.

        declare @SINGLEAPPLICATIONID uniqueidentifier
        declare @APPLICATIONTYPECODE tinyint

        select 
          @SINGLEAPPLICATIONID = SINGLEAPPLICATIONID, 
          @APPLICATIONTYPECODE = APPLICATIONTYPECODE
        from dbo.UFN_REVENUEBATCH_PARSEAPPLICATIONINFO(@APPLICATIONINFO)

        --All other commitment types include amount in APPLICATIONINFO, not balance, so we don't need to worry

        --about updating them.

        if @APPLICATIONTYPECODE in (3,5,6,7,8,9,10)
        begin
          set @APPLICATIONINFO = convert(nvarchar(36), @SINGLEAPPLICATIONID)
            + ':' + convert(nvarchar(2),@APPLICATIONTYPECODE)
            + ':' + case 
              when @APPLICATIONTYPECODE in (3,5,6,8,9,10)
                then coalesce(
                  (
                    select convert(nvarchar(20),dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID))
                    from dbo.REVENUE
                      cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) CONSTITUENT_NF
                      inner join dbo.INSTALLMENT on INSTALLMENT.REVENUEID = REVENUE.ID and INSTALLMENT.ID = dbo.UFN_REVENUE_GETNEXTINSTALLMENT(REVENUE.ID)
                    where REVENUE.ID = @SINGLEAPPLICATIONID
                  ),
                  '0.00'
                )
              when @APPLICATIONTYPECODE = 7
                then convert(nvarchar(20),dbo.UFN_EVENTREGISTRANT_GETBALANCE(@SINGLEAPPLICATIONID))
            end

          set @OTHERCONSTITUENTAPPLICATIONINFO = @APPLICATIONINFO
        end
      end
    end
  end

  declare @USESPLITS bit;
  if @APPLICATIONCODE is not null and @SPLITCOUNT > 1
    set @USESPLITS = 1
  else
    set @USESPLITS = 0

  set @APPLICATIONRECOGNITIONS = dbo.UFN_REVENUEBATCH_GETAPPLICATIONRECOGNITIONS(@ID, @USESPLITS)
  set @APPLICATIONSOLICITORS = dbo.UFN_REVENUEBATCH_GETAPPLICATIONSOLICITORS(@ID, @USESPLITS)

  /* Load business units */
  declare @APPORSPLIT bit =0;
  if @SPLITCOUNT>1
    set @APPORSPLIT=1
  else
    set @APPORSPLIT=0

  set @APPLICATIONBUSINESSUNITS = dbo.UFN_REVENUEBATCH_GETAPPLICATIONBUSINESSUNITS(@ID,@APPORSPLIT)

  set @SOURCECODEIMPORT = @SOURCECODE;

  /* Load BBIS transaction information */
  select 
    @BBNCTRANID = BBNCTRANID,
    @BBNCID = BBNCID,
    @BBNCTRANSACTIONPROCESSORID = NETCOMMUNITYTRANSACTIONPROCESSORID,
    @BBNCORIGINAPPEALID = ORIGINAPPEALID,
    @BBNCORIGINPAGENAME = PAGENAME,
    @BBNCORIGINPAGEID = PAGEID,
    @MARKGIFTASRECEIPTED = MARKGIFTASRECEIPTED,
    @EMAILID = EMAILID,
    @EMAILNAME = EMAILNAME,
    @EMAILSUBJECT = EMAILSUBJECT,
    @FIRSTPAYMENTPROCESSED = FIRSTPAYMENTPROCESSED
  from 
    dbo.BATCHREVENUEBBNCINFO
  where 
    BATCHREVENUEID = @ID;

  -- return this true if the selected constituent has edits

  select @CONSTITUENTHASEDITS = 1 from dbo.BATCHCONSTITUENTUPDATE where ID= @ID and PRIMARYRECORDID = @CONSTITUENTID      

  return 0;