time_cop 0.8.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: acea5459ff2d87073e48ce8bf49624c3053d29d0
4
- data.tar.gz: 19b808d20e27eed1a5ea49f00db0f7668e1acd4d
3
+ metadata.gz: 556970075820cedaa47a84fb0e5b5e75b3dc1512
4
+ data.tar.gz: 85b78ef60edc687c8743ce77e68f835567227321
5
5
  SHA512:
6
- metadata.gz: 479b1ff4901d55092c744987364cb33cbc3c7f3f3ffed69d2777467f747f362a998713499d57d54f68d0d8e7e2fd887e99c6d62f3c63a92a8e41ca4733cd30fc
7
- data.tar.gz: f9c45e804a9e90345a424b1866ee754ab17a030b3e0ccd15c11b4463f45e5a97d37e1e138c9effb65914ed9c57363e04b7f81f5763ca8d251079410d8a9802c0
6
+ metadata.gz: c86d629a0d66e25e4aaefc9de16a1fd4d34cf84f97560f3a7fa5f992f02cff41f4ee125d45756f6d7d4af8dc67627d074e663931660d7a5cc902bf0eecd7e681
7
+ data.tar.gz: a41f5b231bebeec3bf0f9842e989f5915dc082b4080ea454a81a2a2b92ce5f7f5048f2876260a0ceab30ff6f4807cd7b8c082f595ab8fe4705db93e6803276a7
@@ -15,7 +15,7 @@ module TimeCop
15
15
  q4: [{month: 10, day: 1}, {month: 12, day: 31}]
16
16
  }
17
17
 
18
- def initialize(harvest_client:, date: Date.today, today: Date.today, report_builder: nil, email: nil, hours_per_week: 32)
18
+ def initialize(harvest_client:, date: Date.today, today: Date.today, report_builder: nil, email: nil, hours_per_week: 34)
19
19
  @client = harvest_client
20
20
  @date = date
21
21
  @today = today
@@ -46,7 +46,7 @@ module TimeCop
46
46
  end
47
47
 
48
48
  def date_from_period(period)
49
- Date.new(date.year, period[:month], period[:day])
49
+ Date.new(date.year, period[:month], period[:day])
50
50
  end
51
51
 
52
52
  def select_quarter
@@ -82,8 +82,10 @@ module TimeCop
82
82
  @quarterly_tracked_time_by_user ||= report_builder.generate
83
83
  end
84
84
 
85
- def total_quarter_time_tracked
86
- quarterly_tracked_time_by_user.map { |t| t.hours }.reduce(0, :+)
85
+ def total_quarter_time_tracked(include_future = true)
86
+ quarterly_tracked_time_by_user.select do |t|
87
+ include_future || t.spent_at <= Date.today
88
+ end.map(&:hours).reduce(0, :+)
87
89
  end
88
90
 
89
91
  def total_quarter_days
@@ -124,18 +126,26 @@ module TimeCop
124
126
 
125
127
  def average_quarter_hours_per_day
126
128
  if weekdays_so_far(false) > 0
127
- total_quarter_time_tracked / weekdays_so_far(false)
129
+ total_quarter_time_tracked(false) / weekdays_so_far(false)
128
130
  else
129
131
  0
130
132
  end
131
133
  end
132
134
 
133
135
  def projected_quarter_hours
134
- ((total_quarter_time_tracked + (weekdays_left(false) * average_quarter_hours_per_day)) - expected_quarter_hours)
136
+ (total_quarter_time_tracked + projected_future_hours) - expected_quarter_hours
135
137
  end
136
138
 
137
- def current_hours_delta
138
- total_quarter_time_tracked - expected_quarter_hours_to_today
139
+ def projected_future_hours
140
+ (weekdays_left(false) - future_days_with_work)* average_quarter_hours_per_day
141
+ end
142
+
143
+ def future_days_with_work
144
+ quarterly_tracked_time_by_user.select{ |t| t.spent_at > Date.today}.map(&:spent_at).uniq.length
145
+ end
146
+
147
+ def current_hours_delta(include_future = true)
148
+ total_quarter_time_tracked(include_future) - expected_quarter_hours_to_today
139
149
  end
140
150
 
141
151
  def quarterly_hours_delta
@@ -146,7 +156,7 @@ module TimeCop
146
156
  if weekdays_between(today, end_of_quarter_date) == 0
147
157
  quarterly_hours_delta
148
158
  else
149
- quarterly_hours_delta / weekdays_between(today, end_of_quarter_date).to_f
159
+ quarterly_hours_delta / weekdays_left(false).to_f
150
160
  end
151
161
  end
152
162
 
@@ -179,20 +189,21 @@ module TimeCop
179
189
  def print_report
180
190
  puts "Quarter Period: #{start_of_quarter_date} - #{end_of_quarter_date}"
181
191
  puts "Hours Per Week: #{@hours_per_week}"
192
+ puts "Weekdays So Far: #{weekdays_so_far(false)}"
182
193
  puts ""
183
194
  puts "Quarterly Hour Target: #{expected_quarter_hours.round(2)}"
184
195
  puts "Quarterly Hours Charged: #{total_quarter_time_tracked.round(2)}"
185
196
  if active_quarter?
186
197
  puts ""
198
+ puts "Additional Hours Needed By End Of Quarter: #{quarterly_hours_delta.round(2)}"
187
199
  puts "Business Days Left In The Quarter (Excluding Today): #{weekdays_left(false)}"
188
200
  puts ""
189
- puts "Additional Hours Needed By End Of Quarter: #{quarterly_hours_delta.round(2)}"
190
201
  puts "Average Hours Per Business Day Worked: #{average_quarter_hours_per_day.round(2)}"
191
202
  puts "Hours Per Business Day Average Needed: #{quarterly_hours_per_business_day_needed.round(2)}"
192
203
  end
193
- puts""
194
- puts "Quarter Surplus(+)/Deficit(-): #{Accountability.paint_number(current_hours_delta.round(2))}"
195
- puts "Projected Surplus(+)/Deficit(-): #{Accountability.paint_number(projected_quarter_hours.round(2))}" if active_quarter?
204
+ puts ""
205
+ puts "Current Surplus(+)/Deficit(-): #{Accountability.paint_number(current_hours_delta(false).round(2))}"
206
+ puts "Projected Quarter Surplus(+)/Deficit(-): #{Accountability.paint_number(projected_quarter_hours.round(2))}" if active_quarter?
196
207
  end
197
208
  end
198
209
  end
@@ -1,3 +1,3 @@
1
1
  module TimeCop
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: time_cop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Clopton
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-22 00:00:00.000000000 Z
11
+ date: 2018-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: harvested