USP_DATAFORMTEMPLATE_ADD_RECURRINGGIFT
The save procedure used by the add dataform template "Recurring Gift Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@CONSTITUENTID | uniqueidentifier | IN | Constituent |
@DATE | datetime | IN | Date |
@AMOUNT | money | IN | Amount |
@PAYMENTMETHODCODE | tinyint | IN | Payment method |
@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 |
@EXPIRESON | UDT_FUZZYDATE | IN | Expires on |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | Account |
@SPLITS | xml | IN | Designations |
@FREQUENCYCODE | tinyint | IN | Frequency |
@ENDDATE | datetime | IN | Ending on |
@STARTDATE | datetime | IN | Starting on |
@FINDERNUMBER | bigint | IN | Finder number |
@SOURCECODE | nvarchar(50) | IN | Source code |
@APPEALID | uniqueidentifier | IN | Appeal |
@GIVENANONYMOUSLY | bit | IN | Recurring gift is anonymous |
@MAILINGID | uniqueidentifier | IN | Effort |
@CHANNELCODEID | uniqueidentifier | IN | Inbound channel |
@DONOTACKNOWLEDGE | bit | IN | Do not acknowledge |
@AUTOPAY | bit | IN | Pay installments automatically by: |
@REFERENCE | nvarchar(255) | IN | Reference |
@CATEGORYCODEID | uniqueidentifier | IN | Revenue category |
@CREDITCARDTOKEN | uniqueidentifier | IN | |
@STANDINGORDERSETUP | bit | IN | Standing order has been setup |
@STANDINGORDERSETUPDATE | datetime | IN | Setup on |
@DDISOURCECODEID | uniqueidentifier | IN | DDI source |
@DDISOURCEDATE | date | IN | DDI source date |
@SENDREMINDER | bit | IN | Send reminders |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | Transaction currency |
@BASEEXCHANGERATEID | uniqueidentifier | IN | Exchange rate ID |
@EXCHANGERATE | decimal(20, 8) | IN | Exchange rate |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@BUSINESSUNITSAPPLIED | bit | IN | |
@GENERATEREFERENCENUMBER | bit | IN | Automatically generate reference number |
@STANDINGORDERREFERENCENUMBER | nvarchar(18) | IN | Reference number |
@EVENTID | uniqueidentifier | IN | Event |
@LOCALCORPID | uniqueidentifier | IN | Local corp |
@ISMEMBERSHIPRECURRINGGIFT | bit | IN | |
@BATCHNUMBER | nvarchar(100) | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@SEPAMANDATEID | uniqueidentifier | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_RECURRINGGIFT (
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier,
@CONSTITUENTID uniqueidentifier,
@DATE datetime,
@AMOUNT money = 0,
@PAYMENTMETHODCODE tinyint = 2,
@REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
@REFERENCENUMBER nvarchar(20) = '',
@CARDHOLDERNAME nvarchar(255) = '',
@CREDITCARDNUMBER nvarchar(20) = '',
@CREDITTYPECODEID uniqueidentifier = null,
@EXPIRESON dbo.UDT_FUZZYDATE = null,
@CONSTITUENTACCOUNTID uniqueidentifier = null,
@SPLITS xml,
@FREQUENCYCODE tinyint = 3,
@ENDDATE datetime = null,
@STARTDATE datetime = null,
@FINDERNUMBER bigint = null,
@SOURCECODE nvarchar(50) = null,
@APPEALID uniqueidentifier = null,
@GIVENANONYMOUSLY bit = 0,
@MAILINGID uniqueidentifier = null,
@CHANNELCODEID uniqueidentifier = null,
@DONOTACKNOWLEDGE bit = 0,
@AUTOPAY bit = 1,
@REFERENCE nvarchar(255) = null,
@CATEGORYCODEID uniqueidentifier = null,
@CREDITCARDTOKEN uniqueidentifier = null,
@STANDINGORDERSETUP bit = 0,
@STANDINGORDERSETUPDATE datetime = null,
@DDISOURCECODEID uniqueidentifier = null,
@DDISOURCEDATE date = null,
@SENDREMINDER bit = 1,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null,
@EXCHANGERATE decimal(20,8) = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@BUSINESSUNITSAPPLIED bit=0,
@GENERATEREFERENCENUMBER bit = 1,
@STANDINGORDERREFERENCENUMBER nvarchar(18) = null,
@EVENTID uniqueidentifier = null,
@LOCALCORPID uniqueidentifier = null,
@ISMEMBERSHIPRECURRINGGIFT bit = 0,
@BATCHNUMBER nvarchar(100) = '',
@BASECURRENCYID uniqueidentifier = null,
@SEPAMANDATEID uniqueidentifier = null,
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null
)
as
set nocount on;
declare @CURRENTDATE datetime
declare @NEXTTRANSACTIONDATE datetime
declare @TRANSACTIONTYPECODE tinyint
declare @PAYMENTMETHODID uniqueidentifier;
if @ID is null
set @ID = newid();
set @TRANSACTIONTYPECODE = 2; --Recurring Gift
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
--Multicurrency - RSC 4/14/10 - Use the appuser's base currency since there is no account system and we do not post recurring gifts.
if @BASECURRENCYID is null
set @BASECURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);
--Multicurrency - RSC 4/14/10 - Add a spot exchange rate if an existing rate hasn't
-- been selected, the base and transaction currencies are different, and the rate
-- entered isn't zero (which indicates that the user wants to enter the record without a rate).
if @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
begin
set @BASEEXCHANGERATEID = newid()
--Replace with call to USP_CURRENCYEXCHANGERATE_ENSURESPOTRATEEXISTS for PBI 102747 in the future
/*if not dbo.UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE(@CURRENTAPPUSERID,'911f104d-ba5f-4469-b0ae-184c879aea99') = 1
and not dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
begin
raiserror('User does not have the right to add a new spot rate.', 13, 1);
return 1;
end*/
insert into dbo.CURRENCYEXCHANGERATE(
ID,
FROMCURRENCYID,
TOCURRENCYID,
RATE,
ASOFDATE,
TYPECODE,
SOURCECODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values(
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASECURRENCYID,
@EXCHANGERATE,
@DATE,
2,
null,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
declare @SUM money
begin try
if @FINDERNUMBER is null
set @FINDERNUMBER = 0;
--if we have a finder number make sure the constituent has been added to the tables
if @FINDERNUMBER > 0
exec dbo.USP_DATAFORMTEMPLATE_ADD_ACQUISITIONLISTMEMBER @CONSTITUENTID, @CHANGEAGENTID, @FINDERNUMBER;
if @AMOUNT < 0
raiserror('The amount cannot be negative.', 13, 1);
if @STARTDATE < @DATE
raiserror('The schedule cannot start before the gift date.', 13, 1);
-- If the system has set that households can't be donors, verify that constituent isn't a household
if dbo.UFN_INSTALLATIONINFO_GETHOUSEHOLDSCANBEDONORS() = 0 and dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID) = 1
raiserror('HOUSEHOLDSCANNOTBEDONORS', 13, 1);
-- if the group type can't be a donor, raise an error
if exists(select GD.ID from dbo.GROUPDATA GD inner join dbo.GROUPTYPE GT on GD.GROUPTYPEID = GT.ID where GD.ID = @CONSTITUENTID and GT.CANBEDONOR = 0)
raiserror('GROUPCANNOTBEDONOR', 13, 1);
-- if this is a recurring gift created via membership and the @PAYMENTMETHODCODE is other (10)
-- or the PAYMENTMETHODCODE is not one of the values recurring gifts allow then set it to None (9)
-- this was previously handled by the @AUTOPAY = 0 flag
if (@ISMEMBERSHIPRECURRINGGIFT = 1 and @PAYMENTMETHODCODE = 10) or @PAYMENTMETHODCODE not in (0,1,2,3,9,10,11,98,101,102)
set @PAYMENTMETHODCODE = 9;
-- clear the OTHERPAYMENTMETHODCODEID if the payment method is different than Other
if @PAYMENTMETHODCODE <> 10
set @OTHERPAYMENTMETHODCODEID = null;
if @ISMEMBERSHIPRECURRINGGIFT = 1
begin
exec dbo.USP_MEMBERSHIPPLEDGE_VALIDATESPLITS @SPLITS, @AMOUNT, @TRANSACTIONTYPECODE, default, @TRANSACTIONCURRENCYID
end
else
begin
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, @TRANSACTIONTYPECODE, default, @TRANSACTIONCURRENCYID;
end
--Multicurrency - SlyyMu 8/12/10 replaced the previous multicurrency section done by (RSC 4/14/10) with the UFN_CURRENCY_GETCURRENCYVALUES()
declare @BASEAMOUNT money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONAMOUNT money;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@AMOUNT,
@DATE,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID output,
@BASEAMOUNT output,
@ORGANIZATIONCURRENCYID output,
@ORGANIZATIONAMOUNT output,
@ORGANIZATIONEXCHANGERATEID output,
1;
insert into dbo.REVENUE ([ID],[CONSTITUENTID],[DATE],[POSTDATE],[DONOTRECEIPT], [AMOUNT], [TRANSACTIONTYPECODE], [RECEIPTAMOUNT], [FINDERNUMBER], [SOURCECODE], [APPEALID], [GIVENANONYMOUSLY], [MAILINGID], [CHANNELCODEID], [DONOTACKNOWLEDGE], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED],[BASECURRENCYID],[ORGANIZATIONAMOUNT],[ORGANIZATIONEXCHANGERATEID],[TRANSACTIONAMOUNT],[TRANSACTIONCURRENCYID],[BASEEXCHANGERATEID], [BATCHNUMBER])
values (@ID,@CONSTITUENTID,@DATE,@DATE, 0, @BASEAMOUNT, @TRANSACTIONTYPECODE, @AMOUNT, @FINDERNUMBER, @SOURCECODE, @APPEALID, @GIVENANONYMOUSLY, @MAILINGID, @CHANNELCODEID, @DONOTACKNOWLEDGE, @CHANGEAGENTID, @CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID,@AMOUNT,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID, isnull(@BATCHNUMBER, ''));
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CURRENTDATE;
set @PAYMENTMETHODID = newid();
insert into dbo.REVENUEPAYMENTMETHOD (ID, REVENUEID, AMOUNT, PAYMENTMETHODCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@PAYMENTMETHODID, @ID, @BASEAMOUNT, case when @PAYMENTMETHODCODE = 98 then 2 else @PAYMENTMETHODCODE end, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE ,@CURRENTDATE);
exec dbo.USP_REVENUEREFERENCE_ADD @ID, @REFERENCE, @CHANGEAGENTID;
--if semi-monthly ensure nexttransaction date starts on 1st or 15th
if @FREQUENCYCODE = 7 and not (day(@STARTDATE) = 1 or day(@STARTDATE) = 15)
begin
--Use the old version of UFN_REVENUE_GETNEXTTRANSACTIONDATE for this purpose because it doesn't take a revenue ID and does exactly what is needed.
set @NEXTTRANSACTIONDATE = dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE(@FREQUENCYCODE, @STARTDATE)
end
else
set @NEXTTRANSACTIONDATE = @STARTDATE
declare @CREDITCARDID uniqueidentifier
if @PAYMENTMETHODCODE = 2 -- Credit Card
begin
exec dbo.USP_CREDITCARD_SAVE
@ID = @CREDITCARDID output,
@CREDITCARDTOKEN = @CREDITCARDTOKEN,
@CARDHOLDERNAME = @CARDHOLDERNAME,
@CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER,
@CREDITTYPECODEID = @CREDITTYPECODEID,
@EXPIRESON = @EXPIRESON,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CURRENTDATE
end
insert into dbo.REVENUESCHEDULE ([ID], [STARTDATE], [SCHEDULESEEDDATE], [ENDDATE], [FREQUENCYCODE], [NEXTTRANSACTIONDATE], CREDITCARDID, SENDPLEDGEREMINDER, [EVENTID], [LOCALCORPID], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
values (@ID, @STARTDATE, @NEXTTRANSACTIONDATE, @ENDDATE, @FREQUENCYCODE, @NEXTTRANSACTIONDATE, @CREDITCARDID, @SENDREMINDER, @EVENTID, @LOCALCORPID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
-- add first installment
insert into dbo.RECURRINGGIFTINSTALLMENT (ID, REVENUEID, AMOUNT, DATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,BASEEXCHANGERATEID)
values (newid(), @ID, @BASEAMOUNT, @NEXTTRANSACTIONDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID,@AMOUNT,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID);
-- add any additional installments to get us current
exec dbo.USP_RECURRINGGIFT_ADDMISSINGINSTALLMENTS
@ID = @ID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CREATIONDATE = @CURRENTDATE,
@AMOUNT = @BASEAMOUNT,
@BASECURRENCYID = @BASECURRENCYID,
@ORGANIZATIONAMOUNT = @ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,
@TRANSACTIONAMOUNT = @AMOUNT,
@TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID = @BASEEXCHANGERATEID;
declare @SENDNEWINSTRUCTION bit;
declare @NEWINSTRUCTIONTOSEND tinyint;
set @SENDNEWINSTRUCTION = 0;
set @NEWINSTRUCTIONTOSEND = 0;
if @PAYMENTMETHODCODE = 3 --Direct debit
begin
if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 0
begin
set @DDISOURCECODEID = null;
set @DDISOURCEDATE = null;
end
if not @DDISOURCECODEID is null
begin
set @SENDNEWINSTRUCTION = 1;
set @NEWINSTRUCTIONTOSEND = 1;
end
insert into dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT
(ID, REFERENCEDATE, REFERENCENUMBER, CONSTITUENTACCOUNTID, DDISOURCECODEID, DDISOURCEDATE, SENDPMINSTRUCTION, PMINSTRUCTIONTOSENDCODE, SEPAMANDATEID,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REFERENCEDATE, @REFERENCENUMBER, @CONSTITUENTACCOUNTID, @DDISOURCECODEID, @DDISOURCEDATE, @SENDNEWINSTRUCTION, @NEWINSTRUCTIONTOSEND, @SEPAMANDATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
else if @PAYMENTMETHODCODE = 11 --Standing order
begin
if @GENERATEREFERENCENUMBER is null or @GENERATEREFERENCENUMBER = 1
select
@STANDINGORDERREFERENCENUMBER = '',
@GENERATEREFERENCENUMBER = 1
if @REFERENCEDATE is null or @REFERENCEDATE = '' or @REFERENCEDATE = '00000000'
select @REFERENCEDATE = convert(nvarchar,DATEPART(yyyy,@CURRENTDATE)) + right('00' + convert(nvarchar,DATEPART(mm,@CURRENTDATE)),2) + right('00' + convert(nvarchar,DATEPART(dd,@CURRENTDATE)),2);
if @STANDINGORDERSETUP = 0 set @STANDINGORDERSETUPDATE = null
insert into dbo.REVENUESCHEDULESTANDINGORDERPAYMENT
(ID, REFERENCEDATE, REFERENCENUMBER, CONSTITUENTACCOUNTID, STANDINGORDERSETUP, STANDINGORDERSETUPDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REFERENCEDATE, @STANDINGORDERREFERENCENUMBER, @CONSTITUENTACCOUNTID, @STANDINGORDERSETUP, @STANDINGORDERSETUPDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
insert into dbo.REVENUESTANDINGORDER(ID, CUSTOMREFERENCENUMBER, USESYSTEMGENERATEDREFERENCENUMBER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @STANDINGORDERREFERENCENUMBER, @GENERATEREFERENCENUMBER, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
else if @PAYMENTMETHODCODE = 10 --Other
begin
insert into dbo.OTHERPAYMENTMETHODDETAIL (ID, REFERENCEDATE, REFERENCENUMBER, OTHERPAYMENTMETHODCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select ID, @REFERENCEDATE, @REFERENCENUMBER, @OTHERPAYMENTMETHODCODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from dbo.REVENUEPAYMENTMETHOD
where REVENUEID = @ID;
end
else if @PAYMENTMETHODCODE = 98 --Credit card 4 digits only
begin
insert into dbo.CREDITCARDPAYMENTMETHODDETAIL (ID, CARDHOLDERNAME, CREDITCARDPARTIALNUMBER, CREDITTYPECODEID, EXPIRESON, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select ID, @CARDHOLDERNAME, @CREDITCARDNUMBER, @CREDITTYPECODEID, @EXPIRESON, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from dbo.REVENUEPAYMENTMETHOD
where REVENUEID = @ID;
end
-- Set the IDs for any blank entries in the splits XML so that it can associate the declines with gift aid
-- flag with the generated splits
set @SPLITS = ( select
case when [ID] is null or ID = '00000000-0000-0000-0000-000000000000' then newid() else [ID] end [ID],
[AMOUNT],
[APPLICATIONCODE],
[DESIGNATIONID],
[TYPECODE],
[DECLINESGIFTAID]
from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@SPLITS)
for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64)
--Multicurrency - RSC 4/14/10 - Process the splits xml to calculate the base and organization amounts and place them in proper nodes.
set @SPLITS = dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(@SPLITS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_REVENUE_GETSPLITS_2_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_REVENUE_CREATERECOGNITIONS @ID, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_REVENUECATEGORY_UPDATESPLITS @REVENUEID = @ID,
@CATEGORYCODEID = @CATEGORYCODEID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CURRENTDATE
exec dbo.USP_REVENUE_CLEARANDADDCAMPAIGNS @REVENUEID = @ID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @CURRENTDATE
declare @SPLITSDECLININGGIFTAID xml
set @SPLITSDECLININGGIFTAID = ( select
ID as REVENUESPLITID
from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@SPLITS)
where DECLINESGIFTAID = 1
for xml raw('ITEM'),type,elements,root('SPLITSDECLININGGIFTAID'),BINARY BASE64)
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID, @APPEALID, @PAYMENTMETHODCODE, @CREDITTYPECODEID, @CHANGEAGENTID, @DATE, @TRANSACTIONTYPECODE, @SPLITSDECLININGGIFTAID;
if @PAYMENTMETHODCODE = 3
and @DDISOURCECODEID is not null
and dbo.UFN_PAPERLESSMANDATES_DAYSADVANCEDNOTICE_FORREVENUE(@ID) = -1
begin
--Bug 138736 - AdamBu 2/2/11 - Error on invalid paperless mandate setup.
raiserror('BBERR_MULTIPLE_PAPERLESSMANDATECONFIGS', 13, 1);
return 1;
end
/* Apply business units */
if @BUSINESSUNITSAPPLIED = 0
exec dbo.USP_REVENUESPLIT_APPLYBUSINESSUNITS @ID, @CHANGEAGENTID, @CURRENTDATE;
insert into dbo.RECURRINGGIFTAMENDMENT(ID, FINANCIALTRANSACTIONID, AMENDMENTTYPECODE, DATE, STATUSCODE,
TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEAMOUNT, BASECURRENCYID, BASEEXCHANGERATEID,
ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID, FREQUENCYCODE,
DESIGNATIONS, SOURCECODE, FINDERNUMBER, APPEALID, MAILINGID, CHANNELCODEID, PAYMENTMETHODCODE, CREDITTYPECODEID,
CREDITCARDPARTIALNUMBER, EXPIRESON, CARDHOLDERNAME, CONSTITUENTACCOUNTID, REFERENCEDATE,
REFERENCENUMBER, CONSTITUENTID, OTHERPAYMENTMETHODCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,
DDISOURCECODEID, DDISOURCEDATE, SENDPMINSTRUCTION, PMINSTRUCTIONTOSENDCODE, SEPAMANDATEID, STANDINGORDERSETUP, STANDINGORDERSETUPDATE, USESYSTEMGENERATEDREFERENCENUMBER)
values(newid(), @ID, 0, @CURRENTDATE, 0, @AMOUNT, @TRANSACTIONCURRENCYID, @BASEAMOUNT, @BASECURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID, @FREQUENCYCODE, @SPLITS, isnull(@SOURCECODE,''), @FINDERNUMBER, @APPEALID, @MAILINGID, @CHANNELCODEID, @PAYMENTMETHODCODE, @CREDITTYPECODEID,
isnull(@CREDITCARDNUMBER, ''), isnull(nullif(@EXPIRESON,''), '00000000'), isnull(@CARDHOLDERNAME, ''), @CONSTITUENTACCOUNTID, @REFERENCEDATE,
case when @PAYMENTMETHODCODE = 11 then case when @GENERATEREFERENCENUMBER = 1 then dbo.UFN_STANDINGORDER_REFERENCENUMBER_FORDISPLAY(@ID) else @STANDINGORDERREFERENCENUMBER end else @REFERENCENUMBER end,
@CONSTITUENTID, @OTHERPAYMENTMETHODCODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @DDISOURCECODEID, @DDISOURCEDATE, @SENDNEWINSTRUCTION, @NEWINSTRUCTIONTOSEND,
@SEPAMANDATEID, isnull(@STANDINGORDERSETUP,0), @STANDINGORDERSETUPDATE, case when @PAYMENTMETHODCODE = 11 then @GENERATEREFERENCENUMBER else 0 end)
end try
begin catch
exec dbo.USP_RAISE_ERROR;
close symmetric key sym_BBInfinity;
return 1;
end catch
return 0;