USP_BATCHMEMBERSHIPDUE_DELETE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_BATCHMEMBERSHIPDUE_DELETE
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as
declare @CURRENTDATE datetime = getdate();
--check deletion rules, if any
delete from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER where ID in
(
select BATCHREVENUECONSTITUENTGROUPMEMBER.ID
from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
inner join dbo.BATCHREVENUECONSTITUENT on BATCHREVENUECONSTITUENT.ID = BATCHREVENUECONSTITUENTGROUPMEMBER.MEMBERID
inner join dbo.BATCHMEMBERSHIPDUES on BATCHREVENUECONSTITUENT.ID = BATCHMEMBERSHIPDUES.BILLTOCONSTITUENTID or BATCHREVENUECONSTITUENT.ID = BATCHMEMBERSHIPDUES.MEMBERSHIPRECIPIENTID
where BATCHMEMBERSHIPDUES.ID = @ID
union all
select BATCHREVENUECONSTITUENTGROUPMEMBER.ID
from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER
inner join dbo.BATCHMEMBERSHIPDUESMEMBER on BATCHMEMBERSHIPDUESMEMBER.CONSTITUENTID = BATCHREVENUECONSTITUENTGROUPMEMBER.MEMBERID
inner join dbo.BATCHMEMBERSHIPDUES on BATCHMEMBERSHIPDUES.ID = BATCHMEMBERSHIPDUESMEMBER.BATCHMEMBERSHIPDUESID
where BATCHMEMBERSHIPDUES.ID = @ID
);
--remove revenue constituent if the constituent was created in this batch
delete from dbo.BATCHREVENUECONSTITUENT
where ID in
(
select BATCHREVENUECONSTITUENT.ID
from dbo.BATCHREVENUECONSTITUENT
inner join dbo.BATCHMEMBERSHIPDUES on BATCHREVENUECONSTITUENT.ID = BATCHMEMBERSHIPDUES.BILLTOCONSTITUENTID
where BATCHMEMBERSHIPDUES.ID = @ID
union all
select BATCHREVENUECONSTITUENT.ID
from dbo.BATCHREVENUECONSTITUENT
inner join dbo.BATCHMEMBERSHIPDUES on BATCHREVENUECONSTITUENT.ID = BATCHMEMBERSHIPDUES.MEMBERSHIPRECIPIENTID
where BATCHMEMBERSHIPDUES.ID = @ID
union all
select BATCHREVENUECONSTITUENT.ID
from dbo.BATCHREVENUECONSTITUENT
inner join dbo.BATCHMEMBERSHIPDUESMEMBER on BATCHMEMBERSHIPDUESMEMBER.CONSTITUENTID = BATCHREVENUECONSTITUENT.ID
inner join dbo.BATCHMEMBERSHIPDUES on BATCHMEMBERSHIPDUES.ID = BATCHMEMBERSHIPDUESMEMBER.BATCHMEMBERSHIPDUESID
where BATCHMEMBERSHIPDUES.ID = @ID
);
delete from dbo.BATCHREVENUECONSTITUENTACCOUNT
where BATCHREVENUECONSTITUENTACCOUNT.ID in
(
select CONSTITUENTACCOUNTID
from dbo.BATCHMEMBERSHIPDUES
where BATCHMEMBERSHIPDUES.ID = @ID
);
delete from dbo.BATCHCONSTITUENTUPDATE
where BATCHCONSTITUENTUPDATE.ID in
(
select BATCHCONSTITUENTUPDATE.ID
from dbo.BATCHCONSTITUENTUPDATE
inner join dbo.BATCHMEMBERSHIPDUES on BATCHMEMBERSHIPDUES.ID = @ID
where BATCHMEMBERSHIPDUES.BILLTOCONSTITUENTID = BATCHCONSTITUENTUPDATE.PRIMARYRECORDID
);
declare @EXISTINGMEMBERSHIPID uniqueidentifier = (select EXISTINGMEMBERSHIPID from dbo.BATCHMEMBERSHIPDUES where BATCHMEMBERSHIPDUES.ID = @ID);
declare @PLEDGEID uniqueidentifier = dbo.UFN_MEMBERSHIP_GETPLEDGE(@EXISTINGMEMBERSHIPID);
update dbo.REVENUESCHEDULE
set
REVENUESCHEDULE.ISPENDING = 0,
REVENUESCHEDULE.CHANGEDBYID = @CHANGEAGENTID,
REVENUESCHEDULE.DATECHANGED = @CURRENTDATE
from dbo.REVENUESCHEDULE
where REVENUESCHEDULE.ID = @PLEDGEID;
--SEPAMANDATEACTIVITY stores a BATCHROWID column that can store either ERB rows or membership dues batch rows. This is a guid column because we cannot have two FK's due to
-- multiple cascade paths
update dbo.SEPAMANDATEACTIVITY
set BATCHROWID = null
where SEPAMANDATEACTIVITY.BATCHROWID = @ID;
-- use the system generated delete routine to allow proper recording of the deleting agent
exec dbo.USP_BATCHMEMBERSHIPDUES_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
return 0;