EnVisageOnline/Main/Database/Scripts/20160610/02_Holidays_Resources2Team_...

77 lines
6.5 KiB
Transact-SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Use [EnVisage]
IF EXISTS(SELECT * FROM sys.views WHERE Name = N'VW_ResourceWorkingDays')
BEGIN
DROP VIEW VW_ResourceWorkingDays
PRINT 'VW_ResourceWorkingDays dropped'
END
GO
IF EXISTS(SELECT * FROM sys.views WHERE Name = N'VW_Holidays2Resources')
BEGIN
DROP VIEW VW_Holidays2Resources
PRINT 'VW_Holidays2Resources dropped'
END
GO
CREATE VIEW [dbo].[VW_Holidays2Resources] AS
-- Holidays for specified resources, Teams and ECs
(SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
PR.TeamStartDate, PR.TeamEndDate
FROM Holiday H
LEFT JOIN Holiday2Team H2T ON (H2T.HolidayId = H.Id)
LEFT JOIN Holiday2ExpenditureCategory H2E ON (H2E.HolidayId = H.Id)
LEFT JOIN Holiday2PeopleResource H2P ON (H2P.HolidayId = H.Id)
LEFT JOIN VW_TeamResource PR ON
(PR.TeamId = H2T.TeamId) OR (PR.ExpenditureCategoryId = H2E.ExpenditureCategoryId) OR (H2P.ResourceId = PR.Id)
WHERE (H.CompanyImpact = 0) AND (H.IsInclude = 1) AND (H.WorkingDays = 0)
UNION
-- Holidays for all company resources
SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
PR.TeamStartDate, PR.TeamEndDate
FROM Holiday H
LEFT JOIN VW_TeamResource PR ON (1 = 1)
WHERE (H.CompanyImpact = 1) AND (H.WorkingDays = 0)
UNION
-- Holidays for all resources, except specified resources, teams and ECs
SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
PR.TeamStartDate, PR.TeamEndDate
FROM Holiday H
LEFT JOIN VW_TeamResource PR ON (1 = 1)
WHERE (H.CompanyImpact = 0) AND (H.IsInclude = 0) AND (H.WorkingDays = 0)
)
EXCEPT
-- Exclude excluded Teams, ECs and Resources
SELECT distinct H.HolidayGroupId, PR.Id AS ResourceId, PR.WorkWeekId, PR.ExpenditureCategoryId, PR.TeamId,
PR.TeamStartDate, PR.TeamEndDate
FROM Holiday H
LEFT JOIN Holiday2Team H2T ON (H2T.HolidayId = H.Id)
LEFT JOIN Holiday2ExpenditureCategory H2E ON (H2E.HolidayId = H.Id)
LEFT JOIN Holiday2PeopleResource H2P ON (H2P.HolidayId = H.Id)
LEFT JOIN VW_TeamResource PR ON
(PR.TeamId = H2T.TeamId) OR (PR.ExpenditureCategoryId = H2E.ExpenditureCategoryId) OR (H2P.ResourceId = PR.Id)
WHERE (H.CompanyImpact = 0) AND (H.IsInclude = 0) AND (H.WorkingDays = 0)
GO
CREATE VIEW [dbo].[VW_ResourceWorkingDays] AS
select H2R.ResourceId, HA.WeekEndingDate, H2R.ExpenditureCategoryId, H2R.TeamId, WW.WorkDaysAmount,
MIN(CAST((HA.Sunday & WW.Sunday) as smallint)) AS Sunday,
MIN(CAST((HA.Monday & WW.Monday) as smallint)) AS Monday,
MIN(CAST((HA.Tuesday & WW.Tuesday) as smallint)) AS Tuesday,
MIN(CAST((HA.Wednesday & WW.Wednesday) as smallint)) AS Wednesday,
MIN(CAST((HA.Thursday & WW.Thursday) as smallint)) AS Thursday,
MIN(CAST((HA.Friday & WW.Friday) as smallint)) AS Friday,
MIN(CAST((HA.Saturday & WW.Saturday) as smallint)) AS Saturday
from VW_Holidays2Resources H2R
INNER JOIN HolidayAllocation HA ON (HA.HolidayGroupId = H2R.HolidayGroupId) AND
(HA.WeekEndingDate >= H2R.TeamStartDate) AND ((HA.WeekEndingDate <= H2R.TeamEndDate) OR (H2R.TeamEndDate IS NULL))
INNER JOIN VW_WorkWeek WW ON (WW.Id = H2R.WorkWeekId)
GROUP BY H2R.ResourceId, HA.WeekEndingDate, H2R.ExpenditureCategoryId, H2R.TeamId, WW.WorkDaysAmount
GO