USP_DATAFORMTEMPLATE_ADJUSTEDIT_REVENUEDETAIL_2
The save procedure used by the edit dataform template "Revenue Detail Adjust Form 2".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@AMOUNT | money | IN | Amount |
@RECEIPTAMOUNT | money | IN | Receipt amount |
@SPLITS | xml | IN | Designations |
@SOURCECODE | nvarchar(50) | IN | Source code |
@APPEALID | uniqueidentifier | IN | Appeal |
@BENEFITS | xml | IN | Benefits |
@BENEFITSWAIVED | bit | IN | Benefits waived |
@MAILINGID | uniqueidentifier | IN | Mailing |
@CHANNELCODEID | uniqueidentifier | IN | Channel |
@DONOTACKNOWLEDGE | bit | IN | Do not acknowledge |
@ADJUSTMENTDATE | datetime | IN | Adjustment date |
@ADJUSTMENTPOSTDATE | datetime | IN | Adjustment post date |
@ADJUSTMENTREASON | nvarchar(300) | IN | Adjustment reason |
@CATEGORYCODEID | uniqueidentifier | IN | Revenue category |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADJUSTEDIT_REVENUEDETAIL_2
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@AMOUNT money,
@RECEIPTAMOUNT money,
@SPLITS xml,
@SOURCECODE nvarchar(50),
@APPEALID uniqueidentifier,
@BENEFITS xml,
@BENEFITSWAIVED bit,
@MAILINGID uniqueidentifier,
@CHANNELCODEID uniqueidentifier,
@DONOTACKNOWLEDGE bit,
@ADJUSTMENTDATE datetime,
@ADJUSTMENTPOSTDATE datetime,
@ADJUSTMENTREASON nvarchar(300),
@CATEGORYCODEID uniqueidentifier
)
as
set nocount on;
declare @CHANGEDATE datetime;
declare @PAYMENTMETHODCODE tinyint;
declare @ADJUSTMENTID uniqueidentifier;
declare @TRANSACTIONID uniqueidentifier;
declare @REVENUEID uniqueidentifier;
declare @STOCKDETAILADJUSTMENTID uniqueidentifier;
declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;
declare @ADJUST bit;
declare @CLEARGLDISTRIBUTION bit;
declare @PROPERTYDETAILCOUNT int;
declare @STOCKDETAILCOUNT int;
set @ADJUST = 0
set @PROPERTYDETAILCOUNT = 0;
set @STOCKDETAILCOUNT = 0;
begin try
set @CHANGEDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @TYPECODE tinyint, @REVENUEPAYMENTMETHODID uniqueidentifier
select top 1
@TYPECODE = REVENUE.TRANSACTIONTYPECODE,
@REVENUEPAYMENTMETHODID = REVENUEPAYMENTMETHOD.ID,
@PAYMENTMETHODCODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
where REVENUE.ID = @ID;
if @TYPECODE = 0
begin
-- do not allow the gift amount to be adjusted less than the applied tribute amount
declare @TRIBUTEAMOUNT money;
select @TRIBUTEAMOUNT = sum(AMOUNT) from dbo.REVENUETRIBUTE where REVENUEID = @ID;
if (@TRIBUTEAMOUNT is not null) and (@AMOUNT < @TRIBUTEAMOUNT)
begin
raiserror('The gift amount cannot be less than the sum of the tribute amounts applied to this gift.', 13, 1)
end
end
declare @OLDCATEGORYCODEID uniqueidentifier
select top 1 @OLDCATEGORYCODEID = REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID
from dbo.REVENUECATEGORY
inner join dbo.REVENUESPLIT on REVENUECATEGORY.ID = REVENUESPLIT.ID
where REVENUESPLIT.REVENUEID = @ID
-- check to see if amount or revenue category has changed
if (
select count(REVENUE.ID) from dbo.REVENUE
where REVENUE.ID = @ID and AMOUNT = @AMOUNT
) = 0 or not ((@CATEGORYCODEID is null and @OLDCATEGORYCODEID is null) and @CATEGORYCODEID = @OLDCATEGORYCODEID)
begin
set @ADJUST = 1;
set @CLEARGLDISTRIBUTION = 1;
end
/* Check if designations changed */
if @ADJUST = 0
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 ADJUSTMENT.REVENUEID = @ID and ADJUSTMENT.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 @REVENUEID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
select @STOCKDETAILCOUNT = count(STOCKDETAIL.ID)
from dbo.STOCKSALE
inner join dbo.STOCKDETAIL on STOCKSALE.STOCKDETAILID = STOCKDETAIL.ID
inner join dbo.REVENUEPAYMENTMETHOD on STOCKDETAIL.ID = REVENUEPAYMENTMETHOD.ID
where REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEID and SALEPOSTSTATUSCODE = 0;
select @PROPERTYDETAILCOUNT = count(PROPERTYDETAIL.ID)
from dbo.PROPERTYDETAIL
inner join dbo.REVENUEPAYMENTMETHOD on PROPERTYDETAIL.ID = REVENUEPAYMENTMETHOD.ID
where REVENUEPAYMENTMETHOD.REVENUEID = @REVENUEID and SALEPOSTSTATUSCODE = 0;
/* If sold stock has been posted, log stock detail adjustment */
if (@PAYMENTMETHODCODE = 4) and (@STOCKDETAILCOUNT > 0) -- If stock detail records exist, some shares must have sold
begin
exec dbo.USP_SAVE_STOCKDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @STOCKDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
end
/* If sold property has been posted, log property detail adjustment */
else if (@PAYMENTMETHODCODE = 5) and (@PROPERTYDETAILCOUNT > 0) -- If a posted property detail record exists, the property must have sold
begin
exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @PROPERTYDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;
end
end
/* Save payment information */
exec dbo.USP_REVENUEDETAIL_EDIT_2 @ID, @CURRENTAPPUSERID, @CHANGEAGENTID, @TYPECODE,
@AMOUNT, @RECEIPTAMOUNT, @SPLITS, @SOURCECODE, @APPEALID, @BENEFITS, @BENEFITSWAIVED,
@MAILINGID, @CHANNELCODEID, @DONOTACKNOWLEDGE, @CHANGEDATE, @CATEGORYCODEID;
-- if the payment method has changed, clear any user-defined gl distributions for all revenue records
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.STOCKDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;;
delete from dbo.PROPERTYDETAILGLDISTRIBUTION 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;
-- Add new stock detail GL distributions
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @ID;
-- Add new property detail GL distributions
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @ID;
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 = @REVENUEID)
begin
if @ADJUSTMENTID is not null
exec dbo.USP_ADJUSTMENTHISTORY_REVENUE_SAVEHISTORY @REVENUEID, @CHANGEAGENTID, null, @ADJUSTMENTID;
if @STOCKDETAILADJUSTMENTID is not null
exec dbo.USP_ADJUSTMENTHISTORY_STOCK_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @STOCKDETAILADJUSTMENTID;
if @PROPERTYDETAILADJUSTMENTID is not null
exec dbo.USP_ADJUSTMENTHISTORY_PROPERTY_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @PROPERTYDETAILADJUSTMENTID;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
return 0;