USP_GLOBALCHANGE_ADDCAMPAIGNTOEVENTPAYMENT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT | |
@EVENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_GLOBALCHANGE_ADDCAMPAIGNTOEVENTPAYMENT
(
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED int = 0 output,
@NUMBEREDITED int = 0 output,
@NUMBERDELETED int = 0 output,
@EVENTID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount off;
declare @CURRENTDATETIME datetime
declare @CURRENTDATE date
declare @TEMP_TABLE_CNT int = 0
set @CURRENTDATETIME = getdate();
set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATETIME);
set @NUMBERADDED = 0;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
declare @ISSYSADMIN bit;
declare @BPID uniqueidentifier;
set @ISSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @BPID = '3269A1D1-31CB-4D28-945C-B7623A3EFCCA';
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
begin try
-- do the global change operation here, and set @NUMBERADDED, @NUMBEREDITED, and/or @NUMBERDELETED as appropriate
declare @CAMPAIGNID uniqueidentifier;
declare @CAMPAIGNSUBPRIORITYID uniqueidentifier;
declare @REVENUESPLITID uniqueidentifier;
declare @REVENUESPLITCAMPAIGNID uniqueidentifier;
declare @TempTbl table(
EVENTID uniqueidentifier,
CAMPAIGNID uniqueidentifier,
CAMPAIGNSUBPRIORITYID uniqueidentifier);
insert into @TempTbl(EVENTID,CAMPAIGNID,CAMPAIGNSUBPRIORITYID)
select EVENTID,CAMPAIGNID,CAMPAIGNSUBPRIORITYID
from dbo.EVENTCAMPAIGN
where EVENTID = @EVENTID
-- if campaigns are associated with this event
set @TEMP_TABLE_CNT = (select count(*) FROM @TempTbl);
if @TEMP_TABLE_CNT > 0
begin
-- Find existing payments that are lacking a record in the REVENUESPLITCAMPAIGN table.
declare REGISTRANT_CURSOR cursor local fast_forward for
select ERP.PAYMENTID,
T.CAMPAIGNID,
T.CAMPAIGNSUBPRIORITYID
from @TempTbl T
inner join dbo.REGISTRANT R on R.EVENTID = T.EVENTID
inner join EVENTREGISTRANTPAYMENT ERP on ERP.REGISTRANTID = R.ID
where not exists (select 'X'
from REVENUESPLITCAMPAIGN
where REVENUESPLITID = ERP.PAYMENTID and CAMPAIGNID = T.CAMPAIGNID
and ISNULL(CAMPAIGNSUBPRIORITYID,0X00) = ISNULL(T.CAMPAIGNSUBPRIORITYID,0X00))
and
(
@ISSYSADMIN = 1
or exists
(
select 1
from dbo.UFN_SITEID_MAPFROM_EVENTID(R.EVENTID) REVSITES
where dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESS_FORSITE(@CURRENTAPPUSERID, @BPID, REVSITES.SITEID) = 1
)
)
open REGISTRANT_CURSOR;
fetch next from REGISTRANT_CURSOR into @REVENUESPLITID,@CAMPAIGNID,@CAMPAIGNSUBPRIORITYID;
while (@@FETCH_STATUS = 0)
begin
-- Insert new REVENUESPLITCAMPAIGN records.
insert into REVENUESPLITCAMPAIGN (ID,REVENUESPLITID,CAMPAIGNID,CAMPAIGNSUBPRIORITYID,
ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
values( newid(),@REVENUESPLITID,@CAMPAIGNID,@CAMPAIGNSUBPRIORITYID,
@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE)
set @NUMBERADDED = @NUMBERADDED + 1
fetch next from REGISTRANT_CURSOR into @REVENUESPLITID,@CAMPAIGNID,@CAMPAIGNSUBPRIORITYID
end
close REGISTRANT_CURSOR;
deallocate REGISTRANT_CURSOR;
end -- if TempTbl not empty
-- Find records in the RevenueSplitCampaign table for this event that are lacking a record in
-- the EVENTCAMPAIGN table
begin
-- Find existing payments for this event, that have a record in REVENUESPLITCAMPAIGN
-- but the campaign is no longer there.
declare DELETE_REGISTRANT_CURSOR cursor local fast_forward for
select RSC.ID
from dbo.EVENTREGISTRANTPAYMENT ERP
inner join dbo.REGISTRANT R on R.ID = ERP.REGISTRANTID
inner join dbo.REVENUESPLITCAMPAIGN RSC on RSC.REVENUESPLITID = ERP.PAYMENTID
where R.EVENTID = @EVENTID
and (@TEMP_TABLE_CNT = 0 or not exists ( select 'X'
from @TempTbl
where CAMPAIGNID = RSC.CAMPAIGNID
and isnull(RSC.CAMPAIGNSUBPRIORITYID,0x00) = isnull(CAMPAIGNSUBPRIORITYID,0x00)))
and
(
@ISSYSADMIN = 1
or exists
(
select 1
from dbo.UFN_SITEID_MAPFROM_EVENTID(R.EVENTID) REVSITES
where dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESS_FORSITE(@CURRENTAPPUSERID, @BPID, REVSITES.SITEID) = 1
)
)
open DELETE_REGISTRANT_CURSOR;
fetch next from DELETE_REGISTRANT_CURSOR into @REVENUESPLITCAMPAIGNID;
while (@@FETCH_STATUS = 0)
begin
-- Remove REVENUESPLITCAMPAIGN records because they are no longer associated with a campaign
delete from REVENUESPLITCAMPAIGN where ID = @REVENUESPLITCAMPAIGNID
set @NUMBERDELETED = @NUMBERDELETED + 1
fetch next from DELETE_REGISTRANT_CURSOR into @REVENUESPLITCAMPAIGNID;
end
close DELETE_REGISTRANT_CURSOR;
deallocate DELETE_REGISTRANT_CURSOR;
end -- delete REVENUESPLITCAMPAIGN records.
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch