USP_BATCHMEMBERSHIPDUES_DELETEBATCH
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_BATCHMEMBERSHIPDUES_DELETEBATCH
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as begin
declare @CURRENTDATE datetime = getdate();
-- Cannot delete if there is an uncommitted batch that originated from this one,
-- as these records may be associated with that batch. These records will be deleted
-- when that batch is committed or deleted.
-- Example: an exception batch
if not exists (select ID from dbo.BATCH where ORIGINATINGBATCHID = @ID and STATUSCODE = 0)
begin
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.BATCHID = @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.BATCHID = @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.BATCHID = @ID
union all
select BATCHREVENUECONSTITUENT.ID
from dbo.BATCHREVENUECONSTITUENT
inner join dbo.BATCHMEMBERSHIPDUES on BATCHREVENUECONSTITUENT.ID = BATCHMEMBERSHIPDUES.MEMBERSHIPRECIPIENTID
where BATCHMEMBERSHIPDUES.BATCHID = @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.BATCHID = @ID
);
delete from dbo.BATCHREVENUECONSTITUENTACCOUNT
where BATCHREVENUECONSTITUENTACCOUNT.ID in
(
select CONSTITUENTACCOUNTID
from dbo.BATCHMEMBERSHIPDUES
where BATCHMEMBERSHIPDUES.BATCHID = @ID
);
end
update dbo.REVENUESCHEDULE
set
REVENUESCHEDULE.ISPENDING = 0,
REVENUESCHEDULE.CHANGEDBYID = @CHANGEAGENTID,
REVENUESCHEDULE.DATECHANGED = @CURRENTDATE
from dbo.REVENUESCHEDULE
inner join dbo.BATCHMEMBERSHIPDUES on BATCHMEMBERSHIPDUES.BATCHID = @ID and dbo.UFN_MEMBERSHIP_GETPLEDGE(BATCHMEMBERSHIPDUES.EXISTINGMEMBERSHIPID) = REVENUESCHEDULE.ID;
--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
from dbo.SEPAMANDATEACTIVITY
inner join dbo.BATCHMEMBERSHIPDUES on BATCHMEMBERSHIPDUES.ID = SEPAMANDATEACTIVITY.BATCHROWID
where BATCHMEMBERSHIPDUES.BATCHID = @ID;
delete from dbo.BATCHCONSTITUENTUPDATE where BATCHCONSTITUENTUPDATE.BATCHID = @ID;
-- use the system generated delete routine to allow proper recording of the deleting agent
exec USP_BATCHMEMBERSHIPDUES_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID
return 0;
end