USP_DATAFORMTEMPLATE_EDIT_PAYMENT7
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 | |
@POSTSTATUSCODE | tinyint | IN | |
@POSTDATE | datetime | 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 | |
@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 | |
@ADJUSTMATCHINGGIFTCLAIMS | tinyint | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@UPDATEGIFTFEEOPTION | tinyint | IN | |
@UPDATETRIBUTEOPTION | tinyint | IN | |
@VALIDATETRIBUTES | bit | 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 | |
@SEPAMANDATEID | uniqueidentifier | IN | |
@BATCHROWID | uniqueidentifier | IN | |
@NUMBEROFUNITSSOLD | decimal(20, 3) | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PAYMENT7
(
@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),
@POSTSTATUSCODE tinyint,
@POSTDATE datetime,
@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),
@GIFTINKINDITEMNAME nvarchar(100),
@GIFTINKINDDISPOSITIONCODE tinyint,
@GIFTINKINDNUMBEROFUNITS int,
@GIFTINKINDFAIRMARKETVALUE money,
@DIRECTDEBITISREJECTED bit,
@PERCENTAGEBENEFITS xml,
@BASEEXCHANGERATEID uniqueidentifier = null,
@EXCHANGERATE decimal(20,8) = null,
@ADJUSTMATCHINGGIFTCLAIMS tinyint = null,
@CURRENTAPPUSERID uniqueidentifier = null,
@UPDATEGIFTFEEOPTION tinyint = null,
@UPDATETRIBUTEOPTION tinyint = null,
@VALIDATETRIBUTES bit = 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,
@SEPAMANDATEID uniqueidentifier = null,
@BATCHROWID uniqueidentifier = null,
@NUMBEROFUNITSSOLD decimal(20,3) = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = GetDate();
declare @CLEARALLGLDISTRIBUTIONS bit;
declare @CLEARREVENUEGLDISTRIBUTION bit;
declare @CLEARSTOCKGLDISTRIBUTION bit;
declare @CLEARGIFTINKINDGLDISTRIBUTION bit;
declare @CLEARBENEFITSGLDISTRIBUTION bit;
declare @CLEARAUCTIONPURCHASEGLDISTRIBUTION bit;
declare @CLEARGIFTFEEGLDISTRIBUTION bit;
declare @STREAMCHANGED bit = 0;
declare @SHOULDUPDATEGIFTFEE tinyint = 1;
declare @CLEARPROPERTYSALEGLDISTRIBUTION bit;
set @CLEARALLGLDISTRIBUTIONS = 0;
set @CLEARREVENUEGLDISTRIBUTION = 0;
set @CLEARSTOCKGLDISTRIBUTION = 0;
set @CLEARGIFTINKINDGLDISTRIBUTION = 0;
set @CLEARBENEFITSGLDISTRIBUTION = 0;
set @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 0;
set @CLEARGIFTFEEGLDISTRIBUTION = 0;
set @CLEARPROPERTYSALEGLDISTRIBUTION = 0;
declare @EMPTYGUID uniqueidentifier = '00000000-0000-0000-0000-000000000000'
declare @contextCache varbinary(128);
--cache current context information
set @contextCache = CONTEXT_INFO();
--set CONTEXT_INFO to @CHANGEAGENTID
set CONTEXT_INFO @CHANGEAGENTID;
if @UPDATEGIFTFEEOPTION is null
set @UPDATEGIFTFEEOPTION = 0;
begin try
-- 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;
declare @ALLOWGLDISTRIBUTIONS bit;
set @ALLOWGLDISTRIBUTIONS = dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID)
if @ALLOWGLDISTRIBUTIONS = 0
begin
set @POSTSTATUSCODE = 2; -- Do not post
set @POSTDATE = null;
end
-- ####
if exists(select 1
from dbo.BANKACCOUNTTRANSACTION BAT
inner join dbo.BANKACCOUNTDEPOSITPAYMENT DP on BAT.ID = DP.DEPOSITID and DP.ID = @ID
where BAT.POSTSTATUSCODE != @POSTSTATUSCODE)
raiserror('BBERR_POSTSTATUS_DIFFER_DEPOSIT', 13, 1);
if @POSTSTATUSCODE = 0
raiserror('You cannot edit a gift to post it.', 13, 1);
declare @DONOTPOST bit;
select @DONOTPOST = case when @POSTSTATUSCODE = 2 then 1 else 0 end;
-- Bug 194561 - if it is an auction item, do not allow payment to be anything but cash, check, or credit card. Those are the only payment methods implemented in AMPro.
-- If more methods are added, update the error message in Errors.resx.
if @PAYMENTMETHODCODE not in (0, 1, 2) -- cash, check, credit card
and exists
(
select
APPLICATIONCODE
from
dbo.UFN_REVENUE_GETAPPLICATIONS_FROMXML(@REVENUESTREAMS)
where
APPLICATIONCODE = 12 -- auction purchase
)
begin
raiserror('BBERR_AUCTIONITEM_PAYMENT_INVALIDPAYMENTMETHOD : The chosen payment method cannot be applied to an auction item purchase. The acceptable payment methods are Cash, Check, or Credit Card.', 13, 1);
return 1;
end
declare @BASECURRENCYID uniqueidentifier;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @CONSTITUENTID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ORIGINALCHANNELCODEID uniqueidentifier;
declare @ORIGINALAPPEALID uniqueidentifier;
select
@BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID),
@TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
@CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID,
@ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID,
@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;
declare @ORIGINALPAYMETHODID uniqueidentifier, @ORIGINALPAYMENTMETHODCODE tinyint, @ORIGINALGIFTINKINDSUBTYPECODEID uniqueidentifier,
@ORIGINALCREDITTYPECODEID uniqueidentifier, @ORIGINALPROPERTYSUBTYPECODEID uniqueidentifier, @ORIGINALOTHERPAYMENTMETHODCODEID uniqueidentifier,
@ORIGINALVENDORID nvarchar(50), @ORIGINALTRANSACTIONID uniqueidentifier;
select
@ORIGINALPAYMETHODID = RPM.ID,
@ORIGINALPAYMENTMETHODCODE = PAYMENTMETHODCODE,
@ORIGINALGIFTINKINDSUBTYPECODEID = GIFTINKINDSUBTYPECODEID,
@ORIGINALCREDITTYPECODEID = CREDITTYPECODEID,
@ORIGINALPROPERTYSUBTYPECODEID = PROPERTYSUBTYPECODEID,
@ORIGINALOTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODCODEID,
@ORIGINALVENDORID = CCPMD.VENDORID,
@ORIGINALTRANSACTIONID = CCPMD.TRANSACTIONID
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_EXT PD on RPM.ID = PD.ID
left outer join dbo.OTHERPAYMENTMETHODDETAIL OPMD on RPM.ID = OPMD.ID
where
RPM.REVENUEID = @ID;
-- check to see if post status or payment method has changed
if not exists(
select 1 from dbo.FINANCIALTRANSACTION FT
where FT.ID = @ID
and ((@POSTSTATUSCODE = 2 and FT.POSTSTATUSCODE = 3) or (@POSTSTATUSCODE = 1 and FT.POSTSTATUSCODE!= 3))
)
or @ORIGINALPAYMENTMETHODCODE <> @PAYMENTMETHODCODE
or @ORIGINALGIFTINKINDSUBTYPECODEID <> @GIFTINKINDSUBTYPECODEID
or @ORIGINALCREDITTYPECODEID <> @CREDITTYPECODEID
or @ORIGINALPROPERTYSUBTYPECODEID <> @PROPERTYSUBTYPECODEID
or @ORIGINALOTHERPAYMENTMETHODCODEID <> @OTHERPAYMENTMETHODCODEID
begin
set @CLEARALLGLDISTRIBUTIONS = 1;
end
-- If the post status changed, update the stock and gift-in-kind sales' post status
-- for all sales that haven't posted
declare @ORIGINALDONOTPOST 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
if @ORIGINALDONOTPOST <> @DONOTPOST
begin
update FT set
POSTSTATUSCODE = case @POSTSTATUSCODE when 0 then 2 when 1 then 1 when 2 then 3 end,
POSTDATE = case when @POSTSTATUSCODE = 2 then null else @POSTDATE end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.STOCKSALE_EXT
inner join dbo.FINANCIALTRANSACTION FT on STOCKSALE_EXT.ID = FT.ID
where
STOCKSALE_EXT.STOCKDETAILID = @ORIGINALPAYMETHODID and
FT.POSTSTATUSCODE != 2;
if not (@POSTSTATUSCODE = 2 or @POSTDATE is not null)
raiserror ('CK_GIFTINKINDSALE_POSTDATE_REQUIRED', 16, 1);
update FT set
POSTSTATUSCODE = case @POSTSTATUSCODE when 0 then 2 when 1 then 1 when 2 then 3 end,
POSTDATE = case when @POSTSTATUSCODE = 2 then null else @POSTDATE end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from GIFTINKINDSALE_EXT
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = GIFTINKINDSALE_EXT.ID
where
GIFTINKINDSALE_EXT.GIFTINKINDPAYMENTMETHODDETAILID = @ORIGINALPAYMETHODID and
FT.POSTSTATUSCODE != 2;
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 FTLI.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 FTLI.DELETEDON is null);
/* Check if revenue streams changed */
if @CLEARALLGLDISTRIBUTIONS = 0
if dbo.UFN_CHECKDETAIL_STREAMSCHANGED(@ID, @REVENUESTREAMS) = 1
begin
set @CLEARALLGLDISTRIBUTIONS = 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
-- check to see if reference has changed
if @CLEARALLGLDISTRIBUTIONS = 0
if coalesce(
(select REFERENCE from dbo.REVENUE_EXT
where ID = @ID), '') <> @REFERENCE
begin
set @CLEARALLGLDISTRIBUTIONS = 1;
end
-- if we aren't clearing all GL, check whether we need to clear the revenue GL
-- check whether the post date, inbound channel, or appeal have been updated
if
@CLEARALLGLDISTRIBUTIONS = 0 and
(
isnull(@ORIGINALCHANNELCODEID, @EMPTYGUID) <> isnull(@CHANNELCODEID, @EMPTYGUID) or
isnull(@ORIGINALAPPEALID, @EMPTYGUID) <> isnull(@APPEALID, @EMPTYGUID) or
not exists (
select 1 from dbo.FINANCIALTRANSACTION FT
where FT.ID = @ID
and FT.POSTDATE = @POSTDATE
)
)
begin
set @CLEARREVENUEGLDISTRIBUTION = 1;
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 = PD.SALEDATE,
@SALEAMOUNT = isnull(case PD.ISNEGATIVE when 0 then FT.TRANSACTIONAMOUNT else -1 * FT.TRANSACTIONAMOUNT end,0),
@BROKERFEE = PD.BROKERFEE,
@SALEPOSTDATE = cast(FT.POSTDATE as datetime),
@SALEPOSTSTATUSCODE = isnull(cast(case FT.POSTSTATUSCODE when 2 then 0 when 1 then 1 when 3 then 2 end as tinyint), 2)
from dbo.PROPERTYDETAIL_EXT PD
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = PD.ID
where PD.ID = @ORIGINALPAYMETHODID and PD.SALEDATE is not null;
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 @CLEARPROPERTYSALEGLDISTRIBUTION = 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
-- Reset stock GL distribution when the number of units or median price changed
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)
begin
set @CLEARSTOCKGLDISTRIBUTION = 1;
end
end
-- Reset gift-in-kind GL distribution when the number of units or fair market value changed
if @PAYMENTMETHODCODE = 6
begin
declare @ORIGINALGIKNUMBEROFUNITS int, @ORIGINALFAIRMARKETVALUE decimal(19,4), @ORIGINALGIKBASEEXCHANGERATEID uniqueidentifier
select
@ORIGINALGIKNUMBEROFUNITS = NUMBEROFUNITS,
@ORIGINALFAIRMARKETVALUE = FAIRMARKETVALUE,
@ORIGINALGIKBASEEXCHANGERATEID = BASEEXCHANGERATEID
from
dbo.GIFTINKINDPAYMENTMETHODDETAIL
where
ID = @ORIGINALPAYMETHODID;
if (@ORIGINALGIKNUMBEROFUNITS <> @GIFTINKINDNUMBEROFUNITS or @ORIGINALFAIRMARKETVALUE <> @GIFTINKINDFAIRMARKETVALUE or @ORIGINALGIKBASEEXCHANGERATEID <> @BASEEXCHANGERATEID) and
exists (select 1 from dbo.GIFTINKINDSALE_EXT where GIFTINKINDPAYMENTMETHODDETAILID = @ORIGINALPAYMETHODID)
begin
set @CLEARGIFTINKINDGLDISTRIBUTION = 1;
end
end
-- Merge the benefit types
-- update benefits
declare @TOTALBENEFITS xml;
set @TOTALBENEFITS = dbo.UFN_REVENUEDETAIL_JOINBENEFITS(@BENEFITS, @PERCENTAGEBENEFITS);
if dbo.UFN_CHECKDETAIL_BENEFITSCHANGEDFORGL(@ID, @TOTALBENEFITS) = 1
set @CLEARBENEFITSGLDISTRIBUTION = 1;
if dbo.UFN_CHECKDETAIL_AUCTIONPURCHASESCHANGED(@ID,@REVENUESTREAMS) = 1
set @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 1;
-- Determine whether or not the original or new payment has auction splits
-- before the original payment's splits are changed
declare @HASAUCTIONSPLITS bit = 0;
if exists
(
-- Existing revenue streams or current revenue streams contain auction splits
select top 1 ID from dbo.UFN_REVENUE_GETAPPLICATIONS(@ID) where APPLICATIONCODE = 12
union
select top 1 ID from dbo.UFN_REVENUE_GETAPPLICATIONS_FROMXML(@REVENUESTREAMS) where APPLICATIONCODE = 12
)
set @HASAUCTIONSPLITS = 1;
-- Reset the gift fee GL distributions if the post status or payment method changed.
-- Even though those changes are included in CLEARALLGLDISTRIBUTIONS, CLEARALLGLDISTRIBUTIONS
-- isn't used to reset gift fees distributions since CLEARALLGLDISTRIBUTIONS will change them when they
-- don't need to be changed.
if (@DONOTPOST <> @ORIGINALDONOTPOST) or (@PAYMENTMETHODCODE <> @ORIGINALPAYMENTMETHODCODE)
set @CLEARGIFTFEEGLDISTRIBUTION = 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
)
declare @SPLITSDECLININGGIFTAID xml;
declare @GIFTAIDSPONSORSHIPSPLITS xml;
declare @OLDSPOTRATEID uniqueidentifier;
--Track changes in amount and rates due to the edit because they might mean GL distributions need to be cleared.
declare @OLDTRANSACTIONAMOUNT money;
declare @OLDBASEAMOUNT money;
declare @OLDORGANIZATIONAMOUNT money;
declare @OLDBASEEXCHANGERATEID uniqueidentifier;
declare @OLDORGANIZATIONEXCHANGERATEID uniqueidentifier;
select
@OLDTRANSACTIONAMOUNT = TRANSACTIONAMOUNT,
@OLDBASEAMOUNT = BASEAMOUNT,
@OLDORGANIZATIONAMOUNT = ORGAMOUNT,
@OLDBASEEXCHANGERATEID = BASEEXCHANGERATEID,
@OLDORGANIZATIONEXCHANGERATEID = ORGEXCHANGERATEID
from dbo.FINANCIALTRANSACTION
where ID = @ID;
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
exec dbo.USP_PAYMENT_EDIT_4
@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,
@OLDSPOTRATEID = @OLDSPOTRATEID output,
@CURRENTAPPUSERID = @CURRENTAPPUSERID,
@BENEFITSADJUSTMENTID = null,
@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,
@ORIGINALVENDORID = @ORIGINALVENDORID,
@ORIGINALTRANSACTIONID = @ORIGINALTRANSACTIONID,
@SEPAMANDATEID = @SEPAMANDATEID,
@OVERRIDESAVEDVENDORID = 1,
@OVERRIDESAVEDBBPSTRANSACTIONID = 1,
@OVERRIDESAVEDSEPAMANDATEID = 1;
if @ADJUSTMATCHINGGIFTCLAIMS is null
set @ADJUSTMATCHINGGIFTCLAIMS = 0;
if @ADJUSTMATCHINGGIFTCLAIMS <> 0
begin
-- if there are existing MGC, and user selected to update the records, run the update.
if @ADJUSTMATCHINGGIFTCLAIMS = 2
begin
exec dbo.USP_MATCHINGGIFTCLAIM_AMOUNT_UPDATE @ID, @AMOUNT, @OLDTRANSACTIONAMOUNT, @ADJUSTMATCHINGGIFTCLAIMS, @CHANGEAGENTID, @CURRENTDATE
end
else -- if there were no matching gifts, create the defaults since no prompt gets displayed for user
-- code copied from add a payment where default MGC are created.
begin
if (select count(*) from dbo.UFN_REVENUE_GETMATCHINGGIFTBYROWNUMBER(@ID,1)) = 0
begin
declare @SPLITS xml;
declare @APPLIEDAMOUNT money;
select @SPLITS = (select sum(FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT) AMOUNT, REVENUESPLIT_EXT.DESIGNATIONID, 0 as TYPECODE
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID and REVENUESPLIT_EXT.TYPECODE = 0
group by REVENUESPLIT_EXT.DESIGNATIONID
for xml raw('ITEM'),type,elements,root('SPLITS'),binary base64);
if (select count(*)
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.DESIGNATION on REVENUESPLIT_EXT.DESIGNATIONID = DESIGNATION.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID and (REVENUESPLIT_EXT.TYPECODE = 0 or REVENUESPLIT_EXT.TYPECODE = 4)
and DESIGNATION.ISACTIVE = 0) > 0
raiserror('Revenue cannot be added to inactive designations.', 13, 2);
select @APPLIEDAMOUNT = sum(TRANSACTIONAMOUNT)
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID and REVENUESPLIT_EXT.TYPECODE = 0;
if dbo.UFN_MATCHINGGIFTPREFERENCE_AUTOADDMG() > 0
exec USP_MATCHINGGIFTPLEDGE_AUTOADD @CONSTITUENTID, @CHANGEAGENTID, @ID, @DATE, @APPLIEDAMOUNT, @RECEIPTAMOUNT, @SPLITS, @CURRENTAPPUSERID;
if dbo.UFN_MATCHINGGIFTPREFERENCE_AUTOADDSPOUSEMG() > 0
exec USP_MATCHINGGIFTPLEDGE_AUTOADDFROMSPOUSE @CONSTITUENTID, @CHANGEAGENTID, @ID, @DATE, @APPLIEDAMOUNT, @RECEIPTAMOUNT, @SPLITS, @CURRENTAPPUSERID;
end
end
end
--If the edit changed amount or rates, GL distributions need to be cleared.
if @CLEARALLGLDISTRIBUTIONS = 0
begin
if exists(
select 1
from dbo.REVENUE
where ID = @ID
and (
@OLDTRANSACTIONAMOUNT <> TRANSACTIONAMOUNT
or @OLDBASEAMOUNT <> AMOUNT
or @OLDORGANIZATIONAMOUNT <> ORGANIZATIONAMOUNT
or @OLDBASEEXCHANGERATEID <> BASEEXCHANGERATEID
or @OLDORGANIZATIONEXCHANGERATEID <> ORGANIZATIONEXCHANGERATEID
)
)
begin
set @CLEARALLGLDISTRIBUTIONS = 1;
end
end
declare @OLDPOSTDATE datetime;
declare @OLDDONOTPOST bit;
select @OLDPOSTDATE = POSTDATE, @OLDDONOTPOST = case FINANCIALTRANSACTION.POSTSTATUSCODE when 3 then 1 else 0 end from dbo.FINANCIALTRANSACTION where FINANCIALTRANSACTION.ID = @ID;
if @OLDPOSTDATE <> @POSTDATE or @OLDDONOTPOST <> @DONOTPOST
begin
update dbo.FINANCIALTRANSACTION
set POSTDATE = @POSTDATE,
POSTSTATUSCODE = case FINANCIALTRANSACTION.POSTSTATUSCODE when 2 then 2 else case when @DONOTPOST = 1 then 3 else case @POSTSTATUSCODE when 0 then 2 else 1 end end end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID and POSTSTATUSCODE <> 2;
update dbo.FINANCIALTRANSACTIONLINEITEM
set POSTDATE = @POSTDATE,
POSTSTATUSCODE = case FINANCIALTRANSACTION.POSTSTATUSCODE when 2 then 2 else case when @DONOTPOST = 1 then 3 else case @POSTSTATUSCODE when 0 then 2 else 1 end end end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left outer join dbo.FINANCIALTRANSACTIONLINEITEM REVERSE on FINANCIALTRANSACTIONLINEITEM.ID = REVERSE.REVERSEDLINEITEMID
where FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE != 2 and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1 AND REVERSE.ID is null
and FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @ID
update dbo.PROPERTYDETAIL
set SALEPOSTSTATUSCODE = @POSTSTATUSCODE,
SALEPOSTDATE = case @POSTSTATUSCODE when 2 then null else coalesce(SALEPOSTDATE, @POSTDATE) end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID in
(
select REVENUEPAYMENTMETHOD.ID from dbo.REVENUEPAYMENTMETHOD where REVENUEID = @ID and PAYMENTMETHODCODE = 5
) and ISSOLD = 1;
end
-- 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 from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
-- Add new GL distributions
if @POSTSTATUSCODE <> 2
begin
-- Add new GL distributions
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
-- Add new property detail GL distributions
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @ID, @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 benefit distributions
exec dbo.USP_SAVE_PAYMENT_BENEFITGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
declare @DEPOSITID uniqueidentifier;
select @DEPOSITID = DEPOSITID
from dbo.BANKACCOUNTDEPOSITPAYMENT
where ID = @ID;
if @DEPOSITID is not null
exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEPAYMENTDEBITACCOUNTS @ID, @DEPOSITID, @CHANGEAGENTID, @CURRENTDATE;
end
end
else
begin
if @CLEARREVENUEGLDISTRIBUTION = 1 --if only post date, appeal, or inbound channel has changed, only clear revenue distributions
begin
-- Clear GL
delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
-- Add new GL distributions
if @POSTSTATUSCODE <> 2
begin
-- Add new GL distributions
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
-- add benefit distributions
exec dbo.USP_SAVE_PAYMENT_BENEFITGLDISTRIBUTION @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
end
else if @CLEARBENEFITSGLDISTRIBUTION = 1
begin
delete from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
if @POSTSTATUSCODE <> 2
exec dbo.USP_SAVE_PAYMENT_BENEFITGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE
end
if @CLEARSTOCKGLDISTRIBUTION = 1
begin
delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
-- Add new stock detail GL distributions
if @POSTSTATUSCODE <> 2
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
end
if @CLEARGIFTINKINDGLDISTRIBUTION = 1
begin
delete from dbo.GIFTINKINDSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
-- Add new gift-in-kind detail GL distributions
if @POSTSTATUSCODE <> 2
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
end
if @CLEARPROPERTYSALEGLDISTRIBUTION = 1
begin
delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
-- Add new property detail GL distributions
if @POSTSTATUSCODE <> 2
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
end
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
--Naveen 11/03/2010 Update gift fees based on payment update
declare @REVENUEPOSTED bit;
--Is the revenue posted?
select @REVENUEPOSTED = (case when count(FINANCIALTRANSACTION.ID) > 0 then 1 else 0 end) from dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
inner join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = FINANCIALTRANSACTION.ID
where FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null
if @UPDATEGIFTFEEOPTION = 1 and exists (select 1 from dbo.GIFTFEEOVERRIDEREASONCODE where ISPAYMENTEDITDEFAULT=1 and ACTIVE=1)
begin
set @CLEARGIFTFEEGLDISTRIBUTION = 1;
exec dbo.USP_REVENUE_UPDATEPAYMENTGIFTFEE @ID, @CONSTITUENTID, @CHANGEAGENTID,@PAYMENTMETHODCODE
end
else if (@SHOULDUPDATEGIFTFEE = 0 and @STREAMCHANGED = 1)
set @CLEARGIFTFEEGLDISTRIBUTION = 1;
--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
-- CLEARGIFTFEEGLDISTRIBUTION isn't included in CLEARALLGLDISTRIBUTIONS so it isn't part of the above "else" block
if @CLEARGIFTFEEGLDISTRIBUTION = 1
begin
delete from dbo.GIFTFEEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
if @POSTSTATUSCODE <> 2
begin
-- add gift fee distributions
exec dbo.USP_SAVE_GIFTFEEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
end
end
-- update existing gift aid GL distributions
exec dbo.USP_REVENUESPLITGIFTAID_UPDATEGLDISTRIBUTIONS_FORREVENUE @ID, @OLDGIFTAID, @ORIGINALDONOTPOST, @DONOTPOST, @CHANGEAGENTID, @CURRENTDATE;
-- update existing auction purchase GL distributions
if (@CLEARALLGLDISTRIBUTIONS = 1 or @CLEARAUCTIONPURCHASEGLDISTRIBUTION = 1) and @HASAUCTIONSPLITS = 1
exec dbo.USP_REVENUE_UPDATEAUCTIONPURCHASEGLDISTRIBUTION @ID, @OLDAUCTIONPURCHASES, @CHANGEAGENTID, @CURRENTDATE;
if @OLDSPOTRATEID is not null
and not exists (select 1 from dbo.PAYMENTORIGINALAMOUNT where ID = @ID and BASEEXCHANGERATEID = @OLDSPOTRATEID)
and not exists (select 1 from dbo.REVENUESPLITGIFTAIDAMOUNTS where FINANCIALTRANSACTIONID = @ID and BASEEXCHANGERATEID = @OLDSPOTRATEID)
begin
exec dbo.USP_CURRENCYEXCHANGERATE_DELETEBYID_WITHCHANGEAGENTID @OLDSPOTRATEID, @CHANGEAGENTID;
end
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;