43 lines
2.9 KiB
Transact-SQL
43 lines
2.9 KiB
Transact-SQL
USE [EnVisage]
|
|
GO
|
|
|
|
if exists (select 1 from sys.views where name like 'VW_HolidayAllocation')
|
|
begin
|
|
DROP VIEW [dbo].[VW_HolidayAllocation]
|
|
END
|
|
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
CREATE VIEW [dbo].[VW_HolidayAllocation]
|
|
AS
|
|
WITH allocations as (SELECT PR.Id as PeopleResourceId, PR.ExpenditureCategoryId, PR.TeamId, PR.WorkWeekId, HA.WeekEndingDate,
|
|
Min(cast(HA.Sunday as decimal)) as Sunday, Min(cast(HA.Monday as decimal)) as Monday, Min(cast(HA.Tuesday as decimal)) as Tuesday, Min(cast(HA.Wednesday as decimal)) as Wednesday,
|
|
Min(cast(HA.Thursday as decimal)) as Thursday, Min(cast(HA.Friday as decimal)) as Friday, Min(cast(HA.Saturday as decimal)) as Saturday
|
|
FROM HolidayAllocation AS HA
|
|
inner join Holiday H on HA.HolidayId = H.Id
|
|
left join Holiday2Team H2T on H.CompanyImpact = 0 and H.Id = H2T.HolidayId
|
|
left join Holiday2PeopleResource H2PR on H.CompanyImpact = 0 and H.Id = H2PR.HolidayId
|
|
left join Holiday2ExpenditureCategory H2E on H.CompanyImpact = 0 and H.Id = H2E.HolidayId
|
|
left join PeopleResource PR on
|
|
(H.CompanyImpact = 1) -- all resources in case Company Impact is set to 'All Resources'
|
|
OR (H.CompanyImpact = 0 AND H.IsInclude = 1 AND (PR.Id = H2PR.ResourceId OR PR.TeamId = H2T.TeamId OR PR.ExpenditureCategoryId = H2E.ExpenditureCategoryId)) -- resources from 'Resources' dropdown and resources of teams from 'Teams' dropdown and resources of expenditures from 'Expenditures' dropdown if company impact is 'Some Resources' and Include mode
|
|
OR (H.CompanyImpact = 0 AND H.IsInclude = 0 AND PR.Id <> H2PR.ResourceId AND PR.TeamId <> H2T.TeamId AND PR.ExpenditureCategoryId <> H2E.ExpenditureCategoryId) -- resources from 'Resources' dropdown and resources of teams from 'Teams' dropdown and resources of expenditures from 'Expenditures' dropdown if company impact is 'Some Resources' and Exclude mode
|
|
where H.WorkingDays = 0
|
|
group by PR.Id, PR.ExpenditureCategoryId, PR.TeamId, PR.WorkWeekId, HA.WeekEndingDate)
|
|
select PeopleResourceId, ExpenditureCategoryId, TeamId, HA.WeekEndingDate,
|
|
ISNULL (case (cast (Wk.Sunday as decimal)+cast (Wk.Monday as decimal)+cast (Wk.Tuesday as decimal)+cast (Wk.Wednesday as decimal)+cast (Wk.Thursday as decimal)+cast (Wk.Friday as decimal)+cast (Wk.Saturday as decimal))
|
|
when 0 then 0
|
|
else ((cast (Wk.Sunday as decimal) * HA.Sunday)+(cast (Wk.Monday as decimal) * HA.Monday)+(cast(Wk.Tuesday as decimal) * HA.Tuesday)+(cast(Wk.Wednesday as decimal) * HA.Wednesday)+(cast(Wk.Thursday as decimal) * HA.Thursday)+(cast(Wk.Friday as decimal) * HA.Friday)+(cast(Wk.Saturday as decimal) * HA.Saturday)) / (cast(Wk.Sunday as decimal)+cast(Wk.Monday as decimal)+cast(Wk.Tuesday as decimal)+cast(Wk.Wednesday as decimal)+cast(Wk.Thursday as decimal)+cast(Wk.Friday as decimal)+cast(Wk.Saturday as decimal))
|
|
end, 0) as AdjustmentKoeff
|
|
from allocations HA
|
|
left join ExpenditureCategory EC on HA.ExpenditureCategoryId = EC.Id
|
|
left join UOM on UOM.Id = EC.UOMId
|
|
left join WorkWeek Wk on Wk.Id = HA.WorkWeekId
|
|
GO
|