USP_BBNC_COMMITMEMBERSHIPADDREVENUE
Adds a revenue record for a Blackbaud Internet Solutions membership.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@BATCHNUMBER | nvarchar(100) | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@GIFTDATE | datetime | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@AUTHORIZATIONCODE | nvarchar(100) | IN | |
@CREDITCARDNUMBER | nvarchar(100) | IN | |
@EXPIRATIONDATE | UDT_FUZZYDATE | IN | |
@REFERENCENUMBER | nvarchar(100) | IN | |
@ISANONYMOUS | bit | IN | |
@ACCOUNTID | uniqueidentifier | IN | |
@NOTETITLE | nvarchar(100) | IN | |
@COMMENTS | nvarchar(max) | IN | |
@BBNCTRANSACTIONID | int | IN | |
@BBNCPAGENAME | nvarchar(50) | IN | |
@BBNCPAGEID | int | IN | |
@MARKRECEIPTED | bit | IN | |
@FINDERNUMBER | bigint | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@RECEIPTNUMBER | int | IN | |
@ISOCODE | nvarchar(3) | IN | |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITMEMBERSHIPADDREVENUE
(
@ID uniqueidentifier = null output,
@BATCHNUMBER nvarchar(100),
@CONSTITUENTID uniqueidentifier,
@AMOUNT money,
@GIFTDATE datetime,
@PAYMENTMETHODCODE tinyint,
@CREDITTYPECODEID uniqueidentifier,
@CARDHOLDERNAME nvarchar(255),
@AUTHORIZATIONCODE nvarchar(100),
@CREDITCARDNUMBER nvarchar(100),
@EXPIRATIONDATE dbo.UDT_FUZZYDATE = '00000000',
@REFERENCENUMBER nvarchar(100),
@ISANONYMOUS bit = 0,
@ACCOUNTID uniqueidentifier,
@NOTETITLE nvarchar(100),
@COMMENTS nvarchar(max),
@BBNCTRANSACTIONID int,
@BBNCPAGENAME nvarchar(50),
@BBNCPAGEID int,
@MARKRECEIPTED bit = 0,
@FINDERNUMBER bigint = 0,
@CHANGEAGENTID uniqueidentifier,
@CHANGEDATE datetime,
@RECEIPTNUMBER int = 0,
@ISOCODE nvarchar(3) = '',
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
begin try
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
if @ID is null
set @ID = newid();
if @PAYMENTMETHODCODE <> 2 and @PAYMENTMETHODCODE <> 3
raiserror('ERR_INVALID_PAYMETHOD', 13, 1);
if @AMOUNT < 0
raiserror('ERR_AMOUNT_LESSTHANZERO', 13, 1);
-- if this household can't be a donor, raise an error
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 @REVENUENOTETYPECODEID uniqueidentifier;
declare @CHANNELCODEID uniqueidentifier;
if (@PDACCOUNTSYSTEMID is null)
set @PDACCOUNTSYSTEMID = dbo.UFN_PDACCOUNTSYSTEM_GETDEFAULTSYSTEMIDSFORUSER(@CURRENTAPPUSERID)
if (@PDACCOUNTSYSTEMID is null)
set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B'
-- 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.
select @BASECURRENCYID = CURRENCYSET.BASECURRENCYID from dbo.PDACCOUNTSYSTEM
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
where PDACCOUNTSYSTEM.ID = @PDACCOUNTSYSTEMID
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 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
select top 1
@REVENUENOTETYPECODEID = REVENUENOTETYPECODEID,
@CHANNELCODEID = CHANNELCODEID
from dbo.NETCOMMUNITYDEFAULTCODEMAP;
declare @RECEIPTAMOUNT money;
set @RECEIPTAMOUNT = @AMOUNT;
declare @CONSTITUENTIDFROMFINDERNUMBER uniqueidentifier;
declare @MAILINGID uniqueidentifier;
declare @SOURCECODE nvarchar(50);
declare @APPEALID uniqueidentifier;
exec dbo.[USP_BBNC_BATCH_FINDERNUMBERLOOKUP] @FINDERNUMBER, @CONSTITUENTIDFROMFINDERNUMBER output, @MAILINGID output, @SOURCECODE output, @APPEALID output;
if @CONSTITUENTIDFROMFINDERNUMBER is not null
if @CONSTITUENTID <> @CONSTITUENTIDFROMFINDERNUMBER
set @FINDERNUMBER = 0;
insert into dbo.REVENUE(ID, BATCHNUMBER, CONSTITUENTID, DATE, AMOUNT, TRANSACTIONTYPECODE, RECEIPTAMOUNT, SOURCECODE, APPEALID, BENEFITSWAIVED, GIVENANONYMOUSLY, MAILINGID, CHANNELCODEID, DONOTACKNOWLEDGE, DONOTRECEIPT, DONOTPOST, POSTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,BASECURRENCYID,ORGANIZATIONAMOUNT,TRANSACTIONAMOUNT,TRANSACTIONCURRENCYID,ORGANIZATIONEXCHANGERATEID,BASEEXCHANGERATEID,FINDERNUMBER)
values(@ID, @BATCHNUMBER, @CONSTITUENTID, @GIFTDATE, @BASEAMOUNT, 0, @RECEIPTAMOUNT, @SOURCECODE, @APPEALID, 0, @ISANONYMOUS, @MAILINGID, @CHANNELCODEID, 0, 0, 0, @GIFTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE,@BASECURRENCYID,@ORGANIZATIONAMOUNT,@AMOUNT,@TRANSACTIONCURRENCYID,@ORGANIZATIONEXCHANGERATEID,@BASEEXCHANGERATEID,@FINDERNUMBER);
--Add origination source
exec dbo.USP_REVENUE_ADDORIGIN @ID, @CONSTITUENTID, @CHANGEAGENTID, @CHANGEDATE;
declare @REVENUEPAYMETHODID uniqueidentifier;
set @REVENUEPAYMETHODID = newid();
insert into dbo.REVENUEPAYMENTMETHOD(ID, REVENUEID, PAYMENTMETHODCODE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(@REVENUEPAYMETHODID, @ID, @PAYMENTMETHODCODE, @AMOUNT, @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, null, 0, '', '', 0, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
declare @CREDITCARDPARTIALNUMBER nvarchar(4)
if len(@CREDITCARDNUMBER)>4
set @CREDITCARDPARTIALNUMBER = right(@CREDITCARDNUMBER,4)
else
set @CREDITCARDPARTIALNUMBER = @CREDITCARDNUMBER
--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;
select @BBNCTRANSACTIONGUID = TransactionGUID
from dbo.MembershipTransactions
where ID = @BBNCTRANSACTIONID;
exec dbo.USP_REVENUE_ADDPAYMENTDETAILS @ID=@REVENUEPAYMETHODID, @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,@TRANSACTIONID=@BBNCTRANSACTIONGUID;
if not @COMMENTS is null and len(@COMMENTS) > 0
insert into dbo.REVENUENOTE(ID, REVENUEID, DATEENTERED, TITLE, TEXTNOTE, REVENUENOTETYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @ID, @GIFTDATE, @NOTETITLE, @COMMENTS, @REVENUENOTETYPECODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
if @MARKRECEIPTED = 1
insert into dbo.REVENUERECEIPT(ID, REVENUEID, RECEIPTNUMBER, RECEIPTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values(newid(), @ID, @RECEIPTNUMBER, @GIFTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);
-- Add Original Payment
exec dbo.USP_PAYMENT_ADDORIGINALAMOUNT @ID, @CHANGEAGENTID, @CHANGEDATE;
exec dbo.USP_PDACCOUNTSYSTEM_LINKTOREVENUE
@ID = @ID,
@PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
@CHANGEDATE = @CHANGEDATE,
@CHANGEAGENTID = @CHANGEAGENTID
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID,
null,
@PAYMENTMETHODCODE,
@CREDITTYPECODEID,
@CHANGEAGENTID,
@GIFTDATE,
0, --revenue transaction type code for payment is 0
null,
null;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;