USP_R68_SAVEGIFTAIDGLDISTRIBUTIONS
Saves GL distributions for a given parameter set instance of the R68 business process.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BUSINESSPROCESSSTATUSID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_R68_SAVEGIFTAIDGLDISTRIBUTIONS
(
@BUSINESSPROCESSSTATUSID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @R68DETAILTABLENAME nvarchar(255);
declare @REFUNDDETAILTABLENAME nvarchar(255);
declare @SQL nvarchar(4000);
declare @REVENUESPLITID uniqueidentifier;
declare @GL_CURSOR CURSOR;
begin try
declare @contextCache varbinary(128);
--cache current context information
set @contextCache = CONTEXT_INFO();
--set CONTEXT_INFO to @CHANGEAGENTID
set CONTEXT_INFO @CHANGEAGENTID;
-- Retrieve dynamic table names
select
@R68DETAILTABLENAME = TABLENAME
from
dbo.BUSINESSPROCESSOUTPUT
where
BUSINESSPROCESSSTATUSID = @BUSINESSPROCESSSTATUSID
and TABLEKEY = 'R68_OUTPUT';
select
@REFUNDDETAILTABLENAME = BUSINESSPROCESSOUTPUT.TABLENAME
from
dbo.BUSINESSPROCESSOUTPUT
where
BUSINESSPROCESSSTATUSID = @BUSINESSPROCESSSTATUSID
and TABLEKEY = 'R68REFUNDS_OUTPUT';
declare @PDACCOUNTSYSTEMID uniqueidentifier;
-- Iterate through R68 Refund Details for splits being refunded
set @SQL =
'set @GL_CURSOR = cursor static for
select REFUNDDETAILS.REVENUESPLITID, pd.PDACCOUNTSYSTEMID
from dbo.' + @REFUNDDETAILTABLENAME + ' as REFUNDDETAILS
inner join REVENUESPLIT as rs on REFUNDDETAILS.REVENUESPLITID = rs.ID
inner join PDACCOUNTSYSTEMFORREVENUE as pd on rs.REVENUEID = pd.ID; open @GL_CURSOR;'
exec sp_executesql @SQL, N'@GL_CURSOR cursor OUTPUT', @GL_CURSOR OUTPUT;
fetch next from @GL_CURSOR into @REVENUESPLITID, @PDACCOUNTSYSTEMID;
-- Create reversals for refunds.
while (@@FETCH_STATUS = 0)
begin
if exists(
select
1
from
dbo.FINANCIALTRANSACTIONLINEITEM GA
inner join dbo.FINANCIALTRANSACTIONLINEITEM SOURCE on SOURCE.ID = GA.SOURCELINEITEMID
left join dbo.FINANCIALTRANSACTIONLINEITEM NEWSOURCE on NEWSOURCE.ID = SOURCE.REVERSEDLINEITEMID
where
@REVENUESPLITID = isnull(NEWSOURCE.ID, SOURCE.ID)
and GA.TYPECODE = 8
and GA.POSTSTATUSCODE = 2
)
begin
declare @PAYMENTADJUSTMENTID uniqueidentifier;
declare @ADJUSTMENTPOSTDATE date;
declare @ADJUSTMENTPOSTSTATUS tinyint = 1;
select top 1
@PAYMENTADJUSTMENTID = LIA.ID,
@ADJUSTMENTPOSTDATE = coalesce(A.POSTDATE, LIA.DATE, LI.POSTDATE),
@ADJUSTMENTPOSTSTATUS = case when A.POSTSTATUSCODE = 2 then 3 else 1 end
from
dbo.FINANCIALTRANSACTIONLINEITEM LI
left join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT LIA on LIA.ID = LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
left join dbo.ADJUSTMENT A on A.REVENUEID = LI.FINANCIALTRANSACTIONID
where
LI.ID = @REVENUESPLITID
and LIA.ADJUSTMENTREASONCODEID is not null
and not exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEM GA where GA.SOURCELINEITEMID = LI.ID
and GA.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = LIA.ID
and GA.TYPECODE = 8)
order by A.DATEADDED DESC;
if dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID) = 1
exec dbo.USP_SAVE_GIFTAID_ADJUSTMENT @REVENUESPLITID, @ADJUSTMENTPOSTSTATUS, @ADJUSTMENTPOSTDATE, null, @PAYMENTADJUSTMENTID, @CHANGEAGENTID, null;
end
else
begin
delete from
dbo.FINANCIALTRANSACTIONLINEITEM
where
ID in (
select
GA.ID
from
dbo.FINANCIALTRANSACTIONLINEITEM GA
inner join dbo.FINANCIALTRANSACTIONLINEITEM SOURCE on SOURCE.ID = GA.SOURCELINEITEMID
left join dbo.FINANCIALTRANSACTIONLINEITEM NEWSOURCE on NEWSOURCE.ID = SOURCE.REVERSEDLINEITEMID
where
@REVENUESPLITID = isnull(NEWSOURCE.ID, SOURCE.ID)
and GA.TYPECODE = 8
and GA.POSTSTATUSCODE = 1
and GA.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID is null
and (GA.ID <> SOURCE.REVERSEDLINEITEMID or SOURCE.REVERSEDLINEITEMID is null)
and (GA.ID <> NEWSOURCE.REVERSEDLINEITEMID or NEWSOURCE.REVERSEDLINEITEMID is null)
and GA.DELETEDON is null)
end
-- Clear outdated gift aid GL distributions.
--delete from dbo.GIFTAIDGLDISTRIBUTION where REVENUESPLITGIFTAIDID = @REVENUESPLITID and OUTDATED = 0;
fetch next from @GL_CURSOR into @REVENUESPLITID, @PDACCOUNTSYSTEMID;
end
close @GL_CURSOR;
deallocate @GL_CURSOR;
-- Iterate through R68 Details for splits being claimed
set @SQL =
'set @GL_CURSOR = cursor static for
select R68DETAILS.REVENUESPLITID, pd.PDACCOUNTSYSTEMID
from dbo.' + @R68DETAILTABLENAME + ' as R68DETAILS
inner join REVENUESPLIT as rs on R68DETAILS.revenuesplitid = rs.ID
inner join PDACCOUNTSYSTEMFORREVENUE as pd on rs.REVENUEID = pd.ID; open @GL_CURSOR;'
exec sp_executesql @SQL, N'@GL_CURSOR cursor OUTPUT', @GL_CURSOR OUTPUT;
fetch next from @GL_CURSOR into @REVENUESPLITID, @PDACCOUNTSYSTEMID;
-- Create new GL distributions for new gift aid being claimed.
while (@@FETCH_STATUS = 0)
begin
-- Clear outdated gift aid GL distributions.
--delete from dbo.GIFTAIDGLDISTRIBUTION where REVENUESPLITGIFTAIDID = @REVENUESPLITID and OUTDATED = 0;
-- Create new gift aid GL distributions.
if dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID) = 1
exec dbo.USP_SAVE_GIFTAIDGLDISTRIBUTION @REVENUESPLITID, @CHANGEAGENTID;
fetch next from @GL_CURSOR into @REVENUESPLITID, @PDACCOUNTSYSTEMID;
end
close @GL_CURSOR;
deallocate @GL_CURSOR;
--reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch