USP_DATAFORMTEMPLATE_ADD_REVENUEBATCHROW
The save procedure used by the add dataform template "Revenue Batch Row Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@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 | 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 |
@MGMATCHINGCONSTITUENTID | uniqueidentifier | IN | MG Matching constituent |
@MGDATE | datetime | IN | MG Date |
@MGAMOUNT | money | IN | MG Amount |
@MGPOSTDATE | datetime | IN | MG Post date |
@MGPOSTSTATUSCODE | tinyint | IN | MG Post status |
@MGCONDITIONID | uniqueidentifier | IN | Matching gift condition ID |
@MGSPLITS | xml | IN | MG Splits |
@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 |
@MGRELATIONSHIPID | uniqueidentifier | IN | Relationship |
@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 |
@APPLICATIONCODE | tinyint | 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 | Sale number of units |
@USERMODIFIEDNUMBEROFUNITSSOLD | bit | IN | User modified 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(18) | 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 |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@PERCENTAGEBENEFITS | xml | IN | Percent benefits |
@ISGIFTAIDSPONSORSHIP | bit | IN | Gift Aid sponsorship |
@GENERATEREFERENCENUMBER | bit | IN | Automatically generate reference number |
@SOURCECODEIMPORT | nvarchar(60) | IN | Source code (Import only) |
@MERCHANTACCOUNTID | uniqueidentifier | IN | Merchant account |
@VENDORID | nvarchar(50) | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_REVENUEBATCHROW
(
@ID uniqueidentifier = null output,
@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 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) = '',
@MGMATCHINGCONSTITUENTID uniqueidentifier = null,
@MGDATE datetime = null,
@MGAMOUNT money = 0,
@MGPOSTDATE datetime = null,
@MGPOSTSTATUSCODE tinyint = 1,
@MGCONDITIONID uniqueidentifier = null,
@MGSPLITS xml = null,
@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 xml = null,
@DIDRECOGNITIONSDEFAULT bit = 0,
@TRIBUTES xml = null,
@UNAPPLIEDMATCHINGGIFTSPLITS xml = null,
@UNAPPLIEDMATCHINGGIFTAMOUNT money = 0,
@RECEIPTTYPECODE tinyint = 0,
@NEWCONSTITUENT xml = null,
@MGRELATIONSHIPID uniqueidentifier = null,
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null,
@LETTERCODEID uniqueidentifier = null,
@ACKNOWLEDGEDATE datetime = null,
@REFERENCE nvarchar(255) = null,
@CATEGORYCODEID uniqueidentifier = null,
@ACKNOWLEDGEEID uniqueidentifier = null,
@APPLICATIONCODE tinyint = 0,
@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(18) = '',
@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,
@CURRENTAPPUSERID uniqueidentifier = null,
@PERCENTAGEBENEFITS xml = null,
@ISGIFTAIDSPONSORSHIP bit = null,
@GENERATEREFERENCENUMBER bit = 1,
@SOURCECODEIMPORT nvarchar(60) = '',
@MERCHANTACCOUNTID uniqueidentifier = null,
@VENDORID nvarchar(50) = ''
)
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();
if isnull(@SOURCECODE, '') = ''
set @SOURCECODE = @SOURCECODEIMPORT;
begin try
if @PAYMENTMETHODCODE = 11 --Standing order
begin
set @CONSTITUENTACCOUNTID = @STANDINGORDERCONSTITUENTACCOUNTID;
--if @CONSTITUENTACCOUNTID is null
--begin
--raiserror('Standing order account must be specified for standing order payments', 13, 1)
--end
set @REFERENCEDATE = @STANDINGORDERREFERENCEDATE;
if @GENERATEREFERENCENUMBER is null or @GENERATEREFERENCENUMBER = 1
select
@STANDINGORDERREFERENCENUMBER = '',
@GENERATEREFERENCENUMBER = 1
end
--JamesWill CR269707-031107 2007/03/19 Set default values for any non-nullable fields that might come in as null
if @DONOTACKNOWLEDGE is null
set @DONOTACKNOWLEDGE = 0;
if @CHECKDATE is null
set @CHECKDATE = '00000000';
if @CHECKNUMBER is null
set @CHECKNUMBER = '';
if @REFERENCEDATE is null
set @REFERENCEDATE = '00000000';
if @REFERENCENUMBER is null
set @REFERENCENUMBER = '';
if @CARDHOLDERNAME is null
set @CARDHOLDERNAME = '';
if @CREDITCARDNUMBER is null
set @CREDITCARDNUMBER = '';
if @AUTHORIZATIONCODE is null
set @AUTHORIZATIONCODE = '';
if @EXPIRESON is null
set @EXPIRESON = '00000000';
if @ISSUER is null
set @ISSUER = '';
if @NUMBEROFUNITS is null
set @NUMBEROFUNITS = 0;
if @NUMBEROFUNITSSOLD is null
set @NUMBEROFUNITSSOLD = 0;
if @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;
declare @DEFAULTRECEIPTAMOUNT money
if @BENEFITSWAIVED = 0
begin
declare @BENEFITAMOUNT money;
select @BENEFITAMOUNT = coalesce(sum(QUANTITY * UNITVALUE), 0)
from dbo.UFN_REVENUE_GETBENEFITS_FROMITEMLISTXML(@BENEFITS);
select @BENEFITAMOUNT = @BENEFITAMOUNT + coalesce(sum(PERCENTAPPLICABLEAMOUNT * VALUEPERCENT/100), 0)
from dbo.UFN_REVENUE_GETBENEFITS2_FROMITEMLISTXML(@PERCENTAGEBENEFITS);
set @DEFAULTRECEIPTAMOUNT = @AMOUNT - @BENEFITAMOUNT;
end
else
set @DEFAULTRECEIPTAMOUNT = @AMOUNT
-- 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 @MGAMOUNT is null
set @MGAMOUNT = 0;
if @MGPOSTSTATUSCODE is null
set @MGPOSTSTATUSCODE = 1;
if @GIVENANONYMOUSLY is null
set @GIVENANONYMOUSLY = 0;
if @USERMODIFIEDRECEIPTAMOUNT is null
set @USERMODIFIEDRECEIPTAMOUNT = 0;
if @DIDRECOGNITIONSDEFAULT is null
set @DIDRECOGNITIONSDEFAULT = 0;
if @REFERENCE is null
set @REFERENCE = '';
if @STANDINGORDERREFERENCEDATE is null
set @REFERENCEDATE = '00000000';
if @STANDINGORDERSETUP is null
set @STANDINGORDERSETUP = 0;
if @STANDINGORDERREFERENCENUMBER is null
set @STANDINGORDERREFERENCENUMBER = '';
if @AMOUNTFORVAT is null
set @AMOUNTFORVAT = 0;
if @VATAMOUNT is null
set @VATAMOUNT = 0;
--if @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
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 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 @TYPECODE = 1 or @TYPECODE = 3 --Pledges and Recurring gifts do not receipt
set @DONOTRECEIPT = 1;
if @PAYMENTMETHODCODE is null
set @PAYMENTMETHODCODE = 255;
if @APPLICATIONCODE is null
set @APPLICATIONCODE = 255;
--JamesWill CR275664-052107 2007/05/24 Matching gifts claims are never posted
set @MGPOSTDATE = null;
set @MGPOSTSTATUSCODE = 2;
if @RECEIPTTYPECODE is null
set @RECEIPTTYPECODE = 255
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 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;
-- Use the partial card number if set. This field is used for import
-- 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_CARDHOLDERREQUIRED', 13, 1)
if coalesce(@EXPIRESON, '00000000') = '00000000'
raiserror('BBERR_EXPIRESONREQUIRED', 13, 1)
end
end
declare @CREDITCARDID uniqueidentifier
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,
@ISTRANSIENT = @ISTRANSIENTCARD
end
--Even though Revenue Batch doesn't do multicurrency, we'll set the currency IDs to avoid triggering the trigger that would set them.
declare @ORGANIZATIONCURRENCID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()
insert into dbo.BATCHREVENUE (
ID,BATCHID,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,
MGMATCHINGCONSTITUENTID, MGDATE, MGAMOUNT, MGPOSTDATE, MGPOSTSTATUSCODE, MGCONDITIONID,
GIVENANONYMOUSLY, GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID, USERMODIFIEDRECEIPTAMOUNT, PLEDGESUBTYPEID,
REJECTIONMESSAGE, MAILINGID, CHANNELCODEID, PAYMENTFORPLEDGEAMOUNT, RECEIPTTYPECODE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,MGRELATIONSHIPID,OTHERPAYMENTMETHODCODEID, LETTERCODEID, ACKNOWLEDGEDATE, REFERENCE,
GLREVENUECATEGORYMAPPINGID, ACKNOWLEDGEEID, APPLICATIONCODE, OTHERTYPECODEID,OPPORTUNITYID, DIRECTDEBITRESULTCODE, LOWPRICE, HIGHPRICE, NUMBEROFUNITSSOLD,
USERMODIFIEDNUMBEROFUNITSSOLD, STANDINGORDERSETUP, STANDINGORDERSETUPDATE, TRANSACTIONID, DECLINESGIFTAID, DDISOURCECODEID, DDISOURCEDATE, ISCOVENANT,
AMOUNTFORVAT, VATTAXRATEID, VATAMOUNT, ISGIFTAIDSPONSORSHIP, TRANSACTIONCURRENCYID, BASECURRENCYID,
USESYSTEMGENERATEDREFERENCENUMBER, STANDINGORDERREFERENCENUMBER, MERCHANTACCOUNTID,VENDORID
)
values (
@ID,@BATCHID,@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,
@MGMATCHINGCONSTITUENTID, @MGDATE, @MGAMOUNT, @MGPOSTDATE, @MGPOSTSTATUSCODE, @MGCONDITIONID,
@GIVENANONYMOUSLY, @GIVENANONYMOUSLYDEFAULTEDFORCONSTITUENTID, @USERMODIFIEDRECEIPTAMOUNT, @PLEDGESUBTYPEID,
@REJECTIONMESSAGE, @MAILINGID, @CHANNELCODEID, @PAYMENTFORPLEDGEAMOUNT, @RECEIPTTYPECODE,
@CHANGEAGENTID, @CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,@MGRELATIONSHIPID,@OTHERPAYMENTMETHODCODEID,@LETTERCODEID,@ACKNOWLEDGEDATE,@REFERENCE,
@CATEGORYCODEID, @ACKNOWLEDGEEID, @APPLICATIONCODE, @OTHERTYPECODEID, @OPPORTUNITYID, @DIRECTDEBITRESULTCODE, @LOWPRICE, @HIGHPRICE, @NUMBEROFUNITSSOLD,
@USERMODIFIEDNUMBEROFUNITSSOLD, @STANDINGORDERSETUP, @STANDINGORDERSETUPDATE, @TRANSACTIONID, coalesce(@DECLINESGIFTAID, 0), @DDISOURCECODEID, @DDISOURCEDATE,
coalesce(@ISCOVENANT, 0), @AMOUNTFORVAT, @VATTAXRATEID, @VATAMOUNT, coalesce(@ISGIFTAIDSPONSORSHIP, 0), @ORGANIZATIONCURRENCID,@ORGANIZATIONCURRENCID,
@GENERATEREFERENCENUMBER, @STANDINGORDERREFERENCENUMBER, @MERCHANTACCOUNTID,isnull(@VENDORID, '')
);
-- Create the splits collection with the single designation if the splits collection is null and the designation isn't
if @SPLITS is null and @SINGLEDESIGNATIONID is not null
begin
set @SPLITS = ( select
@SINGLEDESIGNATIONID as DESIGNATIONID,
@AMOUNT as AMOUNT,
1 as SEQUENCE,
@DECLINESGIFTAID as DECLINESGIFTAID,
@ISGIFTAIDSPONSORSHIP as ISGIFTAIDSPONSORSHIP
for xml raw('ITEM'),type,elements,root('SPLITS'),binary base64)
end
if @SPLITS is not null
begin
exec dbo.USP_REVENUEBATCH_SPLITSWITHCHILDREN_UPDATEFROMXML @ID, @SPLITS, @DATE, @CHANGEAGENTID, @CURRENTDATE;
end
if not @RECOGNITIONS is null
exec dbo.USP_REVENUEBATCH_GETRECOGNITIONS_ADDFROMXML @ID, @RECOGNITIONS, @CHANGEAGENTID;
else
if @DIDRECOGNITIONSDEFAULT = 0
begin
-- Create default recognitions
declare @SCAMOUNT money
if @REVENUESTREAMS is null
set @SCAMOUNT = @AMOUNT;
else
set @SCAMOUNT = @AMOUNT - (select SUM(APPLIED) from dbo.UFN_REVENUEBATCH_GETAPPLICATIONS_FROMITEMLISTXML(@REVENUESTREAMS));
if @SCAMOUNT > 0
begin
insert into dbo.BATCHREVENUERECOGNITION
(
BATCHREVENUEID,
CONSTITUENTID,
REVENUERECOGNITIONTYPECODEID,
AMOUNT,
EFFECTIVEDATE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
(
select
@ID,
RECOGNITIONS.CONSTITUENTID,
RECOGNITIONS.REVENUERECOGNITIONTYPECODEID,
RECOGNITIONS.AMOUNT,
@date,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.UFN_REVENUEBATCH_GETRECOGNITIONDEFAULTS(@GIVENANONYMOUSLY, @CONSTITUENTID, @SCAMOUNT, @DATE, null) as RECOGNITIONS
);
end
end
if not @SOLICITORS is null
exec dbo.USP_REVENUEBATCH_GETSOLICITORS_ADDFROMXML @ID, @SOLICITORS, @CHANGEAGENTID;
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 @BENEFITS is null and @PERCENTAGEBENEFITS is null 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 @BENEFITADDED bit = 0;
declare BENEFITCURSOR cursor local fast_forward for
select
[BENEFITID],
[QUANTITY],
[SEQUENCE],
[VALUE],
[VALUEPERCENT],
[USEPERCENT]
from dbo.UFN_APPEAL_GETBENEFITDETAILS_ALL(@APPEALID, @AMOUNT)
order by USEPERCENT, SEQUENCE
open BENEFITCURSOR;
fetch next from BENEFITCURSOR into @BENEFITID, @QUANTITY, @BENSEQUENCE, @UNITVALUE, @VALUEPERCENT, @USEPERCENT
while (@@FETCH_STATUS = 0)
begin
if @USEPERCENT = 0
begin
insert into [BATCHREVENUEBENEFIT]
(
[BATCHREVENUEID],
[BENEFITID],
[QUANTITY],
[SEQUENCE],
[UNITVALUE],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ID,
@BENEFITID,
@QUANTITY,
@BENSEQUENCE,
@UNITVALUE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
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
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
exec dbo.USP_REVENUEBATCH_GETINSTALLMENTS_ADDFROMXML @ID, @INSTALLMENTS, @CHANGEAGENTID;
if not @UNAPPLIEDMATCHINGGIFTSPLITS is null
exec dbo.USP_REVENUEBATCH_GETUNAPPLIEDMATCHINGGIFTSPLITS_ADDFROMXML @ID, @UNAPPLIEDMATCHINGGIFTSPLITS, @CHANGEAGENTID;
if not @MGSPLITS is null
exec dbo.USP_REVENUEBATCH_GETMATCHINGGIFTSPLITS_ADDFROMXML @ID, @MGSPLITS, @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 @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
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end