calc_working_hours 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea21e50f8b5b8af5843d898a5019f54bd5e4c4d0
4
- data.tar.gz: 5eb6efc9ff0decf4ca6348c62007ddad425d82cb
3
+ metadata.gz: 16b8b8c6774066be91cce24c079db2df12b65c81
4
+ data.tar.gz: ab99ed5e2a1c3a5df82d2560b8a4a4336485e4a2
5
5
  SHA512:
6
- metadata.gz: 16e476bd0df661b86ecf69877ca07adbf3e12ef4f14cee526d120247f3dff77b30a0e771542b8d596211333378d06a204f4543a652fd787933ecc546fdf099a6
7
- data.tar.gz: 2c9b9ca198e8b52abffe72ce7718ddc022163947fe30cd43ce912926a47058c41954459c1a9a78b45bc37f2d7ff917fb349675fde7bdade764f6b3da1e309a07
6
+ metadata.gz: c3fb572921a516701f0b4b954bccc2ec750efeba9dcbd3ebe7d688fbaa88667c7c458625089b52a28eebe5010b133d739eb04b0e73a6755c30f980ba2f366d94
7
+ data.tar.gz: 2467a654f306c79deefc8388253fd93129c6d5abadbe5953e6daf7a0140deb6e0c86926a444dc094d9cf185531c14009ca553aec9f54d0651afb375636317c1a
@@ -6,7 +6,15 @@ module CalcWorkingHours
6
6
 
7
7
  class TimeCardRow
8
8
  attr_reader :starting_time, :ending_time, :break_time, :working_hours, :date_string, :time_point, :over_time, :id
9
- def initialize(date_string, starting_time, ending_time, *break_time)
9
+ def initialize(date_string, starting_time, ending_time, auto_correction, *break_time)
10
+
11
+ if auto_correction
12
+ unless CalcHelper.valid_time_order?(starting_time, ending_time)
13
+ et = WorkingHours.new(ending_time)
14
+ ending_time = et.add_time("24:00")
15
+ end
16
+ end
17
+
10
18
  unless date_string.class == String
11
19
  raise "failure set_date (date should string class)! TimeCardRow class"
12
20
  end
@@ -24,7 +32,7 @@ module CalcWorkingHours
24
32
  raise "failure initialize (invalid break time! TimeCardRow class)"
25
33
  end
26
34
  end
27
-
35
+
28
36
  break_time.each do |time|
29
37
  unless CalcHelper.valid_time_order?(time[0], time[1])
30
38
  raise "failure initialize (invalid time order(break time)! TimeCardRow class)"
@@ -5,8 +5,7 @@ module CalcWorkingHours
5
5
 
6
6
  class TimeRecorder
7
7
  attr_reader :time_cards
8
- def initialize(path_to_csv, set_encode, id_row, card_id_row, date_row, starting_time_row, ending_time_row, *break_time_rows)
9
-
8
+ def initialize(path_to_csv, set_encode ,id_row, card_id_row, date_row, starting_time_row, ending_time_row, auto_correction, *break_time_rows)
10
9
  csv_data = File.read(path_to_csv) if set_encode == nil || set_encode == false
11
10
  csv_data = File.read(path_to_csv, :encoding => set_encode + ":UTF-8") if set_encode
12
11
  time_cards = {}
@@ -27,10 +26,10 @@ module CalcWorkingHours
27
26
 
28
27
  if time_cards.has_key?(row[card_id_row])
29
28
  raise "id mismatching! (TimeRecorder class)" unless time_cards[row[card_id_row]].id == row[id_row]
30
- time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], *break_times))
29
+ time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], auto_correction ,*break_times))
31
30
  else
32
31
  time_cards[row[card_id_row]] = TimeCard.new(row[card_id_row], row[id_row])
33
- time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], *break_times))
32
+ time_cards[row[card_id_row]].add_row(TimeCardRow.new(row[date_row], row[starting_time_row], row[ending_time_row], auto_correction , *break_times))
34
33
  end
35
34
  end
36
35
  end
@@ -1,3 +1,3 @@
1
1
  module CalcWorkingHours
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -6,7 +6,7 @@ include CalcWorkingHours
6
6
  describe TimeCardRow do
7
7
  context "始業9:00、終業19:00、休憩11:00〜12:00、15:00〜16:00のとき" do
8
8
  before do
9
- @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"])
9
+ @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "19:00", false, ["11:00", "12:00"], ["15:00", "16:00"])
10
10
  end
