Gemini Community Support Site

This Gemini community support site can be used to find solutions to product issues. You can log in using Open Id, Google Profile and even Facebook. Feel free to ask a question or browse FAQs and documentation. Product tour videos are also available along with how-to videos demonstrating key Gemini capabilities.




Time Report By User for All Projects

web-app

One thing that is not available in Gemini is to retrieve user time reports for all projects. We need the ability to go to a specific user and view a time report for all projects instead of having to go to individual projects. This kills our project managers when it's time to report hours.

davidg
· 1
davidg
Replies (10)
helpful
0
not helpful

This is not possible at the moment. However, you could use Gemini web services to do this.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Well when it comes to the end of the month and it's time to report billable hours, going through every project we have (30+) to get hours for everyone is tedious and extremely inconvenient. Why not create a page that is user specific broken down by project to display hours worked?


davidg
· 1
davidg
helpful
0
not helpful

This will be done in 2.1 release. But if you need this now, you could create your own page that will use Gemini web services to do this.


Mark Wing
· 9108
Mark Wing
helpful
0
not helpful

I am also looking for such solution since I have also > 30 projects on which various developers work.


Jelle Ossewaarde
· 1
Jelle Ossewaarde
helpful
0
not helpful

What is the timeframe for the release of 2.1?


SeaDog
· 1
SeaDog
helpful
0
not helpful

At the moment ETA is October time.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Here is a SQL script to create two stored procedures I use to do this plus a more detailed stored procedure also

I use reporting services to display the reports and am happy to share the rdl files if requested.  I use it as a drill down report with the summary showing total time and the detailed report drilling into the issues the time was spent on per user

=======SNIP=========

if exists (select * from dbo.sysobjects where id = objectid(N'[dbo].[reportAgentTime]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[reportAgentTime]
GO

SET QUOTEDIDENTIFIER OFF
GO
SET ANSINULLS OFF
GO

CREATE PROCEDURE [dbo].[reportAgentTime]
(@startdate datetime, @enddate datetime)
AS

select u.userid,firstname+ ' ' + surname,((sum(hours)60) + sum(minutes))/60 as hours, (isnull(datediff(dd,@startdate,@enddate),0)+1)8 as possibletime from timetracking tt
inner join users u on u.userid=tt.userid
where timeentrydate>=@startdate
and timeentrydate<=@enddate
group by u.userid,firstname+' '+surname
GO
SET QUOTED
IDENTIFIER OFF
GO
SET ANSINULLS ON
GO
=======SNIP=========

This one is a more detailed time report across all projects by user

=======SNIP=========

if exists (select * from dbo.sysobjects where id = objectid(N'[dbo].[reportDetailedAgentTime]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[report
DetailedAgentTime]
GO

SET QUOTEDIDENTIFIER OFF
GO
SET ANSI
NULLS OFF
GO

CREATE PROCEDURE [dbo].[reportDetailedAgentTime]
(@startdate datetime, @enddate datetime, @agentid int)

AS


select firstname+ ' ' + surname,p.projname,i.issueid,i.summary,((sum(hours)*60) + sum(minutes))/60 as hours from timetracking tt
inner join users u on u.userid=tt.userid
inner join projects p on p.projid=tt.projid
inner join issues i on i.issueid=tt.issueid
where timeentrydate>=@startdate
and u.userid=@agentid
and timeentrydate<=@enddate
group by firstname+' '+surname,projname,i.issueid,i.summary
GO
SET QUOTED
IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

=======SNIP=========


Baz
· 1
Baz
helpful
0
not helpful

Baz - this is great.  Thaks for posting it up!

(Although it has scared some folks when I have shown them the billing time for the last month...)


Pete Olds
· 1
Pete Olds
helpful
0
not helpful

For the above reports, the startDate and endDate are set to 12:00:00 AM.

Thus, if you are looking for a full month range, the SQL will need to increment the endDate by 1 day so that the param is 12:00:00 AM the following day.

Example. Month of February:  @startDate = 2/1/2006; @endDate = 2/28/2006, the 12:00:00 A.M. is automatic unless the TIME portion is specified.

=======SNIP=========

if exists (select * from dbo.sysobjects where id = objectid(N'[dbo].[reportAgentTime]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[reportAgentTime]
GO

SET QUOTEDIDENTIFIER OFF
GO
SET ANSINULLS OFF
GO

CREATE PROCEDURE [dbo].[reportAgentTime]

(

@startDate datetime

,@endDate datetime

)

AS

SELECT @endDate = DATEADD(day, 1, @endDate)

SELECT U.userid

,(firstname + ' ' + surname) AS fullName

,((sum(hours)60) + sum(minutes))/60 AS hours

,(isnull(datediff(dd,@startdate,@enddate),0)+1)8 AS possibletime

FROM timetracking tt

INNER JOIN users u ON u.userid=tt.userid

WHERE timeentrydate>=@startdate

AND timeentrydate<=@enddate

GROUP BY u.userid

,(firstname + ' ' + surname)

GO
SET QUOTED
IDENTIFIER OFF
GO
SET ANSINULLS ON
GO
=======SNIP=========

This one is a more detailed time report across all projects by user

=======SNIP=========

if exists (select * from dbo.sysobjects where id = objectid(N'[dbo].[reportDetailedAgentTime]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[report
DetailedAgentTime]
GO

SET QUOTEDIDENTIFIER OFF
GO
SET ANSI
NULLS OFF
GO

CREATE PROCEDURE [dbo].[reportDetailedAgentTime]

(

@startDate datetime

,@endDate datetime

,@agentID int)

AS

SELECT @endDate = DATEADD(day, 1, @endDate)

SELECT firstname+ ' ' + surname as fullName

,p.projname

,i.issueid

,i.summary

,((sum(hours)*60) + sum(minutes))/60 as hours

FROM timetracking tt

INNER JOIN users u ON u.userid = tt.userid

INNER JOIN projects p ON p.projid = tt.projid

INNER JOIN issues i ON i.issueid = tt.issueid

WHERE timeentrydate >= @startdate

AND u.userid = @agentid

AND timeentrydate <= @enddate

GROUP BY firstname + ' ' + surname

,projname

,i.issueid

,i.summary


GO
SET QUOTED
IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

=======SNIP=========


MacSpudster
· 1
MacSpudster
helpful
0
not helpful

is it possible for you to shared your complete solution.


garifo
· 1
garifo