Class: Planik::Lohnausweis::Daten

Inherits:
Object
  • Object
show all
Defined in:
lib/lohnausweis/daten.rb

Defined Under Namespace

Classes: Block

Instance Method Summary collapse

Constructor Details

#initialize(rohdaten) ⇒ Daten

Returns a new instance of Daten.



32
33
34
35
36
37
38
39
# File 'lib/lohnausweis/daten.rb', line 32

def initialize(rohdaten)
  @rohdaten = rohdaten
  bruttolohn_eintrag = create_lohn_block
  create_abzuege_block(bruttolohn_eintrag)
  create_ferien_block
  create_arbeitszeit_block
  create_arbeitsliste
end

Instance Method Details

#abzug_datenObject



141
142
143
# File 'lib/lohnausweis/daten.rb', line 141

def abzug_daten
  @abzuege_block.daten
end

#adresseObject



133
134
135
# File 'lib/lohnausweis/daten.rb', line 133

def adresse
  @rohdaten.adresse
end

#arbeitslisteObject



153
154
155
# File 'lib/lohnausweis/daten.rb', line 153

def arbeitsliste
  @arbeitsliste
end

#arbeitszeit_datenObject



149
150
151
# File 'lib/lohnausweis/daten.rb', line 149

def arbeitszeit_daten
  @arbeitszeit_block.daten
end

#create_abzuege_block(bruttolohn_eintrag) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/lohnausweis/daten.rb', line 61

def create_abzuege_block(bruttolohn_eintrag)
  lohn_abzuege = []
  lohn_abzuege << Abzug.new("AHV, IV, EO", bruttolohn_eintrag.betrag, @rohdaten.ahv)
  lohn_abzuege << Abzug.new("ALV", bruttolohn_eintrag.betrag, @rohdaten.alv)
  lohn_abzuege << Abzug.new("NBU", bruttolohn_eintrag.betrag, @rohdaten.nbu)
  lohn_abzuege << Abzug.new("Krankentaggeld", bruttolohn_eintrag.betrag, @rohdaten.krankentaggeld)
#        lohn_abzuege << Fakt.new("Pensionskasse BVG", nil, nil, @rohdaten.pensionskasse)
  @rohdaten.abzug_freifelder.each do |ff|
    lohn_abzuege << Fakt.new(ff.name, ff.menge, ff.ansatz, ff.betrag)
  end

  nettolohn_eintrag = Rechnung.new("Nettolohn", [bruttolohn_eintrag], lohn_abzuege)
  abzuege_eingtraege = lohn_abzuege + [nettolohn_eintrag]

  @abzuege_block = Block.new(abzuege_eingtraege)
end

#create_arbeitslisteObject



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/lohnausweis/daten.rb', line 102

def create_arbeitsliste
  eintraege = []
  titel = ["Datum", "Dienst/Arbeit", "Typ", "Start", "Ende", "Arbeitszeit"]
  eintraege << titel

  @rohdaten.arbeitsliste.each do |a|
    d = []
    d << a.datum.strftime("%d.%m.%Y")
    d << a.name
    d << a.typ
    d << (a.zeit_von.nil? ? nil: a.zeit_von.strftime("%H:%M"))
    d << (zeit_bis_to_s(a))
    d << format('%.2f', a.arbeitszeit)
    eintraege << d
  end
  sum = 0
  @rohdaten.arbeitsliste.each{|x| sum += x.arbeitszeit}
  sum = format('%.2f', sum)
  eintraege << ["Arbeitszeit total", nil, nil, nil, nil, sum]
  @arbeitsliste = eintraege
end

#create_arbeitszeit_blockObject



90
91
92
93
94
95
96
97
98
99
100
# File 'lib/lohnausweis/daten.rb', line 90

