lohnausweis 0.4.3 → 0.5.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: 9663e1dd0d189bb728541c3b404a6b4d21849374
4
- data.tar.gz: 38fa816ebf30e3b087eccba152cdc2fa0e7495e7
3
+ metadata.gz: 1d62b6cfb5df3fb217dd6421c3dee5644fdf0ce4
4
+ data.tar.gz: 1dfff497faa023dfef30dbee44531c697d93d326
5
5
  SHA512:
6
- metadata.gz: 112ba54ad5c0e13c16ae364027624a8eb9399290517daacda8150e4038591f35f18c314227d5eeb5757e14d3020e2d2ed4e43d03eb97449d33107c89efb28e38
7
- data.tar.gz: 199843412cf687c703365fd0f0f635c48d833a0f81eb4dfbdfeac4890ce1a51c5bacd148c5a609586318a2cf415c8aa81cc203faa07eb0ddab1218f4ce979cca
6
+ metadata.gz: a77fbf200bd06e2558e009241701f6c91762cc20289cd2db80d820d10e7b918c7102f838cb497a29bec0efbe5350cdfbc99a8bce8c7e6e5accddda1c5688f553
7
+ data.tar.gz: 7de6e3ab2171d922a5c8d2564190eefae7692ff13f06a487c44b2bbbcf447462eca017efcf3d645647e1574c1fb74396f924c612e517452325e5dd6c5519b3f0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lohnausweis (0.4.2)
4
+ lohnausweis (0.4.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Lohnausweis
2
2
 
3
- TODO: Write a gem description
3
+ Ursprünglich generierte das gem einen Lohnausweis. Jetzt nur noch ein Arbeitszeitendokument
4
+
5
+
6
+ ## gem erstellen und raufladen
7
+
4
8
 
5
9
  ## Installation
6
10
 
@@ -31,10 +31,7 @@ module Planik
31
31
 
32
32
  def initialize(rohdaten)
33
33
  @rohdaten = rohdaten
34
- bruttolohn_eintrag = create_lohn_block
35
34
  create_zulagen_block
36
- create_abzuege_block(bruttolohn_eintrag)
37
- create_ferien_block
38
35
  create_arbeitszeit_block
39
36
  create_arbeitsliste
40
37
  end
@@ -53,55 +50,6 @@ module Planik
53
50
  end
54
51
 
55
52
 
56
- def create_lohn_block
57
- lohn_positiv = []
58
- lohn_positiv << Fakt.new("Monatslohn", nil, nil, @rohdaten.monatslohn)
59
- lohn_positiv << Zulage.new("Zulage Nacht (#{monat_arbeit} #{jahr_arbeit})", @rohdaten.zulage_nacht.menge, @rohdaten.zulage_nacht.ansatz)
60
- lohn_positiv << Zulage.new("Zulage Wochenende (#{monat_arbeit} #{jahr_arbeit})", @rohdaten.zulage_wochenende.menge, @rohdaten.zulage_wochenende.ansatz)
61
- lohn_positiv << Zulage.new("Kinderzulagen bis 12 Jahre", @rohdaten.kinderzulage.menge, @rohdaten.kinderzulage.ansatz) unless @rohdaten.kinderzulage.nil?
62
- lohn_positiv << Fakt.new("Funktionszulage", nil, nil, @rohdaten.funktionszulage) unless @rohdaten.funktionszulage.nil?
63
-
64
- @rohdaten.lohn_freifelder.each do |ff|
65
- lohn_positiv << Fakt.new(ff.name, ff.menge, ff.ansatz, ff.betrag)
66
- end
67
-
68
- bruttolohn_eintrag = Rechnung.new("Bruttolohn", lohn_positiv, [])
69
-
70
- lohnblock_eintraege = lohn_positiv + [bruttolohn_eintrag]
71
-
72
- @lohnblock = Block.new(lohnblock_eintraege, ["Monatslohn", "Menge", "Ansatz / %", "Betrag"])
73
- bruttolohn_eintrag
74
- end
75
-
76
- def create_abzuege_block(bruttolohn_eintrag)
77
- lohn_abzuege = []
78
- lohn_abzuege << Abzug.new("AHV, IV, EO", bruttolohn_eintrag.betrag, @rohdaten.ahv)
79
- lohn_abzuege << Abzug.new("ALV", bruttolohn_eintrag.betrag, @rohdaten.alv)
80
- lohn_abzuege << Abzug.new("NBU", bruttolohn_eintrag.betrag, @rohdaten.nbu)
81
- lohn_abzuege << Abzug.new("Krankentaggeld", bruttolohn_eintrag.betrag, @rohdaten.krankentaggeld)
82
- # lohn_abzuege << Fakt.new("Pensionskasse BVG", nil, nil, @rohdaten.pensionskasse)
83
- @rohdaten.abzug_freifelder.each do |ff|
84
- lohn_abzuege << Fakt.new(ff.name, ff.menge, ff.ansatz, ff.betrag)
85
- end
86
-
87
- nettolohn_eintrag = Rechnung.new("Nettolohn", [bruttolohn_eintrag], lohn_abzuege)
88
- abzuege_eingtraege = lohn_abzuege + [nettolohn_eintrag]
89
-
90
- @abzuege_block = Block.new(abzuege_eingtraege)
91
- end
92
-
93
-
94
- def create_ferien_block
95
- eintraege = []
96
- titel = ["Ferien", nil, nil, "Tage"]
97
-
98
- eintraege << Fakt.new("Ferienanspruch #{jahr}", nil, nil, @rohdaten.ferien.guthaben, nil)
99
- eintraege << Fakt.new("Bezogene Ferien bis #{end_datum}", nil, nil, @rohdaten.ferien.bezogen, nil)
100
- eintraege << Rechnung.new("Ferienguthaben per #{end_datum}", [eintraege[0]], [eintraege[1]], nil)
101
-
102
- @ferien_block = Block.new(eintraege, titel)
103
- end
104
-
105
53
  def create_arbeitszeit_block
106
54
  eintraege = []
107
55
  titel = ["Arbeitszeit #{monat_arbeit} #{jahr_arbeit}", nil, nil, "Stunden"]
@@ -155,18 +103,6 @@ module Planik
155
103
  @zulagen_block.daten
156
104
  end
157
105
 
158
- def lohn_daten
159
- @lohnblock.daten
160
- end
161
-
162
- def abzug_daten
163
- @abzuege_block.daten
164
- end
165
-
166
- def ferien_daten
167
- @ferien_block.daten
168
- end
169
-
170
106
  def arbeitszeit_daten
171
107
  @arbeitszeit_block.daten
172
108
  end
@@ -23,37 +23,14 @@ module Planik
23
23
  @pdf.font("Helvetica", size: 8) #Default Font and size
24
24
  @pdf.default_leading = 0
25
25
  next_y = 750
26
- next_y = header_new(next_y)
26
+ next_y = header(next_y)
27
27
  next_y -= 50
28
28
  next_y = arbeitszeit_block(next_y)
29
29
  next_y -= 50
30
30
  next_y = zulagen_block(next_y)
31
31
  next_y -= 50
32
- next_y = arbeitsliste_new(next_y)
33
-
34
- footer()
35
- @pdf
36
- end
37
-
38
-
39
- # Erstellt das PDF und liefert es zurück
40
- def create_pdf_old
41
- @pdf = Prawn::Document.new(page_size: "A4")
42
- #@pdf.stroke_axis # Die Masse auf den Achsen
43
- @pdf.font("Helvetica", size: 8) #Default Font and size
44
- @pdf.default_leading = 0
45
- next_y = 750
46
- next_y = header(next_y)
47
- next_y -= 50
48
-
49
- next_y = lohn_block(next_y)
50
- next_y -= 50
51
- next_y = ferien_block(next_y)
52
- next_y -= 70
53
- arbeitszeit_block(next_y)
54
-
32
+ next_y = arbeitsliste(next_y)
55
33
  footer()
56
- arbeitsliste()
57
34
  @pdf
58
35
  end
59
36
 
@@ -63,7 +40,7 @@ module Planik
63
40
 
64
41
  # Neu
65
42
  # Aenderung für MEDPHONE März 2015: Nur Arbeitsliste, Arbeitszeit und Zulagen
66
- def header_new(ypos)
43
+ def header(ypos)
67
44
 
68
45
  bb = @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
69
46
  @pdf.font("Helvetica", size: 12) do
@@ -87,27 +64,13 @@ module Planik
87
64
  end
88
65
 
89
66
 
90
- def header(ypos)
91
-
92
- bb = @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
93
- @pdf.font("Helvetica", size: 12) do
94
- parent = @pdf.bounds
95
- xpos = parent.top_left[0] + 350
96
- ypos = parent.height - 70
97
- width = parent.top_right[0] - xpos
98
-
99
- @pdf.bounding_box([350, ypos], width: width, height: 70) do
100
- @pdf.text "#{@daten.adresse.voller_name}"
101
- @pdf.text @daten.adresse.strasse_nr
102
- @pdf.text "#{@daten.adresse.plz} <u>#{@daten.adresse.ort}</u>", inline_format: true
103
- #@pdf.stroke_bounds
104
- end
105
- @pdf.move_down(50)
106
- @pdf.text("Lohnabrechnung #{@daten.monat} #{@daten.jahr}", style: :bold)
107
- end
108
- #@pdf.stroke_bounds
67
+ def arbeitszeit_block(ypos)
68
+ pp = @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
69
+ ypos = 0
70
+ make_table(XPOS, ypos, @daten.arbeitszeit_daten, true)
71
+ @pdf.stroke_bounds
109
72
  end
110
- bb.absolute_bottom
73
+ pp.absolute_bottom
111
74
  end
112
75
 
113
76
 
@@ -122,72 +85,42 @@ module Planik
122
85
  bb.absolute_bottom
123
86
  end
124
87
 
125
-
126
- def lohn_block(ypos)
127
- bb = @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
128
- inner_ypos = 0
129
- make_table(XPOS, inner_ypos, @daten.lohn_daten, true)
130
- @pdf.move_down 10 # Abstand
131
- make_table(XPOS, inner_ypos, @daten.abzug_daten, false)
132
- @pdf.stroke_bounds
133
- end
134
- bb.absolute_bottom
88
+ #
89
+ # Neu
90
+ # Aenderung für MEDPHONE März 2015: Nur Arbeitsliste, Arbeitszeit und Zulagen
91
+ #
92
+ def arbeitsliste(ypos)
93
+ @pdf.move_down(20)
94
+ @pdf.text("Arbeitszeit von #{@daten.start_datum_for_arbeit} bis #{@daten.end_datum_for_arbeit}", style: :bold)
95
+ arbeitsliste = @daten.arbeitsliste
96
+ make_table_without_bounding_box(arbeitsliste, true)
135
97
  end
136
98
 
137
- def ferien_block(ypos)
138
- bb = @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
139
- ypos = 0
140
- make_table(XPOS, ypos, @daten.ferien_daten, true)
141
- @pdf.stroke_bounds
142
- end
143
- bb.absolute_bottom
144
- end
145
99
 
146
- def arbeitszeit_block(ypos)
147
- pp = @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
148
- ypos = 0
149
- make_table(XPOS, ypos, @daten.arbeitszeit_daten, true)
150
- @pdf.stroke_bounds
151
- end
152
- pp.absolute_bottom
153
- end
100
+ # def arbeitsliste
101
+ # @pdf.start_new_page
102
+ # @pdf.text("Anhang: Arbeitszeit von #{@daten.start_datum_for_arbeit} bis #{@daten.end_datum_for_arbeit}", style: :bold)
103
+ # arbeitsliste = @daten.arbeitsliste
104
+ # make_arbeitsliste_table(XPOS, 750, arbeitsliste, true)
105
+ # ypos = 18
106
+ # @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
107
+ # @pdf.font("Helvetica", size: 8) do
108
+ # @pdf.text("Generiert von Planik am #{Time.now.strftime("%d.%m.%Y um %H:%M Uhr")}", align: :right)
109
+ # end
110
+ # end
111
+ # end
112
+
154
113
 
155
114
  def footer
156
115
  ypos = 8
157
116
  @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
158
117
  @pdf.font("Helvetica", size: 8) do
159
- # Neu
160
- # Aenderung für MEDPHONE März 2015: Nur Arbeitsliste, Arbeitszeit und Zulagen
161
- #@pdf.text("Wir bitten Sie, die Lohnabrechnung sofort zu prüfen und Unstimmigkeiten unverzüglich mitzuteilen.")
162
- #@pdf.text("Anhang: Arbeitszeit von #{@daten.start_datum_for_arbeit} bis #{@daten.end_datum_for_arbeit}.")
163
118
  @pdf.text("Generiert von Planik am #{Time.now.strftime("%d.%m.%Y um %H:%M Uhr")}")
164
119
  end
165
120
  end
166
121
  end
167
122
 
168
- def arbeitsliste
169
- @pdf.start_new_page
170
- @pdf.text("Anhang: Arbeitszeit von #{@daten.start_datum_for_arbeit} bis #{@daten.end_datum_for_arbeit}", style: :bold)
171
- arbeitsliste = @daten.arbeitsliste
172
- make_arbeitsliste_table(XPOS, 750, arbeitsliste, true)
173
- ypos = 18
174
- @pdf.bounding_box([XPOS, ypos], width: WIDTH) do
175
- @pdf.font("Helvetica", size: 8) do
176
- @pdf.text("Generiert von Planik am #{Time.now.strftime("%d.%m.%Y um %H:%M Uhr")}", align: :right)
177
- end
178
- end
179
- end
180
123
 
181
- #
182
- # Neu
183
- # Aenderung für MEDPHONE März 2015: Nur Arbeitsliste, Arbeitszeit und Zulagen
184
- #
185
- def arbeitsliste_new(ypos)
186
- @pdf.move_down(20)
187
- @pdf.text("Arbeitszeit von #{@daten.start_datum_for_arbeit} bis #{@daten.end_datum_for_arbeit}", style: :bold)
188
- arbeitsliste = @daten.arbeitsliste
189
- make_table_without_bounding_box(arbeitsliste, true)
190
- end
191
124
 
192
125
 
193
126
  def make_arbeitsliste_table(xpos, ypos, daten, title = false)
@@ -50,26 +50,6 @@ module Planik
50
50
 
51
51
  end
52
52
 
53
- class Ferien
54
- attr_accessor :guthaben, :bezogen
55
-
56
- def initialize(guthaben, bezogen)
57
- @guthaben, @bezogen = guthaben, bezogen
58
- end
59
- end
60
-
61
- #
62
- # Entspricht einer Zeile im PDF.
63
- # Z.B 13. Monatslohn: Freilfeld.new("13. Monatslohn, erste Hälfte", "Fr 4'500.00", "6 Monate", 2250)
64
- # Ist entweder Lohnrelevant oder Abzugsrelevant, je nachdem zu welchem Array es hinzugefügt wurde.
65
- class Freifeld
66
- attr_accessor :name, :menge, :ansatz, :betrag
67
-
68
- def initialize(name, menge, ansatz, betrag)
69
- @name, @menge, @ansatz, @betrag = name, menge, ansatz, betrag
70
- end
71
- end
72
-
73
53
  #
74
54
  # Ein Dienst, Termine mit Arbeitszeit oder "andere Arbeit". Erscheinen im Anhang des PDFs
75
55
  #
@@ -84,32 +64,14 @@ module Planik
84
64
 
85
65
  attr_accessor :start_datum, :end_datum
86
66
  attr_accessor :start_datum_for_arbeit, :end_datum_for_arbeit
87
- attr_accessor :monatslohn
88
67
  attr_accessor :adresse
89
68
  attr_accessor :arbeitszeit
90
- attr_accessor :zulage_nacht, :zulage_wochenende, :kinderzulage
91
- attr_accessor :funktionszulage
92
- attr_accessor :ahv, :alv, :nbu, :krankentaggeld
93
- #attr_accessor :pensionskasse
94
- attr_accessor :ferien
95
- attr_accessor :lohn_freifelder
96
- attr_accessor :abzug_freifelder
69
+ attr_accessor :zulage_nacht, :zulage_wochenende
97
70
  attr_accessor :arbeitsliste
98
71
 
99
72
  def initialize
100
- @lohn_freifelder = []
101
- @abzug_freifelder = []
102
73
  @arbeitsliste = []
103
74
  yield self
104
-
105
- end
106
-
107
- def add_lohn_freifeld freifeld
108
- lohn_freifelder << freifeld
109
- end
110
-
111
- def add_abzug_freifeld freifeld
112
- abzug_freifelder << freifeld
113
75
  end
114
76
  end
115
77
  end
@@ -1,5 +1,5 @@
1
1
  module Planik
2
2
  module Lohnausweis
3
- VERSION = "0.4.3"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
@@ -1590,7 +1590,7 @@ ET
1590
1590
  BT
1591
1591
  36 38.256 Td
1592
1592
  /F1.0 8 Tf
1593
- [<47656e6572> -15 <696572> -40 <742076> 25 <6f6e20506c616e696b20616d2032362e30332e3230313520756d2031383a303820556872>] TJ
1593
+ [<47656e6572> -15 <696572> -40 <742076> 25 <6f6e20506c616e696b20616d2031382e30382e3230313520756d2030393a313320556872>] TJ
1594
1594
  ET
1595
1595
 
1596
1596
  Q
@@ -11,22 +11,9 @@ module Planik
11
11
  r.start_datum_for_arbeit = Date.new(2014, 05, 01)
12
12
  r.end_datum_for_arbeit = Date.new(2014, 05, 31)
13
13
  r.adresse = Rohdaten::Adresse.new("Margherita", "Giuba", "Mauerstrasse", "34E", "3456", "Oberutzwil")
14
- r.monatslohn = 4500
15
14
  r.arbeitszeit = Rohdaten::Arbeitszeit.new(-22.3, 150, 18.3)
16
15
  r.zulage_nacht = Rohdaten::MengeAnsatz.new(3.56, 8)
17
16
  r.zulage_wochenende = Rohdaten::MengeAnsatz.new(2.12, 8)
18
- r.kinderzulage = Rohdaten::MengeAnsatz.new(2, 260)
19
- r.add_lohn_freifeld(Rohdaten::Freifeld.new("Korrektur für Februar", nil, nil, 120))
20
- r.add_lohn_freifeld(Rohdaten::Freifeld.new("13. Monatslohn, erste Hälfte", "Fr 4'500.00", "6 Monate", 2250))
21
- r.add_lohn_freifeld(Rohdaten::Freifeld.new("Minusbetrag", "irgendwas", nil, -50.35))
22
- r.funktionszulage = 234.45
23
- r.ahv = 5.1
24
- r.alv = 2.1
25
- r.nbu = 3.1
26
- r.krankentaggeld = 0
27
- #r.pensionskasse = 204.45
28
- r.add_abzug_freifeld(Rohdaten::Freifeld.new("Händischer Abzug", "irgendwas", "nochmals was", 12))
29
- r.ferien = Rohdaten::Ferien.new(304, 22)
30
17
  r.arbeitsliste = [
31
18
  #attr_accessor :datum, :name, :typ, :zeit_von, :zeit_bis, :arbeitszeit
32
19
  Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 1), "4", "Dienst", Time.new(2000, 1, 1, 6, 45), Time.new(2000, 1, 1, 16, 00), 8.2388),
@@ -40,13 +27,6 @@ module Planik
40
27
  Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 9), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
41
28
  Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 10), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
42
29
  Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 11), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
43
- # Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 12), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
44
- # Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 13), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
45
- # Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 14), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
46
- # Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 15), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
47
- # Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 16), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
48
- # Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 17), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
49
- # Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 18), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
50
30
  Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 19), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
51
31
  Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 20), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
52
32
  Rohdaten::ArbeitsItem.new(Date.new(2014, 05, 21), "2", "Dienst", Time.new(2000, 1, 1, 7, 45), Time.new(2000, 1, 1, 24, 00), 6.234),
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lohnausweis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Muehlethaler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2015-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  version: '0'
100
100
  requirements: []
101
101
  rubyforge_project:
102
- rubygems_version: 2.2.2
102
+ rubygems_version: 2.4.8
103
103
  signing_key:
104
104
  specification_version: 4
105
105
  summary: Lohnausweis generieren aus den Daten von Planik
@@ -108,4 +108,3 @@ test_files:
108
108
  - spec/lohnausweis/daten_spec.rb
109
109
  - spec/lohnausweis/pdf_generator_spec.rb
110
110
  - spec/spec_helper.rb
111
- has_rdoc: