{"action":"closed","number":17464,"pull_request":{"url":"https://api.github.com/repos/odoo/odoo/pulls/17464","id":124385832,"html_url":"https://github.com/odoo/odoo/pull/17464","diff_url":"https://github.com/odoo/odoo/pull/17464.diff","patch_url":"https://github.com/odoo/odoo/pull/17464.patch","issue_url":"https://api.github.com/repos/odoo/odoo/issues/17464","number":17464,"state":"closed","locked":false,"title":"[FIX] resource: get working hours","user":{"login":"nim-odoo","id":11041725,"avatar_url":"https://avatars3.githubusercontent.com/u/11041725?v=3","gravatar_id":"","url":"https://api.github.com/users/nim-odoo","html_url":"https://github.com/nim-odoo","followers_url":"https://api.github.com/users/nim-odoo/followers","following_url":"https://api.github.com/users/nim-odoo/following{/other_user}","gists_url":"https://api.github.com/users/nim-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/nim-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nim-odoo/subscriptions","organizations_url":"https://api.github.com/users/nim-odoo/orgs","repos_url":"https://api.github.com/users/nim-odoo/repos","events_url":"https://api.github.com/users/nim-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/nim-odoo/received_events","type":"User","site_admin":false},"body":"- Use the demo resource calendar (40h/week)\r\n- Create a project forecast for the Administrator\r\n- Set the 'Start date' and 'End date' to 2017-07-07\r\n- Plan 8 hours\r\n\r\nThe % of time should be 100 %, but it's not always the case.\r\n\r\nThe core of the issue comes from `get_working_hours`.\r\n\r\nCase 1:\r\nCall with start_dt = end_dt = 2017-07-07 00:00:00\r\n`get_working_hours_of_date` is called twice with the following start/end\r\ndt:\r\n- 2017-06-07 00:00:00, 2017-06-07 00:00:00        => 0 hours\r\n- 2017-06-08 00:00:00, 2017-06-08 23:59:59.999999 => 8 hours\r\n\r\nThis is obviously not correct, we don't care about what happens on\r\n2017-06-08. The number of hours is correct in total, but it comes from\r\nthe wrong day.\r\n\r\nCase 2:\r\nCall with start_dt = 2017-07-07 00:00:00 and end_dt = 2017-07-07 23:59:59\r\n`get_working_hours_of_date` is called twice with the following start/end\r\ndt:\r\n- 2017-06-07 00:00:00, 2017-06-07 23:59:59.999999 => 8 hours\r\n- 2017-06-08 00:00:00, 2017-06-08 23:59:59.999999 => 8 hours\r\n\r\nThis is obviously not correct either...\r\n\r\nWe change how the `until` parameter is computed. This way, the correct\r\ncall is the second call (Case 2), and `get_working_hours_of_date` is\r\ncalld once with the following start/end dt:\r\n- 2017-06-07 00:00:00, 2017-06-07 23:59:59.999999 => 8 hours\r\n\r\nopw-745253\r\n\r\nDescription of the issue/feature this PR addresses:\r\n\r\nCurrent behavior before PR:\r\n\r\nDesired behavior after PR is merged:\r\n\r\n\r\n--\r\nI confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr\r\n","created_at":"2017-06-07T10:24:02Z","updated_at":"2017-06-07T14:12:36Z","closed_at":"2017-06-07T14:12:36Z","merged_at":"2017-06-07T14:12:36Z","merge_commit_sha":"506ac455376d605bc360764ae958835b3da195e9","assignee":{"login":"nim-odoo","id":11041725,"avatar_url":"https://avatars3.githubusercontent.com/u/11041725?v=3","gravatar_id":"","url":"https://api.github.com/users/nim-odoo","html_url":"https://github.com/nim-odoo","followers_url":"https://api.github.com/users/nim-odoo/followers","following_url":"https://api.github.com/users/nim-odoo/following{/other_user}","gists_url":"https://api.github.com/users/nim-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/nim-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nim-odoo/subscriptions","organizations_url":"https://api.github.com/users/nim-odoo/orgs","repos_url":"https://api.github.com/users/nim-odoo/repos","events_url":"https://api.github.com/users/nim-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/nim-odoo/received_events","type":"User","site_admin":false},"assignees":[{"login":"nim-odoo","id":11041725,"avatar_url":"https://avatars3.githubusercontent.com/u/11041725?v=3","gravatar_id":"","url":"https://api.github.com/users/nim-odoo","html_url":"https://github.com/nim-odoo","followers_url":"https://api.github.com/users/nim-odoo/followers","following_url":"https://api.github.com/users/nim-odoo/following{/other_user}","gists_url":"https://api.github.com/users/nim-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/nim-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nim-odoo/subscriptions","organizations_url":"https://api.github.com/users/nim-odoo/orgs","repos_url":"https://api.github.com/users/nim-odoo/repos","events_url":"https://api.github.com/users/nim-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/nim-odoo/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/odoo/odoo/pulls/17464/commits","review_comments_url":"https://api.github.com/repos/odoo/odoo/pulls/17464/comments","review_comment_url":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/odoo/odoo/issues/17464/comments","statuses_url":"https://api.github.com/repos/odoo/odoo/statuses/506ac455376d605bc360764ae958835b3da195e9","head":{"label":"odoo-dev:10.0-opw-745253-forecast-nim","ref":"10.0-opw-745253-forecast-nim","sha":"506ac455376d605bc360764ae958835b3da195e9","user":{"login":"odoo-dev","id":7466976,"avatar_url":"https://avatars3.githubusercontent.com/u/7466976?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo-dev","html_url":"https://github.com/odoo-dev","followers_url":"https://api.github.com/users/odoo-dev/followers","following_url":"https://api.github.com/users/odoo-dev/following{/other_user}","gists_url":"https://api.github.com/users/odoo-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo-dev/subscriptions","organizations_url":"https://api.github.com/users/odoo-dev/orgs","repos_url":"https://api.github.com/users/odoo-dev/repos","events_url":"https://api.github.com/users/odoo-dev/events{/privacy}","received_events_url":"https://api.github.com/users/odoo-dev/received_events","type":"Organization","site_admin":false},"repo":{"id":19853934,"name":"odoo","full_name":"odoo-dev/odoo","owner":{"login":"odoo-dev","id":7466976,"avatar_url":"https://avatars3.githubusercontent.com/u/7466976?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo-dev","html_url":"https://github.com/odoo-dev","followers_url":"https://api.github.com/users/odoo-dev/followers","following_url":"https://api.github.com/users/odoo-dev/following{/other_user}","gists_url":"https://api.github.com/users/odoo-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo-dev/subscriptions","organizations_url":"https://api.github.com/users/odoo-dev/orgs","repos_url":"https://api.github.com/users/odoo-dev/repos","events_url":"https://api.github.com/users/odoo-dev/events{/privacy}","received_events_url":"https://api.github.com/users/odoo-dev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/odoo-dev/odoo","description":"RD Dev Repository","fork":true,"url":"https://api.github.com/repos/odoo-dev/odoo","forks_url":"https://api.github.com/repos/odoo-dev/odoo/forks","keys_url":"https://api.github.com/repos/odoo-dev/odoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/odoo-dev/odoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/odoo-dev/odoo/teams","hooks_url":"https://api.github.com/repos/odoo-dev/odoo/hooks","issue_events_url":"https://api.github.com/repos/odoo-dev/odoo/issues/events{/number}","events_url":"https://api.github.com/repos/odoo-dev/odoo/events","assignees_url":"https://api.github.com/repos/odoo-dev/odoo/assignees{/user}","branches_url":"https://api.github.com/repos/odoo-dev/odoo/branches{/branch}","tags_url":"https://api.github.com/repos/odoo-dev/odoo/tags","blobs_url":"https://api.github.com/repos/odoo-dev/odoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/odoo-dev/odoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/odoo-dev/odoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/odoo-dev/odoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/odoo-dev/odoo/statuses/{sha}","languages_url":"https://api.github.com/repos/odoo-dev/odoo/languages","stargazers_url":"https://api.github.com/repos/odoo-dev/odoo/stargazers","contributors_url":"https://api.github.com/repos/odoo-dev/odoo/contributors","subscribers_url":"https://api.github.com/repos/odoo-dev/odoo/subscribers","subscription_url":"https://api.github.com/repos/odoo-dev/odoo/subscription","commits_url":"https://api.github.com/repos/odoo-dev/odoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/odoo-dev/odoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/odoo-dev/odoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/odoo-dev/odoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/odoo-dev/odoo/contents/{+path}","compare_url":"https://api.github.com/repos/odoo-dev/odoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/odoo-dev/odoo/merges","archive_url":"https://api.github.com/repos/odoo-dev/odoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/odoo-dev/odoo/downloads","issues_url":"https://api.github.com/repos/odoo-dev/odoo/issues{/number}","pulls_url":"https://api.github.com/repos/odoo-dev/odoo/pulls{/number}","milestones_url":"https://api.github.com/repos/odoo-dev/odoo/milestones{/number}","notifications_url":"https://api.github.com/repos/odoo-dev/odoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/odoo-dev/odoo/labels{/name}","releases_url":"https://api.github.com/repos/odoo-dev/odoo/releases{/id}","deployments_url":"https://api.github.com/repos/odoo-dev/odoo/deployments","created_at":"2014-05-16T11:16:19Z","updated_at":"2017-06-01T12:41:15Z","pushed_at":"2017-06-07T14:10:13Z","git_url":"git://github.com/odoo-dev/odoo.git","ssh_url":"git@github.com:odoo-dev/odoo.git","clone_url":"https://github.com/odoo-dev/odoo.git","svn_url":"https://github.com/odoo-dev/odoo","homepage":"https://www.odoo.com","size":1786792,"stargazers_count":72,"watchers_count":72,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":30,"mirror_url":null,"open_issues_count":1,"forks":30,"open_issues":1,"watchers":72,"default_branch":"master"}},"base":{"label":"odoo:10.0","ref":"10.0","sha":"2332df6bc7380e742e7d3dfb945124e21078087d","user":{"login":"odoo","id":6368483,"avatar_url":"https://avatars1.githubusercontent.com/u/6368483?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo","html_url":"https://github.com/odoo","followers_url":"https://api.github.com/users/odoo/followers","following_url":"https://api.github.com/users/odoo/following{/other_user}","gists_url":"https://api.github.com/users/odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo/subscriptions","organizations_url":"https://api.github.com/users/odoo/orgs","repos_url":"https://api.github.com/users/odoo/repos","events_url":"https://api.github.com/users/odoo/events{/privacy}","received_events_url":"https://api.github.com/users/odoo/received_events","type":"Organization","site_admin":false},"repo":{"id":19745004,"name":"odoo","full_name":"odoo/odoo","owner":{"login":"odoo","id":6368483,"avatar_url":"https://avatars1.githubusercontent.com/u/6368483?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo","html_url":"https://github.com/odoo","followers_url":"https://api.github.com/users/odoo/followers","following_url":"https://api.github.com/users/odoo/following{/other_user}","gists_url":"https://api.github.com/users/odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo/subscriptions","organizations_url":"https://api.github.com/users/odoo/orgs","repos_url":"https://api.github.com/users/odoo/repos","events_url":"https://api.github.com/users/odoo/events{/privacy}","received_events_url":"https://api.github.com/users/odoo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/odoo/odoo","description":"Odoo. Open Source Apps To Grow Your Business.","fork":false,"url":"https://api.github.com/repos/odoo/odoo","forks_url":"https://api.github.com/repos/odoo/odoo/forks","keys_url":"https://api.github.com/repos/odoo/odoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/odoo/odoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/odoo/odoo/teams","hooks_url":"https://api.github.com/repos/odoo/odoo/hooks","issue_events_url":"https://api.github.com/repos/odoo/odoo/issues/events{/number}","events_url":"https://api.github.com/repos/odoo/odoo/events","assignees_url":"https://api.github.com/repos/odoo/odoo/assignees{/user}","branches_url":"https://api.github.com/repos/odoo/odoo/branches{/branch}","tags_url":"https://api.github.com/repos/odoo/odoo/tags","blobs_url":"https://api.github.com/repos/odoo/odoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/odoo/odoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/odoo/odoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/odoo/odoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/odoo/odoo/statuses/{sha}","languages_url":"https://api.github.com/repos/odoo/odoo/languages","stargazers_url":"https://api.github.com/repos/odoo/odoo/stargazers","contributors_url":"https://api.github.com/repos/odoo/odoo/contributors","subscribers_url":"https://api.github.com/repos/odoo/odoo/subscribers","subscription_url":"https://api.github.com/repos/odoo/odoo/subscription","commits_url":"https://api.github.com/repos/odoo/odoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/odoo/odoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/odoo/odoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/odoo/odoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/odoo/odoo/contents/{+path}","compare_url":"https://api.github.com/repos/odoo/odoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/odoo/odoo/merges","archive_url":"https://api.github.com/repos/odoo/odoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/odoo/odoo/downloads","issues_url":"https://api.github.com/repos/odoo/odoo/issues{/number}","pulls_url":"https://api.github.com/repos/odoo/odoo/pulls{/number}","milestones_url":"https://api.github.com/repos/odoo/odoo/milestones{/number}","notifications_url":"https://api.github.com/repos/odoo/odoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/odoo/odoo/labels{/name}","releases_url":"https://api.github.com/repos/odoo/odoo/releases{/id}","deployments_url":"https://api.github.com/repos/odoo/odoo/deployments","created_at":"2014-05-13T15:38:58Z","updated_at":"2017-06-07T07:44:32Z","pushed_at":"2017-06-07T14:12:02Z","git_url":"git://github.com/odoo/odoo.git","ssh_url":"git@github.com:odoo/odoo.git","clone_url":"https://github.com/odoo/odoo.git","svn_url":"https://github.com/odoo/odoo","homepage":"https://www.odoo.com","size":1779817,"stargazers_count":6784,"watchers_count":6784,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6250,"mirror_url":null,"open_issues_count":3600,"forks":6250,"open_issues":3600,"watchers":6784,"default_branch":"10.0"}},"_links":{"self":{"href":"https://api.github.com/repos/odoo/odoo/pulls/17464"},"html":{"href":"https://github.com/odoo/odoo/pull/17464"},"issue":{"href":"https://api.github.com/repos/odoo/odoo/issues/17464"},"comments":{"href":"https://api.github.com/repos/odoo/odoo/issues/17464/comments"},"review_comments":{"href":"https://api.github.com/repos/odoo/odoo/pulls/17464/comments"},"review_comment":{"href":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/odoo/odoo/pulls/17464/commits"},"statuses":{"href":"https://api.github.com/repos/odoo/odoo/statuses/506ac455376d605bc360764ae958835b3da195e9"}},"merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"nim-odoo","id":11041725,"avatar_url":"https://avatars3.githubusercontent.com/u/11041725?v=3","gravatar_id":"","url":"https://api.github.com/users/nim-odoo","html_url":"https://github.com/nim-odoo","followers_url":"https://api.github.com/users/nim-odoo/followers","following_url":"https://api.github.com/users/nim-odoo/following{/other_user}","gists_url":"https://api.github.com/users/nim-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/nim-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nim-odoo/subscriptions","organizations_url":"https://api.github.com/users/nim-odoo/orgs","repos_url":"https://api.github.com/users/nim-odoo/repos","events_url":"https://api.github.com/users/nim-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/nim-odoo/received_events","type":"User","site_admin":false},"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":1,"deletions":1,"changed_files":1}}
{"actor":{"display_login":"nim-odoo"}}