USP_CREDIT_REFUNDMEMBERSHIP
Refunds the given membership
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@MEMBERSHIPTRANSACTIONID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_CREDIT_REFUNDMEMBERSHIP
(
@ID uniqueidentifier, -- MEMBERSHIPID
@CHANGEAGENTID uniqueidentifier,
@MEMBERSHIPTRANSACTIONID uniqueidentifier
)
as
set nocount on;
if @CHANGEAGENTID is null
exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime = getdate();
declare @RENEWALAFTEREXPIRATION datetime = (
select top 1 dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALAFTEREXPIRATIONDATE(MEMBERSHIPLEVELID, EXPIRATIONDATE)
from dbo.MEMBERSHIPTRANSACTION
where MEMBERSHIPID = @ID
order by DATEADDED desc
);
-- Only delete if it's a renewal, and we're still in the renewal window for the previous transaction
if DateDiff(day, @CURRENTDATE, @RENEWALAFTEREXPIRATION) >= 0
and exists (select ID from dbo.MEMBERSHIPTRANSACTION where ID = @MEMBERSHIPTRANSACTIONID and (ACTIONCODE = 1 or ACTIONCODE = 2 or ACTIONCODE = 3))
begin
declare @EXPIRATIONDATE date = (select EXPIRATIONDATE from dbo.MEMBERSHIPTRANSACTION where ID = @MEMBERSHIPTRANSACTIONID);
--Cancel all membership addons
update dbo.MEMBERSHIPADDON
set
MEMBERSHIPADDON.NUMCANCELLED = MEMBERSHIPADDON.QUANTITY,
MEMBERSHIPADDON.CHANGEDBYID = @CHANGEAGENTID,
MEMBERSHIPADDON.DATECHANGED = @CURRENTDATE
from dbo.MEMBERSHIPADDON
where MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID = @MEMBERSHIPTRANSACTIONID;
exec dbo.USP_MEMBERSHIPTRANSACTION_DELETEBYID_WITHCHANGEAGENTID @MEMBERSHIPTRANSACTIONID, @CHANGEAGENTID;
exec dbo.USP_MEMBERSHIP_RESETFROMLASTTRANSACTION @ID, @EXPIRATIONDATE, @CHANGEAGENTID;
end
else
begin
-- Change the status to canceled
exec dbo.USP_MEMBERSHIP_CANCEL @ID, @CHANGEAGENTID;
end
return 0;