USP_DATAFORMTEMPLATE_EDIT_MATCHINGGIFTPAYMENTADJUST
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@REVENUESTREAMS | xml | IN | |
@REMOVEDREVENUESTREAMS | xml | IN | |
@MATCHINGGIFTCLAIMSPLITS | xml | IN | |
@ADJUSTMENTDATE | datetime | IN | |
@ADJUSTMENTPOSTDATE | datetime | IN | |
@ADJUSTMENTREASON | nvarchar(300) | IN | |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | |
@ADJUSTMENTPOSTSTATUSCODE | tinyint | IN | |
@DEPOSITID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MATCHINGGIFTPAYMENTADJUST
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null,
@REVENUESTREAMS xml,
@REMOVEDREVENUESTREAMS xml,
@MATCHINGGIFTCLAIMSPLITS xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@ADJUSTMENTREASONCODEID uniqueidentifier,
@ADJUSTMENTPOSTSTATUSCODE tinyint,
@DEPOSITID uniqueidentifier
)
as
set nocount on;
if @REVENUESTREAMS.exist('/REVENUESTREAMS/ITEM') = 0
and @REMOVEDREVENUESTREAMS.exist('/REMOVEDREVENUESTREAMS/ITEM') = 0
and @MATCHINGGIFTCLAIMSPLITS.exist('/MATCHINGGIFTCLAIMSPLITS/ITEM') = 0
begin
--Nothing was changed, so just return.
return 0;
end
declare @CURRENTDATE datetime;
declare @ORIGINALREVENUESTREAMS xml;
--Move @REVENUESTREAMS to @MODIFIEDREVENUESTREAMS so that code copied
-- from payment edit doesn't have to be changed where it references @REVENUESTREAMS.
declare @MODIFIEDREVENUESTREAMS xml;
set @MODIFIEDREVENUESTREAMS = @REVENUESTREAMS;
set @REVENUESTREAMS = null;
declare @ADJUSTMENTID uniqueidentifier;
declare @STOCKSALEADJUSTMENTIDS xml;
declare @GIFTINKINDSALEADJUSTMENTIDS xml;
declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;
declare @ADJUST bit;
declare @PROPERTYDETAILCOUNT int;
declare @STOCKDETAILCOUNT int;
declare @GIFTINKINDPAYMENTMETHODDETAILCOUNT int;
declare @ADJUSTMENTORIGINALPOSTSTATUS int;
declare @CLEARALLGLDISTRIBUTIONS bit;
declare @ADJUSTGIFTFEEDISTRIBUTION bit;
set @ADJUST = 0;
set @PROPERTYDETAILCOUNT = 0;
set @STOCKDETAILCOUNT = 0;
set @GIFTINKINDPAYMENTMETHODDETAILCOUNT = 0;
set @ADJUSTMENTORIGINALPOSTSTATUS = 0;
set @CLEARALLGLDISTRIBUTIONS = 0;
declare
@DATE datetime,
@AMOUNT money,
@RECEIPTAMOUNT money,
@SOURCECODE nvarchar(50),
@POSTSTATUSCODE tinyint,
@APPEALID uniqueidentifier,
@BENEFITS xml,
@BENEFITSWAIVED bit,
@GIVENANONYMOUSLY bit,
@MAILINGID uniqueidentifier,
@CHANNELCODEID uniqueidentifier,
@DONOTRECEIPT bit,
@REFERENCE nvarchar(255),
@DONOTACKNOWLEDGE bit,
@SPLITSDECLININGGIFTAID xml,
@PERCENTAGEBENEFITS xml,
@GIFTAIDSPONSORSHIPSPLITS xml,
@BASEEXCHANGERATEID uniqueidentifier,
@EXCHANGERATE decimal(20,8),
@OLDSPOTRATEID uniqueidentifier;
declare
@PAYMENTMETHODCODE tinyint,
@CREDITTYPECODEID uniqueidentifier;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CURRENTDATE is null
set @CURRENTDATE = getdate();
declare @contextCache varbinary(128);
--cache current context information
set @contextCache = CONTEXT_INFO();
--set CONTEXT_INFO to @CHANGEAGENTID
set CONTEXT_INFO @CHANGEAGENTID;
begin try
/**
* Load current payment details
*/
--Load the original values from the payment; pass in null for anything we don't need.
exec dbo.USP_PAYMENT_LOAD
@ID,
null, --@DATALOADED output,
null, --@CONSTITUENTID output,
null, --@CONSTITUENTNAME output,
@DATE output,
@AMOUNT output,
null, --@APPLICATIONCODE output,
@RECEIPTAMOUNT output,
@ORIGINALREVENUESTREAMS output,
@SOURCECODE output,
@POSTSTATUSCODE output,
null, --@POSTDATE output,
@APPEALID output, @BENEFITS output, @BENEFITSWAIVED output,
@GIVENANONYMOUSLY output, @MAILINGID output, @CHANNELCODEID output,
@DONOTRECEIPT output, @REFERENCE output,
null, --@TSLONG output,
@DONOTACKNOWLEDGE output,
null, --@FINDERNUMBER output,
@PERCENTAGEBENEFITS output,
null, --@BASECURRENCYID output,
null, --@TRANSACTIONCURRENCYID output,
@BASEEXCHANGERATEID output,
@EXCHANGERATE output,
null, --@HADSPOTRATE output,
null, --@BASEDECIMALDIGITS output,
null, --@BASEROUNDINGTYPECODE output,
null; --@TRANSACTIONCURRENCYDESCRIPTION output;
exec dbo.USP_REVENUE_GETPAYMENTDETAILS
@REVENUEID = @ID,
@PAYMENTMETHODCODE = @PAYMENTMETHODCODE output,
@CREDITTYPECODEID = @CREDITTYPECODEID output;
/**
* Update matching gift claim splits
*/
--We do this after loading the payment details so that the tweaks
-- we make here don't affect the original values that we load.
declare @MATCHINGGIFTCLAIMLINEITEMMAP xml;
exec dbo.USP_MATCHINGGIFTPAYMENT_UPDATEMATCHINGGIFTCLAIMS
@ID,
@MATCHINGGIFTCLAIMSPLITS,
@CHANGEAGENTID,
@CURRENTDATE,
@MATCHINGGIFTCLAIMLINEITEMMAP output;
/**
* Edit the payment applications
*/
declare @ORIGINALDONOTPOST bit
declare @DONOTPOST bit
select @ORIGINALDONOTPOST = case FINANCIALTRANSACTION.POSTSTATUSCODE when 3 then 1 else 0 end from dbo.FINANCIALTRANSACTION inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID where FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null;
set @DONOTPOST = @ORIGINALDONOTPOST;
--Build the modified revenue streams by combining the current revenue
-- streams (@ORIGINALREVENUESTREAMS, loaded above) with the revenue
-- streams from this form (@MATCHINGGIFTCLAIMLINEITEMMAP, computed
-- when updating claim splits earlier).
with
MATCHINGGIFTCLAIMLINEITEMMAP as
(
select
MATCHINGGIFTCLAIMLINEITEMMAP.ITEM.value('(FINANCIALTRANSACTIONLINEITEMID)[1]', 'uniqueidentifier') as FINANCIALTRANSACTIONLINEITEMID,
MATCHINGGIFTCLAIMLINEITEMMAP.ITEM.value('(REPLACEMENTFINANCIALTRANSACTIONLINEITEMID)[1]', 'uniqueidentifier') as REPLACEMENTFINANCIALTRANSACTIONLINEITEMID
from
@MATCHINGGIFTCLAIMLINEITEMMAP.nodes('/MATCHINGGIFTCLAIMLINEITEMMAP/ITEM') as MATCHINGGIFTCLAIMLINEITEMMAP(ITEM)
)
select @MODIFIEDREVENUESTREAMS =
(
select
MODIFIEDREVENUESTREAMS.ITEM.query('./*[local-name() != "APPLICATIONSPLITS"]'),
(
select
coalesce(MATCHINGGIFTCLAIMLINEITEMMAP.REPLACEMENTFINANCIALTRANSACTIONLINEITEMID, APPLICATIONSPLITS.ITEM.value('(ID)[1]', 'uniqueidentifier')) as ID,
APPLICATIONSPLITS.ITEM.value('(AMOUNT)[1]', 'money') as AMOUNT
from
MODIFIEDREVENUESTREAMS.ITEM.nodes('./APPLICATIONSPLITS/ITEM') as APPLICATIONSPLITS(ITEM)
left join MATCHINGGIFTCLAIMLINEITEMMAP on APPLICATIONSPLITS.ITEM.value('(ID)[1]', 'uniqueidentifier') = MATCHINGGIFTCLAIMLINEITEMMAP.FINANCIALTRANSACTIONLINEITEMID
for xml raw('ITEM'),type,elements,root('APPLICATIONSPLITS'), binary base64
)
from
@MODIFIEDREVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') as MODIFIEDREVENUESTREAMS(ITEM)
for xml raw('ITEM'),type,elements,root('REVENUESTREAMS'), binary base64
);
set @REVENUESTREAMS =
(
select
MERGEDREVENUESTREAMS.ITEMXML.query('ITEM/*')
from
(
select
--Use the modified revenue stream item if one was supplied for this ID, otherwise fall back to the
-- original revenue stream item.
coalesce(MODIFIEDREVENUESTREAMS.ITEM.query('.'), ORIGINALREVENUESTREAMS.ITEM.query('.')) as ITEMXML
from
@ORIGINALREVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') as ORIGINALREVENUESTREAMS(ITEM)
full join @MODIFIEDREVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') as MODIFIEDREVENUESTREAMS(ITEM) on
ORIGINALREVENUESTREAMS.ITEM.value('ID[1]', 'uniqueidentifier') = MODIFIEDREVENUESTREAMS.ITEM.value('ID[1]', 'uniqueidentifier')
full join @REMOVEDREVENUESTREAMS.nodes('/REMOVEDREVENUESTREAMS/ITEM') as REMOVEDREVENUESTREAMS(ITEM) on
REMOVEDREVENUESTREAMS.ITEM.value('ID[1]','uniqueidentifier') = ORIGINALREVENUESTREAMS.ITEM.value('ID[1]', 'uniqueidentifier')
where
isnull(MODIFIEDREVENUESTREAMS.ITEM.exist('(ID)[1]'), 0) = 1
or
(
isnull(ORIGINALREVENUESTREAMS.ITEM.exist('(ID)[1]'), 0) = 1
and
REMOVEDREVENUESTREAMS.ITEM.query('.') is null
)
) as MERGEDREVENUESTREAMS
for xml raw('ITEM'),type,elements,root('REVENUESTREAMS'), binary base64
);
declare @ORIGINALPAYMETHODID uniqueidentifier,
@ORIGINALPAYMENTMETHODCODE tinyint,
@ORIGINALGIFTINKINDSUBTYPECODEID uniqueidentifier,
@ORIGINALCREDITTYPECODEID uniqueidentifier,
@ORIGINALPROPERTYSUBTYPECODEID uniqueidentifier,
@ORIGINALOTHERPAYMENTMETHODCODEID uniqueidentifier
select
@ORIGINALPAYMETHODID = RPM.ID,
@ORIGINALPAYMENTMETHODCODE = PAYMENTMETHODCODE,
@ORIGINALGIFTINKINDSUBTYPECODEID = GIFTINKINDSUBTYPECODEID,
@ORIGINALCREDITTYPECODEID = CREDITTYPECODEID,
@ORIGINALPROPERTYSUBTYPECODEID = PROPERTYSUBTYPECODEID,
@ORIGINALOTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODEID
from
dbo.REVENUEPAYMENTMETHOD RPM
left outer join dbo.GIFTINKINDPAYMENTMETHODDETAIL GIKPMD on RPM.ID = GIKPMD.ID
left outer join dbo.CREDITCARDPAYMENTMETHODDETAIL CCPMD on RPM.ID = CCPMD.ID
left outer join dbo.PROPERTYDETAIL PD on RPM.ID = PD.ID
left outer join dbo.OTHERPAYMENTMETHODDETAIL OPMD on RPM.ID = OPMD.ID
where
RPM.REVENUEID = @ID
-- Check GL business rule for this account system and set to 'Do not post' if needed.
declare @PDACCOUNTSYSTEMID uniqueidentifier;
select @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID from dbo.PDACCOUNTSYSTEMFORREVENUE where ID = @ID;
if dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID) = 0
begin
set @ADJUSTMENTPOSTSTATUSCODE = 2 -- Do not post
set @ADJUSTMENTPOSTDATE = null
end
-- Only unlink the payment if adjustment is postable - Bug 70136
if @ADJUSTMENTPOSTSTATUSCODE <> 2
begin
if (not (@PAYMENTMETHODCODE in (0,1,2,10))) or @PAYMENTMETHODCODE is null
if exists(select DEPOSITID from dbo.BANKACCOUNTDEPOSITPAYMENT where ID = @ID and DEPOSITID is not null)
update dbo.BANKACCOUNTDEPOSITPAYMENT set DEPOSITID = NULL where ID = @ID;
declare @ORIGINALADJUSTMENTPOSTDATE datetime
if exists(select DEPOSITID from dbo.BANKACCOUNTDEPOSITPAYMENT where ID = @ID and DEPOSITID is not null)
begin
select
@ORIGINALADJUSTMENTPOSTDATE = POSTDATE
from
dbo.BANKACCOUNTDEPOSITPAYMENT
inner join dbo.BANKACCOUNTDEPOSIT on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTDEPOSIT.ID
inner join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSIT.ID = BANKACCOUNTTRANSACTION.ID
where
BANKACCOUNTDEPOSITPAYMENT.ID = @ID;
if @ORIGINALADJUSTMENTPOSTDATE <> @ADJUSTMENTPOSTDATE
update dbo.BANKACCOUNTDEPOSITPAYMENT set DEPOSITID = @DEPOSITID where ID = @ID;
end
end
/* Check if revenue streams changed */
if dbo.UFN_CHECKDETAIL_STREAMSCHANGED(@ID, @REVENUESTREAMS) = 1
begin
set @ADJUST = 1;
set @CLEARALLGLDISTRIBUTIONS = 1;
/* Already adjusted */
if @ADJUST = 0
if (select
COUNT(ADJUSTMENT.ID)
from
dbo.ADJUSTMENT
where
ADJUSTMENT.REVENUEID = @ID and ADJUSTMENT.POSTSTATUSCODE > 0
) > 0
set @ADJUST = 1;
if (select
COUNT(ADJUSTMENT.ID)
from
dbo.ADJUSTMENT
where
ADJUSTMENT.REVENUEID = @ID and ADJUSTMENT.POSTSTATUSCODE = 2
) > 0
set @ADJUSTMENTORIGINALPOSTSTATUS = 2;
/* If there was a change to GL related data log an adjustment for each revenue in the transaction */
if @ADJUST = 1
begin
if @ADJUSTMENTREASONCODEID is null
raiserror('BBERR_ADJUSTMENTREASONCODEIDREQUIRED', 13, 1)
set @ADJUSTMENTID = null;
exec dbo.USP_SAVE_ADJUSTMENT
@ID,
@ADJUSTMENTID output,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
default,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE;
select
@STOCKDETAILCOUNT = count(STOCKSALE.ID)
from
dbo.STOCKSALE
where
STOCKDETAILID = @ORIGINALPAYMETHODID and SALEPOSTSTATUSCODE = 0;
select
@GIFTINKINDPAYMENTMETHODDETAILCOUNT = count(GIFTINKINDSALE.ID)
from
dbo.GIFTINKINDSALE
where
GIFTINKINDPAYMENTMETHODDETAILID = @ORIGINALPAYMETHODID and SALEPOSTSTATUSCODE = 0;
select
@PROPERTYDETAILCOUNT = count(PROPERTYDETAIL.ID)
from
dbo.PROPERTYDETAIL
where
PROPERTYDETAIL.ID = @ORIGINALPAYMETHODID and SALEPOSTSTATUSCODE = 0;
/* If sold stock has been posted, log stock detail adjustment */
if (@STOCKDETAILCOUNT > 0) and @ORIGINALPAYMENTMETHODCODE = 4
begin
exec dbo.USP_SAVE_STOCKDETAILADJUSTMENT
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
@STOCKSALEADJUSTMENTIDS output,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE;
end
/* If the sold gift-in-kind has been posted, log the gift-in-kind detail adjustment */
if (@GIFTINKINDPAYMENTMETHODDETAILCOUNT > 0) and @ORIGINALPAYMENTMETHODCODE = 6
begin
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILADJUSTMENT
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
@GIFTINKINDSALEADJUSTMENTIDS output,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE;
end
/* If sold property has been posted, log property detail adjustment */
else if (@ORIGINALPAYMENTMETHODCODE = 5) and (@PROPERTYDETAILCOUNT > 0)
begin
exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT
@ORIGINALPAYMETHODID,
@PROPERTYDETAILADJUSTMENTID output,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE;
end
end
if @ADJUSTGIFTFEEDISTRIBUTION = 0 and (select count(ID) from dbo.GIFTFEEADJUSTMENT where REVENUEID = @ID and POSTSTATUSCODE <> 0) > 0
set @ADJUSTGIFTFEEDISTRIBUTION = 1;
declare @OLDAUCTIONPURCHASES xml;
--Remove conditional because we can't know yet if multicurrency fields will change, clearing GL distributions.
--if @CLEARALLGLDISTRIBUTIONS = 1 or @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 1
set @OLDAUCTIONPURCHASES = (
select AUCTIONITEM.ID as AUCTIONITEMID,AUCTIONITEM.REVENUEAUCTIONDONATIONID,REVENUESPLIT.ID,REVENUESPLIT.BASEAMOUNT as AMOUNT
from dbo.AUCTIONITEM inner join dbo.AUCTIONITEMPURCHASE on AUCTIONITEM.ID = AUCTIONITEMPURCHASE.AUCTIONITEMID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.ID = AUCTIONITEMPURCHASE.PURCHASEID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
where REVENUESPLIT.FINANCIALTRANSACTIONID = @ID and REVENUESPLIT_EXT.APPLICATIONCODE = 12 and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1
for xml raw('ITEM'),type,elements,root('AUCTIONPURCHASES'),BINARY BASE64
)
declare @OLDGIFTAID xml;
set @OLDGIFTAID = (
select REVENUESPLIT.ID, REVENUESPLIT_EXT.DESIGNATIONID, coalesce(REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID, '00000000-0000-0000-0000-000000000000') as GLREVENUECATEGORYMAPPINGID, dbo.UFN_GIFTAIDREVENUESPLIT_GETQUALIFICATIONSTATUS(REVENUESPLIT.ID) as STATUS
from dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUESPLITGIFTAID on REVENUESPLIT.ID = REVENUESPLITGIFTAID.ID
left join dbo.REVENUECATEGORY on REVENUESPLIT.ID = REVENUECATEGORY.ID
where REVENUESPLIT.FINANCIALTRANSACTIONID = @ID and REVENUESPLIT.DELETEDON is null and REVENUESPLIT.TYPECODE != 1
for xml raw('ITEM'),type,elements,root('GIFTAIDQUALIFICATIONSTATUS'),BINARY BASE64
)
-- create reversals for gift aid tied to splits that have been deleted.
exec dbo.USP_REVENUESPLITGIFTAID_CREATEREVERSALSFORDELETEDSPLITS @OLDGIFTAID, @REVENUESTREAMS, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_PAYMENT_EDIT_2
@ID=@ID
,@CHANGEAGENTID=@CHANGEAGENTID
,@CURRENTDATE=@CURRENTDATE
,@DATE=@DATE
,@AMOUNT=@AMOUNT
,@RECEIPTAMOUNT=@RECEIPTAMOUNT
,@REVENUESTREAMS=@REVENUESTREAMS
,@SOURCECODE=@SOURCECODE
,@APPEALID=@APPEALID
,@BENEFITS=@BENEFITS
,@BENEFITSWAIVED=@BENEFITSWAIVED
,@GIVENANONYMOUSLY=@GIVENANONYMOUSLY
,@MAILINGID=@MAILINGID
,@CHANNELCODEID=@CHANNELCODEID
,@DONOTRECEIPT=@DONOTRECEIPT
,@REFERENCE=@REFERENCE
,@DONOTACKNOWLEDGE=@DONOTACKNOWLEDGE
,@SPLITSDECLININGGIFTAID=@SPLITSDECLININGGIFTAID output
,@PERCENTAGEBENEFITS=@PERCENTAGEBENEFITS output
,@GIFTAIDSPONSORSHIPSPLITS=@GIFTAIDSPONSORSHIPSPLITS output
,@BASEEXCHANGERATEID=@BASEEXCHANGERATEID output
,@EXCHANGERATE=@EXCHANGERATE
,@CURRENTAPPUSERID=@CURRENTAPPUSERID;
-- clear the user-defined gl distributions
if @CLEARALLGLDISTRIBUTIONS = 1
begin
--Clear GL
/*
delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.GIFTINKINDSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
*/
delete JOURNALENTRY
from dbo.JOURNALENTRY inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE in (1,11,13,10)
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
-- Add new GL distributions
if @ADJUSTMENTPOSTSTATUSCODE <> 2
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
-- If the payment is linked to a deposit then overwrite the debit account with the bank's default account
select @DEPOSITID = DEPOSITID from dbo.BANKACCOUNTDEPOSITPAYMENT where ID = @ID;
if @DEPOSITID is not null
exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEPAYMENTDEBITACCOUNTS
@ID,
@DEPOSITID,
@CHANGEAGENTID,
@CURRENTDATE;
-- Add new stock detail GL distributions
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
-- Add new gift-in-kind detail GL distributions
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
-- Add new property detail GL distributions
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
end
else
begin
if @ADJUSTMENTPOSTSTATUSCODE = 2
begin
/*
delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
*/
delete JOURNALENTRY
from dbo.JOURNALENTRY inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE in (1,10)
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
end
end
--Check to make sure gift amount is more than the gift Fee
--####
declare @GIFTFEE_ENABLED bit;
declare @GIFTFEEAMOUNT money;
set @GIFTFEEAMOUNT = 0.00;
select @GIFTFEE_ENABLED = dbo.UFN_GIFTFEE_ENABLED();
if @GIFTFEE_ENABLED = 1 and exists (select 1 from dbo.REVENUESPLITGIFTFEE inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUESPLITGIFTFEE.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID and REVENUESPLITGIFTFEE.WAIVED <> 1
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1)
begin
select @GIFTFEEAMOUNT = coalesce(sum(REVENUESPLITGIFTFEE.TRANSACTIONAMOUNT), 0.00)
from dbo.REVENUESPLITGIFTFEE
inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUESPLITGIFTFEE.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1;
if @GIFTFEEAMOUNT > @AMOUNT
-- The gift fee cannot be greater than the application amount
raiserror('BBERR_AMOUNTLESSTHANGIFTFEE', 13, 1);
--####
end
/* add adjustment history information */
if @ADJUST = 1
begin
if @ADJUSTMENTID is not null
exec dbo.USP_ADJUSTMENTHISTORY_REVENUE_SAVEHISTORY
@ID,
@CHANGEAGENTID,
null,
@ADJUSTMENTID;
if @STOCKSALEADJUSTMENTIDS is not null
exec dbo.USP_ADJUSTMENTHISTORY_STOCK_SAVEHISTORY
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
null,
@STOCKSALEADJUSTMENTIDS;
if @GIFTINKINDSALEADJUSTMENTIDS is not null
exec dbo.USP_ADJUSTMENTHISTORY_GIFTINKIND_SAVEHISTORY
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
null,
@GIFTINKINDSALEADJUSTMENTIDS;
if @PROPERTYDETAILADJUSTMENTID is not null
exec dbo.USP_ADJUSTMENTHISTORY_PROPERTY_SAVEHISTORY
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
null,
@PROPERTYDETAILADJUSTMENTID;
end
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID, @APPEALID, @PAYMENTMETHODCODE, @CREDITTYPECODEID, @CHANGEAGENTID, @DATE, 0, @SPLITSDECLININGGIFTAID, null, @GIFTAIDSPONSORSHIPSPLITS; --revenue transaction type code of payment is 0
-- Add/Update gift aid distributions ONLY if exists for original payment - Bug 70202
if exists (
select 1
from
--dbo.GIFTAIDGLDISTRIBUTION t3
dbo.JOURNALENTRY_EXT t3
inner join dbo.REVENUESPLITGIFTAID t1 on t3.REVENUESPLITGIFTAIDID=t1.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM t2 on t1.ID = t2.ID
inner join dbo.REVENUESPLIT_EXT on t2.ID = REVENUESPLIT_EXT.ID
where
t2.FINANCIALTRANSACTIONID = @ID
and t2.DELETEDON is null
and t2.TYPECODE <> 1
and t3.TABLENAMECODE = 7
)
-- update existing gift aid GL distributions
exec dbo.USP_REVENUESPLITGIFTAID_UPDATEGLDISTRIBUTIONS_FORREVENUE
@ID,
@OLDGIFTAID,
0,
0,
@CHANGEAGENTID,
@CURRENTDATE;
--If original adjustment was set to Do not post and now it is Not Posted, then update the gltransation
if @ADJUSTMENTORIGINALPOSTSTATUS = 2 and @ADJUSTMENTPOSTSTATUSCODE = 1
begin
--JamesWill 76594 Also change the reversal post date to not be null
--RobertJo 168818 Added cases so that it would adjust the other databases as well
update FTLI2
set POSTSTATUSCODE = 1,
POSTDATE = @ADJUSTMENTPOSTDATE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = getdate()
from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.JOURNALENTRY on FINANCIALTRANSACTIONLINEITEM.ID = JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.REVERSEDGLTRANSACTIONID
inner join dbo.JOURNALENTRY JE2 on JOURNALENTRY_EXT.ID = JE2.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI2 on JE2.FINANCIALTRANSACTIONLINEITEMID = FTLI2.ID and FTLI2.POSTSTATUSCODE != 2
where FTLI2.FINANCIALTRANSACTIONID = @ID
and JOURNALENTRY_EXT.TABLENAMECODE in (0,1,5,11,10,13)
and FINANCIALTRANSACTIONLINEITEM.TYPECODE in (0,1,3,5,6,7,8,98)
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2
/*
update dbo.GLTRANSACTION
set
POSTSTATUSCODE = 1,
POSTDATE = @ADJUSTMENTPOSTDATE
where
POSTSTATUSCODE > 0
and REVERSEDGLTRANSACTIONID in
(
select
GLTRANSACTIONID
from
dbo.REVENUEGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.BENEFITGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.STOCKSALEGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.PROPERTYDETAILGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.GIFTINKINDSALEGLDISTRIBUTION
where
REVENUEID = @ID
) */
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
select
@DEPOSITID = DEPOSITID
from
dbo.BANKACCOUNTDEPOSITPAYMENT
where
ID = @ID;
if @DEPOSITID is not null
exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEPAYMENTDEBITACCOUNTS
@ID,
@DEPOSITID,
@CHANGEAGENTID,
@CURRENTDATE;
end
else
if @ADJUSTMENTORIGINALPOSTSTATUS = 0 and @ADJUSTMENTPOSTSTATUSCODE = 2
begin
--RobertJo 168818 Added cases so that it would adjust the other databases as well
update FTLI2
set POSTSTATUSCODE = 3,
POSTDATE = null,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = getdate()
from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.JOURNALENTRY on FINANCIALTRANSACTIONLINEITEM.ID = JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.REVERSEDGLTRANSACTIONID
inner join dbo.JOURNALENTRY JE2 on JOURNALENTRY_EXT.ID = JE2.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI2 on JE2.FINANCIALTRANSACTIONLINEITEMID = FTLI2.ID and FTLI2.POSTSTATUSCODE != 2
where FTLI2.FINANCIALTRANSACTIONID = @ID
and JOURNALENTRY_EXT.TABLENAMECODE in (0,1,5,11,10,13)
and FINANCIALTRANSACTIONLINEITEM.TYPECODE in (0,1,3,5,6,7,8,98)
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2
/*
update dbo.GLTRANSACTION
set
POSTSTATUSCODE = 2
where
POSTSTATUSCODE = 1
and REVERSEDGLTRANSACTIONID in
(
select
GLTRANSACTIONID
from
dbo.REVENUEGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.BENEFITGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.STOCKSALEGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.PROPERTYDETAILGLDISTRIBUTION
where
REVENUEID = @ID
union all
select
GLTRANSACTIONID
from
dbo.GIFTINKINDSALEGLDISTRIBUTION
where
REVENUEID = @ID
)
*/
end
-- update existing auction purchase GL distributions
if @CLEARALLGLDISTRIBUTIONS = 1
exec dbo.USP_REVENUE_UPDATEAUCTIONPURCHASEGLDISTRIBUTION
@REVENUEID = @ID,
@OLDAUCTIONPURCHASES = @OLDAUCTIONPURCHASES,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @CURRENTDATE,
@ADJUSTMENTDATE = @ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE = @ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON = @ADJUSTMENTREASON,
@ADJUSTMENTREASONCODEID = @ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE = @ADJUSTMENTPOSTSTATUSCODE;
end
/**
* Validate the modified matching gift claims.
* This step comes after editing the payment, since a modified matching
* gift claim designation will be accompanied by an updated payment revenue split.
*/
declare MODIFIEDMATCHINGGIFTCLAIMTOVALIDATECURSOR cursor local fast_forward for
select
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
from
@MATCHINGGIFTCLAIMSPLITS.nodes('/MATCHINGGIFTCLAIMSPLITS/ITEM') as MATCHINGGIFTCLAIMSPLITS(ITEM)
inner join dbo.FINANCIALTRANSACTIONLINEITEM on MATCHINGGIFTCLAIMSPLITS.ITEM.value('REVENUESPLITID[1]', 'uniqueidentifier') = FINANCIALTRANSACTIONLINEITEM.ID
group by
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID;
declare @MODIFIEDMATCHINGGIFTCLAIMTOVALIDATEREVENUEID uniqueidentifier;
open MODIFIEDMATCHINGGIFTCLAIMTOVALIDATECURSOR;
fetch next from MODIFIEDMATCHINGGIFTCLAIMTOVALIDATECURSOR into
@MODIFIEDMATCHINGGIFTCLAIMTOVALIDATEREVENUEID;
while @@FETCH_STATUS = 0
begin
exec dbo.USP_PLEDGE_VALIDATE_2 @MODIFIEDMATCHINGGIFTCLAIMTOVALIDATEREVENUEID, 0;
fetch next from MODIFIEDMATCHINGGIFTCLAIMTOVALIDATECURSOR into
@MODIFIEDMATCHINGGIFTCLAIMTOVALIDATEREVENUEID;
end
close MODIFIEDMATCHINGGIFTCLAIMTOVALIDATECURSOR;
deallocate MODIFIEDMATCHINGGIFTCLAIMTOVALIDATECURSOR;
end try
begin catch
--reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
--reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
return 0;