USP_RECURRINGGIFT_DELETEFUTUREINSTALLMENTS
Remove all future recurring gift installments except the next transaction.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_RECURRINGGIFT_DELETEFUTUREINSTALLMENTS (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as
begin
declare @CURRENTDATE date
set @CURRENTDATE = getdate()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
--Cache and reset CONTEXT INFO
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
set CONTEXT_INFO @CHANGEAGENTID;
declare @LASTACTIVITYDATE date;
select @LASTACTIVITYDATE = max(DATE)
from dbo.RECURRINGGIFTINSTALLMENT
left join dbo.RECURRINGGIFTINSTALLMENTPAYMENT on RECURRINGGIFTINSTALLMENTPAYMENT.RECURRINGGIFTINSTALLMENTID = RECURRINGGIFTINSTALLMENT.ID
left join dbo.RECURRINGGIFTINSTALLMENTWRITEOFF on RECURRINGGIFTINSTALLMENTWRITEOFF.RECURRINGGIFTINSTALLMENTID = RECURRINGGIFTINSTALLMENT.ID
where RECURRINGGIFTINSTALLMENT.REVENUEID = @ID
and (RECURRINGGIFTINSTALLMENTPAYMENT.ID is not null or RECURRINGGIFTINSTALLMENTWRITEOFF.ID is not null)
if @LASTACTIVITYDATE is null or @LASTACTIVITYDATE < @CURRENTDATE
begin
-- no future activity, leave only one future installment
delete from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @ID
and DATE > (select min(DATE)
from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @ID
and DATE >= @CURRENTDATE);
end
else
begin
declare @NEXTACTIVITYDATE date;
select @NEXTACTIVITYDATE = min(DATE)
from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @ID
and dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCE(ID) > 0
and DATE > @CURRENTDATE;
if @NEXTACTIVITYDATE < @LASTACTIVITYDATE
-- delete all installments after the last activity
delete from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @ID
and DATE > @LASTACTIVITYDATE;
else
-- delete all installments after the next one w/ a balance
delete from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @ID
and DATE > @NEXTACTIVITYDATE;
end
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end