11
11
 
12
12
  it "始業時間は9:00となっている" do
@@ -48,7 +48,7 @@ describe TimeCardRow do
48
48
 
49
49
  context "始業11:30、終業23:34、休憩15:38〜17:14のとき" do
50
50
  before do
51
- @time_card_row = TimeCardRow.new("2013/5/12", "11:30", "23:34", ["15:38", "17:14"])
51
+ @time_card_row = TimeCardRow.new("2013/5/12", "11:30", "23:34", false, ["15:38", "17:14"])
52
52
  end
53
53
 
54
54
  it "所定労働時間を8:00とすると、残業時間は2:28となる" do
@@ -58,7 +58,7 @@ describe TimeCardRow do
58
58
 
59
59
  context "始業9:00、終業18:00、休憩9:00〜18:00のとき" do
60
60
  before do
61
- @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "18:00", ["9:00", "18:00"])
61
+ @time_card_row = TimeCardRow.new("2013/5/12", "9:00", "18:00", false, ["9:00", "18:00"])
62
62
  end
63
63
 
64
64
  it "労働時間は0:00となる" do
@@ -68,51 +68,51 @@ describe TimeCardRow do
68
68
 
69
69
  context "適正な時間設定と、不適な設定時間を設定したとき" do
70
70
  it "set_dateにString以外を設定すると例外が発生する" do
71
- proc { TimeCardRow.new(Date.new(2013, 5, 12), "22:00", "28:00") }.should raise_error
71
+ proc { TimeCardRow.new(Date.new(2013, 5, 12), "22:00", "28:00", false) }.should raise_error
72
72
  end
73
73
 
74
74
  it "始業22:00、終業28:00は適正な始業・終業時間設定(0:00〜48:00)なので、エラーは発生しないこと" do
75
- proc{ TimeCardRow.new("2013/5/12", "22:00", "28:00") }.should_not raise_error
75
+ proc{ TimeCardRow.new("2013/5/12", "22:00", "28:00", false) }.should_not raise_error
76
76
  end
77
77
 
78
78
  it "始業44:00、終業50:00は不適正な始業・終業時間設定なので、エラーが発生すること" do
79
- proc{ TimeCardRow.new("2013/5/12", "44:00", "50:00") }.should raise_error
79
+ proc{ TimeCardRow.new("2013/5/12", "44:00", "50:00", false) }.should raise_error
80
80
  end
81
81
 
82
82
  it "始業四:00、終業5:00は不適正な時間フォーマットなので、エラーが発生すること" do
83
- proc{ TimeCardRow.new("2013/5/12", "四:00", "5:00") }.should raise_error
83
+ proc{ TimeCardRow.new("2013/5/12", "四:00", "5:00" ,false)}.should raise_error
84
84
  end
85
85
 
86
86
  it "始業9:00、終業19:00の時系列に誤りが無いので、エラーは発生しないこと" do
87
- proc { TimeCardRow.new("2013/5/12", "9:00", "19:00") }.should_not raise_error
87
+ proc { TimeCardRow.new("2013/5/12", "9:00", "19:00" ,false)}.should_not raise_error
88
88
  end
89
89
 
90
90
  it "始業18:00、終業8:00は時系列が誤っているので、エラーが発生すること" do
91
- proc { TimeCardRow.new("2013/5/12", "18:00", "9:00") }.should raise_error
91
+ proc { TimeCardRow.new("2013/5/12", "18:00", "9:00" ,false)}.should raise_error
92
92
  end
93
93
 
94
94
  it "始業8:00、終業19:00、休憩12:00〜11:00は時系列が誤っているので、エラーが発生すること" do
95
- proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", ["12:00", "10:00"]) }.should raise_error
95
+ proc { TimeCardRow.new("2013/5/12", "8:00", "19:00",false,["12:00", "10:00"]) }.should raise_error
96
96
  end
97
97
 
98
98
  it "始業8:00、終業19:00、休憩12:00は休憩時間設定が誤っているので、エラーが発生すること" do
99
- proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", "12:00") }.should raise_error
99
+ proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", "12:00",false) }.should raise_error
100
100
  end
101
101
 
102
102
  it "始業8:00、終業19:00、休憩7:00〜11:00は時系列が誤っているので、エラーが発生すること" do
103
- proc { TimeCardRow.new("2013/5/12", "8:00", "19:00", ["7:00", "10:00"]) }.should raise_error
103
+ proc { TimeCardRow.new("2013/5/12", "8:00", "19:00",false, ["7:00", "10:00"]) }.should raise_error
104
104
  end
