USP_DATAFORMTEMPLATE_ADD_REVENUEUPDATEBATCHROW
The save procedure used by the add dataform template "Revenue Update Batch Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@REVENUEID | uniqueidentifier | IN | Revenue |
@REVENUESPLITID | uniqueidentifier | IN | Revenue Split |
@BATCHID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@CONSTITUENTID | uniqueidentifier | IN | Constituent |
@TYPECODE | tinyint | IN | Revenue type |
@DATE | datetime | IN | Date |
@AMOUNT | money | IN | Amount |
@PAYMENTMETHODCODE | tinyint | IN | Payment method |
@DONOTACKNOWLEDGE | bit | IN | Do not acknowledge |
@CHECKDATE | UDT_FUZZYDATE | IN | Check date |
@CHECKNUMBER | nvarchar(20) | IN | Check number |
@REFERENCEDATE | UDT_FUZZYDATE | IN | Reference date |
@REFERENCENUMBER | nvarchar(20) | IN | Reference number |
@CARDHOLDERNAME | nvarchar(255) | IN | Name on card |
@CREDITCARDNUMBER | nvarchar(20) | IN | Card number |
@CREDITTYPECODEID | uniqueidentifier | IN | Card type |
@AUTHORIZATIONCODE | nvarchar(20) | IN | Authorization code |
@EXPIRESON | UDT_FUZZYDATE | IN | Expires on |
@ISSUER | nvarchar(100) | IN | Issuer |
@NUMBEROFUNITS | decimal(20, 3) | IN | Stock number of units |
@SYMBOL | nvarchar(25) | IN | Symbol |
@MEDIANPRICE | decimal(19, 4) | IN | Median price |
@PROPERTYSUBTYPECODEID | uniqueidentifier | IN | Property subtype |
@GIFTINKINDSUBTYPECODEID | uniqueidentifier | IN | Gift-in-kind subtype |
@RECEIPTAMOUNT | money | IN | Receipt amount |
@DONOTRECEIPT | bit | IN | Do not receipt |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | Account |
@SPLITS | xml | IN | Designations |
@SINGLEDESIGNATIONID | uniqueidentifier | IN | Designation |
@REVENUESTREAMS | xml | IN | Revenue streams |
@APPLYTOSHOWNFORCONSTITUENTID | uniqueidentifier | IN | Apply to shown for constituent |
@SEQUENCE | int | IN | Sequence |
@INSTALLMENTFREQUENCYCODE | tinyint | IN | Installment frequency |
@INSTALLMENTSTARTDATE | datetime | IN | Installment start date |
@INSTALLMENTENDDATE | datetime | IN | Installment end date |
@NUMBEROFINSTALLMENTS | int | IN | No. installments |
@SOLICITORS | xml | IN | Solicitors |
@BENEFITS | xml | IN | Money benefits |
@FINDERNUMBER | bigint | IN | Finder number |
@SOURCECODE | nvarchar(60) | IN | Source code |
@APPEALID | uniqueidentifier | IN | Appeal |
@FINDERNUMBERISVALID | bit | IN | Finder number is valid |
@USERMODIFIEDBENEFITS | bit | IN | User modified benefits |
@BENEFITSWAIVED | bit | IN | User waived benefits |
@POSTDATE | datetime | IN | GL post date |
@POSTSTATUSCODE | tinyint | IN | GL post status |
@SENDPLEDGEREMINDER | bit | IN | Send reminders |
@SALEDATE | datetime | IN | Sale date |
@SALEAMOUNT | money | IN | Sale amount |
@BROKERFEE | money | IN | Sale fees |
@SALEPOSTSTATUSCODE | tinyint | IN | Sale GL post status |
@SALEPOSTDATE | datetime | IN | Sale GL post date |
@NOTETITLE | nvarchar(50) | IN | Note Title |
@NOTEAUTHORID | uniqueidentifier | IN | Note Author |
@NOTEDATEENTERED | datetime | IN | Note Date |
@NOTETYPECODEID | uniqueidentifier | IN | Note Type |
@NOTETEXTNOTE | nvarchar(max) | IN | Notes |
@GIVENANONYMOUSLY | bit | IN | Given anonymously |
@GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID | uniqueidentifier | IN | Given anonymously defaulted for constituent |
@USERMODIFIEDRECEIPTAMOUNT | bit | IN | User modified receipt amount |
@PLEDGESUBTYPEID | uniqueidentifier | IN | Pledge subtype |
@REJECTIONCODEID | uniqueidentifier | IN | Rejection code |
@CONSTITUENTLOOKUPID | uniqueidentifier | IN | Lookup ID |
@MAILINGID | uniqueidentifier | IN | Effort |
@CHANNELCODEID | uniqueidentifier | IN | Inbound channel |
@INSTALLMENTS | xml | IN | Installments |
@PAYMENTFORPLEDGEAMOUNT | money | IN | Payment for pledge amount |
@RECOGNITIONS | xml | IN | Recognition credits |
@DIDRECOGNITIONSDEFAULT | bit | IN | Did default recognition credits |
@TRIBUTES | xml | IN | Tributes |
@UNAPPLIEDMATCHINGGIFTSPLITS | xml | IN | Unapplied MG Split |
@UNAPPLIEDMATCHINGGIFTAMOUNT | money | IN | Applied |
@RECEIPTTYPECODE | tinyint | IN | Receipt type |
@NEWCONSTITUENT | xml | IN | New constituent |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | Other method |
@LETTERCODEID | uniqueidentifier | IN | Letter |
@ACKNOWLEDGEDATE | datetime | IN | Acknowledge date |
@REFERENCE | nvarchar(255) | IN | Reference |
@CATEGORYCODEID | uniqueidentifier | IN | Revenue category |
@ACKNOWLEDGEEID | uniqueidentifier | IN | Acknowledgee |
@APPLICATIONINFO | nvarchar(60) | IN | Application |
@OTHERTYPECODEID | uniqueidentifier | IN | Other type |
@OPPORTUNITYID | uniqueidentifier | IN | Opportunity |
@DIRECTDEBITRESULTCODE | nvarchar(10) | IN | Result code |
@LOWPRICE | decimal(19, 4) | IN | Low price |
@HIGHPRICE | decimal(19, 4) | IN | High price |
@NUMBEROFUNITSSOLD | decimal(20, 3) | IN | Stock sale number of units |
@USERMODIFIEDNUMBEROFUNITSSOLD | bit | IN | User modified stock number of units sold |
@CREDITCARDTOKEN | uniqueidentifier | IN | Credit card token |
@REJECTIONMESSAGE | nvarchar(250) | IN | Rejection message |
@PARTIALCREDITCARDNUMBER | nvarchar(4) | IN | Partial card number |
@STANDINGORDERCONSTITUENTACCOUNTID | uniqueidentifier | IN | Standing order account |
@STANDINGORDERREFERENCEDATE | UDT_FUZZYDATE | IN | Standing order reference date |
@STANDINGORDERREFERENCENUMBER | nvarchar(20) | IN | Standing order reference number |
@STANDINGORDERSETUP | bit | IN | Standing order has been setup |
@STANDINGORDERSETUPDATE | datetime | IN | Standing order setup date |
@TAXDECLARATIONS | xml | IN | Declarations |
@TRANSACTIONID | uniqueidentifier | IN | Transaction ID |
@ISTRANSIENTCARD | bit | IN | Is transient credit card |
@DECLINESGIFTAID | bit | IN | Declines Gift Aid |
@DDISOURCECODEID | uniqueidentifier | IN | DDI source |
@DDISOURCEDATE | date | IN | DDI source date |
@ISCOVENANT | bit | IN | Is covenant gift |
@AMOUNTFORVAT | money | IN | Portion subject to VAT |
@VATTAXRATEID | uniqueidentifier | IN | VAT tax rate |
@VATAMOUNT | money | IN | VAT amount |
@ADDITIONALAPPLICATIONSSTREAM | xml | IN | Additional applications stream |
@REVENUELOOKUPID | nvarchar(100) | IN | Revenue ID |
@APPLICATIONSOLICITORS | xml | IN | Application solicitors |
@APPLICATIONRECOGNITIONS | xml | IN | Application recognitions |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@MATCHINGGIFTS | xml | IN | Matching gifts |
@MGGENERATED | bit | IN | MG Generated |
@MGALTERED | bit | IN | MG Altered |
@PAYINGPENDINGREVENUEID | uniqueidentifier | IN | Was paying pending revenue |
@GIFTINKINDITEMNAME | nvarchar(100) | IN | Item name |
@GIFTINKINDDISPOSITIONCODE | tinyint | IN | Disposition |
@GIFTINKINDNUMBEROFUNITS | int | IN | Gift-in-kind number of units |
@GIFTINKINDFAIRMARKETVALUE | money | IN | Fair market value per unit |
@DIRECTDEBITISREJECTED | bit | IN | Direct debit is rejected |
@PERCENTAGEBENEFITS | xml | IN | Percent benefits |
@ISGIFTAIDSPONSORSHIP | bit | IN | Gift Aid sponsorship |
@LOCKBOXID | uniqueidentifier | IN | Lockbox |
@LOCKBOXBATCHNUMBER | nvarchar(100) | IN | Lockbox batch number |
@LOCKBOXBATCHSEQUENCE | int | IN | Lockbox batch sequence |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | Account system |
@ISADJUSTMENT | bit | IN | ISADJUSTMENT |
@ADJUSTMENTDATE | datetime | IN | Adjustment date |
@ADJUSTMENTPOSTDATE | datetime | IN | Adjustment post date |
@ADJUSTMENTREASON | nvarchar(300) | IN | Adjustment details |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | Adjustment reason |
@ADJUSTMENTPOSTSTATUSCODE | tinyint | IN | Adjustment post status |
@REVENUEDEVELOPMENTFUNCTIONCODEID | uniqueidentifier | IN | Revenue function |
@ORIGINALAPPLICATIONINFO | nvarchar(60) | IN | ORIGINALAPPLICATIONINFO |
@RELOADRECOGNITION | bit | IN | Reload recognition credit |
@RELOADSOLICITORS | bit | IN | Reload solicitors |
@LETTERS | xml | IN | Letters |
@APPLICATIONBUSINESSUNITS | xml | IN | Application business units |
@NOTES | xml | IN | Notes |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | Transaction currency |
@BASECURRENCYID | uniqueidentifier | IN | Base currency |
@BASEEXCHANGERATEID | uniqueidentifier | IN | Base exchange rate |
@EXCHANGERATE | decimal(20, 8) | IN | Exchange rate |
@GENERATEREFERENCENUMBER | bit | IN | Automatically generate reference number |
@UPDATEMATCHINGGIFTCLAIMS | tinyint | IN | Update matching gift claims |
@UPDATEGIFTFEES | bit | IN | Update gift fees |
@UPDATETRIBUTES | bit | IN | Update tributes |
@INSTALLMENTSCHEDULESEEDDATE | datetime | IN | Installment next transaction |
@APPLYBYPERCENT | bit | IN | Apply by |
@ADJPAYMENT_DATE | datetime | IN | |
@ADJPAYMENT_POSTDATE | datetime | IN | |
@ADJPAYMENT_REASONCODEID | uniqueidentifier | IN | |
@ADJPAYMENT_DETAILS | nvarchar(255) | IN | |
@SALE_LOWPRICE | decimal(19, 4) | IN | |
@SALE_MEDIANPRICE | decimal(19, 4) | IN | |
@SALE_HIGHPRICE | decimal(19, 4) | IN | |
@VENDORID | nvarchar(50) | IN | |
@INSTALLMENTAMOUNT | money | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_REVENUEUPDATEBATCHROW
(
@ID uniqueidentifier = null output,
@REVENUEID uniqueidentifier,
@REVENUESPLITID uniqueidentifier = null,
@BATCHID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CONSTITUENTID uniqueidentifier = null,
@TYPECODE tinyint,
@DATE datetime,
@AMOUNT money,
@PAYMENTMETHODCODE tinyint = 0,
@DONOTACKNOWLEDGE bit = 0,
@CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
@CHECKNUMBER nvarchar(20) = '',
@REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
@REFERENCENUMBER nvarchar(20) = '',
@CARDHOLDERNAME nvarchar(255) = '',
@CREDITCARDNUMBER nvarchar(20) = '',
@CREDITTYPECODEID uniqueidentifier = null,
@AUTHORIZATIONCODE nvarchar(20) = '',
@EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
@ISSUER nvarchar(100) = '',
@NUMBEROFUNITS decimal(20,3) = 0,
@SYMBOL nvarchar(25) = '',
@MEDIANPRICE decimal(19,4) = 0,
@PROPERTYSUBTYPECODEID uniqueidentifier = null,
@GIFTINKINDSUBTYPECODEID uniqueidentifier = null,
@RECEIPTAMOUNT money = 0,
@DONOTRECEIPT bit = 0,
@CONSTITUENTACCOUNTID uniqueidentifier = null,
@SPLITS xml = null,
@SINGLEDESIGNATIONID uniqueidentifier = null,
@REVENUESTREAMS xml = null,
@APPLYTOSHOWNFORCONSTITUENTID uniqueidentifier= null,
@SEQUENCE int,
@INSTALLMENTFREQUENCYCODE tinyint = 5,
@INSTALLMENTSTARTDATE datetime = null,
@INSTALLMENTENDDATE datetime = null,
@NUMBEROFINSTALLMENTS int = 1,
--Solicitors field is no longer in use (APPLICATIONSOLICITORS is current)
@SOLICITORS xml = null,
@BENEFITS xml = null,
@FINDERNUMBER bigint = null,
@SOURCECODE nvarchar(60) = '',
@APPEALID uniqueidentifier = null,
@FINDERNUMBERISVALID bit = 0,
@USERMODIFIEDBENEFITS bit = 0,
@BENEFITSWAIVED bit = 0,
@POSTDATE datetime = null,
@POSTSTATUSCODE tinyint = 1,
@SENDPLEDGEREMINDER bit = 1,
@SALEDATE datetime = null,
@SALEAMOUNT money = 0,
@BROKERFEE money = 0,
@SALEPOSTSTATUSCODE tinyint = 1,
@SALEPOSTDATE datetime = null,
@NOTETITLE nvarchar(50) = '',
@NOTEAUTHORID uniqueidentifier = null,
@NOTEDATEENTERED datetime = null,
@NOTETYPECODEID uniqueidentifier = null,
@NOTETEXTNOTE nvarchar(max) = '',
@GIVENANONYMOUSLY bit = 0,
@GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID uniqueidentifier = null,
@USERMODIFIEDRECEIPTAMOUNT bit = 0,
@PLEDGESUBTYPEID uniqueidentifier = null,
@REJECTIONCODEID uniqueidentifier = null,
@CONSTITUENTLOOKUPID uniqueidentifier = null,
@MAILINGID uniqueidentifier = null,
@CHANNELCODEID uniqueidentifier = null,
@INSTALLMENTS xml = null,
@PAYMENTFORPLEDGEAMOUNT money = 0,
--Recognitions field is no longer in use (APPLICATIONRECOGNITIONS is current)
@RECOGNITIONS xml = null,
@DIDRECOGNITIONSDEFAULT bit = 0,
@TRIBUTES xml = null,
@UNAPPLIEDMATCHINGGIFTSPLITS xml = null,
@UNAPPLIEDMATCHINGGIFTAMOUNT money = 0,
@RECEIPTTYPECODE tinyint = 0,
@NEWCONSTITUENT xml = null,
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
@LETTERCODEID uniqueidentifier = null,
@ACKNOWLEDGEDATE datetime = null,
@REFERENCE nvarchar(255) = null,
@CATEGORYCODEID uniqueidentifier = null,
@ACKNOWLEDGEEID uniqueidentifier = null,
@APPLICATIONINFO nvarchar(60) = null,
@OTHERTYPECODEID uniqueidentifier = null,
@OPPORTUNITYID uniqueidentifier = null,
@DIRECTDEBITRESULTCODE nvarchar(10) = '',
@LOWPRICE decimal(19,4) = 0,
@HIGHPRICE decimal(19,4) = 0,
@NUMBEROFUNITSSOLD decimal(20,3) = 0,
@USERMODIFIEDNUMBEROFUNITSSOLD bit = 0,
@CREDITCARDTOKEN uniqueidentifier = null,
@REJECTIONMESSAGE nvarchar(250) = '',
@PARTIALCREDITCARDNUMBER nvarchar(4) = '',
@STANDINGORDERCONSTITUENTACCOUNTID uniqueidentifier = null,
@STANDINGORDERREFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
@STANDINGORDERREFERENCENUMBER nvarchar(20) = '',
@STANDINGORDERSETUP bit = 0,
@STANDINGORDERSETUPDATE datetime = null,
@TAXDECLARATIONS xml = null,
@TRANSACTIONID uniqueidentifier = null,
@ISTRANSIENTCARD bit = null,
@DECLINESGIFTAID bit = null,
@DDISOURCECODEID uniqueidentifier = null,
@DDISOURCEDATE date = null,
@ISCOVENANT bit = null,
@AMOUNTFORVAT money = 0,
@VATTAXRATEID uniqueidentifier = null,
@VATAMOUNT money = 0,
@ADDITIONALAPPLICATIONSSTREAM xml = null,
@REVENUELOOKUPID nvarchar(100) = '',
@APPLICATIONSOLICITORS xml = null,
@APPLICATIONRECOGNITIONS xml = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@MATCHINGGIFTS xml = null,
@MGGENERATED bit = null,
@MGALTERED bit = null,
@PAYINGPENDINGREVENUEID uniqueidentifier = null,
@GIFTINKINDITEMNAME nvarchar(100) = '',
@GIFTINKINDDISPOSITIONCODE tinyint = 0,
@GIFTINKINDNUMBEROFUNITS int = 0,
@GIFTINKINDFAIRMARKETVALUE money = 0,
@DIRECTDEBITISREJECTED bit = 0,
@PERCENTAGEBENEFITS xml = null,
@ISGIFTAIDSPONSORSHIP bit = null,
@LOCKBOXID uniqueidentifier = null,
@LOCKBOXBATCHNUMBER nvarchar(100) = '',
@LOCKBOXBATCHSEQUENCE int = 0,
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@ISADJUSTMENT bit = null,
@ADJUSTMENTDATE datetime = null,
@ADJUSTMENTPOSTDATE datetime = null,
@ADJUSTMENTREASON nvarchar(300) = null,
@ADJUSTMENTREASONCODEID uniqueidentifier = null,
@ADJUSTMENTPOSTSTATUSCODE tinyint = null,
@REVENUEDEVELOPMENTFUNCTIONCODEID uniqueidentifier = null,
@ORIGINALAPPLICATIONINFO nvarchar(60) = null,
@RELOADRECOGNITION bit = 0,
@RELOADSOLICITORS bit = 0,
@LETTERS xml = null,
@APPLICATIONBUSINESSUNITS xml = null,
@NOTES xml = null,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASECURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null,
@EXCHANGERATE decimal(20,8) = null,
@GENERATEREFERENCENUMBER bit = 1,
@UPDATEMATCHINGGIFTCLAIMS tinyint = 0,
@UPDATEGIFTFEES bit = 0,
@UPDATETRIBUTES bit = 0,
@INSTALLMENTSCHEDULESEEDDATE datetime = null,
@APPLYBYPERCENT bit= 0,
@ADJPAYMENT_DATE datetime = null,
@ADJPAYMENT_POSTDATE datetime = null,
@ADJPAYMENT_REASONCODEID uniqueidentifier = null,
@ADJPAYMENT_DETAILS nvarchar(255) = '',
@SALE_LOWPRICE decimal(19,4) = 0,
@SALE_MEDIANPRICE decimal(19,4) = 0,
@SALE_HIGHPRICE decimal(19,4) = 0,
@VENDORID nvarchar(50) = '',
@INSTALLMENTAMOUNT money = 0
)
as
begin
set nocount on;
declare @CURRENTDATE datetime;
if @ID is null
set @ID = NewID();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = GetDate();
begin try
if @TYPECODE = 0 -- payment
begin
if @PAYMENTMETHODCODE = 6 --Gift-in-kind
begin
if @GIFTINKINDITEMNAME is null or @GIFTINKINDITEMNAME = ''
raiserror('BBERR_GIFTINKINDITEMNAMEREQUIRED', 13, 1)
if @GIFTINKINDDISPOSITIONCODE is null
raiserror('BBERR_GIFTINKINDDISPOSITIONCODEREQUIRED', 13, 1)
if @GIFTINKINDNUMBEROFUNITS is null
raiserror('BBERR_GIFTINKINDNUMBEROFUNITSREQUIRED', 13, 1)
if @GIFTINKINDFAIRMARKETVALUE is null
raiserror('BBERR_GIFTINKINDFAIRMARKETVALUEREQUIRED', 13, 1)
if @GIFTINKINDNUMBEROFUNITS < 0
raiserror('BBERR_GIFTINKINDNUMBEROFUNITSNEGATIVE', 13, 1)
if @GIFTINKINDFAIRMARKETVALUE < 0
raiserror('BBERR_GIFTINKINDFAIRMARKETVALUENEGATIVE', 13, 1)
end
end
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
select
@STANDINGORDERREFERENCENUMBER = '',
@GENERATEREFERENCENUMBER = 0
if @GENERATEREFERENCENUMBER = 1
select
@STANDINGORDERREFERENCENUMBER = ''
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 @NUMBEROFUNITSSOLD > 0 and @NUMBEROFUNITS <> @NUMBEROFUNITSSOLD
set @USERMODIFIEDNUMBEROFUNITSSOLD = 1
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 @TYPECODE <> 0
set @LOCKBOXID = null;
if not @LOCKBOXID is null
if (@LOCKBOXBATCHNUMBER is null) or len(@LOCKBOXBATCHNUMBER)=0 or (@LOCKBOXBATCHSEQUENCE is null)
raiserror('BBERR_LOCKBOXFIELDREQUIRED', 13, 1);
if @LOCKBOXBATCHNUMBER is null or @LOCKBOXID is null
set @LOCKBOXBATCHNUMBER = '';
if @LOCKBOXBATCHSEQUENCE is null or @LOCKBOXID is null
set @LOCKBOXBATCHSEQUENCE = 0;
if @ISADJUSTMENT is null
set @ISADJUSTMENT = 0;
if @ADJUSTMENTPOSTSTATUSCODE is null and (@ISADJUSTMENT <> 1 or @TYPECODE <> 0)
set @ADJUSTMENTPOSTSTATUSCODE = 1;
if @ADJPAYMENT_DETAILS is null
set @ADJPAYMENT_DETAILS = '';
declare @DEFAULTRECEIPTAMOUNT money
if @BENEFITSWAIVED = 0
begin
declare @BENEFITAMOUNT money;
select
@BENEFITAMOUNT = coalesce(sum(
case
when BASECURRENCYID <> @TRANSACTIONCURRENCYID
then dbo.UFN_CURRENCY_CONVERT(BASETOTALVALUE, BASEEXCHANGERATEID)
else BASETOTALVALUE
end
), 0)
from
(
select
REVBENEFITSFROMXML.QUANTITY * REVBENEFITSFROMXML.UNITVALUE as BASETOTALVALUE,
BENEFIT.BASECURRENCYID as BASECURRENCYID,
case
when REVBENEFITSFROMXML.BASECURRENCYID <> @TRANSACTIONCURRENCYID
then dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(REVBENEFITSFROMXML.BASECURRENCYID,@TRANSACTIONCURRENCYID, @DATE, 1, null)
else null
end as BASEEXCHANGERATEID
from dbo.UFN_REVENUE_GETBENEFITS_3_FROMITEMLISTXML(@BENEFITS) REVBENEFITSFROMXML
inner join dbo.BENEFIT on REVBENEFITSFROMXML.BENEFITID = BENEFIT.ID
) BENEFITSFROMXML;
select @BENEFITAMOUNT = @BENEFITAMOUNT + coalesce(sum(PERCENTAPPLICABLEAMOUNT * VALUEPERCENT/100), 0)
from dbo.UFN_REVENUEBATCH_GETBENEFITSPCT_FROMITEMLISTXML(@PERCENTAGEBENEFITS);
set @DEFAULTRECEIPTAMOUNT = @AMOUNT - @BENEFITAMOUNT;
end
else
set @DEFAULTRECEIPTAMOUNT = @AMOUNT
select @INSTALLMENTAMOUNT = PLEDGEINSTALLMENTOPTION.INSTALLMENTAMOUNT
from dbo.FINANCIALTRANSACTION
left outer join dbo.PLEDGEINSTALLMENTOPTION on FINANCIALTRANSACTION.ID = PLEDGEINSTALLMENTOPTION.ID
where FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null;
-- Check if the user has modified the receipt amount
if @RECEIPTAMOUNT > 0 and @RECEIPTAMOUNT <> @DEFAULTRECEIPTAMOUNT
set @USERMODIFIEDRECEIPTAMOUNT = 1
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 @GIVENANONYMOUSLY is null
set @GIVENANONYMOUSLY = 0;
if @USERMODIFIEDRECEIPTAMOUNT is null
set @USERMODIFIEDRECEIPTAMOUNT = 0;
if @DIDRECOGNITIONSDEFAULT is null
set @DIDRECOGNITIONSDEFAULT = 0;
if @REFERENCE is null
set @REFERENCE = '';
if @AMOUNTFORVAT is null
set @AMOUNTFORVAT = 0;
if @VATAMOUNT is null
set @VATAMOUNT = 0;
if @DIRECTDEBITISREJECTED is null
set @DIRECTDEBITISREJECTED = 0;
if @GIFTINKINDITEMNAME is null
set @GIFTINKINDITEMNAME = '';
if @GIFTINKINDDISPOSITIONCODE is null
set @GIFTINKINDDISPOSITIONCODE = 0;
if @GIFTINKINDNUMBEROFUNITS is null
set @GIFTINKINDNUMBEROFUNITS = 0;
if @GIFTINKINDFAIRMARKETVALUE is null
set @GIFTINKINDFAIRMARKETVALUE = 0;
--if @AMOUNT < 0
-- raiserror('The amount cannot be negative.', 13, 1)
if @FINDERNUMBER is null
set @FINDERNUMBER = 0;
/* JamesWill CR267402-021907 INSTALLMENTFREQUENCYCODE cannot be null in the database, but it can be null in the defaults */
if @INSTALLMENTFREQUENCYCODE is null or @INSTALLMENTFREQUENCYCODE = 5
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 @MGGENERATED is null
set @MGGENERATED = 0;
if @MGALTERED is null
set @MGALTERED = 0;
if cast(@SPLITS as nvarchar(max)) = ''
begin
set @SPLITS = null;
end
else
begin
if not exists (select 1 from @SPLITS.nodes('/SPLITS/ITEM') T(c))
set @SPLITS = null;
end
if not @SPLITS is null
set @SINGLEDESIGNATIONID = null;
if not @APPLICATIONINFO is null and len(@APPLICATIONINFO) > 3
set @SINGLEDESIGNATIONID = null;
if @TYPECODE = 1 or @TYPECODE = 3 --Pledges and Recurring gifts do not receipt
set @DONOTRECEIPT = 1;
if @PAYMENTMETHODCODE is null
set @PAYMENTMETHODCODE = 255;
if @RECEIPTTYPECODE is null
set @RECEIPTTYPECODE = 255;
if @STANDINGORDERSETUP is null
set @STANDINGORDERSETUP = 0;
if @GENERATEREFERENCENUMBER is null
set @GENERATEREFERENCENUMBER = 1;
if @UPDATETRIBUTES is null
set @UPDATETRIBUTES = 0;
if @CONSTITUENTID is null
select @CONSTITUENTID = @CONSTITUENTLOOKUPID;
if @NEWCONSTITUENT is not null
begin
declare @NEWCONSTITUENTID uniqueidentifier;
if not exists(select ID from dbo.CONSTITUENT where ID = @CONSTITUENTID)
begin
exec USP_REVENUEBATCH_ADDNEWCONSTITUENTFROMXML @NEWCONSTITUENT, @CHANGEAGENTID, @NEWCONSTITUENTID output;
set @CONSTITUENTID = @NEWCONSTITUENTID;
end;
end;
/* Lookup and set all possible marketing data (via output params) from the data that was specified. */
declare @LOOKUPSINGLEDESIGNATION bit = (case when @SINGLEDESIGNATIONID is null and @SPLITS is null and @REVENUESTREAMS is null and @ADDITIONALAPPLICATIONSSTREAM 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;
-- If constituent is still null, try to figure it out based on applications to commitments
-- All underlying commitments must point to the same constituent to get a result
if @CONSTITUENTID is null
begin
select @CONSTITUENTID = dbo.UFN_REVENUEBATCH_GETCONSTITUENTIDFROMAPPLICATIONS(@REVENUESTREAMS)
end
-- Use the partial card number if set. This field is used for import or when using the payment method of Credit card - last 4 digits
-- and doesn't have any CC processing code run for it.
if coalesce(@PARTIALCREDITCARDNUMBER, '') <> ''
set @CREDITCARDNUMBER = @PARTIALCREDITCARDNUMBER
-- Validate that if one credit card field is entered, the required fields are set.
-- Server code should generally have validated this already unless the code is being
-- added through import.
if @PAYMENTMETHODCODE = 2
begin
if len(coalesce(@CREDITCARDNUMBER, '')) > 4
begin
if coalesce(@CARDHOLDERNAME, '') = ''
raiserror('BBERR_CARDHOLDERFIELDSREQUIRED', 13, 1)
if coalesce(@EXPIRESON, '00000000') = '00000000'
raiserror('BBERR_EXPIRESONFIELDSREQUIRED', 13, 1)
end
end
declare @CREDITCARDID uniqueidentifier
if @PAYMENTMETHODCODE = 2
begin try
exec dbo.USP_CREDITCARD_SAVE
@ID = @CREDITCARDID output,
@CREDITCARDTOKEN = @CREDITCARDTOKEN,
@CARDHOLDERNAME = @CARDHOLDERNAME,
@CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER,
@CREDITTYPECODEID = @CREDITTYPECODEID,
@EXPIRESON = @EXPIRESON,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CURRENTDATE,
@ISTRANSIENT = @ISTRANSIENTCARD;
end try
begin catch
if (@CREDITCARDTOKEN is null or len(coalesce(@CREDITCARDNUMBER, '')) < 4)
raiserror('BBERR_CREDITCARDFIELDSREQUIRED', 13, 1);
if coalesce(@EXPIRESON, '00000000') = '00000000'
raiserror('BBERR_EXPIRESONFIELDSREQUIRED', 13, 1);
if len(coalesce(@CARDHOLDERNAME, '')) = 0
raiserror('BBERR_CARDHOLDERFIELDSREQUIRED', 13, 1);
end catch
-- Don't save an account system for a recurring gift
if @PDACCOUNTSYSTEMID is null and @TYPECODE <> 3
set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)
-- Get base currency from account system's currency set, if available; from user's default set otherwise.
if @BASECURRENCYID is null
begin
declare @CURRENCYSETID uniqueidentifier
select @CURRENCYSETID = CURRENCYSETID
from dbo.PDACCOUNTSYSTEM
where ID = @PDACCOUNTSYSTEMID
select
@BASECURRENCYID = CURRENCYSET.BASECURRENCYID
from
dbo.CURRENCYSET
where
CURRENCYSET.ID = coalesce(@CURRENCYSETID,dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID))
end
if @EXCHANGERATE is null
set @EXCHANGERATE = 0;
--If item is adjustable set ADJUSTMENTPOSTSTATUSCODE AND ADJUSTMENTREASONCODEID to required
if @ISADJUSTMENT = 1
begin
if @ADJUSTMENTDATE is null
raiserror('BBERR_ADJUSTMENTDATEREQUIRED', 13, 1);
if @ADJUSTMENTPOSTDATE is null and @ADJUSTMENTPOSTSTATUSCODE <> 2
raiserror('BBERR_ADJUSTMENTPOSTDATEREQUIRED', 13, 1);
if @ADJUSTMENTREASONCODEID is null
raiserror('BBERR_ADJUSTMENTREASONCODEIDREQUIRED', 13, 1);
if @ADJUSTMENTPOSTSTATUSCODE is null and @TYPECODE = 0
raiserror('BBERR_ADJUSTMENTPOSTSTATUSCODEREQUIRED', 13, 1);
end
-- if this is a single split payment and the user changes it
declare @REVENUESPLITID1 uniqueidentifier;
set @REVENUESPLITID1 = @REVENUESPLITID
declare @APPLICATIONINFO1 nvarchar(60);
if not @ORIGINALAPPLICATIONINFO is null
begin
if len(@APPLICATIONINFO) > 3
begin
set @APPLICATIONINFO1 = substring(@APPLICATIONINFO, 1, 36)
end
else
begin
set @APPLICATIONINFO1 = @APPLICATIONINFO
end
if @APPLICATIONINFO1 <> @ORIGINALAPPLICATIONINFO
set @REVENUESPLITID = null
end
if @UPDATEMATCHINGGIFTCLAIMS is null
set @UPDATEMATCHINGGIFTCLAIMS = 0;
--Clear the credit card fields before inserting them into the batch table if the payment method is credit card (2)
--They are saved above in that scenario and they only need to be saved to the BATCHREVENUE table if the payment method is 98 - Credit card - last 4 digits only
if @PAYMENTMETHODCODE = 2
begin
set @CARDHOLDERNAME = '';
set @CREDITTYPECODEID = null;
set @CREDITCARDNUMBER = '';
set @EXPIRESON = '00000000';
end
insert into dbo.BATCHREVENUE
(
ID,BATCHID, REVENUEID, REVENUESPLITID, CONSTITUENTID,DATE,PAYMENTMETHODCODE,DONOTACKNOWLEDGE,CHECKDATE,CHECKNUMBER,REFERENCEDATE,REFERENCENUMBER,
CREDITCARDID, AUTHORIZATIONCODE, CONSTITUENTACCOUNTID, AMOUNT, TYPECODE, RECEIPTAMOUNT,
DONOTRECEIPT, SEQUENCE, APPLYTOSHOWNFORCONSTITUENTID, INSTALLMENTFREQUENCYCODE, INSTALLMENTSTARTDATE,
INSTALLMENTENDDATE, NUMBEROFINSTALLMENTS, FINDERNUMBER, SOURCECODE, APPEALID, FINDERNUMBERISVALID,
USERMODIFIEDBENEFITS, BENEFITSWAIVED, POSTDATE, POSTSTATUSCODE, PROPERTYSUBTYPECODEID, GIFTINKINDSUBTYPECODEID,
SENDPLEDGEREMINDER, SALEDATE, SALEAMOUNT, BROKERFEE, SALEPOSTSTATUSCODE, SALEPOSTDATE, ISSUER, NUMBEROFUNITS,
SYMBOL, MEDIANPRICE, NOTETITLE, NOTEAUTHORID, NOTEDATEENTERED, NOTETYPECODEID, NOTETEXTNOTE,
GIVENANONYMOUSLY, GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID, USERMODIFIEDRECEIPTAMOUNT, PLEDGESUBTYPEID,
REJECTIONMESSAGE, MAILINGID, CHANNELCODEID, PAYMENTFORPLEDGEAMOUNT, RECEIPTTYPECODE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,OTHERPAYMENTMETHODCODEID, LETTERCODEID, ACKNOWLEDGEDATE, REFERENCE,
GLREVENUECATEGORYMAPPINGID, ACKNOWLEDGEEID, OTHERTYPECODEID,OPPORTUNITYID, DIRECTDEBITRESULTCODE, LOWPRICE, HIGHPRICE, NUMBEROFUNITSSOLD,
USERMODIFIEDNUMBEROFUNITSSOLD, STANDINGORDERSETUP, STANDINGORDERSETUPDATE, TRANSACTIONID, DECLINESGIFTAID, DDISOURCECODEID, DDISOURCEDATE, ISCOVENANT,
AMOUNTFORVAT, VATTAXRATEID, VATAMOUNT, APPLICATIONINFO, REVENUELOOKUPID, MGGENERATED, MGALTERED, PAYINGPENDINGREVENUEID,
GIFTINKINDITEMNAME, GIFTINKINDDISPOSITIONCODE, GIFTINKINDNUMBEROFUNITS, GIFTINKINDFAIRMARKETVALUE, DIRECTDEBITISREJECTED, ISGIFTAIDSPONSORSHIP,
LOCKBOXID, LOCKBOXBATCHNUMBER, LOCKBOXBATCHSEQUENCE, PDACCOUNTSYSTEMID, ISADJUSTMENT, ADJUSTMENTDATE, ADJUSTMENTPOSTDATE, ADJUSTMENTREASON, ADJUSTMENTREASONCODEID, ADJUSTMENTPOSTSTATUSCODE,
REVENUEDEVELOPMENTFUNCTIONCODEID, ORIGINALAPPLICATIONINFO, RELOADRECOGNITION, RELOADSOLICITORS, BASECURRENCYID, TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID, EXCHANGERATE, USESYSTEMGENERATEDREFERENCENUMBER, UPDATEMATCHINGGIFTCLAIMSCODE, UPDATEGIFTFEES, UPDATETRIBUTES, INSTALLMENTSCHEDULESEEDDATE,APPLYBYPERCENT,
ADJPAYMENT_DATE, ADJPAYMENT_POSTDATE, ADJPAYMENT_REASONCODEID, ADJPAYMENT_DETAILS, SALE_LOWPRICE, SALE_MEDIANPRICE, SALE_HIGHPRICE, VENDORID, INSTALLMENTAMOUNT,
CARDHOLDERNAME, CREDITTYPECODEID, CREDITCARDPARTIALNUMBER, EXPIRESON, STANDINGORDERREFERENCENUMBER
)
values
(
@ID,@BATCHID, @REVENUEID, @REVENUESPLITID, @CONSTITUENTID,@DATE,@PAYMENTMETHODCODE,@DONOTACKNOWLEDGE,@CHECKDATE,@CHECKNUMBER,@REFERENCEDATE,@REFERENCENUMBER,
@CREDITCARDID, @AUTHORIZATIONCODE, @CONSTITUENTACCOUNTID, @AMOUNT, @TYPECODE, @RECEIPTAMOUNT,
@DONOTRECEIPT,@SEQUENCE,@APPLYTOSHOWNFORCONSTITUENTID, @INSTALLMENTFREQUENCYCODE, @INSTALLMENTSTARTDATE,
@INSTALLMENTENDDATE, @NUMBEROFINSTALLMENTS, @FINDERNUMBER, @SOURCECODE, @APPEALID, @FINDERNUMBERISVALID,
@USERMODIFIEDBENEFITS, @BENEFITSWAIVED, @POSTDATE, @POSTSTATUSCODE, @PROPERTYSUBTYPECODEID, @GIFTINKINDSUBTYPECODEID,
@SENDPLEDGEREMINDER, @SALEDATE, @SALEAMOUNT, @BROKERFEE, @SALEPOSTSTATUSCODE, @SALEPOSTDATE, @ISSUER, @NUMBEROFUNITS,
@SYMBOL, @MEDIANPRICE, @NOTETITLE, @NOTEAUTHORID, @NOTEDATEENTERED, @NOTETYPECODEID, @NOTETEXTNOTE,
@GIVENANONYMOUSLY, @GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID, @USERMODIFIEDRECEIPTAMOUNT, @PLEDGESUBTYPEID,
@REJECTIONMESSAGE, @MAILINGID, @CHANNELCODEID, @PAYMENTFORPLEDGEAMOUNT, @RECEIPTTYPECODE,
@CHANGEAGENTID, @CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,@OTHERPAYMENTMETHODCODEID,@LETTERCODEID,@ACKNOWLEDGEDATE,@REFERENCE,
@CATEGORYCODEID, @ACKNOWLEDGEEID, @OTHERTYPECODEID, @OPPORTUNITYID, @DIRECTDEBITRESULTCODE, @LOWPRICE, @HIGHPRICE, @NUMBEROFUNITSSOLD,
@USERMODIFIEDNUMBEROFUNITSSOLD, @STANDINGORDERSETUP, @STANDINGORDERSETUPDATE, @TRANSACTIONID, coalesce(@DECLINESGIFTAID, 0), @DDISOURCECODEID, @DDISOURCEDATE,
@ISCOVENANT, @AMOUNTFORVAT, @VATTAXRATEID, @VATAMOUNT, @APPLICATIONINFO, coalesce(rtrim(ltrim(@REVENUELOOKUPID)),''), @MGGENERATED, @MGALTERED, @PAYINGPENDINGREVENUEID,
@GIFTINKINDITEMNAME, @GIFTINKINDDISPOSITIONCODE, @GIFTINKINDNUMBEROFUNITS, @GIFTINKINDFAIRMARKETVALUE, coalesce(@DIRECTDEBITISREJECTED,0), coalesce(@ISGIFTAIDSPONSORSHIP, 0),
@LOCKBOXID, @LOCKBOXBATCHNUMBER, @LOCKBOXBATCHSEQUENCE, @PDACCOUNTSYSTEMID, @ISADJUSTMENT, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, @ADJUSTMENTREASONCODEID, @ADJUSTMENTPOSTSTATUSCODE,
@REVENUEDEVELOPMENTFUNCTIONCODEID, @ORIGINALAPPLICATIONINFO, @RELOADRECOGNITION, @RELOADSOLICITORS, @BASECURRENCYID, @TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID, @EXCHANGERATE, @GENERATEREFERENCENUMBER,@UPDATEMATCHINGGIFTCLAIMS, @UPDATEGIFTFEES, @UPDATETRIBUTES, @INSTALLMENTSCHEDULESEEDDATE,@APPLYBYPERCENT,
@ADJPAYMENT_DATE, @ADJPAYMENT_POSTDATE, @ADJPAYMENT_REASONCODEID, @ADJPAYMENT_DETAILS, @SALE_LOWPRICE, @SALE_MEDIANPRICE, @SALE_HIGHPRICE, isnull(@VENDORID, ''), @INSTALLMENTAMOUNT,
@CARDHOLDERNAME, @CREDITTYPECODEID, @CREDITCARDNUMBER, @EXPIRESON, @STANDINGORDERREFERENCENUMBER
);
if @SPLITS is not null
exec dbo.USP_REVENUEBATCH_SPLITSWITHCHILDREN_UPDATEFROMXML @ID, @SPLITS, @DATE, @CHANGEAGENTID, @CURRENTDATE;
if not @ADDITIONALAPPLICATIONSSTREAM is null
exec dbo.USP_REVENUEBATCH_ADDITIONALAPPLICATIONWITHCHILDREN_UPDATEFROMXML @ID, @ADDITIONALAPPLICATIONSSTREAM, @DATE, @CHANGEAGENTID, @CURRENTDATE;
declare @APPLICATIONCODE tinyint;
declare @SINGLEAPPLICATIONID uniqueidentifier;
if @APPLICATIONINFO is not null
if len(@APPLICATIONINFO) > 0
if len(@APPLICATIONINFO) = 3
set @APPLICATIONCODE = cast(substring(@APPLICATIONINFO, 3, 1) as tinyint);
else if len(@APPLICATIONINFO) > 3
set @SINGLEAPPLICATIONID = cast(substring(@APPLICATIONINFO, 1, 36) as uniqueidentifier);
--JamesWilliams If this application was generated by the generate payments process, mark it pending
if @SINGLEAPPLICATIONID is not null and @SINGLEAPPLICATIONID <> '00000000-0000-0000-0000-000000000000' and @SINGLEAPPLICATIONID = @PAYINGPENDINGREVENUEID
update dbo.REVENUESCHEDULE
set REVENUESCHEDULE.ISPENDING = 1,
REVENUESCHEDULE.CHANGEDBYID = @CHANGEAGENTID,
REVENUESCHEDULE.DATECHANGED = @CURRENTDATE
where ID = @PAYINGPENDINGREVENUEID;
declare @ADDITIONALAPPLICATIONCOUNT int;
select @ADDITIONALAPPLICATIONCOUNT = count(*) from @ADDITIONALAPPLICATIONSSTREAM.nodes('/ADDITIONALAPPLICATIONSSTREAM/ITEM') T(c)
declare @SPLITCOUNT int;
select @SPLITCOUNT = count(*) from @SPLITS.nodes('/SPLITS/ITEM') T(c)
declare @REVENUESTREAMSCOUNT int;
select @REVENUESTREAMSCOUNT = count(*) from @REVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') T(c)
--Default additional application recognition credits if they were not specified
-- Note that additional applications are in the transaction currency of the row.
if @APPLICATIONRECOGNITIONS is null and @ADDITIONALAPPLICATIONCOUNT > 0
begin
declare @TEMPAPPLICATIONRECOGNITIONS table
(
APPLICATIONID uniqueidentifier,
APPLICATIONTYPECODE tinyint,
ADDITIONALAPPLICATIONTYPECODE tinyint,
ADDITIONALAPPLICATIONDESIGNATIONID uniqueidentifier,
APPLICATIONAMOUNT money,
RECOGNITIONS xml,
ADDITIONALAPPLICATIONDECLINESGIFTAID bit,
ADDITIONALAPPLICATIONSPONSORSHIPID uniqueidentifier
);
declare @TEMPADDITIONALAPPLICATIONS table
(
ID uniqueidentifier,
TYPECODE tinyint,
DESIGNATIONID uniqueidentifier,
APPLIED money,
DECLINESGIFTAID bit,
SPONSORSHIPID uniqueidentifier
)
insert into @TEMPADDITIONALAPPLICATIONS(ID,TYPECODE,DESIGNATIONID,APPLIED,DECLINESGIFTAID,SPONSORSHIPID)
select
T.c.value('(ID)[1]', 'uniqueidentifier') ID,
T.c.value('(TYPECODE)[1]','tinyint') TYPECODE,
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID,
T.c.value('(APPLIED)[1]','money') APPLIED,
T.c.value('(DECLINESGIFTAID)[1]','bit') DECLINESGIFTAID,
coalesce(T.c.value('(SPONSORSHIPID)[1]','uniqueidentifier'),T.c.value('(REVENUESPLITID)[1]','uniqueidentifier'))SPONSORSHIPID
from @ADDITIONALAPPLICATIONSSTREAM.nodes('/ADDITIONALAPPLICATIONSSTREAM/ITEM') T(c)
declare @RECOGNITIONSDEFAULT_APPLICATIONID uniqueidentifier
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE tinyint
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID uniqueidentifier
declare @RECOGNITIONSDEFAULT_APPLICATIONAMOUNT money
declare @RECOGNITIONSDEFAULT_APPLICATIONDESCRIPTION nvarchar
declare @RECOGNITIONSDEFAULT_COLLECTIONDESCRIPTION nvarchar
declare @RECOGNITIONSDEFAULT_RECOGNITIONS xml
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID bit
declare @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID uniqueidentifier
declare @TEMPRECOGNITIONS xml;
declare ADDITIONALAPPLICATIONS_CURSOR cursor local fast_forward for
select ID, TYPECODE, DESIGNATIONID, APPLIED, DECLINESGIFTAID,SPONSORSHIPID from @TEMPADDITIONALAPPLICATIONS
open ADDITIONALAPPLICATIONS_CURSOR;
fetch next from ADDITIONALAPPLICATIONS_CURSOR into @RECOGNITIONSDEFAULT_APPLICATIONID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID,
@RECOGNITIONSDEFAULT_APPLICATIONAMOUNT,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID;
while @@FETCH_STATUS = 0
begin
select @TEMPRECOGNITIONS =
(
select CONSTITUENTID, REVENUERECOGNITIONTYPECODEID, AMOUNT, @DATE as [EFFECTIVEDATE]
from UFN_REVENUEBATCH_GETRECOGNITIONDEFAULTS(@GIVENANONYMOUSLY, @CONSTITUENTID, @RECOGNITIONSDEFAULT_APPLICATIONAMOUNT, @DATE, null)
for xml raw('ITEM'), type, elements, binary base64
);
insert into @TEMPAPPLICATIONRECOGNITIONS(APPLICATIONID, APPLICATIONTYPECODE, ADDITIONALAPPLICATIONTYPECODE, ADDITIONALAPPLICATIONDESIGNATIONID, APPLICATIONAMOUNT, RECOGNITIONS, ADDITIONALAPPLICATIONDECLINESGIFTAID, ADDITIONALAPPLICATIONSPONSORSHIPID)
values(@RECOGNITIONSDEFAULT_APPLICATIONID, null, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID, @RECOGNITIONSDEFAULT_APPLICATIONAMOUNT, @TEMPRECOGNITIONS, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID, @RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID );
fetch next from ADDITIONALAPPLICATIONS_CURSOR into @RECOGNITIONSDEFAULT_APPLICATIONID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONTYPECODE,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDESIGNATIONID,
@RECOGNITIONSDEFAULT_APPLICATIONAMOUNT,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONDECLINESGIFTAID,
@RECOGNITIONSDEFAULT_ADDITIONALAPPLICATIONSPONSORSHIPID;
end
close ADDITIONALAPPLICATIONS_CURSOR;
deallocate ADDITIONALAPPLICATIONS_CURSOR;
set @APPLICATIONRECOGNITIONS =
(
select APPLICATIONID, APPLICATIONTYPECODE, ADDITIONALAPPLICATIONTYPECODE,
ADDITIONALAPPLICATIONDESIGNATIONID, APPLICATIONAMOUNT, RECOGNITIONS,
ADDITIONALAPPLICATIONDECLINESGIFTAID, ADDITIONALAPPLICATIONSPONSORSHIPID
from @TEMPAPPLICATIONRECOGNITIONS
for xml raw('ITEM'), type, elements, root('APPLICATIONRECOGNITIONS'), binary base64
);
end
-- deal with payment payment application recognitions/solicitors
if @REVENUESTREAMSCOUNT > 0
exec dbo.USP_REVENUEUPDATEBATCH_ADDPAYMENTRECOGNITIONSANDSOLICITORS @ID, @APPLICATIONRECOGNITIONS, @APPLICATIONSOLICITORS, @REVENUESTREAMS, @CHANGEAGENTID, @CURRENTDATE
if @APPLICATIONCODE is not null and @SPLITCOUNT > 1 and @TYPECODE = 0
exec dbo.USP_REVENUEBATCH_ADDRECOGNITIONSANDSOLICITORS @ID, @APPLICATIONRECOGNITIONS, @APPLICATIONSOLICITORS, @SPLITS, @APPLICATIONCODE, NULL, @CHANGEAGENTID, @CURRENTDATE
else if @APPLICATIONCODE is not null and @ADDITIONALAPPLICATIONCOUNT >= 1 and @TYPECODE = 0
exec dbo.USP_REVENUEUPDATEBATCH_ADDRECOGNITIONSANDSOLICITORS @ID, @APPLICATIONRECOGNITIONS, @APPLICATIONSOLICITORS, @ADDITIONALAPPLICATIONSSTREAM, @APPLICATIONCODE, @CHANGEAGENTID, @CURRENTDATE;
else if @APPLICATIONCODE is null and @SINGLEAPPLICATIONID is null and @ADDITIONALAPPLICATIONCOUNT >= 1 and @TYPECODE = 0
exec dbo.USP_REVENUEUPDATEBATCH_ADDRECOGNITIONSANDSOLICITORS @ID, @APPLICATIONRECOGNITIONS, @APPLICATIONSOLICITORS, @ADDITIONALAPPLICATIONSSTREAM, NULL, @CHANGEAGENTID, @CURRENTDATE;
else
exec dbo.USP_REVENUEUPDATEBATCH_ADDRECOGNITIONSANDSOLICITORS @ID, @APPLICATIONRECOGNITIONS, @APPLICATIONSOLICITORS, @SPLITS, 0, @CHANGEAGENTID, @CURRENTDATE;
if not @BENEFITS is null
exec dbo.USP_REVENUEBATCH_GETBENEFITS_ADDFROMXML @ID, @BENEFITS, @CHANGEAGENTID;
if not @PERCENTAGEBENEFITS is null
exec dbo.USP_REVENUEBATCH_GETBENEFITSPCT_ADDFROMXML @ID, @PERCENTAGEBENEFITS, @CHANGEAGENTID;
if not @LETTERS is null
exec dbo.USP_REVENUEUPDATEBATCH_GETLETTERS_ADDFROMXML @ID, @LETTERS, @CHANGEAGENTID;
if not @NOTES is null
exec dbo.USP_REVENUEUPDATEBATCH_GETNOTES_ADDFROMXML @ID, @NOTES, @CHANGEAGENTID;
if @BENEFITS is null and @PERCENTAGEBENEFITS is null and @USERMODIFIEDBENEFITS = 0 and not @APPEALID is null
begin
declare @BENEFITID uniqueidentifier;
declare @QUANTITY int;
declare @BENSEQUENCE int;
declare @UNITVALUE int;
declare @VALUEPERCENT numeric(20, 2);
declare @USEPERCENT bit;
declare @BENEFITCURRENCYID uniqueidentifier;
declare @BENEFITADDED bit = 0;
-- TODO: Rework some of this functionality when APPEALBENEFIT is updated for multicurrency.
declare BENEFITCURSOR cursor local fast_forward for
select
BENEFITDETAILS.[BENEFITID],
BENEFITDETAILS.[QUANTITY],
BENEFITDETAILS.[SEQUENCE],
BENEFITDETAILS.[VALUE],
BENEFITDETAILS.[VALUEPERCENT],
BENEFITDETAILS.[USEPERCENT],
BENEFIT.BASECURRENCYID [BENEFITCURRENCYID]
from dbo.UFN_APPEAL_GETBENEFITDETAILS_ALL_2(@APPEALID, @AMOUNT, @TRANSACTIONCURRENCYID, @BASECURRENCYID) BENEFITDETAILS
left join dbo.BENEFIT on BENEFITDETAILS.BENEFITID = BENEFIT.ID
order by USEPERCENT, SEQUENCE
open BENEFITCURSOR;
fetch next from BENEFITCURSOR into @BENEFITID, @QUANTITY, @BENSEQUENCE, @UNITVALUE, @VALUEPERCENT, @USEPERCENT, @BENEFITCURRENCYID
while (@@FETCH_STATUS = 0)
begin
if @USEPERCENT = 0
begin
insert into [BATCHREVENUEBENEFIT]
(
[BATCHREVENUEID],
[BENEFITID],
[QUANTITY],
[SEQUENCE],
[UNITVALUE],
[BENEFITCURRENCYID],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ID,
@BENEFITID,
@QUANTITY,
@BENSEQUENCE,
@UNITVALUE,
@BENEFITCURRENCYID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
if @BENEFITCURRENCYID <> @TRANSACTIONCURRENCYID
begin
declare @BENEFITEXCHANGERATEID uniqueidentifier;
set @BENEFITEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@BENEFITCURRENCYID,@TRANSACTIONCURRENCYID, @DATE, 1, null)
set @DEFAULTRECEIPTAMOUNT = @DEFAULTRECEIPTAMOUNT - dbo.UFN_CURRENCY_CONVERT(@QUANTITY * @UNITVALUE, @BENEFITEXCHANGERATEID);
end
else
set @DEFAULTRECEIPTAMOUNT = @DEFAULTRECEIPTAMOUNT - (@QUANTITY * @UNITVALUE)
end
else
begin
insert into [BATCHREVENUEBENEFITPCT]
(
[BATCHREVENUEID],
[BENEFITID],
[SEQUENCE],
[VALUEPERCENT],
[PERCENTAPPLICABLEAMOUNT],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ID,
@BENEFITID,
@BENSEQUENCE,
@VALUEPERCENT,
@DEFAULTRECEIPTAMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
set @DEFAULTRECEIPTAMOUNT = @DEFAULTRECEIPTAMOUNT - (@DEFAULTRECEIPTAMOUNT * @VALUEPERCENT/100);
end
set @BENEFITADDED = 1;
fetch next from BENEFITCURSOR into @BENEFITID, @QUANTITY, @SEQUENCE, @UNITVALUE, @VALUEPERCENT, @USEPERCENT, @BENEFITCURRENCYID;
end
close BENEFITCURSOR;
deallocate BENEFITCURSOR;
if @USERMODIFIEDRECEIPTAMOUNT = 0 and @BENEFITADDED = 1
update dbo.BATCHREVENUE
set RECEIPTAMOUNT = @DEFAULTRECEIPTAMOUNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID;
end
if not @INSTALLMENTS is null
begin
-- first loop through and set the ID field if it hasn't been set bug 119652
declare @INSTALLMENTSBEFORETRIM xml = @INSTALLMENTS
set @INSTALLMENTS = (select
case when T.c.value('(ID)[1]','uniqueidentifier') is null or T.c.value('(ID)[1]','uniqueidentifier') = '00000000-0000-0000-0000-000000000000' then newid() else T.c.value('(ID)[1]','uniqueidentifier') end as ID,
T.c.value('(INSTALLMENTID)[1]','uniqueidentifier') AS 'INSTALLMENTID',
T.c.value('(DATE)[1]','datetime') AS 'DATE',
T.c.value('(AMOUNT)[1]','money') AS 'AMOUNT',
T.c.value('(RECEIPTAMOUNT)[1]','money') AS 'RECEIPTAMOUNT',
T.c.value('(BALANCE)[1]','money') AS 'BALANCE',
T.c.value('(APPLIED)[1]','money') AS 'APPLIED',
T.c.value('(SEQUENCE)[1]','int') AS 'SEQUENCE',
(select
ID,
INSTALLMENTSPLITID,
AMOUNT,
APPLIED,
DESIGNATIONID
from dbo.UFN_REVENUEUPDATEBATCH_GETINSTALLMENTSPLITS_FROMITEMLISTXML(T.c.query('(INSTALLMENTSPLITS)[1]'))
for xml raw('ITEM'),type,elements,BINARY BASE64) as 'INSTALLMENTSPLITS'
from @INSTALLMENTS.nodes('/INSTALLMENTS/ITEM') T(c)
for xml raw('ITEM'),type,elements,root('INSTALLMENTS'),binary base64);
exec dbo.USP_REVENUEUPDATEBATCH_GETINSTALLMENTS_ADDFROMXML @ID, @INSTALLMENTS, @CHANGEAGENTID;
--insert into temp_test(test) values(convert(nvarchar(max),@INSTALLMENTS));
declare @BATCHINSTALLMENTID uniqueidentifier;
declare @INSTALLMENTSPLITS xml;
declare INSTALLMENTSPLITS cursor local fast_forward for
select
T.c.value('(ID)[1]','uniqueidentifier') as BATCHINSTALLMENTID,
cast(T.c.query('INSTALLMENTSPLITS') as xml) as INSTALLMENTSPLITS
from @INSTALLMENTS.nodes('/INSTALLMENTS/ITEM') T(c)
open INSTALLMENTSPLITS
fetch next from INSTALLMENTSPLITS into @BATCHINSTALLMENTID, @INSTALLMENTSPLITS
while @@FETCH_STATUS = 0
begin
exec dbo.USP_REVENUEUPDATEBATCH_GETINSTALLMENTSPLITS_ADDFROMXML @BATCHINSTALLMENTID, @INSTALLMENTSPLITS, @CHANGEAGENTID;
fetch next from INSTALLMENTSPLITS into @BATCHINSTALLMENTID, @INSTALLMENTSPLITS
end
close INSTALLMENTSPLITS
deallocate INSTALLMENTSPLITS
insert into dbo.BATCHREVENUEINSTALLMENTSPLITPAYMENT
(
ID,
BATCHREVENUEINSTALLMENTSPLITID,
AMOUNT,
PAYMENTID,
DATEADDED,
DATECHANGED,
ADDEDBYID,
CHANGEDBYID
)
select
isnull(T.c.value('(ID)[1]','uniqueidentifier'), NEWID()),
T.c.value('(../../ID)[1]','uniqueidentifier') as BATCHINSTALLMENTSPLITID,
T.c.value('(AMOUNT)[1]','money') as AMOUNT,
T.c.value('(LINEITEMID)[1]','uniqueidentifier') as PAYMENTID,
@CURRENTDATE,
@CURRENTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID
from
@INSTALLMENTSBEFORETRIM.nodes('/INSTALLMENTS/ITEM/INSTALLMENTSPLITS/ITEM/INSTALLMENTSPLITPAYMENTS/ITEM') T(c)
insert into dbo.BATCHREVENUEINSTALLMENTSPLITWRITEOFF
(
ID,
BATCHREVENUEINSTALLMENTSPLITID,
AMOUNT,
WRITEOFFID,
DATEADDED,
DATECHANGED,
ADDEDBYID,
CHANGEDBYID
)
select
isnull(T.c.value('(ID)[1]','uniqueidentifier'), NEWID()),
T.c.value('(../../ID)[1]','uniqueidentifier') as BATCHINSTALLMENTSPLITID,
T.c.value('(AMOUNT)[1]','money') as AMOUNT,
T.c.value('(TRANSACTIONID)[1]','uniqueidentifier') as WRITEOFFID,
@CURRENTDATE,
@CURRENTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID
from
@INSTALLMENTSBEFORETRIM.nodes('/INSTALLMENTS/ITEM/INSTALLMENTSPLITS/ITEM/INSTALLMENTSPLITWRITEOFFS/ITEM') T(c)
end
if not @UNAPPLIEDMATCHINGGIFTSPLITS is null
exec dbo.USP_REVENUEBATCH_GETUNAPPLIEDMATCHINGGIFTSPLITS_ADDFROMXML @ID, @UNAPPLIEDMATCHINGGIFTSPLITS, @CHANGEAGENTID;
if not @TRIBUTES is null
exec dbo.USP_REVENUEBATCH_GETTRIBUTES_ADDFROMXML @ID, @TRIBUTES, @CHANGEAGENTID;
if not @TAXDECLARATIONS is null
exec dbo.USP_REVENUEBATCH_GETTAXDECLARATIONS_ADDFROMXML @ID, @TAXDECLARATIONS, @CHANGEAGENTID;
if not @REVENUESTREAMS is null
begin
exec dbo.USP_REVENUEBATCH_REVENUEAPPLICATIONS_ADDFROMXML_2 @ID, @REVENUESTREAMS, @CHANGEAGENTID, @CURRENTDATE, @CURRENTAPPUSERID;
/*JamesWill 2006-10-06 Changed update from using an inner join to using a where ID in (select...) */
/*JamesWill 2007-03-02 CR268756-030207 only mark gifts pending if they were automatically generated */
update dbo.REVENUESCHEDULE
set REVENUESCHEDULE.ISPENDING = 1,
REVENUESCHEDULE.CHANGEDBYID = @CHANGEAGENTID,
REVENUESCHEDULE.DATECHANGED = @CURRENTDATE
where ID in (select REVENUEID from dbo.BATCHREVENUEAPPLICATION where BATCHREVENUEID = @ID and APPLIED > 0 and WASGENERATED = 1);
end
exec dbo.USP_REVENUEBATCH_ENHANCEDMATCHINGGIFTSWITHCHILDREN_UPDATEFROMXML @ID, @MATCHINGGIFTS, @CHANGEAGENTID, @CURRENTDATE;
if @APPLICATIONBUSINESSUNITS is not null
exec dbo.USP_REVENUEBATCH_ADDBUSINESSUNITS @ID, @APPLICATIONBUSINESSUNITS, @TYPECODE
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end