USP_PAYMENT_ADJUST
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN | |
@DATE | datetime | IN | |
@AMOUNT | money | IN | |
@RECEIPTAMOUNT | money | IN | |
@REVENUESTREAMS | xml | IN | |
@SOURCECODE | nvarchar(50) | IN | |
@APPEALID | uniqueidentifier | IN | |
@BENEFITS | xml | IN | |
@BENEFITSWAIVED | bit | IN | |
@GIVENANONYMOUSLY | bit | IN | |
@MAILINGID | uniqueidentifier | IN | |
@CHANNELCODEID | uniqueidentifier | IN | |
@DONOTRECEIPT | bit | IN | |
@REFERENCE | nvarchar(255) | IN | |
@DONOTACKNOWLEDGE | bit | IN | |
@SPLITSDECLININGGIFTAID | xml | INOUT | |
@PERCENTAGEBENEFITS | xml | INOUT | |
@GIFTAIDSPONSORSHIPSPLITS | xml | INOUT | |
@BASEEXCHANGERATEID | uniqueidentifier | INOUT | |
@EXCHANGERATE | decimal(20, 8) | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@BENEFITSADJUSTMENTID | uniqueidentifier | IN | |
@ADJUSTMENTPOSTDATE | datetime | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@ORIGINALPAYMETHODID | uniqueidentifier | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@CHECKNUMBER | nvarchar(20) | IN | |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | |
@REFERENCEDATE | UDT_FUZZYDATE | IN | |
@REFERENCENUMBER | nvarchar(20) | IN | |
@CARDHOLDERNAME | nvarchar(255) | IN | |
@CREDITCARDNUMBER | nvarchar(4) | IN | |
@CREDITTYPECODEID | uniqueidentifier | IN | |
@AUTHORIZATIONCODE | nvarchar(20) | IN | |
@EXPIRESON | UDT_FUZZYDATE | IN | |
@ISSUER | nvarchar(100) | IN | |
@NUMBEROFUNITS | decimal(20, 3) | IN | |
@SYMBOL | nvarchar(25) | IN | |
@MEDIANPRICE | decimal(19, 4) | IN | |
@PROPERTYSUBTYPECODEID | uniqueidentifier | IN | |
@GIFTINKINDSUBTYPECODEID | uniqueidentifier | IN | |
@KEYALREADYOPEN | bit | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | |
@DIRECTDEBITRESULTCODE | nvarchar(10) | IN | |
@LOWPRICE | decimal(19, 4) | IN | |
@HIGHPRICE | decimal(19, 4) | IN | |
@SALEDATE | datetime | IN | |
@SALEAMOUNT | money | IN | |
@BROKERFEE | money | IN | |
@SALEPOSTDATE | datetime | IN | |
@SALEPOSTSTATUSCODE | tinyint | IN | |
@GIFTINKINDITEMNAME | nvarchar(100) | IN | |
@GIFTINKINDDISPOSITIONCODE | tinyint | IN | |
@GIFTINKINDNUMBEROFUNITS | int | IN | |
@GIFTINKINDFAIRMARKETVALUE | money | IN | |
@DIRECTDEBITISREJECTED | bit | IN | |
@ORIGINALPAYMENTMETHODCODE | tinyint | IN | |
@ORIGINALVENDORID | nvarchar(50) | IN | |
@ORIGINALTRANSACTIONID | uniqueidentifier | IN | |
@SEPAMANDATEID | uniqueidentifier | IN | |
@OVERRIDESAVEDVENDORID | bit | IN | |
@OVERRIDESAVEDBBPSTRANSACTIONID | bit | IN | |
@OVERRIDESAVEDSEPAMANDATEID | bit | IN | |
@OLDSPOTRATEID | uniqueidentifier | INOUT |
Definition
Copy
CREATE procedure [dbo].[USP_PAYMENT_ADJUST] (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime,
@DATE datetime,
@AMOUNT money,
@RECEIPTAMOUNT money,
@REVENUESTREAMS xml,
@SOURCECODE nvarchar(50),
@APPEALID uniqueidentifier,
@BENEFITS xml,
@BENEFITSWAIVED bit,
@GIVENANONYMOUSLY bit,
@MAILINGID uniqueidentifier,
@CHANNELCODEID uniqueidentifier,
@DONOTRECEIPT bit,
@REFERENCE nvarchar(255),
@DONOTACKNOWLEDGE bit = 0,
@SPLITSDECLININGGIFTAID xml = null output,
@PERCENTAGEBENEFITS xml = null output,
@GIFTAIDSPONSORSHIPSPLITS xml = null output,
@BASEEXCHANGERATEID uniqueidentifier = null output,
@EXCHANGERATE decimal(20, 8) = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@BENEFITSADJUSTMENTID uniqueidentifier = null,
@ADJUSTMENTPOSTDATE datetime = null,
@PAYMENTMETHODCODE tinyint,
@ORIGINALPAYMETHODID uniqueidentifier,
@CHECKDATE dbo.UDT_FUZZYDATE,
@CHECKNUMBER nvarchar(20),
@CONSTITUENTACCOUNTID uniqueidentifier,
@REFERENCEDATE dbo.UDT_FUZZYDATE,
@REFERENCENUMBER nvarchar(20),
@CARDHOLDERNAME nvarchar(255),
@CREDITCARDNUMBER nvarchar(4),
@CREDITTYPECODEID uniqueidentifier,
@AUTHORIZATIONCODE nvarchar(20),
@EXPIRESON dbo.UDT_FUZZYDATE,
@ISSUER nvarchar(100),
@NUMBEROFUNITS decimal(20,3),
@SYMBOL nvarchar(25),
@MEDIANPRICE decimal(19,4),
@PROPERTYSUBTYPECODEID uniqueidentifier,
@GIFTINKINDSUBTYPECODEID uniqueidentifier,
@KEYALREADYOPEN bit,
@OTHERPAYMENTMETHODCODEID uniqueidentifier,
@DIRECTDEBITRESULTCODE nvarchar(10),
@LOWPRICE decimal(19,4),
@HIGHPRICE decimal(19,4),
@SALEDATE datetime = null,
@SALEAMOUNT money = null,
@BROKERFEE money = null,
@SALEPOSTDATE datetime = null,
@SALEPOSTSTATUSCODE tinyint = null,
@GIFTINKINDITEMNAME nvarchar(100),
@GIFTINKINDDISPOSITIONCODE tinyint,
@GIFTINKINDNUMBEROFUNITS int,
@GIFTINKINDFAIRMARKETVALUE money,
@DIRECTDEBITISREJECTED bit,
@ORIGINALPAYMENTMETHODCODE tinyint,
@ORIGINALVENDORID nvarchar(50),
@ORIGINALTRANSACTIONID uniqueidentifier,
@SEPAMANDATEID uniqueidentifier,
@OVERRIDESAVEDVENDORID bit,
@OVERRIDESAVEDBBPSTRANSACTIONID bit,
@OVERRIDESAVEDSEPAMANDATEID bit,
@OLDSPOTRATEID uniqueidentifier = null output
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CURRENTDATE is null
set @CURRENTDATE = GetDate();
declare @CONSTITUENTID uniqueidentifier;
declare @ORIGINALGIVENANONYMOUSLY bit;
declare @ORGANIZATIONAMOUNT money;
declare @BASEAMOUNT money;
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @PREVIOUSDATE datetime;
declare @PREVIOUSDONOTRECEIPT bit;
declare @PREVIOUSRECEIPTAMOUNT money;
begin try
if @AMOUNT < 0
raiserror (
'BBERR_NEGATIVEAMOUNT.'
,13
,1
);
-- check to see if amount or receipt amount have changed
declare @FIELDCHANGED bit;
declare @AMOUNTCHANGED bit;
set @FIELDCHANGED = 0;
if (
select count(FINANCIALTRANSACTION.ID)
from dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
where FINANCIALTRANSACTION.ID = @ID
and FINANCIALTRANSACTION.BASEAMOUNT = @AMOUNT
and REVENUE_EXT.RECEIPTAMOUNT = @RECEIPTAMOUNT
and FINANCIALTRANSACTION.DELETEDON is null
) = 0
set @FIELDCHANGED = 1;
set @AMOUNTCHANGED = @FIELDCHANGED;
-- check to see if designations have changed
if @FIELDCHANGED = 0
if dbo.UFN_CHECKDETAIL_STREAMSCHANGED(@ID, @REVENUESTREAMS) = 1
set @FIELDCHANGED = 1;
-- if a field has changed, determine if the revenue needs to be re-receipted or re-acknowledged
if @FIELDCHANGED = 1
begin
declare @OLDDESIGNATIONS table (DESIGNATIONID uniqueidentifier);
declare @DESIGNATIONS table (DESIGNATIONID uniqueidentifier);
declare @OLDGIFTFIELDS xml;
declare @GIFTFIELDS xml;
set @OLDGIFTFIELDS = dbo.[UFN_REVENUE_GETAPPLICATIONS_TOITEMLISTXML](@ID)
set @GIFTFIELDS = (
select [GIFTFIELDS]
from dbo.[UFN_REVENUE_GETAPPLICATIONS_FROMXML](@REVENUESTREAMS)
for xml raw('ITEM')
,type
,elements
,root('REVENUESTREAMS')
,binary BASE64
)
insert into @OLDDESIGNATIONS (DESIGNATIONID)
select T.c.value('(DESIGNATIONID)[1]', 'uniqueidentifier') as DESIGNATIONID
from @OLDGIFTFIELDS.nodes('REVENUESTREAMS/ITEM/GIFTFIELDS/ITEM') T(c)
insert into @DESIGNATIONS (DESIGNATIONID)
select T.c.value('(DESIGNATIONID)[1]', 'uniqueidentifier') as DESIGNATIONID
from @GIFTFIELDS.nodes('REVENUESTREAMS/ITEM/GIFTFIELDS/GIFTFIELDS/ITEM') T(c)
if (
select count(*)
from @DESIGNATIONS [DES]
inner join dbo.DESIGNATION on [DES].DESIGNATIONID = DESIGNATION.ID
where DESIGNATION.ISACTIVE = 0
and [DES].DESIGNATIONID not in (
select DESIGNATIONID
from @OLDDESIGNATIONS
)
) > 0
raiserror (
'Revenue cannot be added to inactive designations.'
,13
,2
);
exec dbo.USP_REVENUE_UPDATERERECEIPTS @ID
,@CHANGEAGENTID
,@CURRENTDATE;
exec dbo.USP_REVENUELETTER_SETREACKNOWLEDGEMENTS @ID
,@CHANGEAGENTID
,@CURRENTDATE;
end
select @CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID
,@TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID
,@BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID)
,@OLDSPOTRATEID = case
when CURRENCYEXCHANGERATE.TYPECODE = 2
and not (
@BASEEXCHANGERATEID = CURRENCYEXCHANGERATE.ID
or (
@BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
and @EXCHANGERATE = CURRENCYEXCHANGERATE.RATE
)
)
then CURRENCYEXCHANGERATE.ID
else null
end
,@PREVIOUSDATE = cast(FINANCIALTRANSACTION.date as datetime)
,@PREVIOUSDONOTRECEIPT = REVENUE_EXT.DONOTRECEIPT
,@PREVIOUSRECEIPTAMOUNT = REVENUE_EXT.RECEIPTAMOUNT
from dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
left join dbo.CURRENCYEXCHANGERATE on FINANCIALTRANSACTION.BASEEXCHANGERATEID = CURRENCYEXCHANGERATE.ID
where FINANCIALTRANSACTION.ID = @ID
and FINANCIALTRANSACTION.DELETEDON is null;
--If the record uses a new spot rate, create it and set the rate ID.
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
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT
,@DATE
,@BASECURRENCYID
,@BASEEXCHANGERATEID
,@TRANSACTIONCURRENCYID
,@BASEAMOUNT output
,@ORGANIZATIONCURRENCYID output
,@ORGANIZATIONAMOUNT output
,@ORGANIZATIONEXCHANGERATEID output
,1;
/*This assumes one paymethod row and will have to be changed in CASSI for Tenders*/
update dbo.REVENUEPAYMENTMETHOD
set AMOUNT = @BASEAMOUNT
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
where REVENUEPAYMENTMETHOD.REVENUEID = @ID;
select @ORIGINALGIVENANONYMOUSLY = REVENUE_EXT.GIVENANONYMOUSLY
from dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
where FINANCIALTRANSACTION.ID = @ID;
if @AMOUNTCHANGED = 1
-- make sure we aren't trying to modify revenue in a locked/closed deposit/bank
exec dbo.USP_EDIT_REVENUE_VALIDATE_DEPOSIT_STATUS @ID;
if @RECEIPTAMOUNT < 0
raiserror (
'CK_REVENUE_RECEIPTAMOUNTNOTNEGATIVE'
,16
,1
);
--Update Transaction
update dbo.FINANCIALTRANSACTION
set date = @DATE
,BASEAMOUNT = @BASEAMOUNT
,TRANSACTIONAMOUNT = @AMOUNT
,ORGAMOUNT = @ORGANIZATIONAMOUNT
,ORGEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID
,BASEEXCHANGERATEID = @BASEEXCHANGERATEID
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
where ID = @ID
update dbo.REVENUE_EXT
set RECEIPTAMOUNT = @RECEIPTAMOUNT
,SOURCECODE = @SOURCECODE
,APPEALID = @APPEALID
,GIVENANONYMOUSLY = @GIVENANONYMOUSLY
,DONOTRECEIPT = @DONOTRECEIPT
,BENEFITSWAIVED = @BENEFITSWAIVED
,MAILINGID = @MAILINGID
,DONOTACKNOWLEDGE = @DONOTACKNOWLEDGE
,CHANNELCODEID = @CHANNELCODEID
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
,REFERENCE = isnull(@REFERENCE, '')
where ID = @ID
if not (
@REFERENCE is null
or len(@REFERENCE) = 0
)
begin
--update revenue gl reference as well
--if exists(select top 1 ID from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID )
if exists (
select 1
from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.DELETEDON is not null
and JOURNALENTRY_EXT.TABLENAMECODE = 1
and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
)
begin
if @REFERENCE is not null
and len(@REFERENCE) > 0
update dbo.JOURNALENTRY
set COMMENT = case
when len(isnull(BANKACCOUNTTRANSACTION.DESCRIPTION, '')) > 0
and JOURNALENTRY.TRANSACTIONTYPECODE = 0
then BANKACCOUNTTRANSACTION.DESCRIPTION
else @REFERENCE
end
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT on BANKACCOUNTDEPOSITPAYMENT.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join dbo.BANKACCOUNTTRANSACTION_EXT on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION_EXT.ID
left join dbo.FINANCIALTRANSACTION as BANKACCOUNTTRANSACTION on BANKACCOUNTTRANSACTION_EXT.ID = BANKACCOUNTTRANSACTION.ID
left join dbo.BANKACCOUNT on BANKACCOUNT.ID = BANKACCOUNTTRANSACTION_EXT.BANKACCOUNTID
left join dbo.DEPOSITGLDISTRIBUTIONLINK on DEPOSITGLDISTRIBUTIONLINK.ID = JOURNALENTRY.ID
left join dbo.INSTALLMENTSPLITPAYMENT as ISP on ISP.PAYMENTID = FINANCIALTRANSACTIONLINEITEM.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and (
isnull(ISP.ID, BANKACCOUNTTRANSACTION_EXT.ID) is null
or (
JOURNALENTRY.TYPECODE = 0
and JOURNALENTRY.TRANSACTIONTYPECODE = 1
and JOURNALENTRY.TRANSACTIONCURRENCYID = ISNULL(ISP.APPLICATIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
or (
JOURNALENTRY.TYPECODE = 0
and JOURNALENTRY.TRANSACTIONTYPECODE = 0
and len(isnull(BANKACCOUNTTRANSACTION.DESCRIPTION, '')) = 0
and JOURNALENTRY.TRANSACTIONCURRENCYID = isnull(BANKACCOUNT.TRANSACTIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
or (
JOURNALENTRY.TYPECODE = 1
and DEPOSITGLDISTRIBUTIONLINK.ID is not null
and JOURNALENTRY.TRANSACTIONTYPECODE = 0
and JOURNALENTRY.TRANSACTIONCURRENCYID = isnull(BANKACCOUNT.TRANSACTIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
or (
JOURNALENTRY.TYPECODE = 1
and ISP.ID is not null
and JOURNALENTRY.TRANSACTIONTYPECODE = 1
and JOURNALENTRY.TRANSACTIONCURRENCYID = isnull(ISP.APPLICATIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
);
else
update dbo.JOURNALENTRY
set COMMENT = case
when len(isnull(BANKACCOUNTTRANSACTION.DESCRIPTION, '')) > 0
and JOURNALENTRY.TRANSACTIONTYPECODE = 0
then BANKACCOUNTTRANSACTION.DESCRIPTION
else dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE(FINANCIALTRANSACTIONLINEITEM.ID, REVENUEPAYMENTMETHOD.PAYMENTMETHOD, case REVENUESPLIT_EXT.APPLICATIONCODE
when 2
then case PLEDGE.POSTSTATUSCODE
when 3
then 'Pledge Payment for non-bookable pledges'
else 'Pledge Payment for bookable pledges'
end
else REVENUESPLIT_EXT.APPLICATION
end)
end
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID
inner join dbo.REVENUEPAYMENTMETHOD on FINANCIALTRANSACTION.ID = REVENUEPAYMENTMETHOD.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT on BANKACCOUNTDEPOSITPAYMENT.ID = FINANCIALTRANSACTION.ID
left join dbo.BANKACCOUNTTRANSACTION_EXT on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION_EXT.ID
left join dbo.FINANCIALTRANSACTION as BANKACCOUNTTRANSACTION on BANKACCOUNTTRANSACTION_EXT.ID = BANKACCOUNTTRANSACTION.ID
left join dbo.BANKACCOUNT on BANKACCOUNT.ID = BANKACCOUNTTRANSACTION_EXT.BANKACCOUNTID
left join dbo.INSTALLMENTSPLITPAYMENT as ISP on ISP.PAYMENTID = FINANCIALTRANSACTIONLINEITEM.ID
left join dbo.FINANCIALTRANSACTION as PLEDGE on ISP.PLEDGEID = PLEDGE.ID
where FINANCIALTRANSACTION.ID = @ID
and (
isnull(ISP.ID, BANKACCOUNTTRANSACTION.ID) is null
or (
JOURNALENTRY.TYPECODE = 0
and JOURNALENTRY.TRANSACTIONTYPECODE = 1
and JOURNALENTRY.TRANSACTIONCURRENCYID = ISNULL(ISP.APPLICATIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
or (
JOURNALENTRY.TYPECODE = 0
and JOURNALENTRY.TRANSACTIONTYPECODE = 0
and len(isnull(BANKACCOUNTTRANSACTION.DESCRIPTION, '')) = 0
and JOURNALENTRY.TRANSACTIONCURRENCYID = isnull(BANKACCOUNT.TRANSACTIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
or (
JOURNALENTRY.TYPECODE = 1
and JOURNALENTRY.TRANSACTIONTYPECODE = 0
and JOURNALENTRY.TRANSACTIONCURRENCYID = isnull(BANKACCOUNT.TRANSACTIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
or (
JOURNALENTRY.TYPECODE = 1
and ISP.ID is not null
and JOURNALENTRY.TRANSACTIONTYPECODE = 1
and JOURNALENTRY.TRANSACTIONCURRENCYID = isnull(ISP.APPLICATIONCURRENCYID, JOURNALENTRY.TRANSACTIONCURRENCYID)
)
)
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 1
and FINANCIALTRANSACTION.TYPECODE != 2
and FINANCIALTRANSACTION.TYPECODE != 3;
end
end
-- update 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);
if dbo.UFN_CHECKDETAIL_BENEFITSCHANGEDFORGL(@ID, @TOTALBENEFITS) = 1
begin
exec dbo.USP_REVENUE_GETBENEFITS_5_UPDATEFROMXML @ID
,@TOTALBENEFITS
,@CHANGEAGENTID
,@CURRENTDATE
,@BENEFITSADJUSTMENTID
,@ADJUSTMENTPOSTDATE;
end
--Error if an exchange rate isn't entered, but the transaction and base currencies are different,
-- and the payment is for anything other than a donation, other, Miscellaneous, or unapplied MG.
if @BASEEXCHANGERATEID is null
and @TRANSACTIONCURRENCYID <> @BASECURRENCYID
begin
if exists (
select 1
from dbo.UFN_REVENUE_GETAPPLICATIONS_FROMXML(@REVENUESTREAMS)
where not (
APPLICATIONCODE in (
0
,4
,11
,100
)
)
)
begin
raiserror (
'BBERR_INVALIDAPPLICATIONSWITHNORATE : Payments without an exchange rate can only be applied to the donation, other, or unapplied matching gift application types.'
,13
,1
);
return 1;
end
end
update dbo.REVENUEPAYMENTMETHOD
set
PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ORIGINALPAYMETHODID
exec dbo.USP_REVENUE_UPDATEPAYMENTDETAILS
@PAYMENTMETHODID = @ORIGINALPAYMETHODID,
@PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
@CHECKDATE = @CHECKDATE,
@CHECKNUMBER = @CHECKNUMBER,
@CONSTITUENTACCOUNTID = @CONSTITUENTACCOUNTID,
@REFERENCEDATE = @REFERENCEDATE,
@REFERENCENUMBER = @REFERENCENUMBER,
@CARDHOLDERNAME = @CARDHOLDERNAME,
@CREDITCARDNUMBER = @CREDITCARDNUMBER,
@CREDITTYPECODEID = @CREDITTYPECODEID,
@AUTHORIZATIONCODE = @AUTHORIZATIONCODE,
@EXPIRESON = @EXPIRESON,
@ISSUER = @ISSUER,
@NUMBEROFUNITS = @NUMBEROFUNITS,
@SYMBOL = @SYMBOL,
@MEDIANPRICE = @MEDIANPRICE,
@PROPERTYSUBTYPECODEID = @PROPERTYSUBTYPECODEID,
@GIFTINKINDSUBTYPECODEID = @GIFTINKINDSUBTYPECODEID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @CURRENTDATE,
@KEYALREADYOPEN = @KEYALREADYOPEN,
@OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID,
@DIRECTDEBITRESULTCODE = @DIRECTDEBITRESULTCODE,
@LOWPRICE = @LOWPRICE,
@HIGHPRICE = @HIGHPRICE,
@SALEDATE = @SALEDATE,
@SALEAMOUNT = @SALEAMOUNT,
@BROKERFEE = @BROKERFEE,
@SALEPOSTDATE = @SALEPOSTDATE,
@SALEPOSTSTATUSCODE = @SALEPOSTSTATUSCODE,
@REVENUEAMOUNT = @AMOUNT,
@GIFTINKINDITEMNAME = @GIFTINKINDITEMNAME,
@GIFTINKINDDISPOSITIONCODE = @GIFTINKINDDISPOSITIONCODE,
@GIFTINKINDNUMBEROFUNITS = @GIFTINKINDNUMBEROFUNITS,
@GIFTINKINDFAIRMARKETVALUE = @GIFTINKINDFAIRMARKETVALUE,
@DIRECTDEBITISREJECTED = @DIRECTDEBITISREJECTED,
@BASECURRENCYID = @BASECURRENCYID,
@TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
@ORIGINALPAYMENTMETHODCODE = @ORIGINALPAYMENTMETHODCODE,
@VENDORID = @ORIGINALVENDORID,
@BBPSTRANSACTIONID = @ORIGINALTRANSACTIONID,
@SEPAMANDATEID = @SEPAMANDATEID,
@OVERRIDESAVEDVENDORID = @OVERRIDESAVEDVENDORID,
@OVERRIDESAVEDBBPSTRANSACTIONID = @OVERRIDESAVEDBBPSTRANSACTIONID,
@OVERRIDESAVEDSEPAMANDATEID = @OVERRIDESAVEDSEPAMANDATEID;
-- update streams
exec dbo.USP_REVENUE_UPDATEREVENUESTREAMS @ID
,@CONSTITUENTID
,@DATE
,@REVENUESTREAMS
,@CHANGEAGENTID
,@CURRENTDATE
,@SPLITSDECLININGGIFTAID output
,@ORIGINALGIVENANONYMOUSLY
,@GIFTAIDSPONSORSHIPSPLITS output
,@PREVIOUSDATE
,@PREVIOUSDONOTRECEIPT
,@PREVIOUSRECEIPTAMOUNT;
if @AMOUNT <> (
select sum(FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT)
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONID = @ID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
)
raiserror (
'BBERR_ALLMONEYNOTAPPLIED'
,13
,1
);
if (
select count(*)
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONID = @ID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
) = 0
raiserror (
'BBERR_NOAPPLICATIONS'
,13
,1
);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;