UFN_SPONSORSHIPOPPORTUNITY_CALCAVAILABILITY_WEB
Calculate opportunity availability based on CRM and WEB items.
Return
Return Type |
---|
tinyint |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN |
Definition
Copy
CREATE function [dbo].[UFN_SPONSORSHIPOPPORTUNITY_CALCAVAILABILITY_WEB](
@ID uniqueidentifier
)
returns tinyint
with execute as caller
as begin
-- NOTE: This program calculates availability based on the program and sponsorships.
-- It does NOT currently consider location status.
declare @SPONSORCOUNT int
declare @SOLESPONSOR bit
declare @SPONSORSPEROPPORTUNITY int
select @SPONSORCOUNT=count(SPONSORSHIP.ID),
@SOLESPONSOR=max(isnull(cast(ISSOLESPONSORSHIP as tinyint),0)),
@SPONSORSPEROPPORTUNITY=min(dbo.UFN_SPONSORSHIPOPPORTUNITY_SPONSORSPEROPPORTUNITY(SPONSORSHIPOPPORTUNITYGROUP.ID,SPONSORSHIPOPPORTUNITY.SPONSORSHIPLOCATIONID))
from dbo.SPONSORSHIPOPPORTUNITY
inner join dbo.SPONSORSHIPOPPORTUNITYGROUP on SPONSORSHIPOPPORTUNITYGROUP.ID = SPONSORSHIPOPPORTUNITY.SPONSORSHIPOPPORTUNITYGROUPID
left outer join dbo.SPONSORSHIP on SPONSORSHIP.SPONSORSHIPOPPORTUNITYID = SPONSORSHIPOPPORTUNITY.ID and STATUSCODE in(0,1)
where SPONSORSHIPOPPORTUNITY.ID = @ID
DECLARE @CURRENTSALESORDERITEMCOUNT int
select @CURRENTSALESORDERITEMCOUNT = COUNT(SALESORDERITEMSPONSORSHIP.ID) from SALESORDERITEMSPONSORSHIP inner join SALESORDERRESERVEDITEM on
SALESORDERITEMSPONSORSHIP.ID = SALESORDERRESERVEDITEM.ID and SALESORDERITEMSPONSORSHIP.SPONSORSHIPOPPORTUNITYID = @ID
where (SALESORDERRESERVEDITEM.EXPIRATIONDATE > CURRENT_TIMESTAMP)
SET @SPONSORCOUNT = @SPONSORCOUNT + @CURRENTSALESORDERITEMCOUNT
if (@SOLESPONSOR = 1 or @SPONSORCOUNT >= @SPONSORSPEROPPORTUNITY) and @SPONSORSPEROPPORTUNITY <> 0 --@SPONSORSPEROPPORTUNITY of 0 = unlimited
return 2;
return 0;
end