State Table: (unchanged, 2 new States added under [GroupName] EPunch)
SELECT
[Id]
,[GroupName]
,[Name]
,[StateType]
,[Color]
FROM [States]
where [GroupName]='EPunch'
New Table [StateLog]
:
use [SambaPOS4]
SELECT
[Id]
,[EntityId]
,[StateBeginId]
,[StateEndId]
,[DateBegin]
,[DateEnd]
,[DateUpdated]
,[Name] -- arbitrary, set from a Template and/or a Rule?
FROM [StateLog]
Report: (all tables exists with exception of proposed [StateLog]
table)
use [SambaPOS4]
SELECT
e.[EntityTypeId]
,et.[Name] as [EntityType]
,e.[Id] as [EntityId]
,e.[Name]
,sl.[StateBeginId]
,sb.[Name] as [State]
,sl.[StateEndId]
,se.[Name] as [State]
,sl.[DateBegin] as [SBeginDate]
,sl.[DateEnd] as [SEndDate]
,right('00'+convert(varchar(5),DateDiff(s, sl.[DateBegin], sl.[DateEnd])/3600),2)+':'+right('00'+convert(varchar(5),DateDiff(s, sl.[DateBegin], sl.[DateEnd])%3600/60),2)+':'+right('00'+convert(varchar(5),(DateDiff(s, sl.[DateBegin], sl.[DateEnd])%60)),2) as [DurationHMS]
,right('00000'+convert(varchar(5),convert(decimal(5,2),convert(decimal(5,2),DateDiff(SECOND, sl.[DateBegin], sl.[DateEnd])/60)/60)),5) as [DurationDEC]
,sl.[Name] as [SLName]
FROM [Entities] e
left join [EntityTypes] et on et.[Id]=e.[EntityTypeId]
left join [StateLog] sl on sl.[EntityId]=e.[Id]
left join [States] sb on sb.[Id]=sl.[StateBeginId]
left join [States] se on se.[Id]=sl.[StateEndId]
WHERE 1=1
and et.[EntityName]='Employee'
and sb.[GroupName]='EPunch'
ORDER BY e.[Name], sl.[DateBegin], sl.[DateEnd]