105
105
  end
106
106
 
107
107
  context "始業20:00、終業25:00のとき" do
108
108
  it "深夜勤務時間は3:00となる" do
109
- TimeCardRow.new("2013/5/12", "20:00", "25:00").between_10pm_and_5am.should == "3:00"
109
+ TimeCardRow.new("2013/5/12", "20:00", "25:00", false).between_10pm_and_5am.should == "3:00"
110
110
  end
111
111
  end
112
112
 
113
113
  context "始業20:00、終業25:00、休憩23:00〜24:00のとき" do
114
114
  it "深夜勤務時間は4:00となる" do
115
- TimeCardRow.new("2013/5/12", "20:00", "25:00", ["23:00", "24:00"]).between_10pm_and_5am.should == "2:00"
115
+ TimeCardRow.new("2013/5/12", "20:00", "25:00", false,["23:00", "24:00"]).between_10pm_and_5am.should == "2:00"
116
116
  end
117
117
  end
118
118
 
@@ -7,8 +7,8 @@ describe TimeCard do
7
7
  context "始業9:00、終業19:00、休憩11:00〜12:00、15:00〜16:00が2日間のとき" do
8
8
  before do
9
9
  @time_card = TimeCard.new(1,1)
10
- @time_card.add_row(TimeCardRow.new("2013/5/12", "9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
11
- @time_card.add_row(TimeCardRow.new("2013/5/13", "9:00", "19:00", ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
10
+ @time_card.add_row(TimeCardRow.new("2013/5/12", "9:00", "19:00", false, ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
11
+ @time_card.add_row(TimeCardRow.new("2013/5/13", "9:00", "19:00", false, ["11:00", "12:00"], ["15:00", "16:00"]).set_fixed_working_hours("7:00"))
12
12
  end
13
13
 
14
14
  it "残業時間のトータルは2:00となる" do
@@ -19,8 +19,8 @@ describe TimeCard do
19
19
  context "始業24:00、終業30:00、休憩25:00〜26:00が2日間のとき" do
20
20
  before do
21
21
  @time_card = TimeCard.new(1,1)
22
- @time_card.add_row(TimeCardRow.new("2013/5/12", "24:00", "30:00",["25:00", "26:00"]).set_fixed_working_hours("7:00"))
23
- @time_card.add_row(TimeCardRow.new("2013/5/13", "24:00", "30:00",["25:00", "26:00"]).set_fixed_working_hours("7:00"))
22
+ @time_card.add_row(TimeCardRow.new("2013/5/12", "24:00", "30:00", false,["25:00", "26:00"]).set_fixed_working_hours("7:00"))
23
+ @time_card.add_row(TimeCardRow.new("2013/5/13", "24:00", "30:00", false,["25:00", "26:00"]).set_fixed_working_hours("7:00"))
24
24
  end
25
25
 
26
26
  it "深夜時間のトータルは8:00となる" do
@@ -7,7 +7,7 @@ describe TimeRecorder do
7
7
  context "data_sample.csv(Shift_JIS)の通りTimeRecorderが与えられている場合" do
8
8
  before do
9
9
  path_to_csv = File.expand_path(File.dirname(__FILE__)) + "/data_sample.csv"
10
- @time_recorder = TimeRecorder.new(path_to_csv, "Shift_JIS", "従業員番号", "カード番号", "年/月/日", "出勤打刻", "退勤打刻", ["外出打刻", "戻打刻"])
10
+ @time_recorder = TimeRecorder.new(path_to_csv, "Shift_JIS", "従業員番号", "カード番号", "年/月/日", "出勤打刻", "退勤打刻", false,["外出打刻", "戻打刻"])
11
11
  end
12
12
 
13
13
  it "タイムカードのデータが5件あること" do
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calc_working_hours
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi_U
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-24 00:00:00.000000000 Z
11
+ date: 2017-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: 例えば、173:08のような表記の時間を計算するライブラリです
@@ -59,9 +59,9 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .rspec
64
- - .travis.yml
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
65
  - Gemfile
66
66
  - LICENSE.txt
67
67
  - README.md
@@ -92,17 +92,17 @@ require_paths:
92
92
  - lib
93
93
  required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 2.0.3
105
+ rubygems_version: 2.5.1
106
106
  signing_key:
107
107
  specification_version: 4
108
108
  summary: 時間計算