USP_SPONSORSHIPOPPORTUNITYGROUP_VALIDATEOVERRIDES
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SPONSORSHIPOPPORTUNITYGROUPID | uniqueidentifier | IN | |
@SPONSORSPEROPPORTUNITY | smallint | IN | |
@OFFERSOLESPONSORSHIP | bit | IN | |
@OVERRIDESPONSORSPEROPPORTUNITY | xml | IN | |
@ERRORMSG | nvarchar(50) | INOUT |
Definition
Copy
create procedure dbo.USP_SPONSORSHIPOPPORTUNITYGROUP_VALIDATEOVERRIDES(
@SPONSORSHIPOPPORTUNITYGROUPID uniqueidentifier = null,
@SPONSORSPEROPPORTUNITY smallint = 0,
@OFFERSOLESPONSORSHIP bit = 0,
@OVERRIDESPONSORSPEROPPORTUNITY xml = null,
@ERRORMSG nvarchar(50) output
)
as
set nocount off;
begin try
declare @SPONSORSHIPLOCATIONID uniqueidentifier = null;
select @SPONSORSHIPLOCATIONID = SPONSORSHIPLOCATIONID
from dbo.SPONSORSHIPOPPORTUNITYGROUP
where ID = @SPONSORSHIPOPPORTUNITYGROUPID;
-- validate new overrides
if @OVERRIDESPONSORSPEROPPORTUNITY is not null
begin
declare @OVERRIDESTAB table (SPONSORSHIPLOCATIONID uniqueidentifier,
SPONSORSPEROPPORTUNITY smallint,
OFFERSOLESPONSORSHIP bit)
insert into @OVERRIDESTAB
select *
from dbo.UFN_SPONSORSHIPOPPORTUNITYGROUP_OVERRIDESPONSORSPEROPPORTUNITY(@OVERRIDESPONSORSPEROPPORTUNITY);
set @ERRORMSG = 'Test Inside'
--select @ERRORMSG = cast(SPONSORSHIPLOCATIONID as nvarchar(50)) from @OVERRIDESTAB
declare @BADCOUNT smallint
-- sponsors per opportunity invalid
select @BADCOUNT = count(*)
from @OVERRIDESTAB OVERRIDES
where OVERRIDES.SPONSORSPEROPPORTUNITY < 1
if @BADCOUNT > 0
set @ERRORMSG = 'BBERR_INVALIDOVERRIDESPONSORSPEROPPORTUNITY'
--raiserror('BBERR_INVALIDOVERRIDESPONSORSPEROPPORTUNITY',13,1)
-- sole sponsorship invalid
select @BADCOUNT = count(*)
from @OVERRIDESTAB OVERRIDES
where isnull(OVERRIDES.SPONSORSPEROPPORTUNITY,0) < 2
and OVERRIDES.OFFERSOLESPONSORSHIP = 1;
if @BADCOUNT > 0
set @ERRORMSG = 'BBERR_INVALIDOVERRIDEOFFERSOLESPONSORSHIP'
--raiserror('BBERR_INVALIDOVERRIDEOFFERSOLESPONSORSHIP',13,1)
-- duplicate locations
select @BADCOUNT = count(*)
from (select SPONSORSHIPLOCATIONID
from @OVERRIDESTAB
group by SPONSORSHIPLOCATIONID having count(*) > 1) X;
if @BADCOUNT > 0
set @ERRORMSG = 'BBERR_DUPLICATELOCATIONS'
--raiserror('BBERR_DUPLICATELOCATIONS',13,1)
-- overlapping locations
select @BADCOUNT = count(*)
from @OVERRIDESTAB OVERRIDES1
inner join @OVERRIDESTAB OVERRIDES2 on 1=1
inner join dbo.SPONSORSHIPLOCATION L1 on L1.ID = OVERRIDES1.SPONSORSHIPLOCATIONID
inner join dbo.SPONSORSHIPLOCATION L2 on L2.ID = OVERRIDES2.SPONSORSHIPLOCATIONID
where L1.HIERARCHYPATH.IsDescendantOf(L2.HIERARCHYPATH) = 1
and L1.ID <> L2.ID;
if @BADCOUNT > 0
set @ERRORMSG = 'BBERR_OVERLAPPINGLOCATIONS'
--raiserror('BBERR_OVERLAPPINGLOCATIONS',13,1)
if @SPONSORSHIPLOCATIONID is not null
begin
-- locations not consistent with group location
select @BADCOUNT = count(*)
from @OVERRIDESTAB OVERRIDES
inner join dbo.SPONSORSHIPLOCATION OVERRIDELOCATION on OVERRIDELOCATION.ID = OVERRIDES.SPONSORSHIPLOCATIONID
inner join dbo.SPONSORSHIPLOCATION GROUPLOCATION on GROUPLOCATION.ID = @SPONSORSHIPLOCATIONID
where OVERRIDELOCATION.HIERARCHYPATH.IsDescendantOf(GROUPLOCATION.HIERARCHYPATH) = 0;
if @BADCOUNT > 0
set @ERRORMSG = 'BBERR_INVALIDOVERRIDELOCATION'
--raiserror('BBERR_INVALIDOVERRIDELOCATION',13,1)
-- location same as group location (i.e., default would never be used)
select @BADCOUNT = count(*)
from @OVERRIDESTAB OVERRIDES
where OVERRIDES.SPONSORSHIPLOCATIONID = @SPONSORSHIPLOCATIONID;
if @BADCOUNT > 0
set @ERRORMSG = 'BBERR_SAMELOCATIONASGROUP'
--raiserror('BBERR_SAMELOCATIONASGROUP',13,1)
end
-- locations w/ same values as default
select @BADCOUNT = count(*)
from @OVERRIDESTAB OVERRIDES
where isnull(OVERRIDES.SPONSORSPEROPPORTUNITY,0) = isnull(@SPONSORSPEROPPORTUNITY,0)
and OVERRIDES.OFFERSOLESPONSORSHIP = @OFFERSOLESPONSORSHIP
if @BADCOUNT > 0
set @ERRORMSG = 'BBERR_OVERRIDESWITHSAMEVALUES'
--raiserror('BBERR_OVERRIDESWITHSAMEVALUES',13,1)
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch