USP_REVENUEBATCH_REGISTRANT_DELETE

Parameters

Parameter Parameter Type Mode Description
@BATCHREVENUEREGISTRANTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier INOUT

Definition

Copy


create procedure dbo.USP_REVENUEBATCH_REGISTRANT_DELETE
(
    @BATCHREVENUEREGISTRANTID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null output
)
as
begin
    set nocount on;

    if @CHANGEAGENTID is null
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    declare @CURRENTDATE datetime = getdate();

    declare @CONTEXTCACHE varbinary(128);
    set @CONTEXTCACHE = CONTEXT_INFO();

    set CONTEXT_INFO @CHANGEAGENTID;


    /* Delete guests */

    declare @CREATEDGUESTS table (ID uniqueidentifier);
    insert into @CREATEDGUESTS (ID)
    select
        BATCHREVENUEREGISTRANT.ID
    from
        dbo.BATCHREVENUEREGISTRANT
    where
        BATCHREVENUEREGISTRANT.GUESTOFREGISTRANTID = @BATCHREVENUEREGISTRANTID;

    --Delete records with foreign keys that do not cascade

    delete dbo.BATCHREVENUEREGISTRANTREGISTRATIONMAP where REGISTRANTID in (select ID from @CREATEDGUESTS);

    --BATCHREVENUEAPPLICATION table does not need to be changed for guests because the application will only ever be for the host registrant


    --Delete the guest records

    delete dbo.BATCHREVENUEREGISTRANT where ID in (select ID from @CREATEDGUESTS);

    /* Done deleting guests */


    /* Delete host */

    --Delete records with foreign keys that do not cascade


    delete dbo.BATCHREVENUEREGISTRANTREGISTRATIONMAP where REGISTRANTID = @BATCHREVENUEREGISTRANTID;

    --Update records that reference both REGISTRANT and BATCHREVENUEREGISTRANT so that they are only referencing REGISTRANT


    update dbo.BATCHREVENUEAPPLICATION
    set
        REGISTRANTID = @BATCHREVENUEREGISTRANTID,
        BATCHREVENUEREGISTRANTID = null,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = @CURRENTDATE
    where
        BATCHREVENUEREGISTRANTID = @BATCHREVENUEREGISTRANTID;

    --Delete the record


    exec dbo.USP_BATCHREVENUEREGISTRANT_DELETEBYID_WITHCHANGEAGENTID @BATCHREVENUEREGISTRANTID, @CHANGEAGENTID;

    /* Done deleting host */

    if not @CONTEXTCACHE is null
        set CONTEXT_INFO @CONTEXTCACHE;

end