USP_BBNC_COMMITDONATIONADDGIFT
Adds a donation for a Blackbaud Internet Solutions donation batch.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@BATCHNUMBER | nvarchar(100) | IN | |
@MAPID | int | INOUT | |
@CONSTITUENTID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@ISATHON | bit | IN | |
@GIFTDATE | datetime | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@AUTHORIZATIONCODE | nvarchar(100) | IN | |
@REFERENCENUMBER | nvarchar(100) | IN | |
@CREDITCARDNUMBER | nvarchar(100) | IN | |
@EXPIRATIONDATE | UDT_FUZZYDATE | IN | |
@ISANONYMOUS | bit | IN | |
@APPEALID | uniqueidentifier | IN | |
@ACCOUNTID | uniqueidentifier | IN | |
@FREQUENCYCODE | tinyint | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@NUMBEROFINSTALLMENTS | int | IN | |
@STATUSCODE | tinyint | IN | |
@PROCESSNOW | bit | IN | |
@CHECKTYPE | tinyint | IN | |
@CHECKNUMBER | nvarchar(100) | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@NOTETITLE | nvarchar(100) | IN | |
@COMMENTS | nvarchar(max) | IN | |
@SPLITS | xml | IN | |
@DONOTACKNOWLEDGE | bit | IN | |
@DONOTRECEIPT | bit | IN | |
@BBNCTRANSACTIONID | int | IN | |
@BBNCPAGENAME | nvarchar(1000) | IN | |
@BBNCPAGEID | int | IN | |
@BBNCAPPEALID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@EMAILID | int | IN | |
@EMAILNAME | nvarchar(255) | IN | |
@EMAILSUBJECT | nvarchar(4000) | IN | |
@ISTEAMFUNDRAISINGOFFLINEGIFT | bit | IN | |
@APPLYTRIBUTETODONATION | bit | IN | |
@TRIBUTENAME | nvarchar(500) | IN | |
@TRIBUTEDESCRIPTION | nvarchar(500) | IN | |
@TRIBUTETYPECODEID | uniqueidentifier | IN | |
@TRIBUTEID | uniqueidentifier | IN | |
@TRIBUTENOTETITLE | nvarchar(100) | IN | |
@MARKRECEIPTED | bit | IN | |
@CREDITCARDTOKEN | uniqueidentifier | IN | |
@FINDERNUMBER | bigint | IN | |
@EXTRAREVENUEFROMAPPLICATIONS | money | IN | |
@GIFTHASAPPLICATIONS | bit | IN | |
@RECEIPTNUMBER | int | IN | |
@GIFTAID | bit | IN | |
@ISOCODE | nvarchar(3) | IN | |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@PLEDGEACCOUNTSYSTEMID | uniqueidentifier | IN | |
@CATEGORYCODEID | uniqueidentifier | IN | |
@RECEIPTSTACKSHORTNAME | nvarchar(20) | IN | |
@VENDORID | nvarchar(50) | IN | |
@CAMPAIGNS | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITDONATIONADDGIFT
(
@ID uniqueidentifier = null output,
@BATCHNUMBER nvarchar(100),
@MAPID integer = null output,
@CONSTITUENTID uniqueidentifier = null,
@AMOUNT money,
@ISATHON bit,
@GIFTDATE datetime,
@PAYMENTMETHODCODE tinyint,
@CREDITTYPECODEID uniqueidentifier,
@CARDHOLDERNAME nvarchar(255),
@AUTHORIZATIONCODE nvarchar(100),
@REFERENCENUMBER nvarchar(100),
@CREDITCARDNUMBER nvarchar(100),
@EXPIRATIONDATE dbo.UDT_FUZZYDATE = '00000000',
@ISANONYMOUS bit,
@APPEALID uniqueidentifier,
@ACCOUNTID uniqueidentifier,
@FREQUENCYCODE tinyint,
@STARTDATE datetime,
@ENDDATE datetime,
@NUMBEROFINSTALLMENTS integer,
@STATUSCODE tinyint,
@PROCESSNOW bit,
@CHECKTYPE tinyint,
@CHECKNUMBER nvarchar(100),
@CHECKDATE dbo.UDT_FUZZYDATE = '00000000',
@NOTETITLE nvarchar(100),
@COMMENTS nvarchar(max),
@SPLITS xml,
@DONOTACKNOWLEDGE bit,
@DONOTRECEIPT bit,
@BBNCTRANSACTIONID int,
@BBNCPAGENAME nvarchar(1000),
@BBNCPAGEID int,
@BBNCAPPEALID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@EMAILID int = 0,
@EMAILNAME nvarchar(255) = '',
@EMAILSUBJECT nvarchar(4000) = '',
@ISTEAMFUNDRAISINGOFFLINEGIFT bit = 0,
@APPLYTRIBUTETODONATION bit = 0,
@TRIBUTENAME nvarchar(500) = '',
@TRIBUTEDESCRIPTION nvarchar(500) = '',
@TRIBUTETYPECODEID uniqueidentifier = null,
@TRIBUTEID uniqueidentifier = null,
@TRIBUTENOTETITLE nvarchar(100) = '',
@MARKRECEIPTED bit = 0,
@CREDITCARDTOKEN uniqueidentifier = null,
@FINDERNUMBER bigint = 0,
@EXTRAREVENUEFROMAPPLICATIONS money = 0.00,
@GIFTHASAPPLICATIONS bit = 0,
@RECEIPTNUMBER int = 0,
@GIFTAID bit = 0,
@ISOCODE nvarchar(3) = '',
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@PLEDGEACCOUNTSYSTEMID uniqueidentifier = null,
@CATEGORYCODEID uniqueidentifier = null,
@RECEIPTSTACKSHORTNAME nvarchar(20) = '',
@VENDORID nvarchar(50) = '',
@CAMPAIGNS xml =''
)
as
set nocount on;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @ID is null
set @ID = newid();
declare @REVENUEPAYMENTMETHODID uniqueidentifier;
begin try
--@PAYMENTMETHODCODE will be either Cash (0), Check (1), Credit Card (2), Direct Debit (3), Pledge (10), or None (9).
--"Pledge" means to create a pledge with no payment.
--If @FREQUENCYCODE = 255, then this is a single donation and can be paid by "Cash", "Check", "Credit Card" or "Direct Debit".
--If @FREQUENCYCODE = 255 and the payment code is "Cash" or "Check", that means it was an offline donation (which we probably don't care about much)
--If @FREQUENCYCODE <> 255, then this is a recurring gift. with a payment type of "Credit Card" or "Direct Debit".
--If this is a recurring gift, @PROCESSNOW indicates if the first payment should be created for the recurring gift.
--"None" is an error condition.
if @PAYMENTMETHODCODE = 9
raiserror('The donation has a payment type of "None (9)" which is not supported.', 13, 1);
if @AMOUNT < 0
raiserror('The amount cannot be negative.', 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);
declare @REVENUETRIBUTEID uniqueidentifier;
declare @REVENUENOTETYPECODEID uniqueidentifier;
declare @CHANNELCODEID uniqueidentifier;
declare @TRIBUTENOTE nvarchar(max);
declare @CRLF nvarchar(2);
declare @CREDITCARDPARTIALNUMBER nvarchar(4)
declare @RECEIPTAMOUNT money;
declare @RECEIPTTYPECODE tinyint;
--CBB setting the revenue type to 0 (regular payment) since we don't really worry about applications in this SP.
set @RECEIPTTYPECODE = dbo.UFN_CONSTITUENT_GETRECEIPTPREFERENCE(@CONSTITUENTID,0);
select top 1
@REVENUENOTETYPECODEID = REVENUENOTETYPECODEID,
@CHANNELCODEID = CHANNELCODEID
from dbo.NETCOMMUNITYDEFAULTCODEMAP;
if len(@CREDITCARDNUMBER)>4
set @CREDITCARDPARTIALNUMBER = right(@CREDITCARDNUMBER,4)
else
set @CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER
set @CRLF = char(13) + char(10);
if ((len(@TRIBUTENAME) > 0) or (not @TRIBUTETYPECODEID is null) or (len(@TRIBUTEDESCRIPTION) > 0)) and @APPLYTRIBUTETODONATION = 1
begin
set @TRIBUTENOTE = coalesce(@TRIBUTENAME, '');
if len(@TRIBUTENOTE) > 0 and len(@TRIBUTEDESCRIPTION) > 0
set @TRIBUTENOTE = @TRIBUTENOTE + @CRLF;
set @TRIBUTENOTE = @TRIBUTENOTE + coalesce(@TRIBUTEDESCRIPTION, '')
declare @TRIBUTETYPE nvarchar(100);
select top 1 @TRIBUTETYPE = DESCRIPTION from dbo.TRIBUTETYPECODE where ID = @TRIBUTETYPECODEID;
if len(@TRIBUTENOTE) > 0 and len(@TRIBUTETYPE) > 0
set @TRIBUTENOTE = @TRIBUTENOTE + @CRLF;
set @TRIBUTENOTE = @TRIBUTENOTE + coalesce(@TRIBUTETYPE, '');
end
else
set @TRIBUTENOTE = '';
declare @CONSTITUENTIDFROMFINDERNUMBER uniqueidentifier;
declare @MAILINGID uniqueidentifier;
declare @SOURCECODE nvarchar(50);
declare @APPEALIDFROMFINDERNUMBER as uniqueidentifier
exec dbo.[USP_BBNC_BATCH_FINDERNUMBERLOOKUP] @FINDERNUMBER, @CONSTITUENTIDFROMFINDERNUMBER output, @MAILINGID output, @SOURCECODE output, @APPEALIDFROMFINDERNUMBER output;
if @APPEALIDFROMFINDERNUMBER <> '00000000-0000-0000-0000-000000000000' or @APPEALIDFROMFINDERNUMBER is not null
begin
set @APPEALID =@APPEALIDFROMFINDERNUMBER
End
if @CONSTITUENTIDFROMFINDERNUMBER is not null
if @CONSTITUENTID <> @CONSTITUENTIDFROMFINDERNUMBER
set @FINDERNUMBER = 0;
if (@PDACCOUNTSYSTEMID is null)
set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)
if (@PDACCOUNTSYSTEMID is null)
set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
-- don't use account system for recurring gifts
if not ((@PAYMENTMETHODCODE = 10) or (@FREQUENCYCODE = 255) or (@PROCESSNOW = 1))
set @PDACCOUNTSYSTEMID = null;
if @PLEDGEACCOUNTSYSTEMID is not null
begin
if @PLEDGEACCOUNTSYSTEMID <> @PDACCOUNTSYSTEMID
raiserror('The account system of the payment must match the account system of the pledge it''s being applied to.',13,1);
end
-- Multicurrency Info grab
declare @TRANSACTIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETCURRENCYFROMISO(@ISOCODE);
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @BASEAMOUNT money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONAMOUNT money;
--ID where clause is using default, should be using PDACCOUNTSYSTEMID that is selected in the batch.
if @PDACCOUNTSYSTEMID is null
begin
select @BASECURRENCYID = CURRENCYSET.BASECURRENCYID from dbo.PDACCOUNTSYSTEM
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
where PDACCOUNTSYSTEM.ID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID);
end
else
begin
select @BASECURRENCYID = CURRENCYSET.BASECURRENCYID from dbo.PDACCOUNTSYSTEM
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
where PDACCOUNTSYSTEM.ID =@PDACCOUNTSYSTEMID;
end
set @BASEEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID,@BASECURRENCYID,@GIFTDATE,1,null);
select
@BASEAMOUNT = BASEAMOUNT,
@ORGANIZATIONAMOUNT = ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
from dbo.UFN_CURRENCY_GETCURRENCYVALUES(@AMOUNT, @GIFTDATE, @BASECURRENCYID, @BASEEXCHANGERATEID, @TRANSACTIONCURRENCYID);
declare @MULTICURRENCYENABLED bit;
set @BASEAMOUNT = dbo.UFN_CURRENCY_CONVERT(@AMOUNT,@BASEEXCHANGERATEID);
set @MULTICURRENCYENABLED = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency');
if @MULTICURRENCYENABLED = 0
begin
set @BASEAMOUNT = @AMOUNT;
end
if @TRANSACTIONCURRENCYID = @BASECURRENCYID
begin
set @BASEAMOUNT = @AMOUNT;
end
-- Ensure that we can add a payment of this transaction currency to the account system.
if @FREQUENCYCODE = 255 and not exists(select 1 from dbo.CURRENCYSETTRANSACTIONCURRENCY
inner join dbo.PDACCOUNTSYSTEM on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSETTRANSACTIONCURRENCY.CURRENCYSETID
where PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID and CURRENCYSETTRANSACTIONCURRENCY.CURRENCYID = @TRANSACTIONCURRENCYID)
begin
raiserror('Invalid transaction currency, current account system does not contain this transaction currency',13,1);
end
if @PAYMENTMETHODCODE = 10 -- Pledge (unpaid)
begin
--Create a pledge
if @SPLITS is null
raiserror('At least one designation must be specified for a pledge.', 13, 1);
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 1,@ID,@TRANSACTIONCURRENCYID,0;
--JamesWill 05/22/2008 CR301162-052008 Pledges do not have receipt amounts
set @RECEIPTAMOUNT = 0;
insert into dbo.REVENUE(ID, BATCHNUMBER, CONSTITUENTID, DATE, DONOTPOST, POSTDATE, DONOTRECEIPT, AMOUNT, TRANSACTIONTYPECODE, RECEIPTAMOUNT, FINDERNUMBER, SOURCECODE, APPEALID, BENEFITSWAIVED, GIVENANONYMOUSLY, MAILINGID, CHANNELCODEID, DONOTACKNOWLEDGE, RECEIPTTYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,ORGANIZATIONEXCHANGERATEID,BASEEXCHANGERATEID)
values(@ID, @BATCHNUMBER, @CONSTITUENTID, @GIFTDATE, 0, @GIFTDATE, @DONOTRECEIPT, @BASEAMOUNT, 1, @RECEIPTAMOUNT, @FINDERNUMBER, @SOURCECODE, @APPEALID, 0, @ISANONYMOUS, @MAILINGID, @CHANNELCODEID, @DONOTACKNOWLEDGE, @RECEIPTTYPECODE, @CHANGEAGENTID
, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@AMOUNT,@TRANSACTIONCURRENCYID,@ORGANIZATIONEXCHANGERATEID,@BASEEXCHANGERATEID);
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
--Add pledge original amount
exec dbo.USP_PLEDGE_ADDORIGINALAMOUNT @ID, @AMOUNT, @CHANGEAGENTID, @CHANGEDATE;
insert into dbo.REVENUEPAYMENTMETHOD (REVENUEID,PAYMENTMETHODCODE,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values (@ID,9, @AMOUNT, @CHANGEAGENTID, @CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE);
insert into dbo.REVENUEBBNC(ID, NETCOMMUNITYTRANSACTIONID, NETCOMMUNITYPAGENAME, NETCOMMUNITYPAGEID, NETCOMMUNITYAPPEALID, EMAILID, EMAILNAME, EMAILSUBJECT, ISTEAMFUNDRAISINGOFFLINEGIFT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @BBNCTRANSACTIONID, @BBNCPAGENAME, @BBNCPAGEID, @BBNCAPPEALID, @EMAILID, @EMAILNAME, @EMAILSUBJECT, @ISTEAMFUNDRAISINGOFFLINEGIFT, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
insert into dbo.REVENUESCHEDULE(ID, STARTDATE, FREQUENCYCODE, NUMBEROFINSTALLMENTS, PLEDGESUBTYPEID, SENDPLEDGEREMINDER, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @GIFTDATE, 5, 1, null, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
set @SPLITS = dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(@SPLITS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_REVENUE_GETSPLITS_2_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;
--JamesWill 09/08/2008 Default campaigns on the revenue record based on designations (this MUST be done AFTER splits are added to the revenue)
exec dbo.USP_BBNC_ADDCAMPAIGNSTOREVENUE @ID, @CHANGEAGENTID, @CHANGEDATE,@CAMPAIGNS;
--add categorycode
exec dbo.USP_BBNC_COMMITDONATIONADDCATEGORY @ID, @CATEGORYCODEID, @CHANGEAGENTID, @CHANGEDATE;
exec dbo.USP_REVENUE_CREATERECOGNITIONS @ID, @CHANGEAGENTID, @CHANGEDATE;
insert into dbo.INSTALLMENT(ID, REVENUEID, AMOUNT, DATE, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,BASEEXCHANGERATEID,BASECURRENCYID)
values(newid(), @ID, @BASEAMOUNT, @GIFTDATE, 1, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID,@AMOUNT,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID,@BASECURRENCYID);
--Generate the installment splits for the pledge
exec dbo.USP_PLEDGE_GENERATEINSTALLMENTSPLITS @ID, @CHANGEAGENTID, @CHANGEDATE;
if not @COMMENTS is null and len(@COMMENTS) > 0
insert into dbo.REVENUENOTE(ID, DATEENTERED, TITLE, TEXTNOTE, REVENUENOTETYPECODEID, REVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @GIFTDATE, @NOTETITLE, @COMMENTS, @REVENUENOTETYPECODEID, @ID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
--add percent and unit value benefits
exec dbo.USP_REVENUEBENEFITS_ADDBENEFITS @ID, @RECEIPTAMOUNT output
--JamesWill 05/22/2008 CR301162-052008 Pledges do not have receipt amounts
set @RECEIPTAMOUNT = 0;
if not @TRIBUTEID is null
begin
set @REVENUETRIBUTEID = newid();
insert into dbo.REVENUETRIBUTE(ID, REVENUEID, TRIBUTEID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID)
values(@REVENUETRIBUTEID, @ID, @TRIBUTEID, @BASEAMOUNT, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID);
insert into dbo.REVENUETRIBUTELETTER(ID, REVENUETRIBUTEID, CONSTITUENTID, TRIBUTELETTERCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
@REVENUETRIBUTEID,
TRIBUTEACKNOWLEDGEE.CONSTITUENTID,
TRIBUTEACKNOWLEDGEE.TRIBUTELETTERCODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from dbo.TRIBUTEACKNOWLEDGEE
where TRIBUTEACKNOWLEDGEE.TRIBUTEID = @TRIBUTEID
and TRIBUTEACKNOWLEDGEE.TRIBUTELETTERCODEID is not null;
end
exec dbo.USP_PDACCOUNTSYSTEM_LINKTOREVENUE
@ID = @ID,
@PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
@CHANGEDATE = @CHANGEDATE,
@CHANGEAGENTID = @CHANGEAGENTID
--Save the GL distributions
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CHANGEDATE;
if @MARKRECEIPTED = 1
begin
insert into dbo.REVENUERECEIPT(ID, REVENUEID, RECEIPTNUMBER, RECEIPTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, RECEIPTSTACKSHORTNAME)
values(newid(), @ID, @RECEIPTNUMBER, @GIFTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @RECEIPTSTACKSHORTNAME);
end
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID, @APPEALID, @PAYMENTMETHODCODE, @CREDITTYPECODEID, @CHANGEAGENTID, @GIFTDATE, 1, null, null; --revenue transaction type code for pledge is 1
--Add gift fees
exec dbo.USP_PAYMENT_ADDGIFTFEES @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
end
else if @FREQUENCYCODE = 255 --Single, paid donation
begin
--AmandaMa WI 57493 now have ability to apply gifts to pledges
--@Splits could be null if the full amount is applied to pledges
if (@EXTRAREVENUEFROMAPPLICATIONS > 0.00 and @SPLITS is null) or
(@GIFTHASAPPLICATIONS = 0 and @SPLITS is null)
raiserror('At least one designation must be specified for a donation.', 13, 1);
--JamesWill CR273017-041707 2007/04/20 Allow cash and check donations to support off-line donations
if @PAYMENTMETHODCODE not in (0, 1, 2, 3, 101, 102)
raiserror('A single donation must be paid via some method such as cash, check, credit card, or direct debit.', 13, 1);
--AmandaMa WI 57493 now have ability to apply gifts to pledges
--applications get processed after this sp with USP_PLEDGE_ADDPAYMENT
if @EXTRAREVENUEFROMAPPLICATIONS > 0.00
begin
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @EXTRAREVENUEFROMAPPLICATIONS,0,@ID,@TRANSACTIONCURRENCYID,0;
end
else if @GIFTHASAPPLICATIONS = 0
begin
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT,0,@ID,@TRANSACTIONCURRENCYID,0;
end
set @RECEIPTAMOUNT = @AMOUNT
insert into dbo.REVENUE(ID, BATCHNUMBER, CONSTITUENTID, DATE, AMOUNT, TRANSACTIONTYPECODE, RECEIPTAMOUNT, FINDERNUMBER, SOURCECODE, APPEALID, BENEFITSWAIVED, GIVENANONYMOUSLY, MAILINGID, CHANNELCODEID, DONOTACKNOWLEDGE, DONOTRECEIPT, DONOTPOST, POSTDATE, RECEIPTTYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,ORGANIZATIONEXCHANGERATEID,BASEEXCHANGERATEID)
values(@ID, @BATCHNUMBER, @CONSTITUENTID, @GIFTDATE, @BASEAMOUNT, 0, @RECEIPTAMOUNT, @FINDERNUMBER, @SOURCECODE, @APPEALID, 0, @ISANONYMOUS, @MAILINGID, @CHANNELCODEID, @DONOTACKNOWLEDGE, @DONOTRECEIPT, 0, @GIFTDATE, @RECEIPTTYPECODE, @CHANGEAGENTID
, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@AMOUNT,@TRANSACTIONCURRENCYID,@ORGANIZATIONEXCHANGERATEID,@BASEEXCHANGERATEID);
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
set @REVENUEPAYMENTMETHODID = newid();
insert into dbo.REVENUEPAYMENTMETHOD (ID, REVENUEID,PAYMENTMETHODCODE,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values (@REVENUEPAYMENTMETHODID, @ID, @PAYMENTMETHODCODE, @BASEAMOUNT, @CHANGEAGENTID, @CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE);
insert into dbo.REVENUEBBNC(ID, NETCOMMUNITYTRANSACTIONID, NETCOMMUNITYPAGENAME, NETCOMMUNITYPAGEID, NETCOMMUNITYAPPEALID, EMAILID, EMAILSUBJECT, EMAILNAME, ISTEAMFUNDRAISINGOFFLINEGIFT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @BBNCTRANSACTIONID, @BBNCPAGENAME, @BBNCPAGEID, @BBNCAPPEALID, @EMAILID, @EMAILSUBJECT, @EMAILNAME, @ISTEAMFUNDRAISINGOFFLINEGIFT, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
--Passing in BBNC transaction ID for the BBPS transaction ID since BBNC passes up its own transaction ID to BBPS and so they are the same.
--The BBNC table is queried directly since TRANSACTIONGUID isn't sent down from BBNC. This probably should be revisited later so it's
--consistent with the other BBNC fields.
declare @BBNCTRANSACTIONGUID uniqueidentifier;
declare @GIFTFUZZYDATE dbo.UDT_FUZZYDATE = '00000000'
select @BBNCTRANSACTIONGUID = TransactionGUID
from dbo.EventTransactions
where EventTransactionsID = @BBNCTRANSACTIONID;
set @GIFTFUZZYDATE = Convert(CHAR(8),@GIFTDATE,112)
--This will only save the last eight digits of the credit card number. This is appropriate for one-off payments since BBNC has already charged the card and we won't need it again.
exec dbo.USP_REVENUE_ADDPAYMENTDETAILS @ID=@REVENUEPAYMENTMETHODID, @PAYMENTMETHODCODE=@PAYMENTMETHODCODE, @REFERENCEDATE = @GIFTFUZZYDATE, @REFERENCENUMBER=@REFERENCENUMBER, @CONSTITUENTACCOUNTID = @ACCOUNTID, @CARDHOLDERNAME=@CARDHOLDERNAME, @CREDITCARDNUMBER=@CREDITCARDPARTIALNUMBER, @CREDITTYPECODEID=@CREDITTYPECODEID, @AUTHORIZATIONCODE=@AUTHORIZATIONCODE, @EXPIRESON=@EXPIRATIONDATE, @CHANGEAGENTID=@CHANGEAGENTID, @CURRENTDATE=@CHANGEDATE, @KEYALREADYOPEN = 1,@BASECURRENCYID=@BASECURRENCYID,@TRANSACTIONCURRENCYID=@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID=@BASEEXCHANGERATEID,@TRANSACTIONID=@BBNCTRANSACTIONGUID,@CHECKDATE=@CHECKDATE,@CHECKNUMBER=@CHECKNUMBER,@VENDORID =@VENDORID;
--AmandaMa WI 57493 now have ability to apply gifts to pledges
--Only apply splits here if there was a leftover amount from applications
--applications get processed after this sp with USP_PLEDGE_ADDPAYMENT
if @GIFTHASAPPLICATIONS = 0 or @EXTRAREVENUEFROMAPPLICATIONS > 0.0
begin
set @SPLITS = dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(@SPLITS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_REVENUE_GETSPLITS_2_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;
end
--add categorycode
exec dbo.USP_BBNC_COMMITDONATIONADDCATEGORY @ID, @CATEGORYCODEID, @CHANGEAGENTID, @CHANGEDATE;
--JamesWill 09/08/2008 Default campaigns on the revenue record based on designations (this MUST be done AFTER splits are added to the revenue)
exec dbo.USP_BBNC_ADDCAMPAIGNSTOREVENUE @ID, @CHANGEAGENTID, @CHANGEDATE,@CAMPAIGNS;
exec dbo.USP_REVENUE_CREATERECOGNITIONS @ID, @CHANGEAGENTID, @CHANGEDATE;
-- Add Original Payment
exec dbo.USP_PAYMENT_ADDORIGINALAMOUNT @ID, @CHANGEAGENTID, @CHANGEDATE;
if not @COMMENTS is null and len(@COMMENTS) > 0
insert into dbo.REVENUENOTE(ID, DATEENTERED, TITLE, TEXTNOTE, REVENUENOTETYPECODEID, REVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @GIFTDATE, @NOTETITLE, @COMMENTS, @REVENUENOTETYPECODEID, @ID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
--add percent and unit value benefits
exec dbo.USP_REVENUEBENEFITS_ADDBENEFITS @ID, @RECEIPTAMOUNT output
--after calculating the benefits update the revenue tables new receipt amount.
if not @RECEIPTAMOUNT = @AMOUNT
update dbo.REVENUE set
RECEIPTAMOUNT = @RECEIPTAMOUNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID
if not @TRIBUTEID is null
begin
set @REVENUETRIBUTEID = newid();
insert into dbo.REVENUETRIBUTE(ID, REVENUEID, TRIBUTEID, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID)
values(@REVENUETRIBUTEID, @ID, @TRIBUTEID, @BASEAMOUNT, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID);
insert into dbo.REVENUETRIBUTELETTER(ID, REVENUETRIBUTEID, CONSTITUENTID, TRIBUTELETTERCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
@REVENUETRIBUTEID,
TRIBUTEACKNOWLEDGEE.CONSTITUENTID,
TRIBUTEACKNOWLEDGEE.TRIBUTELETTERCODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from dbo.TRIBUTEACKNOWLEDGEE
where TRIBUTEACKNOWLEDGEE.TRIBUTEID = @TRIBUTEID
and TRIBUTEACKNOWLEDGEE.TRIBUTELETTERCODEID is not null;
end
--Save the GL distributions
--VigneshMa 11/3/2009 WorkItem 64597
--This call is now made from code, after USP_BBNC_COMMITDONATIONADDGIFT and USP_PLEDGE_ADDPAYMENT are called.
--This ensures that the revenue splits exists before saving to GL.
if @GIFTHASAPPLICATIONS = 0
begin
exec dbo.USP_PDACCOUNTSYSTEM_LINKTOREVENUE
@ID = @ID,
@PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
@CHANGEDATE = @CHANGEDATE,
@CHANGEAGENTID = @CHANGEAGENTID
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CHANGEDATE;
end
if @MARKRECEIPTED = 1
begin
insert into dbo.REVENUERECEIPT(ID, REVENUEID, RECEIPTNUMBER, RECEIPTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, RECEIPTSTACKSHORTNAME)
values(newid(), @ID, @RECEIPTNUMBER, @GIFTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @RECEIPTSTACKSHORTNAME);
end
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID, @APPEALID, @PAYMENTMETHODCODE, @CREDITTYPECODEID, @CHANGEAGENTID, @GIFTDATE, 0, null, null; --revenue transaction type code for payment is 0
--Add gift fees
exec dbo.USP_PAYMENT_ADDGIFTFEES @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
end
else --Recurring gift where @FREQUENCYCODE <> 255
begin
if @SPLITS is null
raiserror('At least one designation must be specified for a recurring gift.', 13, 1);
if @PAYMENTMETHODCODE not in (2, 3)
raiserror('A recurring gift must be paid by a credit card or direct debit.', 13, 1);
exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 2,@ID,@TRANSACTIONCURRENCYID,0;
if @STARTDATE < @GIFTDATE
raiserror('The schedule cannot start before the gift date.', 13, 1);
insert into dbo.REVENUE(ID, BATCHNUMBER, CONSTITUENTID, DATE, POSTDATE, DONOTRECEIPT, AMOUNT, TRANSACTIONTYPECODE, RECEIPTAMOUNT, FINDERNUMBER, SOURCECODE, GIVENANONYMOUSLY, DONOTACKNOWLEDGE, APPEALID, MAILINGID, CHANNELCODEID, RECEIPTTYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,ORGANIZATIONEXCHANGERATEID,BASEEXCHANGERATEID)
values(@ID, @BATCHNUMBER, @CONSTITUENTID, @GIFTDATE, @GIFTDATE, @DONOTRECEIPT, @BASEAMOUNT, 2, @AMOUNT, @FINDERNUMBER, @SOURCECODE, @ISANONYMOUS, @DONOTACKNOWLEDGE, @APPEALID, @MAILINGID, @CHANNELCODEID, @RECEIPTTYPECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@AMOUNT,@TRANSACTIONCURRENCYID,@ORGANIZATIONEXCHANGERATEID,@BASEEXCHANGERATEID);
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
insert into dbo.REVENUEPAYMENTMETHOD (REVENUEID,PAYMENTMETHODCODE,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values (@ID, @PAYMENTMETHODCODE, @AMOUNT, @CHANGEAGENTID, @CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE);
insert into dbo.REVENUEBBNC(ID, NETCOMMUNITYTRANSACTIONID, NETCOMMUNITYPAGENAME, NETCOMMUNITYPAGEID, NETCOMMUNITYAPPEALID, EMAILID, EMAILNAME, EMAILSUBJECT, ISTEAMFUNDRAISINGOFFLINEGIFT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, @BBNCTRANSACTIONID, @BBNCPAGENAME, @BBNCPAGEID, @BBNCAPPEALID, @EMAILID, @EMAILNAME, @EMAILSUBJECT, @ISTEAMFUNDRAISINGOFFLINEGIFT, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
declare @CREDITCARDID uniqueidentifier
--JamesWill 2009-03-10 WI 27333 When paying by credit card, the credit card must be saved first (so you can shove a CREDITCARDID into REVENUESCHEDULE).
--When paying by direct debit, the schedule must be saved first (so it REVENUESCHEDULEDIRECTDEBIT has a valid Foreign-Table-As-Primary-Key
if @PAYMENTMETHODCODE = 2 -- Credit card
begin
exec dbo.USP_CREDITCARD_SAVE
@ID = @CREDITCARDID output,
@CREDITCARDTOKEN = @CREDITCARDTOKEN,
@CARDHOLDERNAME = @CARDHOLDERNAME,
@CREDITCARDPARTIALNUMBER = @CREDITCARDPARTIALNUMBER,
@CREDITTYPECODEID = @CREDITTYPECODEID,
@EXPIRESON = @EXPIRATIONDATE,
@CHANGEAGENTID = @CHANGEAGENTID,
@CURRENTDATE = @CHANGEDATE
insert into dbo.REVENUESCHEDULE(ID, STARTDATE, ENDDATE, FREQUENCYCODE, NEXTTRANSACTIONDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, CREDITCARDID)
values(@ID, @STARTDATE, @ENDDATE, @FREQUENCYCODE, @STARTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @CREDITCARDID);
end
else if @PAYMENTMETHODCODE = 3 --Direct debit
begin
insert into dbo.REVENUESCHEDULE(ID, STARTDATE, ENDDATE, FREQUENCYCODE, NEXTTRANSACTIONDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, CREDITCARDID)
values(@ID, @STARTDATE, @ENDDATE, @FREQUENCYCODE, @STARTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, null);
insert into dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT
(ID, REFERENCEDATE, REFERENCENUMBER, CONSTITUENTACCOUNTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@ID, '00000000', @REFERENCENUMBER, @ACCOUNTID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
end
--JamesWill 2010-01-05 WI72320 Add installments for recurring gifts, making sure to update the @STARTDATE accordingly. This is now the next transaction date.
if @FREQUENCYCODE = 7 and not (day(@STARTDATE) = 1 or day(@STARTDATE) = 15)
begin
set @STARTDATE = dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE(@FREQUENCYCODE, @STARTDATE);
end
insert into dbo.RECURRINGGIFTINSTALLMENT(ID, REVENUEID, AMOUNT, DATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID,ORGANIZATIONAMOUNT,ORGANIZATIONEXCHANGERATEID,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,BASEEXCHANGERATEID)
values(newid(), @ID, @BASEAMOUNT, @STARTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID,@AMOUNT,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID);
exec dbo.USP_RECURRINGGIFT_ADDMISSINGINSTALLMENTS @ID, @CHANGEAGENTID, @CHANGEDATE, @BASEAMOUNT,null,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@ORGANIZATIONEXCHANGERATEID,@AMOUNT,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID;
set @SPLITS = dbo.UFN_REVENUESPLIT_CONVERTAMOUNTSINXML(@SPLITS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_REVENUE_GETSPLITS_2_ADDFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;
--add categorycode
exec dbo.USP_BBNC_COMMITDONATIONADDCATEGORY @ID, @CATEGORYCODEID, @CHANGEAGENTID, @CHANGEDATE;
--Add gift fees
exec dbo.USP_PAYMENT_ADDGIFTFEES @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
--JamesWill 09/08/2008 Default campaigns on the revenue record based on designations (this MUST be done AFTER splits are added to the revenue)
exec dbo.USP_BBNC_ADDCAMPAIGNSTOREVENUE @ID, @CHANGEAGENTID, @CHANGEDATE,@CAMPAIGNS;
if not @COMMENTS is null and len(@COMMENTS) > 0
insert into dbo.REVENUENOTE(ID, DATEENTERED, TITLE, TEXTNOTE, REVENUENOTETYPECODEID, REVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @GIFTDATE, @NOTETITLE, @COMMENTS, @REVENUENOTETYPECODEID, @ID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
-- Create recognitions for the recurring gift entry
exec dbo.USP_REVENUE_CREATERECOGNITIONS @ID, @CHANGEAGENTID, @CHANGEDATE;
if len(@TRIBUTENOTE) > 0
begin
insert into dbo.REVENUENOTE(ID, DATEENTERED, TITLE, TEXTNOTE, REVENUENOTETYPECODEID, REVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @GIFTDATE, @TRIBUTENOTETITLE, @TRIBUTENOTE, @REVENUENOTETYPECODEID, @ID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
end
if @PROCESSNOW = 1
begin
declare @PAYMENTID uniqueidentifier;
declare @CURRENTTRANSACTIONDATE datetime;
declare @NEXTTRANSACTIONDATE datetime;
set @RECEIPTAMOUNT = @AMOUNT;
set @PAYMENTID = newid();
insert into dbo.REVENUE(ID, BATCHNUMBER, CONSTITUENTID, DATE, TRANSACTIONTYPECODE, POSTDATE, DONOTPOST, DONOTRECEIPT, AMOUNT, RECEIPTAMOUNT, FINDERNUMBER, SOURCECODE, GIVENANONYMOUSLY, APPEALID, DONOTACKNOWLEDGE, MAILINGID, CHANNELCODEID, RECEIPTTYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID,ORGANIZATIONAMOUNT,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,ORGANIZATIONEXCHANGERATEID,BASEEXCHANGERATEID)
values(@PAYMENTID, @BATCHNUMBER, @CONSTITUENTID, @STARTDATE, 0, @STARTDATE, 0, @DONOTRECEIPT, @BASEAMOUNT, @RECEIPTAMOUNT, @FINDERNUMBER, @SOURCECODE, @ISANONYMOUS, @APPEALID, @DONOTACKNOWLEDGE, @MAILINGID, @CHANNELCODEID, @RECEIPTTYPECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @BASECURRENCYID,@ORGANIZATIONAMOUNT,@AMOUNT,@TRANSACTIONCURRENCYID,@ORGANIZATIONEXCHANGERATEID,@BASEEXCHANGERATEID);
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @PAYMENTID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
set @REVENUEPAYMENTMETHODID = newid();
insert into dbo.REVENUEPAYMENTMETHOD (ID,REVENUEID,PAYMENTMETHODCODE,AMOUNT,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values (@REVENUEPAYMENTMETHODID, @PAYMENTID, @PAYMENTMETHODCODE, @AMOUNT, @CHANGEAGENTID, @CHANGEAGENTID,@CHANGEDATE,@CHANGEDATE);
insert into dbo.REVENUEBBNC(ID, NETCOMMUNITYTRANSACTIONID, NETCOMMUNITYPAGENAME, NETCOMMUNITYPAGEID, NETCOMMUNITYAPPEALID, EMAILID, EMAILNAME, EMAILSUBJECT, ISTEAMFUNDRAISINGOFFLINEGIFT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@PAYMENTID, @BBNCTRANSACTIONID, @BBNCPAGENAME, @BBNCPAGEID, @BBNCAPPEALID, @EMAILID, @EMAILNAME, @EMAILSUBJECT, @ISTEAMFUNDRAISINGOFFLINEGIFT, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
exec dbo.USP_REVENUE_ADDPAYMENTDETAILS @ID=@REVENUEPAYMENTMETHODID, @PAYMENTMETHODCODE=@PAYMENTMETHODCODE, @REFERENCENUMBER=@REFERENCENUMBER, @CONSTITUENTACCOUNTID = @ACCOUNTID, @CARDHOLDERNAME=@CARDHOLDERNAME, @CREDITCARDNUMBER=@CREDITCARDPARTIALNUMBER, @CREDITTYPECODEID=@CREDITTYPECODEID, @AUTHORIZATIONCODE=@AUTHORIZATIONCODE, @EXPIRESON=@EXPIRATIONDATE, @CHANGEAGENTID=@CHANGEAGENTID, @CURRENTDATE=@CHANGEDATE, @KEYALREADYOPEN = 1,@BASECURRENCYID=@BASECURRENCYID,@TRANSACTIONCURRENCYID=@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID=@BASEEXCHANGERATEID;
exec dbo.USP_RECURRINGGIFT_ADDPAYMENT
@REVENUEID = @PAYMENTID,
@APPLICATIONID = @ID,
@APPLIEDAMOUNT = @AMOUNT,
@CONSTITUENTID = @CONSTITUENTID,
@DATE = @STARTDATE,
@CREATIONDATE = @CHANGEDATE,
@CHANGEAGENTID = @CHANGEAGENTID;
--JamesWill 09/08/2008 Default campaigns on the revenue record based on designations (this MUST be done AFTER splits are added to the revenue; USP_RECURRINGGIFT_ADDPAYMENT adds the splits)
--JamesWill WI 15209 10/09/2008 USP_RECURRINGGIFT_ADDPAYMENT (above) adds the campaigns based on the recurring gift. So don't try to add them twice.
--exec dbo.USP_BBNC_ADDCAMPAIGNSTOREVENUE @PAYMENTID, @CHANGEAGENTID, @CHANGEDATE,@CAMPAIGNS;
if not @COMMENTS is null and len(@COMMENTS) > 0
insert into dbo.REVENUENOTE(ID, DATEENTERED, TITLE, TEXTNOTE, REVENUENOTETYPECODEID, REVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @GIFTDATE, @NOTETITLE, @COMMENTS, @REVENUENOTETYPECODEID, @PAYMENTID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
--add percent and unit value benefits
exec dbo.USP_REVENUEBENEFITS_ADDBENEFITS @PAYMENTID, @RECEIPTAMOUNT output
--after calculating the benefits update the revenue tables new receipt amount.
if not @RECEIPTAMOUNT = @AMOUNT
update dbo.REVENUE set
RECEIPTAMOUNT = @RECEIPTAMOUNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @PAYMENTID
--If any marketing information is null, try to default based on applications
if @SOURCECODE is null or @SOURCECODE = '' or @MAILINGID is null or @APPEALID is null
exec dbo.USP_REVENUE_DEFAULTMARKETINGINFORMATION @ID, @CHANGEAGENTID, @CHANGEDATE;
exec dbo.USP_PDACCOUNTSYSTEM_LINKTOREVENUE
@ID = @PAYMENTID,
@PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
@CHANGEDATE = @CHANGEDATE,
@CHANGEAGENTID = @CHANGEAGENTID
--Save the GL distributions
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @PAYMENTID, @CHANGEAGENTID, @CHANGEDATE;
if @MARKRECEIPTED = 1
begin
insert into dbo.REVENUERECEIPT(ID, REVENUEID, RECEIPTNUMBER, RECEIPTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, RECEIPTSTACKSHORTNAME)
values(newid(), @PAYMENTID, @RECEIPTNUMBER, @GIFTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @RECEIPTSTACKSHORTNAME);
end
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @PAYMENTID,
@APPEALID,
@PAYMENTMETHODCODE,
@CREDITTYPECODEID,
@CHANGEAGENTID,
@GIFTDATE,
0, --revenue transaction type code for payment is 0
null,
null;
--Add gift fees
exec dbo.USP_PAYMENT_ADDGIFTFEES @PAYMENTID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
end
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID,
@APPEALID,
@PAYMENTMETHODCODE,
@CREDITTYPECODEID,
@CHANGEAGENTID,
@GIFTDATE,
2, --revenue transaction type code for recurring gift is 2
null,
null;
end
--Create any declarations if gift was marked for Gift Aid
if (@GIFTAID = 1 and dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568a6c2-f7aa-45fd-8f54-21fe9654ee2d') = 1)
begin
insert into dbo.TAXDECLARATION(
ID,
CONSTITUENTID,
CHARITYCLAIMREFERENCENUMBERID,
DECLARATIONINDICATORCODE,
PAYSTAXCODE,
DECLARATIONSTARTS,
DECLARATIONENDS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
newid(),
@CONSTITUENTID,
dbo.UFN_CHARITYCLAIMREFERENCENUMBER_GETBYSITE(SITES.SITEID),
2, --Internet Source Code
1, --Pays Tax
dbo.UFN_DATE_GETEARLIESTTIME(@GIFTDATE),
null, --Open-ended tax declaration
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from
UFN_REVENUE_GETSPLITS_FROMITEMLISTXML(@SPLITS) as SPLITS
left join dbo.REVENUESPLIT on
SPLITS.DESIGNATIONID = REVENUESPLIT.DESIGNATIONID
cross apply(select SITEID from dbo.UFN_SITEID_MAPFROM_REVENUESPLITID(REVENUESPLIT.ID)) as SITES
left join dbo.TAXDECLARATION on
(TAXDECLARATION.CHARITYCLAIMREFERENCENUMBERID = dbo.UFN_CHARITYCLAIMREFERENCENUMBER_GETBYSITE(SITES.SITEID)) and
(TAXDECLARATION.CONSTITUENTID = @CONSTITUENTID) and
(@CHANGEDATE between TAXDECLARATION.DECLARATIONSTARTS and isnull(TAXDECLARATION.DECLARATIONENDS, @CHANGEDATE))
where
TAXDECLARATION.ID is null
group by
dbo.UFN_CHARITYCLAIMREFERENCENUMBER_GETBYSITE(SITES.SITEID)
exec dbo.USP_REVENUETRIBUTETAXCLAIMAMOUNT_ADDUPDATEBYCONSTITUENT @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
end
--update the constituent origin information
declare @INFOSOURCECODEID uniqueidentifier;
select top (1)
@INFOSOURCECODEID = [INFOSOURCECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
if @INFOSOURCECODEID is not null
begin
exec dbo.USP_DATAFORMTEMPLATE_EDIT_CONSTITUENTORIGIN @ID = @CONSTITUENTID,
@CHANGEAGENTID=@CHANGEAGENTID,
@INFOSOURCECODEID = @INFOSOURCECODEID,
@REVENUEID = @ID
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;