USP_DATAFORMTEMPLATE_EDIT_PAYMENTADJUST7
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | 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 | |
@DONOTACKNOWLEDGE | bit | IN | |
@REFERENCE | nvarchar(255) | IN | |
@ADJUSTMENTDATE | datetime | IN | |
@ADJUSTMENTPOSTDATE | datetime | IN | |
@ADJUSTMENTREASON | nvarchar(300) | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | |
@CHECKDATE | UDT_FUZZYDATE | IN | |
@CHECKNUMBER | nvarchar(20) | 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 | |
@GIFTINKINDSUBTYPECODEID | uniqueidentifier | IN | |
@PROPERTYSUBTYPECODEID | uniqueidentifier | IN | |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | |
@DIRECTDEBITRESULTCODE | nvarchar(10) | IN | |
@LOWPRICE | decimal(19, 4) | IN | |
@HIGHPRICE | decimal(19, 4) | IN | |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | |
@ADJUSTMENTPOSTSTATUSCODE | tinyint | IN | |
@GIFTINKINDITEMNAME | nvarchar(100) | IN | |
@GIFTINKINDDISPOSITIONCODE | tinyint | IN | |
@GIFTINKINDNUMBEROFUNITS | int | IN | |
@GIFTINKINDFAIRMARKETVALUE | money | IN | |
@DIRECTDEBITISREJECTED | bit | IN | |
@PERCENTAGEBENEFITS | xml | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@EXCHANGERATE | decimal(20, 8) | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@ADJUSTMATCHINGGIFTCLAIMS | tinyint | IN | |
@UPDATEGIFTFEEOPTION | tinyint | IN | |
@UPDATETRIBUTEOPTION | tinyint | IN | |
@VALIDATETRIBUTES | bit | IN | |
@DEPOSITID | uniqueidentifier | IN | |
@SEPAMANDATEID | uniqueidentifier | IN | |
@NUMBEROFUNITSSOLD | decimal(20, 3) | IN | |
@SALE_SALEDATE | datetime | IN | |
@SALE_SALEAMOUNT | money | IN | |
@SALE_BROKERFEES | money | IN | |
@SALE_GLPOSTDATE | datetime | IN | |
@SALE_GLPOSTSTATUS | tinyint | IN | |
@SALE_LOWPRICE | decimal(19, 4) | IN | |
@SALE_MEDIANPRICE | decimal(19, 4) | IN | |
@SALE_HIGHPRICE | decimal(19, 4) | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PAYMENTADJUST7
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@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,
@DONOTACKNOWLEDGE bit,
@REFERENCE nvarchar(255),
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@PAYMENTMETHODCODE tinyint,
@OTHERPAYMENTMETHODCODEID uniqueidentifier,
@CHECKDATE dbo.UDT_FUZZYDATE,
@CHECKNUMBER nvarchar(20),
@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),
@GIFTINKINDSUBTYPECODEID uniqueidentifier,
@PROPERTYSUBTYPECODEID uniqueidentifier,
@CONSTITUENTACCOUNTID uniqueidentifier,
@DIRECTDEBITRESULTCODE nvarchar(10),
@LOWPRICE decimal(19,4),
@HIGHPRICE decimal(19,4),
@ADJUSTMENTREASONCODEID uniqueidentifier,
@ADJUSTMENTPOSTSTATUSCODE tinyint,
@GIFTINKINDITEMNAME nvarchar(100),
@GIFTINKINDDISPOSITIONCODE tinyint,
@GIFTINKINDNUMBEROFUNITS int,
@GIFTINKINDFAIRMARKETVALUE money,
@DIRECTDEBITISREJECTED bit,
@PERCENTAGEBENEFITS xml,
@BASEEXCHANGERATEID uniqueidentifier = null,
@EXCHANGERATE decimal(20,8) = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@ADJUSTMATCHINGGIFTCLAIMS tinyint = null,
@UPDATEGIFTFEEOPTION tinyint = null,
@UPDATETRIBUTEOPTION tinyint = null,
@VALIDATETRIBUTES bit = null,
@DEPOSITID uniqueidentifier = null,
@SEPAMANDATEID uniqueidentifier = null,
@NUMBEROFUNITSSOLD decimal(20,3) = null,
@SALE_SALEDATE datetime = null,
@SALE_SALEAMOUNT money = null,
@SALE_BROKERFEES money = null,
@SALE_GLPOSTDATE datetime = null,
@SALE_GLPOSTSTATUS tinyint = null,
@SALE_LOWPRICE decimal(19,4) = 0,
@SALE_MEDIANPRICE decimal(19,4) = 0,
@SALE_HIGHPRICE decimal(19,4) = 0
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = GetDate();
declare @ADJUSTMENTID uniqueidentifier;
declare @STOCKSALEADJUSTMENTIDS xml;
declare @GIFTINKINDSALEADJUSTMENTIDS xml;
declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;
declare @ADJUST bit;
declare @ADJUSTSTOCK bit;
declare @ADJUSTGIFTINKIND bit;
declare @PROPERTYDETAILCOUNT int;
declare @STOCKDETAILCOUNT int;
declare @GIFTINKINDPAYMENTMETHODDETAILCOUNT int;
declare @ADJUSTMENTORIGINALPOSTSTATUS int;
declare @CLEARGLDISTRIBUTION bit;
declare @CLEARGIFTINKINDGLDISTRIBUTION bit;
declare @CLEARSTOCKGLDISTRIBUTION bit;
declare @ADJUSTBENEFITS bit;
declare @CLEARBENEFITSGLDISTRIBUTION bit;
declare @BENEFITSADJUSTMENTID uniqueidentifier;
declare @CLEARAUCTIONPURCHASEGLDISTRIBUTION bit;
declare @ADJUSTGIFTFEEDISTRIBUTION bit;
declare @CLEARGIFTFEEGLDISTRIBUTION bit;
declare @CLEARPROPERTYGLDISTRIBUTION bit;
declare @HASAUCTIONPURCHASE bit = 0;
declare @STREAMCHANGED bit = 0;
declare @SHOULDUPDATEGIFTFEE tinyint = 1;
set @ADJUST = 0;
set @ADJUSTSTOCK = 0;
set @ADJUSTGIFTINKIND = 0;
set @PROPERTYDETAILCOUNT = 0;
set @STOCKDETAILCOUNT = 0;
set @GIFTINKINDPAYMENTMETHODDETAILCOUNT = 0;
set @CLEARGLDISTRIBUTION = 0;
set @CLEARSTOCKGLDISTRIBUTION = 0;
set @CLEARGIFTINKINDGLDISTRIBUTION = 0;
set @ADJUSTMENTORIGINALPOSTSTATUS = 0;
set @ADJUSTBENEFITS = 0;
set @CLEARBENEFITSGLDISTRIBUTION = 0;
set @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 0;
set @CLEARGIFTFEEGLDISTRIBUTION = 0;
set @ADJUSTGIFTFEEDISTRIBUTION = 0;
set @CLEARPROPERTYGLDISTRIBUTION = 0;
if @UPDATEGIFTFEEOPTION is null
set @UPDATEGIFTFEEOPTION = 0;
declare @EMPTYGUID uniqueidentifier = '00000000-0000-0000-0000-000000000000'
begin try
declare @BASECURRENCYID uniqueidentifier;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @PDACCOUNTSYSTEMID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @CONSTITUENTID uniqueidentifier;
declare @ORIGINALCHANNELCODEID uniqueidentifier;
declare @ORIGINALAPPEALID uniqueidentifier;
select
@PDACCOUNTSYSTEMID = FINANCIALTRANSACTION.PDACCOUNTSYSTEMID,
@TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
@BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID),
@ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID,
@CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID,
@ORIGINALCHANNELCODEID = REVENUE_EXT.CHANNELCODEID,
@ORIGINALAPPEALID = REVENUE_EXT.APPEALID
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
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
/* Check if amount changed */
if exists (
select 1
from dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
cross join dbo.UFN_CURRENCY_GETCURRENCYVALUES_2(
@AMOUNT,
@DATE,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
default,
default,
default,
default,
1
) CURRENCYVALUES
where FINANCIALTRANSACTION.ID = @ID
and FINANCIALTRANSACTION.DELETEDON is null
and
(
FINANCIALTRANSACTION.TRANSACTIONAMOUNT <> @AMOUNT
or FINANCIALTRANSACTION.BASEAMOUNT <> CURRENCYVALUES.BASEAMOUNT
or FINANCIALTRANSACTION.ORGAMOUNT <> CURRENCYVALUES.ORGANIZATIONAMOUNT
or FINANCIALTRANSACTION.BASEEXCHANGERATEID <> @BASEEXCHANGERATEID
or FINANCIALTRANSACTION.ORGEXCHANGERATEID <> CURRENCYVALUES.ORGANIZATIONEXCHANGERATEID
)
)
begin
set @ADJUST = 1;
set @CLEARGLDISTRIBUTION = 1;
set @ADJUSTGIFTFEEDISTRIBUTION = 1;
end
declare @ORIGINALPAYMETHODID uniqueidentifier,
@ORIGINALPAYMENTMETHODCODE tinyint,
@ORIGINALGIFTINKINDSUBTYPECODEID uniqueidentifier,
@ORIGINALCREDITTYPECODEID uniqueidentifier,
@ORIGINALPROPERTYSUBTYPECODEID uniqueidentifier,
@ORIGINALOTHERPAYMENTMETHODCODEID uniqueidentifier,
@ORIGINALTRANSACTIONID uniqueidentifier,
@ORIGINALVENDORID nvarchar(50)
select
@ORIGINALPAYMETHODID = RPM.ID,
@ORIGINALPAYMENTMETHODCODE = PAYMENTMETHODCODE,
@ORIGINALGIFTINKINDSUBTYPECODEID = GIFTINKINDSUBTYPECODEID,
@ORIGINALCREDITTYPECODEID = CREDITTYPECODEID,
@ORIGINALPROPERTYSUBTYPECODEID = PROPERTYSUBTYPECODEID,
@ORIGINALOTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODEID,
@ORIGINALTRANSACTIONID = CCPMD.TRANSACTIONID,
@ORIGINALVENDORID = CCPMD.VENDORID
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
declare @OLDAMOUNT money;
select @OLDAMOUNT = FINANCIALTRANSACTION.BASEAMOUNT from dbo.FINANCIALTRANSACTION inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID where FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null;
-- 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;
*/
select @ORIGINALADJUSTMENTPOSTDATE = cast(POSTDATE as datetime) from dbo.FINANCIALTRANSACTION where ID = @ID;
if cast(@ORIGINALADJUSTMENTPOSTDATE as date) <> cast(@ADJUSTMENTPOSTDATE as date) -- ignore time portion of datetime
update dbo.BANKACCOUNTDEPOSITPAYMENT set DEPOSITID = @DEPOSITID where ID = @ID;
end
end
declare @SALEDATE datetime
declare @SALEAMOUNT money
declare @BROKERFEE money
declare @SALEPOSTDATE datetime
declare @SALEPOSTSTATUSCODE tinyint
if @PAYMENTMETHODCODE = 5
begin
--Fetch the original Property sale detail values
select top 1
@SALEDATE = SALEDATE,
@SALEAMOUNT = TRANSACTIONSALEAMOUNT,
@BROKERFEE = TRANSACTIONBROKERFEE,
@SALEPOSTDATE = SALEPOSTDATE,
@SALEPOSTSTATUSCODE = SALEPOSTSTATUSCODE
from dbo.PROPERTYDETAIL
where ID = @ORIGINALPAYMETHODID and ISSOLD = 1
if @SALE_SALEDATE is not null and @SALE_SALEAMOUNT is not null and @SALE_GLPOSTDATE is not null and @SALE_GLPOSTSTATUS is not null
begin
--Reset property sale GL distribution when the any of the sale field changes
if ((@SALEDATE is null and @SALEAMOUNT is null and @SALEPOSTDATE is null and @SALEPOSTSTATUSCODE is null) or
(@SALEDATE <> @SALE_SALEDATE or @SALEAMOUNT <> @SALE_SALEAMOUNT or @BROKERFEE <> @SALE_BROKERFEES or @SALEPOSTDATE <> @SALE_GLPOSTDATE or @SALEPOSTSTATUSCODE <> @SALE_GLPOSTSTATUS)) and
exists (select 1 from dbo.PROPERTYDETAIL where PROPERTYDETAIL.ID = @ORIGINALPAYMETHODID)
begin
set @CLEARPROPERTYGLDISTRIBUTION = 1;
end
--Reset the property sale values based on the modified values
set @SALEDATE = @SALE_SALEDATE;
set @SALEAMOUNT = @SALE_SALEAMOUNT;
set @BROKERFEE = @SALE_BROKERFEES;
set @SALEPOSTDATE = @SALE_GLPOSTDATE;
set @SALEPOSTSTATUSCODE = @SALE_GLPOSTSTATUS;
end
end
declare @REVENUESTREAMGIFTFEE table (REVENUESTREAMGIFTFEEXML xml)
insert into @REVENUESTREAMGIFTFEE
select @REVENUESTREAMS;
-- Calculates number of designation associated with the Specific revenue from DB
declare @DESIGNATIONSCOUNTFROMDB int = (select count(1)
from dbo.REVENUESPLIT_EXT RE
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on RE.ID = FTLI.ID
where FTLI.FINANCIALTRANSACTIONID = @ID and DELETEDON is null);
-- Compares number of designation associated with the specific revenue from DB with the designations passed in revenue stream.
declare @DESIGNATIONSMATCHCOUNT int = (select count(1)
from @REVENUESTREAMGIFTFEE r
CROSS APPLY REVENUESTREAMGIFTFEEXML.nodes('(REVENUESTREAMS/ITEM)') x(c)
inner join dbo.REVENUESPLIT_EXT RE on RE.DESIGNATIONID = c.value('(GIFTFIELDS/ITEM/DESIGNATIONID)[1]', 'uniqueidentifier')
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on RE.ID = FTLI.ID and FTLI.BASEAMOUNT = c.value('(GIFTFIELDS/ITEM/RECOGNITIONS/ITEM/AMOUNT)[1]', 'decimal')
where FTLI.FINANCIALTRANSACTIONID = @ID and DELETEDON is null);
/* Check if revenue streams changed */
if @ADJUST = 0
if dbo.UFN_CHECKDETAIL_STREAMSCHANGED(@ID, @REVENUESTREAMS) = 1
or @PAYMENTMETHODCODE <> @ORIGINALPAYMENTMETHODCODE
or isnull(@ORIGINALGIFTINKINDSUBTYPECODEID,@EMPTYGUID) <> isnull(@GIFTINKINDSUBTYPECODEID,@EMPTYGUID)
or @ORIGINALCREDITTYPECODEID <> @CREDITTYPECODEID
or isnull(@ORIGINALPROPERTYSUBTYPECODEID,@EMPTYGUID) <> isnull(@PROPERTYSUBTYPECODEID,@EMPTYGUID)
or @ORIGINALOTHERPAYMENTMETHODCODEID <> @OTHERPAYMENTMETHODCODEID
begin
set @ADJUST = 1;
set @ADJUSTGIFTFEEDISTRIBUTION = 1;
set @CLEARGLDISTRIBUTION = 1;
set @STREAMCHANGED = 1;
-- check if there's a designation change. If DESIGNATIONSMATCHCOUNT = DESIGNATIONSCOUNTFROMDB, it denotes no change in designation else there's a change in designation
if (@DESIGNATIONSMATCHCOUNT < @DESIGNATIONSCOUNTFROMDB)
set @UPDATEGIFTFEEOPTION = 1;
if @UPDATEGIFTFEEOPTION = 0
set @SHOULDUPDATEGIFTFEE = dbo.UFN_REVENUE_SHOULDUPDATEGIFTFEE(@ID, @CONSTITUENTID, @PAYMENTMETHODCODE, @TRANSACTIONCURRENCYID, @BASECURRENCYID, @BASEEXCHANGERATEID, @ORGANIZATIONEXCHANGERATEID, @REVENUESTREAMS, @RECEIPTAMOUNT, @AMOUNT)
end
--Adjust if inbound channel or appeal have changed
if @ADJUST = 0
if
isnull(@ORIGINALCHANNELCODEID, @EMPTYGUID) <> isnull(@CHANNELCODEID, @EMPTYGUID) or
isnull(@ORIGINALAPPEALID, @EMPTYGUID) <> isnull(@APPEALID, @EMPTYGUID)
begin
set @ADJUST = 1;
set @CLEARGLDISTRIBUTION = 1;
end
/* 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 NUMBEROFUNITS or MEDIANPRICE changed and stock has already been sold, the GL distributions
-- for stocks need to be reset since the gain/loss value will have changed for that stock sale. Also,
-- if those values changed and sold stock has posted, the stock needs to be adjusted.
if @PAYMENTMETHODCODE = 4
begin
declare @ORIGINALNUMBEROFUNITS decimal(20,3), @ORIGINALMEDIANPRICE decimal(19,4), @ORIGINALBASEEXCHANGERATEID uniqueidentifier
select
@ORIGINALNUMBEROFUNITS = NUMBEROFUNITS,
@ORIGINALMEDIANPRICE = TRANSACTIONMEDIANPRICE,
@ORIGINALBASEEXCHANGERATEID = BASEEXCHANGERATEID
from dbo.STOCKDETAIL
where ID = @ORIGINALPAYMETHODID
if ((@ORIGINALNUMBEROFUNITS <> @NUMBEROFUNITS or @ORIGINALMEDIANPRICE <> @MEDIANPRICE or @ORIGINALBASEEXCHANGERATEID <> @BASEEXCHANGERATEID)
and exists (select 1 from dbo.STOCKSALE where STOCKDETAILID = @ORIGINALPAYMETHODID))
or exists(select 1 from dbo.STOCKSALEADJUSTMENT A inner join dbo.STOCKSALE S on S.ID = A.STOCKSALEID where S.STOCKDETAILID = @ORIGINALPAYMETHODID and A.POSTSTATUSCODE != 0 and A.POSTSTATUSCODE != @ADJUSTMENTPOSTSTATUSCODE)
begin
set @CLEARSTOCKGLDISTRIBUTION = 1;
-- Indicate the stock sales need to be adjusted if they were already sold
if exists (select 1 from dbo.STOCKSALE where STOCKDETAILID = @ORIGINALPAYMETHODID and SALEPOSTSTATUSCODE = 0)
set @ADJUSTSTOCK = 1;
end
end
-- If NUMBEROFUNITS or FAIRMARKETVALUE changed and the gift-in-kind has already been sold, the GL distributions
-- for the gift-in-kind need to be reset since the gain/loss value will have changed for that gift-in-kind sale. Also,
-- if those values changed and the sold gift-in-kind has posted, the gift-in-kind needs to be adjusted.
if @PAYMENTMETHODCODE = 6
begin
declare @ORIGINALGIFTINKINDNUMBEROFUNITS int, @ORIGINALGIFTINKINDFAIRMARKETVALUE money, @ORIGINALGIFTINKINDBASEEXCHANGERATEID uniqueidentifier
select @ORIGINALGIFTINKINDNUMBEROFUNITS = NUMBEROFUNITS,
@ORIGINALGIFTINKINDFAIRMARKETVALUE = TRANSACTIONFAIRMARKETVALUE,
@ORIGINALGIFTINKINDBASEEXCHANGERATEID = BASEEXCHANGERATEID
from dbo.GIFTINKINDPAYMENTMETHODDETAIL
where ID = @ORIGINALPAYMETHODID
if ((@ORIGINALGIFTINKINDNUMBEROFUNITS <> @GIFTINKINDNUMBEROFUNITS or @ORIGINALGIFTINKINDFAIRMARKETVALUE <> @GIFTINKINDFAIRMARKETVALUE or @ORIGINALGIFTINKINDBASEEXCHANGERATEID <> @BASEEXCHANGERATEID)
and exists (select 1 from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = @ORIGINALPAYMETHODID))
or exists(select 1 from dbo.GIFTINKINDSALEADJUSTMENT A inner join dbo.GIFTINKINDSALE S on S.ID = A.GIFTINKINDSALEID where S.GIFTINKINDPAYMENTMETHODDETAILID = @ORIGINALPAYMETHODID and A.POSTSTATUSCODE != 0 and A.POSTSTATUSCODE != @ADJUSTMENTPOSTSTATUSCODE)
begin
set @CLEARGIFTINKINDGLDISTRIBUTION = 1;
-- Indicate the gift-in-kind sales need to be adjusted if they were already sold
if exists (select 1 from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = @ORIGINALPAYMETHODID and SALEPOSTSTATUSCODE = 0)
set @ADJUSTGIFTINKIND = 1;
end
end
-- UFN_CHECKDETAIL_BENEFITSCHANGEDFORGL pulls both the existing standard and percent benefits. As a result, we need to join the benefits before
-- passing them into the function
declare @TOTALBENEFITSXML xml;
if @BENEFITS is not null or @PERCENTAGEBENEFITS is not null
set @TOTALBENEFITSXML = dbo.UFN_REVENUEDETAIL_JOINBENEFITS(@BENEFITS, @PERCENTAGEBENEFITS);
--Update the organization total value, transaction total value, and exchange rates in the @TOTALBENEFITS XML.
if @TOTALBENEFITSXML is not null
set @TOTALBENEFITSXML = dbo.UFN_REVENUEBENEFIT_CONVERTAMOUNTSINXML_2(@TOTALBENEFITSXML, @TRANSACTIONCURRENCYID, @BASECURRENCYID);
if dbo.UFN_CHECKDETAIL_BENEFITSCHANGEDFORGL(@ID, @TOTALBENEFITSXML) = 1
begin
set @CLEARBENEFITSGLDISTRIBUTION = 1;
if exists(select top 1 1 from dbo.FINANCIALTRANSACTIONLINEITEM LI inner join dbo.REVENUEBENEFIT_EXT RB on LI.ID = RB.ID where LI.FINANCIALTRANSACTIONID = @ID and LI.POSTSTATUSCODE = 2)
set @ADJUSTBENEFITS = 1;
end
if @ADJUSTBENEFITS = 0
if (select COUNT(ID) from dbo.BENEFITADJUSTMENT where REVENUEID = @ID and POSTSTATUSCODE = 1) > 0
begin
set @ADJUSTBENEFITS = 1;
end
/* 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;
*/
select @STOCKDETAILCOUNT = count(T1.ID) from dbo.STOCKSALE_EXT T1
inner join dbo.FINANCIALTRANSACTION T2 on T1.ID = T2.ID
where T1.STOCKDETAILID = @ORIGINALPAYMETHODID and T2.POSTSTATUSCODE = 2 and T2.DELETEDON is null;
select @GIFTINKINDPAYMENTMETHODDETAILCOUNT = count(T1.ID) from dbo.GIFTINKINDSALE_EXT T1
inner join dbo.FINANCIALTRANSACTION T2 on T1.ID = T2.ID
where T1.GIFTINKINDPAYMENTMETHODDETAILID = @ORIGINALPAYMETHODID and T2.POSTSTATUSCODE = 2 and T2.DELETEDON is null;
select @PROPERTYDETAILCOUNT = count(T1.ID) from dbo.PROPERTYDETAIL_EXT T1
inner join dbo.FINANCIALTRANSACTION T2 on T1.ID = T2.ID
where T1.ID = @ORIGINALPAYMETHODID and T2.POSTSTATUSCODE = 2 and T2.DELETEDON is null;
/* 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
if exists (select 1 from dbo.PROPERTYDETAILADJUSTMENT A where A.PROPERTYDETAILID = @ORIGINALPAYMETHODID and A.POSTSTATUSCODE != 0 and A.POSTSTATUSCODE != @ADJUSTMENTPOSTSTATUSCODE)
set @CLEARPROPERTYGLDISTRIBUTION = 1;
exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT
@ORIGINALPAYMETHODID,
@PROPERTYDETAILADJUSTMENTID output,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE;
end
end
else
begin
-- If the entire transaction isn't being adjusted, check if just the stock sales need to be adjusted
if @ADJUSTSTOCK = 1
exec dbo.USP_SAVE_STOCKDETAILADJUSTMENT
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
@STOCKSALEADJUSTMENTIDS output,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE
-- If the entire transaction isn't being adjusted, check if just the gift-in-kind sales need to be adjusted
if @ADJUSTGIFTINKIND = 1
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILADJUSTMENT
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
@GIFTINKINDSALEADJUSTMENTIDS output,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE
end
if @ADJUSTBENEFITS = 1
begin
if @ADJUSTMENTREASONCODEID is null
raiserror('BBERR_ADJUSTMENTREASONCODEIDREQUIRED', 13, 1)
-- 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);
--Remove benefits if they are waived
if @BENEFITSWAIVED = 1
set @TOTALBENEFITSXML = null;
set @BENEFITSADJUSTMENTID = null;
exec dbo.USP_SAVE_BENEFITADJUSTMENT_2
@ID,
@BENEFITSADJUSTMENTID output,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
default,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE,
@TOTALBENEFITS
end
if exists
(
select top 1
1
from
dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and REVENUESPLIT_EXT.APPLICATIONCODE = 12
)
set @HASAUCTIONPURCHASE = 1;
if dbo.UFN_CHECKDETAIL_AUCTIONPURCHASESCHANGED(@ID,@REVENUESTREAMS) = 1
set @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 1;
-- Reset the gift fee GL distributions if the payment method changed.
if (@PAYMENTMETHODCODE <> @ORIGINALPAYMENTMETHODCODE)
begin
set @ADJUSTGIFTFEEDISTRIBUTION = 1;
set @CLEARGIFTFEEGLDISTRIBUTION = 1;
end
if @ADJUSTGIFTFEEDISTRIBUTION = 0 and (select count(ID) from dbo.GIFTFEEADJUSTMENT where REVENUEID = @ID and POSTSTATUSCODE <> 0) > 0
set @ADJUSTGIFTFEEDISTRIBUTION = 1;
declare @OLDAUCTIONPURCHASES xml;
if @CLEARGLDISTRIBUTION = 1 or @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 1
set @OLDAUCTIONPURCHASES =
(
select
AUCTIONITEM.ID as AUCTIONITEMID,
AUCTIONITEM.REVENUEAUCTIONDONATIONID,
FINANCIALTRANSACTIONLINEITEM.ID,
FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT as AMOUNT
from
dbo.AUCTIONITEM
inner join dbo.AUCTIONITEMPURCHASE on AUCTIONITEM.ID = AUCTIONITEMPURCHASE.AUCTIONITEMID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = AUCTIONITEMPURCHASE.PURCHASEID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID and REVENUESPLIT_EXT.APPLICATIONCODE = 12
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
for xml raw('ITEM'),type,elements,root('AUCTIONPURCHASES'),BINARY BASE64
)
declare @OLDGIFTAID xml;
set @OLDGIFTAID =
(
select
FINANCIALTRANSACTIONLINEITEM.ID,
REVENUESPLIT_EXT.DESIGNATIONID,
isnull(REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID, @EMPTYGUID) as GLREVENUECATEGORYMAPPINGID,
dbo.UFN_GIFTAIDREVENUESPLIT_GETQUALIFICATIONSTATUS(FINANCIALTRANSACTIONLINEITEM.ID) as STATUS
from
dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUESPLITGIFTAID on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITGIFTAID.ID
left join dbo.REVENUECATEGORY on FINANCIALTRANSACTIONLINEITEM.ID = REVENUECATEGORY.ID
where
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
for xml raw('ITEM'),type,elements,root('GIFTAIDQUALIFICATIONSTATUS'),BINARY BASE64
)
declare @TRIBUTEAMOUNT money;
select
@TRIBUTEAMOUNT = sum(AMOUNT)
from dbo.REVENUETRIBUTE
where REVENUEID = @ID;
-- do not allow the gift amount to be adjusted less than the applied tribute amount
if (@TRIBUTEAMOUNT is not null) and (@AMOUNT < @TRIBUTEAMOUNT) and (@UPDATETRIBUTEOPTION = 0) and (@VALIDATETRIBUTES = 1)
begin
raiserror('The payment amount cannot be less than the sum of the tribute amounts applied to this payment.', 13, 1)
end
if @UPDATETRIBUTEOPTION = 1
begin
declare @TRIBUTES table
(
TRIBUTEID uniqueidentifier,
AMOUNT money,
DESIGNATIONID uniqueidentifier,
SEQUENCE int,
REVENUETRIBUTEID uniqueidentifier,
BASECURRENCYID uniqueidentifier,
ORGANIZATIONAMOUNT money,
ORGANIZATIONEXCHANGERATEID uniqueidentifier
);
insert into @TRIBUTES
select
TRIBUTEID,
AMOUNT,
DESIGNATIONID,
SEQUENCE,
REVENUETRIBUTEID,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID
from
dbo.UFN_REVENUE_GETTRIBUTESFORAMOUNT(@ID, @AMOUNT, @BASEEXCHANGERATEID, @EXCHANGERATE)
update dbo.REVENUETRIBUTE
set
REVENUETRIBUTE.AMOUNT = TRIBUTES.AMOUNT,
REVENUETRIBUTE.ORGANIZATIONAMOUNT = TRIBUTES.ORGANIZATIONAMOUNT,
REVENUETRIBUTE.ORGANIZATIONEXCHANGERATEID = TRIBUTES.ORGANIZATIONEXCHANGERATEID,
REVENUETRIBUTE.CHANGEDBYID = @CHANGEAGENTID,
REVENUETRIBUTE.DATECHANGED = @CURRENTDATE
from dbo.REVENUETRIBUTE
inner join @TRIBUTES TRIBUTES on TRIBUTES.REVENUETRIBUTEID = REVENUETRIBUTE.ID
end
-- create reversals for gift aid tied to splits that have been deleted.
exec dbo.USP_REVENUESPLITGIFTAID_CREATEREVERSALSFORDELETEDSPLITS @OLDGIFTAID, @REVENUESTREAMS, @CHANGEAGENTID, @CURRENTDATE;
declare @TEMP_REVENUESPLITGIFTFEE table (
[ID] [uniqueidentifier] not null
,[FEE] [money] not null
,[FTLIDELETED] [bit] null
)
insert into @TEMP_REVENUESPLITGIFTFEE (
[ID]
,[FEE]
)
select RSGF.[ID]
,RSGF.[FEE]
from FINANCIALTRANSACTION FT
inner join FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.FINANCIALTRANSACTIONID = FT.ID
inner join REVENUESPLITGIFTFEE RSGF on FTLI.ID = RSGF.ID
where FT.ID = @ID
declare @SPLITSDECLININGGIFTAID xml;
declare @GIFTAIDSPONSORSHIPSPLITS xml;
exec dbo.USP_PAYMENT_ADJUST
@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,
@BENEFITSADJUSTMENTID = @BENEFITSADJUSTMENTID,
@ADJUSTMENTPOSTDATE = @ADJUSTMENTPOSTDATE,
@ORIGINALPAYMETHODID = @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,
@KEYALREADYOPEN = 0,
@OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID,
@DIRECTDEBITRESULTCODE = @DIRECTDEBITRESULTCODE,
@LOWPRICE = @LOWPRICE,
@HIGHPRICE = @HIGHPRICE,
@SALEDATE = @SALEDATE,
@SALEAMOUNT = @SALEAMOUNT,
@BROKERFEE = @BROKERFEE,
@SALEPOSTDATE = @SALEPOSTDATE,
@SALEPOSTSTATUSCODE = @SALEPOSTSTATUSCODE,
@GIFTINKINDITEMNAME = @GIFTINKINDITEMNAME,
@GIFTINKINDDISPOSITIONCODE = @GIFTINKINDDISPOSITIONCODE,
@GIFTINKINDNUMBEROFUNITS = @GIFTINKINDNUMBEROFUNITS,
@GIFTINKINDFAIRMARKETVALUE = @GIFTINKINDFAIRMARKETVALUE,
@DIRECTDEBITISREJECTED = @DIRECTDEBITISREJECTED,
@ORIGINALPAYMENTMETHODCODE = @ORIGINALPAYMENTMETHODCODE,
@ORIGINALVENDORID = @ORIGINALVENDORID,
@ORIGINALTRANSACTIONID = @ORIGINALTRANSACTIONID,
@SEPAMANDATEID = @SEPAMANDATEID,
@OVERRIDESAVEDVENDORID = 1,
@OVERRIDESAVEDBBPSTRANSACTIONID = 1,
@OVERRIDESAVEDSEPAMANDATEID = 1;
if @UPDATEGIFTFEEOPTION = 0
begin
update @TEMP_REVENUESPLITGIFTFEE
set FTLIDELETED = 1
from @TEMP_REVENUESPLITGIFTFEE T
inner join FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.ID = T.ID
where FTLI.DELETEDON is not null
update @TEMP_REVENUESPLITGIFTFEE
set FTLIDELETED = null
from @TEMP_REVENUESPLITGIFTFEE T
inner join REVENUESPLITGIFTFEE RSGF on RSGF.ID = T.ID
end
if @ADJUSTMATCHINGGIFTCLAIMS is null
set @ADJUSTMATCHINGGIFTCLAIMS = 0;
if @ADJUSTMATCHINGGIFTCLAIMS = 2
exec dbo.USP_MATCHINGGIFTCLAIM_AMOUNT_UPDATE
@ID,
@AMOUNT,
@OLDAMOUNT,
@ADJUSTMATCHINGGIFTCLAIMS,
@CHANGEAGENTID,
@CURRENTDATE
--Cache CONTEXT INFO
declare @CONTEXTCACHE varbinary(128);
set @CONTEXTCACHE = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
-- if the payment method has changed, clear any user-defined gl distributions for all revenue records
if @CLEARGLDISTRIBUTION = 1
begin
-- Use logical revenue id for stock, gift in kind, or property. Otherwise use the financial transaction id.
-- Made as three separate statements since deadlocking and performance issues occur if using an 'OR' statement in a single delete
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 @ORIGINALPAYMENTMETHODCODE in (6,5,4)
and JOURNALENTRY_EXT.LOGICALREVENUEID = @ID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE in (1,11,13,10)
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
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 @ORIGINALPAYMENTMETHODCODE in (6,5,4)
and JOURNALENTRY_EXT.LOGICALREVENUEID is null
and 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
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 @ORIGINALPAYMENTMETHODCODE not in (6,5,4)
and 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
if @ADJUSTMENTPOSTSTATUSCODE <> 2 and @PAYMENTMETHODCODE = 4
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
-- Add new gift-in-kind detail GL distributions
if @ADJUSTMENTPOSTSTATUSCODE <> 2 and @PAYMENTMETHODCODE = 6
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
-- Add new property detail GL distributions
if @ADJUSTMENTPOSTSTATUSCODE <> 2 and @PAYMENTMETHODCODE = 5
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
if @CLEARSTOCKGLDISTRIBUTION = 1
begin
--Clear stock GL
--delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
-- Fallback to FINANCIALTRANSACTIONID was made as two separate delete statements
-- since deadlocking and performance issues occur if using an 'OR' statement in a single delete
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 JOURNALENTRY_EXT.LOGICALREVENUEID = @ID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE = 11
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
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 JOURNALENTRY_EXT.LOGICALREVENUEID is null
and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE = 11
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
-- Add new stock detail GL distributions
if @ADJUSTMENTPOSTSTATUSCODE <> 2 or @ADJUSTMENTPOSTSTATUSCODE is null
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
end
if @CLEARGIFTINKINDGLDISTRIBUTION = 1
begin
--Clear gift-in-kind GL
--delete from dbo.GIFTINKINDSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
-- Fallback to FINANCIALTRANSACTIONID was made as two separate delete statements
-- since deadlocking and performance issues occur if using an 'OR' statement in a single delete
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 JOURNALENTRY_EXT.LOGICALREVENUEID = @ID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE = 13
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
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 JOURNALENTRY_EXT.LOGICALREVENUEID is null
and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE = 13
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
-- Add new gift-in-kind detail GL distributions
if @ADJUSTMENTPOSTSTATUSCODE <> 2 or @ADJUSTMENTPOSTSTATUSCODE is null
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
end
if @PAYMENTMETHODCODE = 4
begin
declare @RETURNID uniqueidentifier
if @SALE_SALEDATE is not null
and @SALE_SALEAMOUNT is not null
and @SALE_GLPOSTDATE is not null
and @SALE_GLPOSTSTATUS is not null
exec dbo.USP_DATAFORMTEMPLATE_ADD_STOCKSALEBYTRANSACTION @RETURNID
,@ID
,@CHANGEAGENTID
,@SALE_SALEDATE
,@SALE_SALEAMOUNT
,@SALE_BROKERFEES
,@NUMBEROFUNITSSOLD
,@SALE_LOWPRICE
,@SALE_MEDIANPRICE
,@SALE_HIGHPRICE
,@SALE_GLPOSTDATE
,@SALE_GLPOSTSTATUS
,@BASEEXCHANGERATEID
,@EXCHANGERATE
,@CURRENTAPPUSERID
end
if @CLEARPROPERTYGLDISTRIBUTION = 1
begin
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 = @ORIGINALPAYMETHODID
and JOURNALENTRY_EXT.OUTDATED = 0
and JOURNALENTRY_EXT.TABLENAMECODE = 10
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
if @ADJUSTMENTPOSTSTATUSCODE <> 2
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION
@ID,
@CHANGEAGENTID,
@CURRENTDATE;
end
end
if @CLEARBENEFITSGLDISTRIBUTION = 1 and @ADJUSTMENTPOSTSTATUSCODE <> 2
begin
delete JE
from dbo.FINANCIALTRANSACTIONLINEITEM LI
inner join dbo.JOURNALENTRY JE on JE.FINANCIALTRANSACTIONLINEITEMID = LI.ID
inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID
where LI.FINANCIALTRANSACTIONID = @ID
and LI.DELETEDON is null
and LI.POSTSTATUSCODE != 2
and LI.TYPECODE != 1
and JEX.TABLENAMECODE = 5; --BENEFITGLDISTRIBUTION
exec dbo.USP_SAVE_PAYMENT_BENEFITGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
end
--Naveen 11/07/2010 Update gift fees when you change the amount
--PBI 119825
if @UPDATEGIFTFEEOPTION = 1 and exists (select 1 from dbo.GIFTFEEOVERRIDEREASONCODE where ISPAYMENTEDITDEFAULT=1 and ACTIVE=1)
begin
exec dbo.USP_REVENUE_UPDATEPAYMENTGIFTFEE
@ID,
@CONSTITUENTID,
@CHANGEAGENTID,
@PAYMENTMETHODCODE
set @ADJUSTGIFTFEEDISTRIBUTION = 1;
set @CLEARGIFTFEEGLDISTRIBUTION = 1;
end
else if (@SHOULDUPDATEGIFTFEE = 0 and @STREAMCHANGED = 1)
begin
set @ADJUSTGIFTFEEDISTRIBUTION = 1;
set @CLEARGIFTFEEGLDISTRIBUTION = 1;
end
if @ADJUSTGIFTFEEDISTRIBUTION = 1
begin
if @ADJUSTMENTREASONCODEID is null
raiserror('BBERR_ADJUSTMENTREASONCODEIDREQUIRED', 13, 1)
if @CLEARGIFTFEEGLDISTRIBUTION = 1
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 = 8
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1;
declare @TEMP_REVENUESPLITGIFTFEE_XML xml;
set @TEMP_REVENUESPLITGIFTFEE_XML = (select ID,FEE,FTLIDELETED from @TEMP_REVENUESPLITGIFTFEE
for xml raw('ITEM'),type,elements,root('REVENUESPLITGIFTFEES'),BINARY BASE64);
if @ADJUSTMENTPOSTSTATUSCODE <> 2
exec dbo.USP_SAVE_GIFTFEEADJUSTMENT_2
@ID,
null,
@CHANGEAGENTID,
@CURRENTDATE,
@ADJUSTMENTDATE,
@ADJUSTMENTPOSTDATE,
@ADJUSTMENTREASON,
default,
@ADJUSTMENTREASONCODEID,
@ADJUSTMENTPOSTSTATUSCODE,
@UPDATEGIFTFEEOPTION,
@TEMP_REVENUESPLITGIFTFEE_XML;
if @ADJUSTMENTPOSTSTATUSCODE <> 2 and @CLEARGIFTFEEGLDISTRIBUTION = 1
exec dbo.USP_SAVE_GIFTFEEADJUSTMENTGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
end
else if @CLEARGIFTFEEGLDISTRIBUTION = 1
begin
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 = 8
and FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2
and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1;
exec dbo.USP_SAVE_GIFTFEEADJUSTMENTGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
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
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
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
--Restore CONTEXT_INFO
if not @CONTEXTCACHE is null
set CONTEXT_INFO @CONTEXTCACHE;
/* 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
else
begin
-- If the entire transaction wasn't adjusted, check if just the stocks need to be adjusted
if @ADJUSTSTOCK = 1 and @STOCKSALEADJUSTMENTIDS is not null
exec dbo.USP_ADJUSTMENTHISTORY_STOCK_SAVEHISTORY
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
null,
@STOCKSALEADJUSTMENTIDS;
-- If the entire transaction wasn't adjusted, check if just the gift-in-kind needs to be adjusted
if @ADJUSTGIFTINKIND = 1 and @GIFTINKINDSALEADJUSTMENTIDS is not null
exec dbo.USP_ADJUSTMENTHISTORY_GIFTINKIND_SAVEHISTORY
@ORIGINALPAYMETHODID,
@CHANGEAGENTID,
null,
@GIFTINKINDSALEADJUSTMENTIDS;
end
-- 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
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
end
-- update existing auction purchase GL distributions
if ((@CLEARGLDISTRIBUTION = 1 and @HASAUCTIONPURCHASE = 1) or @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 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 try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;