def create_arbeitszeit_block
  eintraege = []
  titel = ["Arbeitszeit", nil, nil, "Stunden"]

  eintraege << Fakt.new("Stundensaldo Vormonat", nil, nil, @rohdaten.arbeitszeit.gleitzeit_vor, nil)
  eintraege << Fakt.new("Sollstunden von #{start_datum} bis #{end_datum}", nil, nil, @rohdaten.arbeitszeit.soll_stunden, nil)
  eintraege << Fakt.new("Geleistete Stunden von #{start_datum} bis #{end_datum}", nil, nil, @rohdaten.arbeitszeit.ist_stunden, nil)
  eintraege << Rechnung.new("Saldo per #{end_datum}", [eintraege[0], eintraege[2]], [eintraege[1]], nil)

  @arbeitszeit_block = Block.new(eintraege, titel)
end

#create_ferien_blockObject



79
80
81
82
83
84
85
86
87
88
# File 'lib/lohnausweis/daten.rb', line 79

def create_ferien_block
  eintraege = []
  titel = ["Ferien", nil, nil, "Tage"]

  eintraege << Fakt.new("Ferienanspruch #{jahr}", nil, nil, @rohdaten.ferien.guthaben, nil)
  eintraege << Fakt.new("Bezogene Ferien bis #{end_datum}", nil, nil, @rohdaten.ferien.bezogen, nil)
  eintraege << Rechnung.new("Ferienguthaben per #{end_datum}", [eintraege[0]], [eintraege[1]], nil)

  @ferien_block = Block.new(eintraege, titel)
end

#create_lohn_blockObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/lohnausweis/daten.rb', line 41

def create_lohn_block
  lohn_positiv = []
  lohn_positiv << Fakt.new("Monatslohn", nil, nil, @rohdaten.monatslohn)
  lohn_positiv << Zulage.new("Zulage Nacht", @rohdaten.zulage_nacht.menge, @rohdaten.zulage_nacht.ansatz)
  lohn_positiv << Zulage.new("Zulage Wochenende", @rohdaten.zulage_wochenende.menge, @rohdaten.zulage_wochenende.ansatz)
  lohn_positiv << Zulage.new("Kinderzulagen bis 12 Jahre", @rohdaten.kinderzulage.menge, @rohdaten.kinderzulage.ansatz) unless @rohdaten.kinderzulage.nil?
  lohn_positiv << Fakt.new("Funktionszulage", nil, nil, @rohdaten.funktionszulage) unless @rohdaten.funktionszulage.nil?

  @rohdaten.lohn_freifelder.each do |ff|
    lohn_positiv << Fakt.new(ff.name, ff.menge, ff.ansatz, ff.betrag)
  end

  bruttolohn_eintrag = Rechnung.new("Bruttolohn", lohn_positiv, [])

  lohnblock_eintraege = lohn_positiv + [bruttolohn_eintrag]

  @lohnblock = Block.new(lohnblock_eintraege, ["Monatslohn", "Menge", "Ansatz / %", "Betrag"])
  bruttolohn_eintrag
end

#end_datumObject



161
162
163
# File 'lib/lohnausweis/daten.rb', line 161

def end_datum
  @rohdaten.end_datum.strftime("%d.%m.%Y")
end

#ferien_datenObject



145
146
147
# File 'lib/lohnausweis/daten.rb', line 145

def ferien_daten
  @ferien_block.daten
end

#jahrObject



165
166
167
# File 'lib/lohnausweis/daten.rb', line 165

def jahr
  @rohdaten.start_datum.strftime("%Y")
end

#lohn_datenObject



137
138
139
# File 'lib/lohnausweis/daten.rb', line 137

def lohn_daten
  @lohnblock.daten
end

#monatObject



169
170
171
# File 'lib/lohnausweis/daten.rb', line 169

def monat
  I18n.localize @rohdaten.start_datum, :format => "%B", :locale => :de
end

#start_datumObject



157
158
159
# File 'lib/lohnausweis/daten.rb', line 157

def start_datum
  @rohdaten.start_datum.strftime("%d.%m.%Y")
end

#zeit_bis_to_s(a) ⇒ Object



124
125
126
127
128
129
130
# File 'lib/lohnausweis/daten.rb', line 124

def zeit_bis_to_s(a)
  if a.zeit_bis.nil?
    return nil
  end
  s = a.zeit_bis.strftime("%H:%M")
  s == "00:00" ? "24:00" : s
end