USP_REVALUECOMMITMENTSPROCESS_UPDATEGAINLOSS
Updates gain-loss distributions and adjustments for the given revenue record.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@HASBALANCE | bit | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@DATE | datetime | IN | |
@POSTDATE | datetime | IN | |
@ADJUSTMENTREASON | nvarchar(300) | IN | |
@ADJUSTMENTREASONCODEID | uniqueidentifier | IN | |
@POSTSTATUSCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_REVALUECOMMITMENTSPROCESS_UPDATEGAINLOSS
(
@ID uniqueidentifier = null,
@HASBALANCE bit = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@DATE datetime = null, -- Date for adjustments/distributions
@POSTDATE datetime = null, -- Post date for adjustments/distributions
@ADJUSTMENTREASON nvarchar(300) = null,
@ADJUSTMENTREASONCODEID uniqueidentifier = null,
@POSTSTATUSCODE tinyint = 1
)
as
set nocount on;
declare @HASPOSTEDGAINLOSSDISTRIBUTIONS bit = 0;
if @HASBALANCE is null
set @HASBALANCE = 0;
select top 1
@HASPOSTEDGAINLOSSDISTRIBUTIONS = 1
from
dbo.UNREALIZEDGAINLOSSGLDISTRIBUTION
inner join dbo.GLTRANSACTION on UNREALIZEDGAINLOSSGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
where
UNREALIZEDGAINLOSSGLDISTRIBUTION.REVENUEID = @ID
and GLTRANSACTION.POSTSTATUSCODE = 0;
if @HASBALANCE = 0
begin
-- Handle revenue without a balance
declare @HASGAINLOSSDISTRIBUTIONS bit = 0;
select top 1
@HASGAINLOSSDISTRIBUTIONS = 1
from
dbo.UNREALIZEDGAINLOSSGLDISTRIBUTION
inner join dbo.GLTRANSACTION on UNREALIZEDGAINLOSSGLDISTRIBUTION.GLTRANSACTIONID = GLTRANSACTION.ID
where
UNREALIZEDGAINLOSSGLDISTRIBUTION.REVENUEID = @ID
and UNREALIZEDGAINLOSSGLDISTRIBUTION.OUTDATED = 0;
if @HASPOSTEDGAINLOSSDISTRIBUTIONS = 1
begin
-- Reverse old adjustment
exec dbo.USP_SAVE_UNREALIZEDGAINLOSSADJUSTMENT @ID, null, @CHANGEAGENTID, @CHANGEDATE, @DATE, @POSTDATE, @ADJUSTMENTREASON, 0, @ADJUSTMENTREASONCODEID, @POSTSTATUSCODE, 0;
end
if @HASGAINLOSSDISTRIBUTIONS = 1
begin
-- Remove old distributions.
delete dbo.UNREALIZEDGAINLOSSGLDISTRIBUTION
where REVENUEID = @ID and OUTDATED = 0;
end
end
else
begin
-- Handle revenue with a balance
-- Don't do anything with "Do not post" commitments.
-- (These still count as successfully processed records, though, since
-- they will have been revalued by the process.)
declare @COMMITMENTMARKEDDONOTPOST bit = 0;
select
@COMMITMENTMARKEDDONOTPOST = coalesce(DONOTPOST, 0)
from dbo.REVENUE where ID = @ID;
if @COMMITMENTMARKEDDONOTPOST = 0
begin
if @HASPOSTEDGAINLOSSDISTRIBUTIONS = 1
begin
-- Reverse old adjustment
exec dbo.USP_SAVE_UNREALIZEDGAINLOSSADJUSTMENT @ID, null, @CHANGEAGENTID, @CHANGEDATE, @DATE, @POSTDATE, @ADJUSTMENTREASON, 0, @ADJUSTMENTREASONCODEID, @POSTSTATUSCODE, 0;
end
-- Remove old distributions.
delete dbo.UNREALIZEDGAINLOSSGLDISTRIBUTION
where REVENUEID = @ID and OUTDATED = 0;
exec dbo.USP_SAVE_UNREALIZEDGAINLOSSGLDISTRIBUTION @ID, @CHANGEAGENTID, @CHANGEDATE, @POSTDATE;
end
end