プロジェクト

全般

プロフィール

Vote #67068

完了

Time entries report broken on first week of year

Admin Redmine さんが約4年前に追加. 約4年前に更新.

ステータス:
Closed
優先度:
通常
担当者:
-
カテゴリ:
Time tracking_13
対象バージョン:
開始日:
2010/04/15
期日:
進捗率:

0%

予定工数:
category_id:
13
version_id:
60
issue_org_id:
5329
author_id:
2784
assigned_to_id:
1
comments:
16
status_id:
5
tracker_id:
1
plus1:
0
affected_version:
closed_on:
affected_version_id:
ステータス-->[Closed]

説明

Redmine stores some additional columns time entries:

  • tmonth -> @date.month@
  • tyear -> @date.year@
  • tweek -> @date.cweek@

These are used to support group by of the time entries in the reports view. However, there is an edge case which breaks the code.

Consider the following 2 time entry:

|. field |. Time Entry 1 |_. Time Entry 2 |
| spent_on | 2009-12-12 | 2010-01-01 |
| tmonth | 12 | 01 |
| tyear | 2009 | 2010 |
| tweek | 53 | 53 |

Both are in the same week, but in different years. This leads to the second entry to be not displayed often, and if then in the wrong week, i.e. 2010-53. For the group-by week, instead of @date.year@, @date.cwyear@ should be used. It results in 2009 for the second example entry.

The attached patch creates a test for that. It also adds the two time entries above as fixtures. Thus, some other tests had to be adapted.


journals

The attached patch fixes the edge case.

It introduces a new field named @twyear@ to the time entries. It contains the year of the week of the entry. So for the above example, its content for both entries would be @2009@. That way, it is possible to properly group based on weeks.

The included tests run in a current trunk.
--------------------------------------------------------------------------------
Just verified that patch again on a current trunk.

It is clean and does what it advertises. I'm just not 100% sure if I managed to find all usages of the week stuff in time_entries. But I'm rather confident, I did.
--------------------------------------------------------------------------------
Okay, after thinking a bit more about it (and fixing some other bugs :)), I conclude that the whole concept of denormalizing the week into the database for grouping can not properly work.

This is because the week boundaries expected by a user are actually not fixed but depend on her settings. So the actual data set in a group depends on user settings. To always show the correct result, we would have to

* either save at least two variants of the tweek + twyear (for week starting sunday or monday)
* or calculate the week using SQL-functions.

I would prefer the second method. Unfortunately, these functions are not fully standardized, so there would be a differentiation needed for different database engines.

Until then, the attached patch fixes the behavior for the standard commercial week starting on Mondays.
--------------------------------------------------------------------------------
This is another issue regarding the timelog. Someone who can confirm this is still able to reproduce in trunk?
--------------------------------------------------------------------------------
Please, update patch for version 2.2.1.
My Ruby skill is not enough for this (
--------------------------------------------------------------------------------
Daniel Felix wrote:
> [...] Someone who can confirm this is still able to reproduce in trunk?

I can't remember any changes that fixes this issue specifically, though I'm unable to test this on current trunk.
--------------------------------------------------------------------------------
Alexey already encountered this big again. (See linked ticket)
This is the confirmation for this issue.
--------------------------------------------------------------------------------
Duplicate: #13159
--------------------------------------------------------------------------------
I fixed this issue with a patch. Could we add this to Redmine 2.3?
I verfied my solution for different weeks constellations: Years with 52 and 53 weeks or first week that starts in last year and those which don't. Everthing works fine.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
The patch works on my testsystem too. Thanks for providing this patch!
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Patch committed in r11471 with a test, thanks.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Merged.
--------------------------------------------------------------------------------
Hello, I've updated to 2.3.0.
Is it all right with:
Project -> Overview -> Report -> Details: Days, Add: User ?
What Days it should display?
In my case it displays days from 2012 year and not the last days, when time was logged in 2013.
--------------------------------------------------------------------------------


related_issues

relates,Confirmed,4953,"In the past N days" filter displays N+1 days
duplicates,Closed,3060,Week numbers dont match in reports and calendar popups
duplicates,Closed,2462,Incorrect Week Number in Spent Time Report
duplicates,Closed,13082,Wrong year in Spent Time Report
duplicates,Closed,13159,Spent Time report - Column Total different for week
duplicates,Closed,12891,Wrong week number in time entries
duplicates,Closed,12803,Cross-year date range in time tracking report misses some hours

Admin Redmine さんが約4年前に更新

  • カテゴリTime tracking_13 にセット
  • 対象バージョン2.3.0_60 にセット

他の形式にエクスポート: Atom PDF

いいね!0
いいね!0