USP_DATAFORMTEMPLATE_EDIT_REVENUE_SPLITADJUST
The save procedure used by the edit dataform template "Posted Revenue Split Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@SPLITS | xml | IN | |
@ADJUSTMENTDATE | datetime | IN | Adjusted Date |
@ADJUSTMENTPOSTDATE | datetime | IN | Adjusted Post Date |
@ADJUSTMENTREASON | nvarchar(300) | IN | Adjustment reason |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUE_SPLITADJUST
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@SPLITS xml,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300)
)
as
set nocount on;
declare @CHANGEDATE datetime;
declare @PAYMENTMETHODCODE tinyint;
declare @ADJUSTMENTID uniqueidentifier;
declare @STOCKSALEADJUSTMENTIDS xml;
declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;
declare @GIFTINKINDSALEADJUSTMENTIDS xml;
declare @REVENUEAMOUNT money;
declare @TRANSACTIONTYPECODE tinyint;
declare @REVENUEPAYMENTMETHODID uniqueidentifier;
declare @ADJUST bit;
declare @CLEARGLDISTRIBUTION bit;
declare @PROPERTYDETAILCOUNT int;
set @ADJUST = 0
set @PROPERTYDETAILCOUNT = 0;
set @CHANGEDATE = getdate();
begin try
select @REVENUEAMOUNT = REVENUE.AMOUNT,
@TRANSACTIONTYPECODE = TRANSACTIONTYPECODE,
@PAYMENTMETHODCODE = PAYMENTMETHODCODE,
@REVENUEPAYMENTMETHODID = REVENUEPAYMENTMETHOD.ID
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD
on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
where REVENUE.ID = @ID;
if @TRANSACTIONTYPECODE = 1
raiserror('NOTVALIDFORPLEDGE',13,1)
if @TRANSACTIONTYPECODE = 3
raiserror('NOTVALIDFORMGPLEDGE',13,1)
/* Check if designations changed */
if dbo.UFN_CHECKDETAIL_SPLITSCHANGED(@ID, @SPLITS) = 1
begin
set @ADJUST = 1;
set @CLEARGLDISTRIBUTION = 1;
end
/* Already adjusted */
if @ADJUST = 0
if (select COUNT(ADJUSTMENT.ID)
from dbo.ADJUSTMENT
where REVENUEID = @ID and POSTSTATUSCODE = 1) > 0
set @ADJUST = 1
/* If there was a change to GL related data log an adjustment for each revenue in the transaction */
if @ADJUST = 1
begin
set @ADJUSTMENTID = null;
exec dbo.USP_SAVE_ADJUSTMENT @ID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
select @PROPERTYDETAILCOUNT = count(PROPERTYDETAIL.ID)
from dbo.PROPERTYDETAIL
where PROPERTYDETAIL.ID = @REVENUEPAYMENTMETHODID and SALEPOSTSTATUSCODE = 0;
/* If sold stock has been posted, log stock detail adjustment */
if @PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = @REVENUEPAYMENTMETHODID)
begin
exec dbo.USP_SAVE_STOCKDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, @STOCKSALEADJUSTMENTIDS output;
end
/* If sold property has been posted, log property detail adjustment */
else if (@PAYMENTMETHODCODE = 5) and (@PROPERTYDETAILCOUNT > 0)
begin
exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @PROPERTYDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
end
/* If sold gift-in-kind has been posted, log gift-in-kind detail adjustment */
if @PAYMENTMETHODCODE = 6 and exists(select ID from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID)
begin
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, @GIFTINKINDSALEADJUSTMENTIDS output;
end
end
-- check to see if the revenue record needs to be re-acknowledged
if (coalesce((select top 1 REACKNOWLEDGEREVENUE from dbo.ACKNOWLEDGEMENTPREFERENCE), 0)) = 1
begin
-- if designations have changed, mark the revenue letters for this record out of date, if necessary
if dbo.UFN_CHECKDETAIL_SPLITSCHANGED(@ID, @SPLITS) = 1
exec dbo.USP_REVENUELETTER_SETREACKNOWLEDGEMENTS @ID, @CHANGEAGENTID;
end
-- Set the IDs for any blank entries in the splits XML so that it can associate the declines with gift aid
-- flag with the generated splits. Also, pull in the existing value for declines gift aid if it wasn't passed
-- in the xml.
set @SPLITS = ( select
case when SPLITS.[ID] is null or SPLITS.[ID] = '00000000-0000-0000-0000-000000000000' then newid() else SPLITS.[ID] end [ID],
SPLITS.[AMOUNT],
SPLITS.[APPLICATIONCODE],
SPLITS.[DESIGNATIONID],
SPLITS.[TYPECODE],
case when SPLITS.[DECLINESGIFTAID] is null then REVENUESPLITGIFTAID.DECLINESGIFTAID else SPLITS.DECLINESGIFTAID end DECLINESGIFTAID
from dbo.UFN_REVENUE_GETSPLITS_FROMITEMLISTXML(@SPLITS) SPLITS
left join dbo.REVENUESPLITGIFTAID on SPLITS.ID = REVENUESPLITGIFTAID.ID
for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64)
exec dbo.USP_REVENUE_SPLIT_EDIT_SAVE @ID, @CHANGEAGENTID, @CHANGEDATE, @REVENUEAMOUNT, @SPLITS;
if @TRANSACTIONTYPECODE = 1
exec dbo.USP_PLEDGE_FIXDEPENDENTSPLITS @ID, @CHANGEAGENTID, @CHANGEDATE;
--Gift Aid is for UK only
if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
begin
declare @DATE datetime, @APPEALID uniqueidentifier;
declare @CREDITTYPECODEID uniqueidentifier;
select
@DATE = REVENUE.DATE,
@APPEALID = REVENUE.APPEALID,
@PAYMENTMETHODCODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
where REVENUE.ID = @ID;
if @PAYMENTMETHODCODE = 2
select @CREDITTYPECODEID = CREDITCARD.CREDITTYPECODEID
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
left join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
left join dbo.CREDITCARD on CREDITCARD.ID = REVENUESCHEDULE.CREDITCARDID
where REVENUE.ID = @ID;
declare @SPLITSDECLININGGIFTAID xml
set @SPLITSDECLININGGIFTAID = ( select
ID as REVENUESPLITID
from dbo.UFN_REVENUE_GETSPLITS_FROMITEMLISTXML(@SPLITS)
where DECLINESGIFTAID = 1
for xml raw('ITEM'),type,elements,root('SPLITSDECLININGGIFTAID'),BINARY BASE64)
exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID, @APPEALID, @PAYMENTMETHODCODE, @CREDITTYPECODEID, @CHANGEAGENTID, @DATE, @TRANSACTIONTYPECODE, @SPLITSDECLININGGIFTAID
end
-- if the designations has changed, clear any user-defined gl distributions for this revenue record
if @CLEARGLDISTRIBUTION = 1
begin
--Clear GL
--Cache CONTEXT INFO
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
delete from dbo.GIFTINKINDSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
-- Add new GL distributions
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CHANGEDATE;
-- Add new stock detail GL distributions
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CHANGEDATE;
-- Add new property detail GL distributions
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CHANGEDATE;
-- Add new gift-in-kind detail GL distributions
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION @ID, @CHANGEAGENTID, @CHANGEDATE;
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, @CHANGEDATE;
end
/* add adjustment history information */
if @ADJUST = 1
begin
/*call USP_ADJUSTMENTHISTORY_*_SAVEHISTORY after the revenue tables are updated */
if exists(select top 1 ID from dbo.REVENUE where ID = @ID)
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 @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @STOCKSALEADJUSTMENTIDS;
if @PROPERTYDETAILADJUSTMENTID is not null
exec dbo.USP_ADJUSTMENTHISTORY_PROPERTY_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @PROPERTYDETAILADJUSTMENTID;
if @GIFTINKINDSALEADJUSTMENTIDS is not null
exec dbo.USP_ADJUSTMENTHISTORY_GIFTINKIND_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @GIFTINKINDSALEADJUSTMENTIDS;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
return 0;