USP_PLEDGE_ADD
Adds a pledge.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@DATE | datetime | IN | |
@AMOUNT | money | IN | |
@POSTSTATUSCODE | tinyint | IN | |
@POSTDATE | datetime | IN | |
@SENDPLEDGEREMINDER | bit | IN | |
@SPLITS | xml | IN | |
@FREQUENCYCODE | tinyint | IN | |
@NUMBEROFINSTALLMENTS | int | IN | |
@STARTDATE | datetime | IN | |
@INSTALLMENTS | xml | IN | |
@AUTOPAY | bit | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@CREDITCARDNUMBER | nvarchar(4) | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@EXPIRESON | UDT_FUZZYDATE | IN | |
@REFERENCEDATE | UDT_FUZZYDATE | IN | |
@REFERENCENUMBER | nvarchar(20) | IN | |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | |
@FINDERNUMBER | bigint | IN | |
@SOURCECODE | nvarchar(50) | IN | |
@APPEALID | uniqueidentifier | IN | |
@BENEFITS | xml | IN | |
@BENEFITSWAIVED | bit | IN | |
@GIVENANONYMOUSLY | bit | IN | |
@MAILINGID | uniqueidentifier | IN | |
@CHANNELCODEID | uniqueidentifier | IN | |
@DONOTACKNOWLEDGE | bit | IN | |
@PLEDGESUBTYPEID | uniqueidentifier | IN | |
@BATCHNUMBER | nvarchar(100) | IN | |
@OPPORTUNITYID | uniqueidentifier | IN | |
@REFERENCE | nvarchar(255) | IN | |
@CATEGORYCODEID | uniqueidentifier | IN | |
@CREDITCARDTOKEN | uniqueidentifier | IN | |
@STANDINGORDERSETUP | bit | IN | |
@STANDINGORDERSETUPDATE | datetime | IN | |
@DDISOURCECODEID | uniqueidentifier | IN | |
@DDISOURCEDATE | date | IN | |
@SPLITSDECLININGGIFTAID | xml | INOUT | |
@PERCENTAGEBENEFITS | xml | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@BUSINESSUNITSAPPLIED | bit | IN | |
@GENERATEREFERENCENUMBER | bit | IN | |
@STANDINGORDERREFERENCENUMBER | nvarchar(18) | IN | |
@EVENTID | uniqueidentifier | IN | |
@LOCALCORPID | uniqueidentifier | IN | |
@ISMEMBERSHIPPLEDGE | bit | IN | |
@SEPAMANDATEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_PLEDGE_ADD
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier,
@CONSTITUENTID uniqueidentifier,
@DATE datetime,
@AMOUNT money,
@POSTSTATUSCODE tinyint = 1,
@POSTDATE datetime = null,
@SENDPLEDGEREMINDER bit = 1,
@SPLITS xml,
@FREQUENCYCODE tinyint = 5,
@NUMBEROFINSTALLMENTS int = 1,
@STARTDATE datetime = null,
@INSTALLMENTS xml,
@AUTOPAY bit = 0,
@PAYMENTMETHODCODE tinyint = 2,
@CARDHOLDERNAME nvarchar(255) = '',
@CREDITCARDNUMBER nvarchar(4) = '',
@CREDITTYPECODEID uniqueidentifier = null,
@EXPIRESON dbo.UDT_FUZZYDATE = '00000000',
@REFERENCEDATE dbo.UDT_FUZZYDATE = '00000000',
@REFERENCENUMBER nvarchar(20) = '',
@CONSTITUENTACCOUNTID uniqueidentifier = null,
@FINDERNUMBER bigint = null,
@SOURCECODE nvarchar(50) = null,
@APPEALID uniqueidentifier = null,
@BENEFITS xml = null,
@BENEFITSWAIVED bit = 0,
@GIVENANONYMOUSLY bit = null,
@MAILINGID uniqueidentifier = null,
@CHANNELCODEID uniqueidentifier = null,
@DONOTACKNOWLEDGE bit = 0,
@PLEDGESUBTYPEID uniqueidentifier = null,
@BATCHNUMBER nvarchar(100) = '',
@OPPORTUNITYID uniqueidentifier = null,
@REFERENCE nvarchar(255) = null,
@CATEGORYCODEID uniqueidentifier = null,
@CREDITCARDTOKEN uniqueidentifier = null,
@STANDINGORDERSETUP bit = 0,
@STANDINGORDERSETUPDATE datetime = null,
@DDISOURCECODEID uniqueidentifier = null,
@DDISOURCEDATE date = null,
@SPLITSDECLININGGIFTAID xml = null output,
@PERCENTAGEBENEFITS xml = null,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASECURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null,
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@BUSINESSUNITSAPPLIED bit = 0,
@GENERATEREFERENCENUMBER bit = null,
@STANDINGORDERREFERENCENUMBER nvarchar(18) = null,
@EVENTID uniqueidentifier = null,
@LOCALCORPID uniqueidentifier = null,
@ISMEMBERSHIPPLEDGE bit = 0,
@SEPAMANDATEID uniqueidentifier = null
)
as
begin
set nocount on;
declare @CURRENTDATE datetime;
declare @REVENUEPAYMENTID uniqueidentifier;
declare @INSTALLMENTSTABLE table
(
AMOUNT money,
APPLIED money,
BALANCE money,
BASECURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier,
DATE datetime,
ID uniqueidentifier,
INSTALLMENTSPLITS xml,
ORGANIZATIONAMOUNT money,
ORGANIZATIONEXCHANGERATEID uniqueidentifier,
SEQUENCE int,
TRANSACTIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
RECEIPTAMOUNT money,
ORGANIZATIONRECEIPTAMOUNT money
)
insert into @INSTALLMENTSTABLE (AMOUNT,APPLIED,BALANCE,BASECURRENCYID,BASEEXCHANGERATEID,DATE,ID,INSTALLMENTSPLITS,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID,SEQUENCE,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID, RECEIPTAMOUNT, ORGANIZATIONRECEIPTAMOUNT)
select AMOUNT,APPLIED,BALANCE,BASECURRENCYID,BASEEXCHANGERATEID,DATE,ID,INSTALLMENTSPLITS,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID,SEQUENCE,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID, RECEIPTAMOUNT, ORGANIZATIONRECEIPTAMOUNT
from dbo.UFN_INSTALLMENT_GETINSTALLMENTS_2_FROMITEMLISTXML(@INSTALLMENTS)
if @FREQUENCYCODE = 4
exec dbo.USP_REVENUEINSTALLMENT_VALIDATEINSTALLMENTS @INSTALLMENTS, @DATE, @AMOUNT,@ISMEMBERSHIPPLEDGE;
set @REVENUEPAYMENTID = newid();
if @ID is null
set @ID = NewID();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = GetDate();
--Set currency parameters for backwards compatibility
if @TRANSACTIONCURRENCYID is null
set @TRANSACTIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
if @BASECURRENCYID is null
set @BASECURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @SUM money;
declare @COUNT int;
begin try
if @FINDERNUMBER is null
set @FINDERNUMBER = 0;
else if @FINDERNUMBER <> 0
begin
if dbo.[UFN_MKTFINDERNUMBER_VALIDATE_MOD10](@FINDERNUMBER) = 0
raiserror('Finder number failed check digit.', 13, 1);
if dbo.[UFN_MKTSEGMENTATIONFINDERNUMBER_GETSEGMENTATION](@FINDERNUMBER) is null
raiserror('Invalid finder number.', 13, 1);
end
if @AMOUNT <= 0 and @ISMEMBERSHIPPLEDGE = 1
raiserror('BBERR_PLEDGEADD_ZEROMEMBERSHIPPLEDGEAMOUNT', 13, 1);
if @ISMEMBERSHIPPLEDGE = 1
begin
exec dbo.USP_MEMBERSHIPPLEDGE_VALIDATESPLITS @SPLITS, @AMOUNT, 1, default, @TRANSACTIONCURRENCYID;
end
else
begin
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 1, default, @TRANSACTIONCURRENCYID;
end
-- Multicurrency - AdamBu 3/17/10 - Ensure that the installment's transaction currency is the same as its revenue.
if exists(
select 1
from @INSTALLMENTSTABLE
where TRANSACTIONCURRENCYID <> @TRANSACTIONCURRENCYID
)
begin
raiserror('An installment''s transaction currency must match that of its revenue.',13,1);
end
select
@SUM = sum(AMOUNT),
@COUNT = count(AMOUNT)
from
@INSTALLMENTSTABLE;
if @COUNT = 0
raiserror('Please enter at least one installment.',13,1);
if @SUM <> @AMOUNT
raiserror('The sum of the installment amounts must equal the pledge amount.',13,1);
if @AUTOPAY = 0
set @PAYMENTMETHODCODE = 9;
declare @OVERLAP bit;
set @OVERLAP = 0;
select
@OVERLAP = 1
from
@INSTALLMENTSTABLE [CURRENTINSTALLMENT]
inner join @INSTALLMENTSTABLE [PREVIOUSINSTALLMENT] on PREVIOUSINSTALLMENT.SEQUENCE = CURRENTINSTALLMENT.SEQUENCE - 1
where
CURRENTINSTALLMENT.DATE < PREVIOUSINSTALLMENT.DATE;
if @OVERLAP = 1
raiserror('Installment dates are out of sequence.',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);
--Multicurrency - AdamBu 3/30/10 - Retrieve and calculate the necessary multicurrency values.
declare @BASEAMOUNT money;
declare @ORGANIZATIONAMOUNT money;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@AMOUNT,
@DATE,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASEAMOUNT output,
null,
@ORGANIZATIONAMOUNT output,
@ORGANIZATIONEXCHANGERATEID output,
1,
null;
if @PDACCOUNTSYSTEMID is null
set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
declare @CURRENCYSETID uniqueidentifier;
select @CURRENCYSETID = CURRENCYSETID from dbo.PDACCOUNTSYSTEM where ID = @PDACCOUNTSYSTEMID;
if @BASECURRENCYID <> (select BASECURRENCYID from dbo.CURRENCYSET where ID = @CURRENCYSETID)
raiserror('The base currency of the pledge is not valid for its account system.',13,1);
if @TRANSACTIONCURRENCYID not in (select CURRENCYID from dbo.CURRENCYSETTRANSACTIONCURRENCY where CURRENCYSETID = @CURRENCYSETID)
raiserror('The transaction currency of the pledge is not valid for its account system.',13,1);
insert into dbo.FINANCIALTRANSACTION (
ID,
CONSTITUENTID,
DATE,
POSTDATE,
POSTSTATUSCODE,
BASEAMOUNT,
TYPECODE,
PDACCOUNTSYSTEMID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ORGAMOUNT,
ORGEXCHANGERATEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@ID,
@CONSTITUENTID,
@DATE,
@POSTDATE,
case @POSTSTATUSCODE when 2 then 3 when 0 then 2 else 1 end,
@BASEAMOUNT,
case when @ISMEMBERSHIPPLEDGE = 1 then 15 else 1 end,
@PDACCOUNTSYSTEMID,
@AMOUNT,
@TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID,
@ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
insert into dbo.REVENUE_EXT (
ID,
REFERENCE,
BATCHNUMBER,
DONOTRECEIPT,
RECEIPTAMOUNT,
FINDERNUMBER,
SOURCECODE,
APPEALID,
GIVENANONYMOUSLY,
DONOTACKNOWLEDGE,
BENEFITSWAIVED,
MAILINGID,
CHANNELCODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values (
@ID,
isnull(@REFERENCE, ''),
isnull(@BATCHNUMBER, ''),
1,
0,
@FINDERNUMBER,
isnull(@SOURCECODE,''),
@APPEALID,
isnull(@GIVENANONYMOUSLY,0),
@DONOTACKNOWLEDGE,
@BENEFITSWAIVED,
@MAILINGID,
@CHANNELCODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CURRENTDATE;
if @ISMEMBERSHIPPLEDGE = 1
begin
--Add membership installment plan original amount
exec dbo.USP_MEMBERSHIPINSTALLMENTPLAN_ADDORIGINALAMOUNT @ID, @CHANGEAGENTID, @CURRENTDATE;
end
else
begin
--Add pledge original amount
exec dbo.USP_PLEDGE_ADDORIGINALAMOUNT @ID, null, @CHANGEAGENTID, @CURRENTDATE;
end
insert into dbo.REVENUEPAYMENTMETHOD (ID,REVENUEID,PAYMENTMETHODCODE,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values (@REVENUEPAYMENTID, @ID,@PAYMENTMETHODCODE, @BASEAMOUNT, @CHANGEAGENTID, @CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE);
--This is a view and already accomplished by POSTSTATUSCODE in FinancialTransaction
--if @POSTSTATUSCODE = 0
-- insert into dbo.REVENUEPOSTED(ID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
-- values(@ID,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE);
insert into dbo.REVENUESCHEDULE (ID,STARTDATE,FREQUENCYCODE,NUMBEROFINSTALLMENTS,PLEDGESUBTYPEID,SENDPLEDGEREMINDER, EVENTID, LOCALCORPID, ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values (@ID, @STARTDATE, @FREQUENCYCODE, @NUMBEROFINSTALLMENTS, @PLEDGESUBTYPEID, @SENDPLEDGEREMINDER, @EVENTID, @LOCALCORPID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
-- 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)
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)
--Multicurrency - AdamBu 3/30/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;
if (@BENEFITSWAIVED = 0)
begin
-- add benefits
declare @TOTALBENEFITS xml;
set @TOTALBENEFITS = dbo.UFN_REVENUEDETAIL_JOINBENEFITS(@BENEFITS, @PERCENTAGEBENEFITS);
--Update the organization total value, transaction total value, and exchange rates in the @TOTALBENEFITS XML.
set @TOTALBENEFITS = dbo.UFN_REVENUEBENEFIT_CONVERTAMOUNTSINXML_2(@TOTALBENEFITS,@TRANSACTIONCURRENCYID,@BASECURRENCYID);
end
else
begin
set @TOTALBENEFITS = null;
end
if @TOTALBENEFITS is not null
exec dbo.USP_REVENUE_GETBENEFITS_4_UPDATEFROMXML @ID, @TOTALBENEFITS, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_REVENUECATEGORY_UPDATESPLITS @REVENUEID = @ID,
@CATEGORYCODEID = @CATEGORYCODEID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CURRENTDATE
if @ISMEMBERSHIPPLEDGE = 1
begin
--Multicurrency - AdamBu 3/30/10 - Process the installments xml to calculate the base and organization amounts and place them in proper nodes.
set @INSTALLMENTS = dbo.UFN_INSTALLMENT_CONVERTAMOUNTSINXML(@INSTALLMENTS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_INSTALLMENT_GETINSTALLMENTS_2_ADDFROMXML @ID, @INSTALLMENTS, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_REVENUE_CREATERECOGNITIONS @ID, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_MEMBERSHIPPLEDGE_GENERATEINSTALLMENTSPLITS @ID, @CHANGEAGENTID, @CURRENTDATE;
end
else
begin
exec dbo.USP_REVENUE_CREATERECOGNITIONS @ID, @CHANGEAGENTID, @CURRENTDATE;
if @INSTALLMENTS is null or not exists(select 1 from @INSTALLMENTS.nodes('/INSTALLMENTS/ITEM') T1(c) cross apply T1.c.nodes('./INSTALLMENTSPLITS/ITEM') as T2(split) where T2.split.value('(DESIGNATIONID)[1]', 'uniqueidentifier') is not null)
begin
--Multicurrency - AdamBu 3/30/10 - Process the installments xml to calculate the base and organization amounts and place them in proper nodes.
set @INSTALLMENTS = dbo.UFN_INSTALLMENT_CONVERTAMOUNTSINXML(@INSTALLMENTS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_INSTALLMENT_GETINSTALLMENTS_2_ADDFROMXML @ID, @INSTALLMENTS, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_PLEDGE_GENERATEINSTALLMENTSPLITS @ID, @CHANGEAGENTID, @CURRENTDATE;
end
else
exec dbo.USP_PLEDGE_UPDATEINSTALLMENT3 @ID
,@INSTALLMENTS
,@CHANGEAGENTID
,@CURRENTDATE
,null
,null
,null
,null
,@BASECURRENCYID
,@ORGANIZATIONEXCHANGERATEID
,@TRANSACTIONCURRENCYID
,@BASEEXCHANGERATEID;
end
exec dbo.USP_REVENUE_PULLSOLICITORSFROMOPPORTUNITY @ID, @OPPORTUNITYID, @CHANGEAGENTID, @CURRENTDATE
if (@OPPORTUNITYID is not null) and (@OPPORTUNITYID <> '00000000-0000-0000-0000-000000000000')
begin
insert into dbo.REVENUEOPPORTUNITY (ID, OPPORTUNITYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select ID, @OPPORTUNITYID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from dbo.REVENUESPLIT where REVENUEID = @ID;
exec dbo.USP_OPPORTUNITY_UPDATEACCEPTEDSTATUS @OPPORTUNITYID, @DATE, @CHANGEAGENTID, @CURRENTDATE
end
exec dbo.USP_PLEDGE_CLEARANDADDCAMPAIGNS @REVENUEID = @ID,
@OPPORTUNITYID = @OPPORTUNITYID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @CURRENTDATE
--Add payment info if applicable
if @AUTOPAY = 1
begin
if @PAYMENTMETHODCODE = 2 --Credit card
begin
declare @CREDITCARDID uniqueidentifier
exec dbo.USP_CREDITCARD_SAVE
@ID = @CREDITCARDID output,
@CREDITCARDTOKEN = @CREDITCARDTOKEN,
@CARDHOLDERNAME = @CARDHOLDERNAME,
@CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER,
@CREDITTYPECODEID = @CREDITTYPECODEID,
@EXPIRESON = @EXPIRESON,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CURRENTDATE
update dbo.REVENUESCHEDULE set
CREDITCARDID = @CREDITCARDID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
end
if @PAYMENTMETHODCODE = 3 --Direct debit
begin
--Direct Debit w/ Paperless mandate fields is UK only
if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
begin
declare @SENDNEWINSTRUCTION bit;
declare @NEWINSTRUCTIONTOSEND tinyint;
set @SENDNEWINSTRUCTION = 0;
set @NEWINSTRUCTIONTOSEND = 0;
if not @DDISOURCECODEID is null
begin
if 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
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
begin
insert into dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT(ID, REFERENCEDATE, REFERENCENUMBER, CONSTITUENTACCOUNTID, SEPAMANDATEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @REFERENCEDATE, @REFERENCENUMBER, @CONSTITUENTACCOUNTID, @SEPAMANDATEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
end
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);
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
end
if (@ISMEMBERSHIPPLEDGE=1)
begin
if (dbo.UFN_MEMBERSHIPRG_INSTALLMENTSPLITSBALANCE(@ID) = 0) raiserror('INSTALLMENTSPLITSBALANCE', 13, 10);
end
else
begin
if (dbo.UFN_PLEDGE_INSTALLMENTSPLITSBALANCE(@ID) = 0) raiserror('INSTALLMENTSPLITSBALANCE', 13, 10);
end
--Save the GL distributions
--Membership installment plans are excluded. The revenue created here needs to be linked to the membership (as a membership transaction) for GL to be correctly generated
if @POSTSTATUSCODE <> 2 and @ISMEMBERSHIPPLEDGE = 0
begin
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
if @TOTALBENEFITS is not null and (dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('0E85C527-E6E9-4C5F-A8E8-105FD0E18FE7') = 1) --BasicGL
exec dbo.USP_SAVE_BENEFITGLDISTRIBUTION_FINANCIALTRANSACTION @ID, @CHANGEAGENTID, @CURRENTDATE
end
/* Apply business units */
if @BUSINESSUNITSAPPLIED = 0
exec dbo.USP_REVENUESPLIT_APPLYBUSINESSUNITS @ID, @CHANGEAGENTID, @CURRENTDATE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end