Defect #29855 ยป fix-29855.patch
lib/redmine/utils.rb | ||
---|---|---|
106 | 106 | |
107 | 107 |
# Adds working days to the given date |
108 | 108 |
def add_working_days(date, working_days) |
109 |
if working_days > 0 |
|
110 |
weeks = working_days / (7 - non_working_week_days.size) |
|
111 |
result = weeks * 7 |
|
112 |
days_left = working_days - weeks * (7 - non_working_week_days.size) |
|
113 |
cwday = date.cwday |
|
114 |
while days_left > 0 |
|
115 |
cwday += 1 |
|
116 |
unless non_working_week_days.include?(((cwday - 1) % 7) + 1) |
|
117 |
days_left -= 1 |
|
118 |
end |
|
119 |
result += 1 |
|
120 |
end |
|
121 |
next_working_date(date + result) |
|
122 |
else |
|
123 |
date |
|
109 |
working_days.times do |
|
110 |
date = next_working_date(date + 1) |
|
124 | 111 |
end |
112 |
date |
|
125 | 113 |
end |
126 | 114 | |
127 | 115 |
# Returns the date of the first day on or after the given date that is a working day |
test/unit/lib/redmine/utils/date_calculation.rb | ||
---|---|---|
63 | 63 |
assert_add_working_days '2012-10-31', '2012-10-10', 15 |
64 | 64 |
assert_add_working_days '2012-10-19', '2012-10-09', 8 |
65 | 65 |
assert_add_working_days '2012-10-23', '2012-10-11', 8 |
66 |
assert_add_working_days '2012-10-26', '2012-10-20', 5 |
|
67 |
assert_add_working_days '2012-10-26', '2012-10-21', 5 |
|
66 | 68 |
end |
67 | 69 |
end |
68 | 70 |