UFN_COMBINATION_AVAILABLEFORORDER
Checks a combination's availability against a given order
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@COMBINATIONID | uniqueidentifier | IN | |
@SALESMETHODID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_COMBINATION_AVAILABLEFORORDER
(
@COMBINATIONID uniqueidentifier,
@SALESMETHODID uniqueidentifier
)
returns bit
with execute as caller
as begin
if 0 = (select top(1) ISACTIVE from dbo.COMBINATION where ID = @COMBINATIONID)
begin
return 0
end
else
begin
declare @CURRENTSYSTEMDEFAULTDATE datetime
set @CURRENTSYSTEMDEFAULTDATE = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate())
declare @CURRENTUTCTIME time
set @CURRENTUTCTIME = getutcdate()
declare @TIMEZONEENTRYID uniqueidentifier
declare @UTCOFFSET integer
set @TIMEZONEENTRYID = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULT()
set @UTCOFFSET = -1 * dbo.UFN_TIMEZONEENTRY_GETTIMEZONEOFFSETFROMUTC(@TIMEZONEENTRYID, getutcdate(), 1)
if exists ( select DA.ID
from dbo.COMBINATIONAVAILABILITY DA
inner join dbo.COMBINATIONAVAILABILITYSALESMETHOD DASM on DASM.COMBINATIONAVAILABILITYID = DA.ID
where
DA.COMBINATIONID = @COMBINATIONID and
DASM.SALESMETHODID = @SALESMETHODID and
case (@@datefirst + datepart(dw, @CURRENTSYSTEMDEFAULTDATE)) % 7
when 1 then DA.ALLOWSUNDAY
when 2 then DA.ALLOWMONDAY
when 3 then DA.ALLOWTUESDAY
when 4 then DA.ALLOWWEDNESDAY
when 5 then DA.ALLOWTHURSDAY
when 6 then DA.ALLOWFRIDAY
when 0 then DA.ALLOWSATURDAY
end = 1 and
(DA.ALLOWCOMBINATIONDATEFROM is null or @CURRENTSYSTEMDEFAULTDATE >= dbo.UFN_DATE_GETEARLIESTTIME(DA.ALLOWCOMBINATIONDATEFROM)) and
(DA.ALLOWCOMBINATIONDATETO is null or @CURRENTSYSTEMDEFAULTDATE <= dbo.UFN_DATE_GETLATESTTIME(DA.ALLOWCOMBINATIONDATETO)) and
--convert time 'from' and 'to' to UTC based on time zone 1 - cast 'from' and 'to' to time, 2 - add offset from UTC,
(DA.ALLOWCOMBINATIONTIMEFROM = '' or @CURRENTUTCTIME >= dateadd(minute, @UTCOFFSET, cast(dbo.UFN_HOURMINUTE_DISPLAYTIME(DA.ALLOWCOMBINATIONTIMEFROM) as time))) and
(DA.ALLOWCOMBINATIONTIMETO = '' or @CURRENTUTCTIME <= dateadd(minute, @UTCOFFSET, cast(dbo.UFN_HOURMINUTE_DISPLAYTIME(DA.ALLOWCOMBINATIONTIMETO) as time))))
--DA.ALLOWCOMBINATIONTIMEFROM = '' or dbo.UFN_HOURMINUTE_GETFROMDATE(@CURRENTDATE) >= DA.ALLOWCOMBINATIONTIMEFROM) and
--(DA.ALLOWCOMBINATIONTIMETO = '' or dbo.UFN_HOURMINUTE_GETFROMDATE(@CURRENTDATE) <= DA.ALLOWCOMBINATIONTIMETO) )
begin
return 1
end
return 0
end
return 0
end