Browse Source

initial commit

burningTyger 8 years ago
commit
b463ba09c4

+ 40 - 0
abiturfaecher_2015.slim

@@ -0,0 +1,40 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Durchschnittsnoten Abiturfächer","Gruppen":["D"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+.page
+  .subpage.font-size-8
+    .row
+      .col-xs-12
+        h5
+          |Durchschnittspunkte der Abiturfächer #{schueler.first.klasse},
+          small< Stand: #{(Time.now).strftime("%d.%m.%Y – %H:%M")}
+        .voffset-1
+        -faecher = {}
+        -schueler.each_with_index do |s,i|
+          -next if s.abi_abschluss_leistungen.empty?
+          -drei = s.abi_abschluss_leistungen.find{|f| f.abi_fach == "3"}
+          -if drei.nil?
+            -Warnung.add(s.name, "3. Abiturfach nicht angegeben")
+          -faecher[drei.fach_krz] ||= Array.new(schueler.count, " ")
+          -faecher[drei.fach_krz][i] = '%.2f' % drei.durchschnitt
+        table.table.table-condensed.table-bordered.fixed
+          tr
+            td
+            td.text-center 1. LK
+            td.text-center 2. LK
+            td.text-center colspan=(faecher.keys.count) 3. Abiturfach
+          tr
+            th Name
+            th.text-center =schueler.first.abi_abschluss_leistungen.find{|f|f.abi_fach == "1"}.fach_krz rescue "Fehlt"
+            th.text-center =schueler.first.abi_abschluss_leistungen.find{|f|f.abi_fach == "2"}.fach_krz rescue "Fehlt"
+            -drittfaecher = faecher.keys
+            -drittfaecher.each do |k|
+              th.text-center =k
+          -schueler.each_with_index do |s,i|
+            -next if s.abi_abschluss_leistungen.empty?
+            tr
+              td ="#{s.name}, #{s.vorname[0]}."
+              td.text-center ="%.2f" % s.abi_abschluss_leistungen.find{|f|f.abi_fach == "1"}.durchschnitt
+              td.text-center ="%.2f" % s.abi_abschluss_leistungen.find{|f|f.abi_fach == "2"}.durchschnitt
+              -drittfaecher.each do |d|
+                td.text-center =faecher[d][i]

+ 84 - 0
agz_2014.slim

@@ -0,0 +1,84 @@
+#doc-einstellungen data-json='{"logo_top":"agz_logo.svg","logo_seite":"traeger_logo.svg","Name":"Abgangszeugnis"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          'war vom #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis #{s.entlassdatum.strftime("%d.%m.%Y")}
+          '#{s.schueler_studierende} #{hj.string('Zeugniskopf')}.
+           #{s.geschlecht == 3 ? "Er":"Sie"} war zuletzt #{s.schueler_studierende} in der Klasse #{s.klasse}.
+          .voffset-1
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      -if s.bk_abschluss && s.bk_abschluss.zulassung? && s.bk_abschluss.class != Presenters::StringSaver::Null
+        ==partial :p_asz_zeugnis_noten, :s => s, :hj => hj
+      -else
+        ==partial :p_zeugnis_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          b =hj.versetzungsvermerk(:agz)
+          ==s.asd_schulform.start_with?("C") && hj.versetzung_krz=="V"? "<br/>Der Unterricht in der Klasse 12 kann nur aufgenommen werden, wenn zu Beginn des 12. Schuljahres der Nachweis über die erfolgreiche Ableistung des Praktikantenjahres gemäß Praktikum-Ausbildungsordnung, RdErl. v. 11.12.2006 (BASS 13 – 31 Nr. 1) vorgelegt wird.":""
+          .voffset-1
+          b Bemerkungen
+          br/
+          .klein-9
+            == (hj.zeugnis_bem).gsub("\r\n","<br/>")
+          = 'keine' if hj.zeugnis_bem.empty?
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              br/
+              =Schule.schulleiter_in
+          .col-xs-2
+            .klein-7.text-center Siegel
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =="#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}"
+              br/
+              ==hj.klassenlehrer_in
+        .klein-7.eng
+          .row
+            .col-xs-12
+              .grau Schulnummer: #{Schule.schulnummer}
+              hr.hr-grau
+              .grau
+                =partial doc.textbaustein 'Notenstufen'
+                .voffset-halb
+                sup.grau 1
+                =partial doc.textbaustein 'Fremdsprachenniveau'
+                .voffset-halb
+                'Dem Zeugnis liegen zugrunde:
+                =partial doc.textbaustein 'APO'
+                .voffset-halb
+                'Rechtsbehelfsbelehrung:
+                =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 292 - 0
agz_bg_2015.slim

@@ -0,0 +1,292 @@
+#doc-einstellungen data-json='{"logo_top":"agz_logo_ohne_linie_breiter_text_breit.svg","logo_seite":"traeger_logo.svg","Name":"Abgangszeugnis BG","Format":"A3","Orientierung":"landscape","Gruppen":["D"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a3.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.font-size-11
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-6
+          .col-xs-11
+            div style="font-size: 12pt; line-height: 1.5em"
+             |Abgangszeugnis gemäß §13 APO-BK, Anlage D
+            div style="font-size: 11pt; line-height: 1.2em"
+             |Berufliches Gymnasium, #{hj.string "Bereich"}
+            .voffset-1
+            '#{s.anrede}
+            b> #{s.vorname} #{s.name}
+            |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+            br/
+            |hat vom #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis zum #{s.entlassdatum.strftime("%d.%m.%Y")} den
+            b<> Bildungsgang #{o=hj.string("Schulform");s.geschlecht==3 ? o : o.gsub("/","in/")}
+            |besucht.
+            br/
+            '#{s.geschlecht == 3 ? "Er":"Sie"} war zuletzt Schüler#{s.geschlecht == 3 ? "":"in"} im
+            |#{hj.abschnitt}. Halbjahr der Jahrgangsstufe #{(hj.asd_jahrgang.to_i)+10}.
+            .voffset-1
+            |In der Konferenz am #{(hj.konferenzdatum).strftime("%d.%m.%Y")} sind folgende Leistungen festgestellt worden:
+          .col-xs-11
+            table.table.table-bordered.table-eng
+              tr
+                td
+                  |Fach
+                  sup 2
+                td width="40px"
+                  |Aufg.- feld
+                  sup 3
+                td width="40px"
+                  |Kurs- art
+                  sup 4
+                td.text-center colspan="2"
+                  |12.1
+                  sup 5
+                td.text-center colspan="2"
+                  |12.2
+                  sup 5
+                td.text-center colspan="2"
+                  |13.1
+                  sup 5
+                td.text-center colspan="2"
+                  |13.2
+                  sup 5
+
+              tr
+                td colspan="3"
+                td.text-center Note
+                td.text-center Punkte
+                td.text-center Note
+                td.text-center Punkte
+                td.text-center Note
+                td.text-center Punkte
+                td.text-center Note
+                td.text-center Punkte
+              -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |f|
+                tr
+                  td
+                    =f.fach.bezeichnung
+                    -sprache=hj.string("Fremdsprache", f.fach_id)
+                    -unless sprache.nil?
+                      =<sprache
+                      sup 1
+                  td.text-center ="I"*(f.fach.aufgabenfeld).to_i
+                  td.text-center =f.abi_fach
+                  td.text-center =SchildErweitert::NotenHelfer.note_aus_punkten(f.P12_1) || "–"
+                  td.text-center
+                    ="(" if s.fhr_abschluss_leistungen_dataset.where(:Fach_ID => f.fach_id).first.RSII_2_1 == "+"
+                    =f.P12_1 || "–"
+                    =")" if s.fhr_abschluss_leistungen_dataset.where(:Fach_ID => f.fach_id).first.RSII_2_1 == "+"
+                  td.text-center =SchildErweitert::NotenHelfer.note_aus_punkten(f.P12_2) || "–"
+                  td.text-center
+                    ="(" if s.fhr_abschluss_leistungen_dataset.where(:Fach_ID => f.fach_id).first.RSII_2_2 == "+"
+                    =f.P12_2 || "–"
+                    =")" if s.fhr_abschluss_leistungen_dataset.where(:Fach_ID => f.fach_id).first.RSII_2_2 == "+"
+                  td.text-center =SchildErweitert::NotenHelfer.note_aus_punkten(f.P13_1) || "–"
+                  td.text-center =f.P13_1 || "–"
+                  td.text-center =SchildErweitert::NotenHelfer.note_aus_punkten(f.P13_1) || "–"
+                  td.text-center =f.P13_2 || "–"
+            .voffset-1
+          .col-xs-11
+            b Bemerkungen
+            -if hj.bemerkungen=="keine"
+              |: keine
+            -else
+              br/
+              ==hj.bemerkungen
+        .col-xs-6
+          .col-xs-11.col-xs-offset-1
+            .voffset-4
+              |Dieses Zeugnis gilt in Verbindung mit dem Nachweis über eine abgeschlossene Berufsausbildung oder
+                ein einjähriges gelenktes Praktikum gemäß der Praktikums-Ausbildungsordnung vom 11.12.2006 (BASS
+                13 - 31 Nr. 1) als Nachweis der Fachhochschulreife. Es berechtigt zum Studium an einer Fachhochschule
+                des Landes Nordrhein-Westfalen.
+              br/
+              |Dieses Zeugnis gilt auch als Nachweis des schulischen Teils der Fachhochschulreife in den Ländern
+                Baden-Württemberg, Berlin, Brandenburg, Bremen, Hamburg, Hessen, Mecklenburg-Vorpommern,
+                Niedersachsen, Rheinland-Pfalz, Saarland, Sachsen-Anhalt und Schleswig-Holstein.
+              .voffset-2
+              table.table-noten
+                tr
+                  td Durschnittsnote:
+                  td.td-fach-note
+                    span =s.fhr_abschluss.note
+                  td in&nbsp;Worten:
+                  td.td-fach-note
+                    span =s.note_in_worten(s.fhr_abschluss.note)
+              .voffset-20
+            .row
+              .col-xs-4
+                '#{Schule.ort},
+                |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+              .col-xs-3
+                .voffset-2
+                hr
+                .klein-7.text-center
+                  =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+                  br/
+                  =Schule.schulleiter_in
+              .col-xs-2
+                .klein-7.text-center Siegel
+              .col-xs-3
+                .voffset-2
+                hr
+                .klein-7.text-center
+                  |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+                  br/
+                  |#{hj.klassenlehrer_in}
+        / liegt unterhalb von .subpage, da .page padding hat und der footer oberhalb platziert wird.
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            .schulnummer.grau Schulnummer: #{Schule.schulnummer}
+            hr.hr-grau
+            .row.grau
+              .col-xs-6
+                .col-xs-11
+                  .grau.klein-7
+                    sup> 1
+                    |Der Unterricht in den modernen Fremdsprachen hat auf der nach dem Fach in Klammern ange
+                      gebenen Niveaustufe des „Europäischen Referenzrahmens für Sprachen: Lernen, Lehren,
+                      Beurteilen“ stattgefunden. Sind zwei Referenzniveaus ausgewiesen, ist das niedrigere in vollem
+                      Umfang, das höhere in Anteilen erreicht. Bei mindestens ausreichenden Leistungen (5 Punkte)
+                      wird der sprachliche Kompetenzerwerb auf diesem Niveau bescheinigt. Die Niveaustufe bezieht
+                      sich auf das letzte Schulhalbjahr, in dem das Fach erteilt wurde.
+                    br/
+                  .grau.klein-7
+                    sup> 2
+                    |In der Reihenfolge der erlassenen Stundentafel
+                  .grau.klein-7
+                    table
+                      tr
+                        td rowspan="4" valign="top"
+                          sup> 3
+                        td I
+                        td width="75%"
+                          |= sprachlich literarisches Aufgabenfeld
+                        td rowspan="4" valign="top" align="right"
+                          sup> 4
+                        td
+                        td
+                          |LK = Leistungskursfach
+                      tr
+                        td II
+                        td
+                          |= gesellschaftswissenschaftliches Aufgabenfeld
+                        td
+                        td
+                          |GK = Grundkursfach
+                      tr
+                        td III
+                        td
+                          |= mathematisch-naturwissenschaftlich-technisches Aufgabenfeld
+                        td
+                        td
+                      tr
+                        td colspan="2"
+                        td
+                        td
+                  .grau.klein-7
+                    sup> 5
+                    |Für die Umsetzung von Noten in Punkte gilt:
+                    table border="1" width="80%" bordercolor="#bebebe"
+                      tr
+                        td width="5%"
+                        td.text-center width="10%" sehr gut
+                        td.text-center width="10%" gut
+                        td.text-center width="10%" befriedigend
+                        td.text-center width="10%" ausreichend
+                        td.text-center width="10%" mangelhaft
+                        td.text-center width="10%" ungenügend
+                      tr
+                        td Noten
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" +
+                              td.text-center width="33%" 1
+                              td.text-center width="33%" -
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" +
+                              td.text-center width="33%" 2
+                              td.text-center width="33%" -
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" +
+                              td.text-center width="33%" 3
+                              td.text-center width="33%" -
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" +
+                              td.text-center width="33%" 4
+                              td.text-center width="33%" -
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" +
+                              td.text-center width="33%" 5
+                              td.text-center width="33%" -
+                        td.text-center 6
+                      tr
+                        td Punkte
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" 15
+                              td.text-center width="33%" 14
+                              td.text-center width="33%" 13
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" 12
+                              td.text-center width="33%" 11
+                              td.text-center width="33%" 10
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" 09
+                              td.text-center width="33%" 08
+                              td.text-center width="33%" 07
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" 06
+                              td.text-center width="33%" 05
+                              td.text-center width="33%" 04
+                        td.text-center
+                          table width="100%"
+                            tr
+                              td.text-center width="33%" 03
+                              td.text-center width="33%" 02
+                              td.text-center width="33%" 01
+                        td.text-center 00
+                    .voffset-halb
+                      table
+                        tr
+                          td width="3%" E1
+                          td width="40%"
+                            |= Mit besonderem Erfolg teilgenommen
+                          td width="3%" E2
+                          td width="30%"
+                            |= Mit Erfolg teilgenommen
+                          td width="3%" E3
+                          td width="15%"
+                            |= Teilgenommen
+                    sup> 6
+                    |Die der Gesamtqualifikation zugrunde gelegten Punktzahlen sind in Klammern gesetzt.
+              .col-xs-6
+                .col-xs-11.col-xs-offset-1
+                  .klein-7.grau
+                    'Dem Zeugnis liegen zugrunde:
+                    =partial doc.textbaustein 'APO'
+                    p
+                    'Rechtsbehelfsbelehrung:
+                    =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 86 - 0
agz_mit_pruefung_2014.slim

@@ -0,0 +1,86 @@
+#doc-einstellungen data-json='{"logo_top":"agz_logo.svg","logo_seite":"traeger_logo.svg","Name":"Abgangszeugnis mit Prüfungsnoten","Gruppen":["B","E"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          'war vom #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis #{s.entlassdatum.strftime("%d.%m.%Y")}
+           #{s.schueler_studierende} #{hj.string('Zeugniskopf')}.
+           #{s.geschlecht == 3 ? "Er":"Sie"} war zuletzt #{s.schueler_studierende} in der Klasse #{s.klasse}.
+          .voffset-2
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      .klein-8
+        ==partial :p_zeugnis_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          .klein-8
+            table.col-xs-12.table-noten
+              -hj.noten.select{|f| f.fach.fach_krz.start_with? "AS"}.each do |as|
+                tr
+                  td width="22%" =as.fach.zeugnisbez
+                  td.td-padding-extra =as.lernentw
+                  td.td-fach-note width="20%"
+                    span =s.bk_abschluss_leistungen.find{|f| f.fach_id == as.fach_id}.note(:note_abschluss)
+          b Bemerkungen
+          br/
+          == (hj.zeugnis_bem).gsub("\r\n","<br/>")
+          = 'keine' if hj.zeugnis_bem.empty?
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              br/
+              =Schule.schulleiter_in
+          .col-xs-2
+            .klein-7.text-center Siegel
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+              br/
+              |#{hj.klassenlehrer_in}
+        .klein-7.eng
+          .row
+            .col-xs-12
+              .grau Schulnummer: #{Schule.schulnummer}
+              hr.hr-grau
+              .grau
+                =partial doc.textbaustein 'Notenstufen'
+                .voffset-halb
+                sup.grau 1
+                =partial doc.textbaustein 'Fremdsprachenniveau'
+                .voffset-halb
+                'Dem Zeugnis liegen zugrunde:
+                =partial doc.textbaustein 'APO'
+                .voffset-halb
+                'Rechtsbehelfsbelehrung:
+                =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 86 - 0
agz_mit_pruefung_zweiseitig_2014.slim

@@ -0,0 +1,86 @@
+#doc-einstellungen data-json='{"logo_top":"agz_logo.svg","logo_seite":"traeger_logo.svg","Name":"Abgangszeugnis mit Prüfungsnoten zweiseitig","Gruppen":["B","E"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          'war vom #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis #{s.entlassdatum.strftime("%d.%m.%Y")}
+           #{s.schueler_studierende} #{hj.string('Zeugniskopf')}.
+           #{s.geschlecht == 3 ? "Er":"Sie"} war zuletzt #{s.schueler_studierende} in der Klasse #{s.klasse}.
+          .voffset-2
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      ==partial :p_zeugnis_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          table.col-xs-12.table-noten
+            -hj.noten.select{|f| f.fach.fach_krz.start_with? "AS"}.each do |as|
+              tr
+                td width="22%" =as.fach.zeugnisbez
+                td.td-padding-extra =as.lernentw
+                td.td-fach-note width="20%"
+                  span =s.bk_abschluss_leistungen.find{|f| f.fach_id == as.fach_id}.note(:note_abschluss)
+          b Bemerkungen
+          br/
+          == (hj.zeugnis_bem).gsub("\r\n","<br/>")
+          = 'keine' if hj.zeugnis_bem.empty?
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              br/
+              =Schule.schulleiter_in
+          .col-xs-2
+            .klein-7.text-center Siegel
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+              br/
+              |#{hj.klassenlehrer_in}
+  .page
+    .subpage
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            .grau Schulnummer: #{Schule.schulnummer}
+            hr.hr-grau
+            .grau
+              =partial doc.textbaustein 'Notenstufen'
+              .voffset-halb
+              sup.grau 1
+              =partial doc.textbaustein 'Fremdsprachenniveau'
+              .voffset-halb
+              'Dem Zeugnis liegen zugrunde:
+              =partial doc.textbaustein 'APO'
+              .voffset-halb
+              'Rechtsbehelfsbelehrung:
+              =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 86 - 0
agz_zweiseitig_2014.slim

@@ -0,0 +1,86 @@
+#doc-einstellungen data-json='{"logo_top":"agz_logo.svg","logo_seite":"traeger_logo.svg","Name":"Abgangszeugnis zweiseitig"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          'war vom #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis #{s.entlassdatum.strftime("%d.%m.%Y")}
+          '#{s.schueler_studierende} #{hj.string('Zeugniskopf')}.
+           #{s.geschlecht == 3 ? "Er":"Sie"} war zuletzt #{s.schueler_studierende} in der Klasse #{s.klasse}.
+          .voffset-1
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      -if s.bk_abschluss && s.bk_abschluss.zulassung? && s.bk_abschluss.class != Presenters::StringSaver::Null
+        ==partial :p_asz_zeugnis_noten, :s => s, :hj => hj
+      -else
+        ==partial :p_zeugnis_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          b =hj.versetzungsvermerk(:agz)
+          ==s.asd_schulform.start_with?("C") && hj.versetzung_krz=="V"? "<br/>Der Unterricht in der Klasse 12 kann nur aufgenommen werden, wenn zu Beginn des 12. Schuljahres der Nachweis über die erfolgreiche Ableistung des Praktikantenjahres gemäß Praktikum-Ausbildungsordnung, RdErl. v. 11.12.2006 (BASS 13 – 31 Nr. 1) vorgelegt wird.":""
+          .voffset-1
+          b Bemerkungen
+          br/
+          .klein-9
+            == (hj.zeugnis_bem).gsub("\r\n","<br/>")
+          = 'keine' if hj.zeugnis_bem.empty?
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              br/
+              =Schule.schulleiter_in
+          .col-xs-2
+            .klein-7.text-center Siegel
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =="#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}"
+              br/
+              ==hj.klassenlehrer_in
+  .page
+    .subpage
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            .grau Schulnummer: #{Schule.schulnummer}
+            hr.hr-grau
+            .grau
+              =partial doc.textbaustein 'Notenstufen'
+              .voffset-halb
+              sup.grau 1
+              =partial doc.textbaustein 'Fremdsprachenniveau'
+              .voffset-halb
+              'Dem Zeugnis liegen zugrunde:
+              =partial doc.textbaustein 'APO'
+              .voffset-halb
+              'Rechtsbehelfsbelehrung:
+              =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 44 - 0
apa_notenuebersicht.slim

@@ -0,0 +1,44 @@
+#doc-einstellungen data-json='{"logo_seite":"traeger_logo.svg","Name":"Notenübersicht APA","Orientierung":"landscape","Ignoriere-Abschnitt":1}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4_landscape.css" rel="stylesheet" media="all"
+-schueler.select{|s| s.bk_abschluss }.each_slice(3) do |schueler_slice|
+  .page
+    .subpage
+      .row
+        .col-xs-12
+          h4
+            'APA Notenübersicht #{schueler.first.klasse},
+            small Stand: #{(Time.now).strftime("%d.%m.%Y – %H:%M")}
+          -schueler_slice.each_with_index do |s,i|
+            -abschlussnoten=s.bk_abschluss_leistungen
+            h4 #{s.name}, #{s.vorname}
+            table.table.table-condensed.table-bordered
+              tr
+                th
+                -abschlussnoten.each do |n|
+                  th
+                    div
+                      span
+                        =n.fach_krz
+              tr
+                td.td-center VN
+                -abschlussnoten.each do |n|
+                  td.td-center =n.vornote rescue "fehlt"
+                td
+                  |Zulassung: #{s.bk_abschluss.zulassung? ? "Ja" : "Nein"}
+              tr
+                td.td-center SP
+                -abschlussnoten.each do |n|
+                  td.td-center =n.note_schriftlich rescue "fehlt"
+                td
+              tr
+                td.td-center MP
+                -abschlussnoten.each do |n|
+                  td.td-center =n.note_muendlich rescue "fehlt"
+                td
+              tr
+                td.td-center BA
+                -abschlussnoten.each do |n|
+                  td.td-center =n.note_abschluss_ba rescue "fehlt"
+                td
+                  |BA bestanden: #{s.bk_abschluss.bestanden_ba? ? "Ja" : "Nein"}

+ 454 - 0
asz_ahr_2015.slim

@@ -0,0 +1,454 @@
+#doc-einstellungen data-json='{"logo_top":"asz_logo_ohne_linie_breiter_text_breit.svg","logo_seite":"traeger_logo.svg","Name":"Abschlusszeugnis AHR","Gruppen":["D"],"Format":"A3","Orientierung":"landscape","Ignoriere-Abschnitt":1}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a3.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+    .subpage
+      .row
+        .col-xs-6
+          .row
+            .col-xs-11
+              b V. Bemerkungen
+              br/
+              ==hj.bemerkungen
+              .voffset-4
+              b VI. #{s.anrede} #{s.vorname} #{s.name}
+              br
+              |hat die Abiturprüfung bestanden und damit die Berechtigung zum Studium an einer Hochschule in der Bundesrepublik Deutschland erworben.
+              .voffset-3
+              .row
+                .col-xs-6
+                  |#{Schule.ort}, den #{hj.zeugnis_datum.strftime("%d.%m.%Y")}
+                  .voffset-3
+              .row.kleiner-10rem
+                .text-center Siegel
+                .col-xs-5
+                  hr
+                  .text-center
+                    =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+                    |– Vorsitzender des allgemeinen Prüfungsausschusses
+                .col-xs-5.col-xs-offset-2
+                  .text-center
+                    hr
+                    =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+                    ="– #{Schule.schulleiter_in}"
+            .col-xs-offset-4.col-xs-3
+              .voffset-2
+              hr
+              .kleiner-10rem.text-center
+                =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+                br/
+                |Bildungsgangleitung -- wird geändert
+        .col-xs-6
+          .row
+            .col-xs-offset-1.col-xs-11
+              h3.text-center Berufskolleg Bethel ....?
+              .voffset-3
+              h3.text-center
+                |Zeugnis
+                br/
+                |der Allgemeinen Hochschulreife
+              .voffset-9
+              b #{s.anrede} #{s.vorname} #{s.name}
+              br /
+              |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+              br /
+              |wohnhaft in #{s.ort_abk}
+              =s.konf_druck=="+" ? ", #{s.religion_abk}" : ""
+              sup 1
+              br /
+              |hat sich der Abiturprüfung im Bildungsgang #{hj.string('Schulform')} unterzogen
+      .pull-bottom.row
+        .col-xs-6
+          .row
+            .col-xs-11
+              b Rechtsbehelfsbelehrung:
+              br/
+              |Gegen die Kursabschlussnoten der Jahrgangsstufe 13.2 und die
+                Leistungen in der Abiturprüfung sowie die Berechnung der
+                Gesamtqualifikation einschließlich der Durchschnittsnote kann
+                innerhalb eines Monats nach Bekanntgabe des Zeugnisses
+                Widerspruch erhoben werden. Der Widerspruch ist beim
+                #{{Schule.first.bezeichnung2}}, #{Schule.first.strasse},
+                #{Schule.first.plz}, #{Schule.first.ort} schriftlich oder zur
+                Niederschrift zu erheben. Falls die Frist durch das Verschulden
+                einer/eines Bevollmächtigten versäumt wird, wird dieses
+                Verschulden der Widerspruchsführerin/dem Widerspruchsführer
+                zugerechnet.
+              .voffset-2
+              |Schulnummer: #{Schule.schulnummer}
+        .col-xs-6
+          .row
+            .col-xs-offset-1.col-xs-11
+              |Dem Zeugnis liegen zugrunde:
+              ul
+                li Die Vereinbarung zur Gestaltung der gymnasialen Oberstufe in der Sekundarstufe II (Beschluss der Kultusministerkonferenz vom 7. Juli 1972 in der jeweils geltenden Fassung)
+                li Die Vereinbarung über die Abiturprüfung der gymnasialen Oberstufe in der Sekundarstufe II gemäß Vereinbarung der Kultusministerkonferenz vom 7. Juli 1972 (Beschluss der Kultusministerkonferenz vom 13. Dezember 1973 in der jeweils geltenden Fassung)
+                li Die Bildungsstandards für die Allgemeine Hochschulreife oder die Vereinbarung über die einheitlichen Prüfungsanforderungen in der Abiturprüfung (Beschlüsse der Kultusministerkonferenz in der jeweils geltenden Fassung)
+                li Die Verordnung über die Ausbildung und Prüfung in den Bildungsgängen des Berufskollegs (Ausbildungs- und Prüfungsordnung Berufskolleg – APO-BK) vom 26. Mai 1999 (SGV. NRW. 223/BASS 13 – 33 Nr. 1.1).
+              -if s.konf_druck == "+"
+                .voffset-3
+                .kleiner-10rem
+                  hr
+                  sup> 1
+                  |Auf Wunsch #{s.geschlecht == "3" ? "des" : "der"} Schüler#{s.geschlecht == "3" ? "s" : "in"} wird hinter dem Wohnort das Religionsbekenntnis vermerkt.
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-6
+          .row
+            .col-xs-11
+              b I. Block I: Ergebnisse in der Qualifikationsphase
+              br /
+              .kleiner-10rem
+                |(Die Bewertungen von Halbjahresergebnissen, die nicht in die Gesamtqualifikation eingehen, sind in Klammern gesetzt. Es müssen mindestens 32 Halbjahresergebnisse eingebracht werden.)
+              table.table.table-bordered
+                tr
+                  td
+                    |Fach
+                    sup 1,2
+                  td colspan="4"
+                    |Bewertung
+                    sup 3
+                    br /
+                    |Halbjahresergebnisse in einfacher Wertung
+                tr
+                  td colspan="1"
+                  td
+                    |1. Halbjahr
+                  td
+                    |2. Halbjahr
+                  td
+                    |3. Halbjahr
+                  td
+                    |4. Halbjahr
+                tr
+                  td colspan="5"
+                    |Sprachlich-literarisch-künstlerisches Aufgabenfeld
+                -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |f|
+                  -next if f.fach.aufgabenfeld.to_i != 1
+                  tr
+                    td =f.fach.bezeichnung
+                    td.text-center
+                      ="(" if f.R12_1 == "-"
+                      =f.P12_1 || "–"
+                      =")" if f.R12_1 == "-"
+                    td.text-center
+                      ="(" if f.R12_2 == "-"
+                      =f.P12_2 || "–"
+                      =")" if f.R12_2 == "-"
+                    td.text-center
+                      ="(" if f.R13_1 == "-"
+                      =f.P13_1 || "–"
+                      =")" if f.R13_1 == "-"
+                    td.text-center
+                      ="(" if f.R13_2 == "-"
+                      =f.P13_2 || "–"
+                      =")" if f.R13_2 == "-"
+                tr
+                  td colspan="5"
+                    |Gesellschaftswissenschaftliches Aufgabenfeld
+                -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |f|
+                  -next if f.fach.aufgabenfeld.to_i != 2
+                  tr
+                    td =f.fach.bezeichnung
+                    td.text-center
+                      ="(" if f.R12_1 == "-"
+                      =f.P12_1 || "–"
+                      =")" if f.R12_1 == "-"
+                    td.text-center
+                      ="(" if f.R12_2 == "-"
+                      =f.P12_2 || "–"
+                      =")" if f.R12_2 == "-"
+                    td.text-center
+                      ="(" if f.R13_1 == "-"
+                      =f.P13_1 || "–"
+                      =")" if f.R13_1 == "-"
+                    td.text-center
+                      ="(" if f.R13_2 == "-"
+                      =f.P13_2 || "–"
+                      =")" if f.R13_2 == "-"
+                tr
+                  td colspan="5"
+                    |Mathematisch-naturwissenschaftlich-technisches Aufgabenfeld
+                -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |f|
+                  -next if f.fach.aufgabenfeld.to_i != 3
+                  tr
+                    td =f.fach.bezeichnung
+                    td.text-center
+                      ="(" if f.R12_1 == "-"
+                      =f.P12_1 || "–"
+                      =")" if f.R12_1 == "-"
+                    td.text-center
+                      ="(" if f.R12_2 == "-"
+                      =f.P12_2 || "–"
+                      =")" if f.R12_2 == "-"
+                    td.text-center
+                      ="(" if f.R13_1 == "-"
+                      =f.P13_1 || "–"
+                      =")" if f.R13_1 == "-"
+                    td.text-center
+                      ="(" if f.R13_2 == "-"
+                      =f.P13_2 || "–"
+                      =")" if f.R13_2 == "-"
+                tr
+                  td colspan="5" rowspan="1" &nbsp;
+                -f = s.abi_abschluss_leistungen.find{|f|f.fach_krz == "RE"}
+                tr
+                  td =f.fach.bezeichnung
+                  td.text-center
+                    ="(" if f.R12_1 == "-"
+                    =f.P12_1 || "–"
+                    =")" if f.R12_1 == "-"
+                  td.text-center
+                    ="(" if f.R12_2 == "-"
+                    =f.P12_2 || "–"
+                    =")" if f.R12_2 == "-"
+                  td.text-center
+                    ="(" if f.R13_1 == "-"
+                    =f.P13_1 || "–"
+                    =")" if f.R13_1 == "-"
+                  td.text-center
+                    ="(" if f.R13_2 == "-"
+                    =f.P13_2 || "–"
+                    =")" if f.R13_2 == "-"
+                -f = s.abi_abschluss_leistungen.find{|f|f.fach_krz == "SP"}
+                tr
+                  td =f.fach.bezeichnung
+                  td.text-center
+                    ="(" if f.R12_1 == "-"
+                    =f.P12_1 || "–"
+                    =")" if f.R12_1 == "-"
+                  td.text-center
+                    ="(" if f.R12_2 == "-"
+                    =f.P12_2 || "–"
+                    =")" if f.R12_2 == "-"
+                  td.text-center
+                    ="(" if f.R13_1 == "-"
+                    =f.P13_1 || "–"
+                    =")" if f.R13_1 == "-"
+                  td.text-center
+                    ="(" if f.R13_2 == "-"
+                    =f.P13_2 || "–"
+                    =")" if f.R13_2 == "-"
+        .col-xs-6
+          .row
+            .col-xs-11.col-xs-offset-1
+              b II. Block II: Ergebnisse in der Abiturprüfung
+              table.table.table-bordered
+                tr
+                  td rowspan="2"
+                    |Prüfungsfach
+                    sup 4
+                  td colspan="2"
+                    |Ergebnisse
+                    br /
+                    |in einfacher Wertung
+                  td rowspan="2"
+                    |Gesamtergebnis
+                    sup 5
+                tr
+                  td schriftlich
+                  td mündlich
+                -for i in 1..4
+                  -f = s.abi_abschluss_leistungen.find{|f|f.abi_fach.to_i == i}
+                  tr
+                    td
+                      =f.fach.bezeichnung
+                      =" (eA)" if f.abi_fach.to_i < 3
+                    td schr
+                    td mnd
+                    td gesamt
+              .voffset-3
+              b III. Berechnung der Gesamtqualifikation und der Durchschnittsnote
+              br /
+              |Block I:
+              .voffset-halb
+              .row
+                .col-xs-6
+                  |Punktsumme aus den Halbjahresergebnissen
+                  sup 6
+                  br
+                  |Berechnung gemäß Formel
+                .col-xs-2
+                  .voffset-halb
+                  img src="/images/abiturformel.png" width="60px"
+                .col-xs-1
+                  h4
+                    =>s.abi_abschluss.punktsumme_i.to_i
+                .col-xs-3
+                  |mindestens 200,
+                  br/
+                  |höchstens 600 Punkte
+              .row
+                .col-xs-12
+                  .voffset-halb
+                  .kleiner-10rem
+                    |P = Erzielte Punkte in den eingebrachten Fächern. Die Ergebnisse in den Leistungskursfächern werden doppelt gewichtet.
+                    sup 7
+                    br
+                    |S = Anzahl der Schulhalbjahresergebnisse. Doppelt gewichtete Fächer zählen auch hier doppelt.
+              .voffset-1
+              |Block II:
+              .voffset-halb
+              .row
+                .col-xs-6
+                  |Punktsumme aus den Gesamtergebnissen in den Prüfungsfächern in 5-facher Wertung
+                .col-xs-offset-2.col-xs-1
+                  h4
+                    =>s.abi_abschluss.punktsumme_ii.to_i
+                .col-xs-3
+                  |mindestens 100,
+                  br/
+                  |höchstens 300 Punkte
+              .voffset-1
+              .row
+                .col-xs-8
+                  |Gesamtpunktzahl
+                .col-xs-1
+                  h4
+                    =>s.abi_abschluss.gesamt_punktzahl.to_i
+                .col-xs-3
+                  |mindestens 300,
+                  br/
+                  |höchstens 900 Punkte
+              .voffset-1
+              .row
+                .col-xs-8
+                  |Durchschnittsnote
+                .col-xs-1
+                  h4
+                    =>s.abi_abschluss.note
+                .col-xs-3
+                  |in Worten:
+                  br/
+                  =>s.note_in_worten(s.abi_abschluss.note)
+            .row
+              .col-xs-offset-1.col-xs-8
+                .voffset-3
+                |IV. Fremdsprachen
+                sup 8
+                table.table.table-bordered
+                  tr
+                    -s.sprachenfolge.each do |sprache|
+                      tr
+                        td ="#{sprache.fach.bezeichnung} (#{sprache.referenzniveau})"
+                        td ="von #{sprache.jahrgangvon}.#{sprache.abschnittvon}"
+                        td ="bis #{sprache.jahrgangbis}.#{sprache.abschnittbis}"
+      .pull-bottom.row
+        .col-xs-6
+          .row
+            .col-xs-11
+              .kleiner-10rem
+                hr
+                sup> 1
+                |Leistungskursfächer werden mit dem Klammerzusatz „eA“ (erhöhtes Anforderungsniveau) gekennzeichnet. Grundkurse bleiben ohne besondere Kennzeichnung.
+                br /
+                sup> 2
+                |Der Unterricht in den modernen Fremdsprachen hat auf der nach dem Fach in Klammern angegebenen Niveaustufe des „Europäischen Referenzrahmens für Sprachen: Lernen, Lehren, Beurteilen“ stattgefunden. Sind zwei Referenzniveaus ausgewiesen, ist das niedrigere in vollem Umfang, das höhere in Anteilen erreicht. Bei mindestens ausreichenden Leistungen (5 Punkte) wird der sprachliche Kompetenzerwerb auf diesem Niveau bescheinigt. Die Niveaustufe bezieht sich auf das letzte Schulhalbjahr, in dem das Fach erteilt wurde.
+                br /
+                sup> 3
+                |Für die Umsetzung von Noten in Punkte gilt:
+                br /
+                table border="1" width="80%" bordercolor="#bebebe"
+                  tr
+                    td width="5%"
+                    td.text-center width="10%" sehr gut
+                    td.text-center width="10%" gut
+                    td.text-center width="10%" befriedigend
+                    td.text-center width="10%" ausreichend
+                    td.text-center width="10%" mangelhaft
+                    td.text-center width="10%" ungenügend
+                  tr
+                    td Noten
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" +
+                          td.text-center width="33%" 1
+                          td.text-center width="33%" -
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" +
+                          td.text-center width="33%" 2
+                          td.text-center width="33%" -
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" +
+                          td.text-center width="33%" 3
+                          td.text-center width="33%" -
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" +
+                          td.text-center width="33%" 4
+                          td.text-center width="33%" -
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" +
+                          td.text-center width="33%" 5
+                          td.text-center width="33%" -
+                    td.text-center 6
+                  tr
+                    td Punkte
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" 15
+                          td.text-center width="33%" 14
+                          td.text-center width="33%" 13
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" 12
+                          td.text-center width="33%" 11
+                          td.text-center width="33%" 10
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" 09
+                          td.text-center width="33%" 08
+                          td.text-center width="33%" 07
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" 06
+                          td.text-center width="33%" 05
+                          td.text-center width="33%" 04
+                    td.text-center
+                      table width="100%"
+                        tr
+                          td.text-center width="33%" 03
+                          td.text-center width="33%" 02
+                          td.text-center width="33%" 01
+                    td.text-center 00
+        .col-xs-6
+          .row
+            .col-xs-offset-1.col-xs-11
+              .kleiner-10rem
+                hr
+                sup> 4
+                |Leistungskursfächer werden mit dem Klammerzusatz „eA“ (erhöhtes Anforderungsniveau) gekennzeichnet.
+                br/
+                sup> 5
+                |Die Ergebnisse der schriftlichen und der mündlichen Prüfung sind hierbei im Verhältnis 2:1 gewichtet. Das Gesamtergebnis ist in 5-facher Wertung angegeben; es wurde auf eine ganzzahlige Punktzahl gerundet; dabei wurde ab der Dezimalen 5 aufgerundet.
+                br/
+                sup 6
+                |Es müssen mindestens 32 Halbjahresergebnisse eingebracht werden. Die Punktsumme (E) wurde auf eine ganzzahlige Punktzahl gerundet; dabei wurde ab der Dezimalen 5 aufgerundet.
+                br/
+                sup 7
+                |Die Ergebnisse in den Leistungskursfächern werden doppelt gewichtet.
+                br/
+                sup 8
+                |außer Arbeitsgemeinschaften

+ 79 - 0
asz_bfs_2014.slim

@@ -0,0 +1,79 @@
+#doc-einstellungen data-json='{"logo_top":"asz_logo_ohne_linie_breiter_text_breit.svg","logo_seite":"traeger_logo.svg","Deckblatt":"deckblatt_komp.svg","Name":"Abschlusszeugnis BFS","Gruppen":["B"],"Format":"A3","Orientierung":"landscape","Ignoriere-Abschnitt":1}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a3.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -next if s.bk_abschluss.nil?
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    img src="/images/deckblatt_komp.svg" data-failover="/images/#{Document.default "Deckblatt"}"
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.font-size-11
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-6
+          .col-xs-11
+            ==partial :p_zeugnis_kopf, :s => s, :hj => hj
+            ==partial :p_asz_zeugnis_noten, :s => s, :hj => hj
+            ==partial :p_zeugnis_bemerkungen, :s => s, :hj => hj
+        .col-xs-6
+          .col-xs-11.col-xs-offset-1
+            .row
+              .col-xs-12
+                .voffset-1
+                table.col-xs-12.table-noten
+                  -hj.noten.select{|f| f.fach.fach_krz.start_with? "AS"}.each do |as|
+                    tr
+                      td width="22%" =as.fach.zeugnisbez
+                      td.td-padding-extra =as.lernentw
+                      td.td-fach-note width="20%"
+                        span =s.bk_abschluss_leistungen.find{|f| f.fach_id == as.fach_id}.note(:note_abschluss)
+            .row
+              .col-xs-12
+                .voffset-2
+                  '#{s.anrede} #{s.vorname} #{s.name} hat die Berufsabschlussprüfung bestanden
+                  |und ist berechtigt, die Berufsbezeichnung
+                  h3.text-center
+                    =hj.berufsbezeichnung_mw
+                  |zu führen.
+                .voffset-1
+                  |Der Abschluss ist im Deutschen und Europäischen Qualifikationsrahmen dem Niveau #{s.fachklasse.dqr_niveau} zugeordnet.
+            .voffset-3.text-center
+              |#{s.anrede} #{s.vorname} #{s.name} hat den
+            .voffset-1.text-center
+              b mittleren Schulabschluss (Fachoberschulreife)
+              -if s.entlassart == "5G"
+                br/
+                b mit Berechtigung zum Besuch der gymnasialen Oberstufe
+            .voffset-1.text-center
+              |erworben
+            .voffset-4
+              ==partial :p_zeugnis_unterschrift_pa, :hj => hj
+
+        / liegt unterhalb von .subpage, da .page padding hat und der footer oberhalb platziert wird.
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            .schulnummer.grau Schulnummer: #{Schule.schulnummer}
+            hr.hr-grau
+            .row.grau
+              .col-xs-6
+                .col-xs-11
+                  .grau
+                    //linebreak?
+                    =partial doc.textbaustein 'Notenstufen'
+                    p
+                    sup.grau 1
+                    =partial doc.textbaustein 'Fremdsprachenniveau'
+              .col-xs-6
+                .col-xs-11.col-xs-offset-1
+                  .grau
+                    'Dem Zeugnis liegen zugrunde:
+                    =partial doc.textbaustein 'APO'
+                    p
+                    'Rechtsbehelfsbelehrung:
+                    =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 59 - 0
asz_fhr_fs_2014.slim

@@ -0,0 +1,59 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Fachhochschulzeugnis FS","Gruppen":["E"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -next if !s.daten_vollstaendig? [s._durchschnittsnote_fhr, s.bk_abschluss], "Es fehlen die notwendingen Daten zum Abschluss. Berechnung in Schild durchgeführt?"
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .subpage.font-size-11
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get('logo_top')}" width="100%" data-failover="/images/#{Document.default 'logo_top'}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          h3 Zeugnis der Fachhochschulreife
+          .voffset-2
+          |Der allgemeine Prüfungsausschuss stellte in seiner Abschlusskonferenz am #{(hj.konferenzdatum).strftime("%d.%m.%Y")} folgende Leistungen fest:
+          sup 1
+          .voffset-2
+            |Mathematisch-naturwissenschaftlicher-technischer Bereich:
+            =<s.bk_abschluss_leistungen.find{|n|n.fach_krz=='MFHR'}.note(:note_abschluss) rescue Warnung.add(s.name, 'MFHR nicht vorhanden.'); "Fehlt"
+          .voffset-2
+          b> ="#{s.anrede} #{s.vorname} #{s.name}"
+          |hat die Fachhochschulreifeprüfung im Bildungsgang #{hj.string('Schulform')}
+           in der #{hj.string('Bereich')} am #{(hj.konferenzdatum).strftime("%d.%m.%Y")} bestanden.
+          .voffset-1
+          |#{s.anrede} #{s.vorname} #{s.name} wird die
+          h4.text-center Fachhochschulreife
+          |zuerkannt. Entsprechend der Vereinbarung über den Erwerb einer Fachhochschulreife
+           in beruflichen Bildungsgängen – Beschluss der Kultusministerkonferenz vom
+           5. Juni 1998 in der jeweils geltenden Fassung – berechtigt dieses Zeugnis in allen
+           Ländern der Bundesrepublik Deutschland zum Studium an Fachhochschulen und
+           entsprechender Studiengänge an Universitäten.
+          .voffset-2
+          table.table-noten
+            tr
+              td Durschnittsnote:
+              td.td-fach-note
+                span =s.durchschnittsnote_fhr
+              td in&nbsp;Worten:
+              td.td-fach-note
+                span =s.durchschnittsnote_fhr_in_worten
+          .voffset-6
+          ==partial :p_zeugnis_unterschrift_pa, :hj => hj
+      .pull-bottom
+        .row
+          .col-xs-12
+            .klein
+              .schulnummer.grau Schulnummer: #{Schule.schulnummer}
+              hr.hr-grau
+              .grau
+                sup.grau 1
+                |Die Noten der Fächer
+                =<>hj.noten.select{|n| n.fach.GewichtungFHR && n.fach.GewichtungFHR > 0}.map{|n| n.fach.zeugnisbez}.join(", ")
+                |gehen in die Berechnung der Durchnittsnote für die Fachhochschulreife ein.
+                .voffset-1
+                |Rechtsbehelfsbelehrung:
+                //linebreaks?
+                =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 82 - 0
asz_fos_2014.slim

@@ -0,0 +1,82 @@
+#doc-einstellungen data-json='{"logo_top":"asz_logo_ohne_linie_breiter_text_breit.svg","logo_seite":"traeger_logo.svg","Deckblatt":"deckblatt_komp.svg","Name":"Abschlusszeugnis FOS","Gruppen":["C"],"Format":"A3","Orientierung":"landscape","Ignoriere-Abschnitt":1}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a3.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -next if !s.daten_vollstaendig? [s._durchschnittsnote_fhr, s.bk_abschluss], "Es fehlen die notwendingen Daten zum Abschluss. Berechnung in Schild durchgeführt?"
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    img src="/images/deckblatt_komp.svg" data-failover="/images/#{Document.default "Deckblatt"}"
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.font-size-11
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-6
+          .col-xs-11
+            ==partial :p_zeugnis_kopf, :s => s, :hj => hj
+            ==partial :p_asz_zeugnis_noten, :s => s, :hj => hj
+            ==partial :p_zeugnis_bemerkungen, :s => s, :hj => hj
+        .col-xs-6
+          .col-xs-11.col-xs-offset-1
+          .row
+              .col-xs-12
+                .voffset-1
+                  |#{s.anrede} #{s.vorname} #{s.name} hat die Fachhochschulreifeprüfung
+                   im Bildungsgang der Fachoberschule in der Fachrichtung Gesundheit
+                   und Soziales bestanden.
+                  br/
+                  |
+                   Der Nachweis der fachpraktischen Ausbildung
+                   wurde durch die erfolgreiche Ableistung des Praktikantenjahres im
+                   Rahmen der Klasse 11 der Fachoberschule erbracht.
+                  .voffset-3
+                    |#{s.anrede}#{s.geschlecht==3 ? "n":""} #{s.vorname} #{s.name} wird die
+                  .voffset-2
+                  h3.text-center Fachhochschulreife
+                  .voffset-2
+                  |zuerkannt. Sie berechtigt zum Studium an einer Fachhochschule und
+                   entsprechenden sowie integrierten Bildungsgängen der Gesamthochschulen
+                   im Geltungsbereich des Grundgesetzes.
+                  .voffset-2
+                  table.table-noten
+                    tr
+                      td Durschnittsnote:
+                      td.td-fach-note
+                        span =s.durchschnittsnote_fhr
+                      td in&nbsp;Worten:
+                      td.td-fach-note
+                        span =s.durchschnittsnote_fhr_in_worten
+                  .voffset-7
+                  ==partial :p_zeugnis_unterschrift_pa, :hj => hj
+
+        / liegt unterhalb von .subpage, da .page padding hat und der footer oberhalb platziert wird.
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            .schulnummer.grau Schulnummer: #{Schule.schulnummer}
+            hr.hr-grau
+            .row.grau
+              .col-xs-6
+                .col-xs-11
+                  .grau
+                    =partial doc.textbaustein 'Notenstufen'
+                    p
+                    sup.grau 1
+                    =partial doc.textbaustein 'Fremdsprachenniveau'
+                    br/
+                    sup.grau *
+                    |Die Noten der gekennzeichneten Fächer gehen
+                    u.grau<> nicht
+                    |in die Berechnung der Durchnittsnote für die Fachochschulreife ein.
+              .col-xs-6
+                .col-xs-11.col-xs-offset-1
+                  .grau
+                    'Dem Zeugnis liegen zugrunde:
+                    =partial doc.textbaustein 'APO'
+                    p
+                    'Rechtsbehelfsbelehrung:
+                    =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 92 - 0
asz_fs_2014.slim

@@ -0,0 +1,92 @@
+#doc-einstellungen data-json='{"logo_top":"zeugnis_logo.svg","logo_seite":"traeger_logo.svg","Deckblatt":"deckblatt_komp.svg","Name":"Jahreszeugnis Übergang BP","Gruppen":["E"],"Format":"A3","Orientierung":"landscape"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -next if s.bk_abschluss.nil?
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          -if s.asd_schulform.start_with? "E"
+            |besuchte im Schuljahr #{hj.schuljahr} die Klasse #{hj.klasse}
+          -else
+            |besuchte im #{hj.abschnitt}. Halbjahr des Schuljahres #{hj.schuljahr} die Klasse #{hj.klasse}
+          .voffset-1
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      ==partial :p_zeugnis_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          b Bemerkungen
+          br/
+          -if hj.ZeugnisBem || hj.noten.any?{ |n| n.noten_krz == "5" || n.noten_krz == "6" }
+            -if hj.ZeugnisBem
+              .klein ==(hj.zeugnis_bem).gsub("\r\n","<br/>")
+            -if hj.noten.any? { |n| n.noten_krz == "5" || n.noten_krz == "6" } && !s.asd_schulform.start_with?("E") && !s.abschluss_datum.include?(Time.now.year.to_s)
+              .klein
+                |Nicht ausreichende Leistungen gefährden den Abschluss.
+          .voffset-1
+          b
+            .text-center
+              |#{s.geschlecht == 3 ? "Der ":"Die "} Studierende hat laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}
+              br/
+              |die Berechtigung zum Übergang in das Berufspraktikum erworben.
+          .voffset-3
+      .pull-bottom
+        .row
+          .col-xs-12
+            |#{Schule.ort}, den #{hj.zeugnis_datum.strftime("%d.%m.%Y")}
+            .voffset-3
+          .col-xs-12
+            .klein
+              .col-xs-4
+                hr
+                .text-center
+                  =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+                  ="– #{Schule.schulleiter_in}"
+              .col-xs-4
+                .text-center Siegel
+              .col-xs-4
+                hr
+                .text-center
+                  |#{hj.v_name_klassenlehrer} – #{hj.klassenlehrer_in}
+        .row.klein
+          .col-xs-12
+            .text-center.grau Schulnummer: #{Schule.schulnummer}
+            hr.hr-grau
+            .grau
+               =partial doc.textbaustein 'Notenstufen'
+  .page
+    .subpage
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            hr.hr-grau
+            .grau
+              b.grau Dem Zeugnis liegen zugrunde:
+              br/
+              =partial doc.textbaustein 'APO'
+              .voffset-1
+              b.grau  Rechtsbehelfsbelehrung:
+              br/
+              'Rechtsbehelfsbelehrung:
+              =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 51 - 0
asz_fs_jz_anlage_2014.slim

@@ -0,0 +1,51 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Anlage zum Jahreszeugnis Übergang BP","Gruppen":["E"],"Ignoriere-Abschnitt":1}'
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+          h3 Anlage zum Jahreszeugnis
+          |Bescheinigung für Bewerbungszwecke
+          .voffset-3
+      .row
+        .col-xs-12
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          .voffset-2
+          |besucht seit dem #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} die Fachschule für Sozialwesen in der #{hj.string "Bereich"}
+           und hat laut Beschluss des allgemeinen Prüfungsausschusses den theoretischen Prüfungsteil des
+           Fachschulexamens bestanden. #{s.anrede} #{s.vorname} #{s.name}
+           hat damit die Berechtigung zum Übergang in das Berufspraktikum erworben.
+          .voffset-2
+          |Der allgemeine Prüfungsausschuss stellte in seiner Abschlusskonferenz am #{(hj.konferenzdatum).strftime("%d.%m.%Y")}
+           folgende Leistungen fest:
+          .voffset-2
+          b Theoretischer Prüfungsteil des Fachschulexamens
+          .voffset-1
+      .row
+        .col-xs-12
+          table.table-noten
+            -hj.noten.select{|f| f.fach.fach_krz.start_with? "AS"}.each do |as|
+              tr
+                td width="22%" =as.fach.zeugnisbez
+                td.td-padding-extra =as.lernentw
+                td.td-fach-note
+                  span =s.bk_abschluss_leistungen.find{|f| f.fach_id == as.fach_id}.note(:note_abschluss)
+      .row
+        .voffset-8
+        .col-xs-4
+          |#{Schule.ort}, den #{hj.zeugnis_datum.strftime("%d.%m.%Y")}
+          .voffset-5
+        .col-xs-5
+          .voffset-2
+          hr
+          .text-center
+            =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+            |– Vorsitzender des allgemeinen Prüfungsausschusses

+ 98 - 0
asz_fs_pkb_2014.slim

@@ -0,0 +1,98 @@
+#doc-einstellungen data-json='{"logo_top":"asz_logo_ohne_linie_breiter_text_breit.svg","logo_seite":"traeger_logo.svg","Deckblatt":"deckblatt_komp.svg","Name":"Abschlusszeugnis FS (BP/Koll)","Gruppen":["E"],"Format":"A3","Orientierung":"landscape"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a3.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -next if s.bk_abschluss.nil?
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    img src="/images/deckblatt_komp.svg" data-failover="/images/#{Document.default "Deckblatt"}"
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-6
+          .col-xs-11
+            //TODO: Kopf wie Jahreszeugnis mit großem BG und FR
+            ==partial :p_zeugnis_kopf, :s => s, :hj => hj
+            ==partial :p_asz_zeugnis_noten, :s => s, :hj => hj
+            .eng
+              ==partial :p_zeugnis_bemerkungen, :s => s, :hj => hj
+        .col-xs-6
+          .col-xs-11.col-xs-offset-1
+            .row
+              .col-xs-12
+                .voffset-1
+                |#{s.anrede} #{s.vorname} #{s.name} hat das staatliche
+                h3.text-center
+                  =hj.string "Examen"
+                |am #{hj.noten.find{|l| l.fach.fach_krz == "KO"}.Lernentw || "FEHLT!" rescue (Warnung.add(s.name, "Kolloquium nicht angegeben");"Fehlt")} bestanden.
+                .voffset-1
+              .col-xs-12
+                table.table-noten
+                  -hj.noten.select{|f| f.fach.fach_krz.start_with? "AS"}.each do |as|
+                    tr
+                      td width="22%" =as.fach.zeugnisbez
+                      td.td-padding-extra =as.lernentw
+                      td.td-fach-note
+                        span =s.bk_abschluss_leistungen.find{|f| f.fach_id == as.fach_id}.note(:note_abschluss)
+                .voffset-2
+                table.col-xs-12.table-noten
+                  tr
+                    td Berufspraktische Leistungen
+                    td.td-fach-note
+                      span =s.bk_abschluss_leistungen.find{|l| l.fach_krz == "BL"}.note(:note_abschluss) rescue (Warnung.add(s.name, "BL nicht angegeben"); "Fehlt")
+                  tr
+                    td Kolloquium
+                    td.td-fach-note
+                      span =s.bk_abschluss_leistungen.find{|l| l.fach_krz == "KO"}.note(:note_abschluss) rescue (Warnung.add(s.name, "Kolloquium nicht angegeben"); "Fehlt")
+                  tr
+                    td
+                      /gilt nur für die Pia-Klassen - ändern!
+                      b Gesamtnote Berufspraxis
+                    td.td-fach-note
+                      span
+                        b=s.bk_abschluss_leistungen.find{|l| l.fach_krz == "BP"}.note(:note_abschluss) rescue (Warnung.add(s.name, "Berufspraktikum nicht angegeben"); "Fehlt")
+            .row
+              .col-xs-12
+                .voffset-1
+                |#{s.anrede} #{s.vorname} #{s.name} ist berechtigt, die Berufsbezeichnung
+                h3.text-center
+                  =hj.berufsbezeichnung_mw.gsub("- praxisintegrierte Form","")
+                |zu führen.
+                .voffset-1
+                  |Der Abschluss ist im Deutschen und Europäischen Qualifikationsrahmen dem Niveau #{s.fachklasse.dqr_niveau} zugeordnet.
+            .voffset-2
+              ==partial :p_zeugnis_unterschrift_pa, :hj => hj
+
+      .pull-bottom.klein.eng
+        .row
+          .col-xs-12
+            .schulnummer.grau Schulnummer: #{Schule.schulnummer}
+            hr.hr-grau
+            .row.grau
+              .col-xs-6
+                .col-xs-11
+                  .grau
+                    =partial doc.textbaustein 'Notenstufen'
+                    p
+                    sup.grau 1
+                    =partial doc.textbaustein 'Fremdsprachenniveau'
+                    br/
+                    -if s.DurchschnittsnoteFHR
+                      sup.grau *
+                      |Die Noten der gekennzeichneten Fächer gehen in die Berechnung der Durchnittsnote für die Fachochschulreife ein.
+              .col-xs-6
+                .col-xs-11.col-xs-offset-1
+                  .grau
+                    |Dem Zeugnis liegen zugrunde:
+                    =<partial doc.textbaustein 'APO'
+                    br/
+                    =partial doc.textbaustein 'FS-Vereinbarung'
+                    br/
+                    'Rechtsbehelfsbelehrung:
+                    =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 108 - 0
brief_2014.slim

@@ -0,0 +1,108 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo.svg","logo_seite":"traeger_logo.svg","Name":"Briefpapier"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_brief.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page.briefpapier
+    .logo.logo-top
+      img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+    .logo.logo-bottom
+      img src="/images/bethel_logo.svg" width="50px"
+    .info.info-top
+        |Am Zionswald 12
+        br/
+        |33617 Bielefeld
+        .voffset-1
+        |Telefon 0521 144-2467
+        br/
+        |Telefax 0521 144-2470
+        br/
+        |berufskolleg@fvbschulen.de
+        br/
+        |www.berufskolleg-bethel.de
+        .voffset-1
+        |Bürozeiten:
+        br/
+        |Mo. und Do.
+        br/
+        |07:15 – 12:30 Uhr
+        br/
+        |13:30 – 15:30 Uhr
+        br/
+        |Di., Mi. und Fr.
+        br/
+        |07:15 – 13:30 Uhr
+        .voffset-1
+        =Date.today.strftime("%d.%m.%Y")
+        br/
+        =hj.klassen_lehrer+'/'+request.env['REMOTE_USER'].upcase
+    .info.info-bottom
+      |Unsere Bildungsgänge:
+      .voffset-1
+      b Berufliches Gymnasium
+      br/
+      |Erziehung und Soziales
+      br/
+      |(Erzieher_in / AHR)
+      .voffset-1
+      b Fachschulen
+      br/
+      |Sozialpädagogik
+      br/
+      |Heilerziehungspflege
+      br/
+      |Heilpädagogik
+      br/
+      |Heilpädagogische Förderung
+      br/
+      |mit dem Pferd
+      .voffset-1
+      b Fachoberschule
+      br/
+      |Gesundheit und Soziales
+      .voffset-1
+      b Berufsfachschulen
+      br/
+      |Sozialassistenz/
+      br/
+      |Heilerziehung
+      .voffset-1
+      b Weitere Informationen:
+      br/
+      |www.berufskolleg-bethel.de
+    .absender
+      |v.Bodelschwinghsche Stiftungen Bethel
+      br /
+      b
+        ' Berufskolleg Bethel
+      |· Postfach 130 160 · 33544 Bielefeld
+    .anschrift
+      |#{s.vorname} #{s.name}
+      br /
+      |#{s.strasse}
+      br /
+      |#{s.plz} #{s.ort_abk}
+    .text
+      |Sehr geehrte#{s.geschlecht == 3 ? "r" : ""} #{s.anrede} #{s.name},
+      p
+        |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+         tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+         veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex
+         ea commodo consequat.
+      p
+        |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+         tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+         veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+         commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
+         velit esse cillum dolore eu fugiat nulla pariatur.
+      p
+        |Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
+         officia deserunt mollit anim id est laborum.
+
+      p
+        |Mit freundlichen Grüßen,
+      p
+        -if hj.klassenlehrer
+          ="#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}"
+        -else
+          span.label.label-danger Klassenlehrer fehlt

+ 85 - 0
hjz_2014.slim

@@ -0,0 +1,85 @@
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+      .row
+        .col-xs-12
+          h4
+            | #{yaml[s.ASDSchulform]['Schulform'] rescue "Bildungsgang '#{s.ASDSchulform}' in config/strings.yml anlegen"}
+            br
+            | #{yaml[s.ASDSchulform]['Bereich'] rescue "Bildungsgang '#{s.ASDSchulform}' in config/strings.yml anlegen"}
+          .voffset-20
+            b #{s.anrede} #{s.vorname} #{s.name}
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br
+            |besuchte das #{hj.abschnitt}. Halbjahr des Schuljahres #{hj.schuljahr} in der Klasse #{hj.klasse}
+          .voffset-20
+            |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      .row
+        .col-xs-11
+          table.col-xs-11.table-noten
+            -hj.faechergruppen.each do |gruppe|
+              -unless gruppe.empty?
+                tr
+                  td
+                    b #{yaml["Fachgruppe"][s.ASDSchulform][gruppe.first.fachgruppe_ID] rescue "Fachgruppen für Bildungsgang anlegen"}
+                  td
+                -lernbereich_ab = gruppe.index{ |f| f.fach.SortierungS2.to_s[-1] == "1"}
+                -gruppe.each_with_index do |fach,i|
+                  -if i == lernbereich_ab
+                    tr
+                      td.fach-bezeichnung colspan="2"
+                        =yaml["Fachgruppe"][s.ASDSchulform][s.fachklasse.Kennung] rescue "Lernbereich in strings.yml angeben"
+                  tr
+                    td.fach-bezeichnung class=("lernbereich" if fach.fach.SortierungS2.to_s[-1] == "1")
+                      =fach.bezeichnung
+                    /td=fach.fach.SortierungS2
+                    td.fach-note
+                      =fach.note
+                    -if fach.Lernentw
+                      tr
+                        td.fach-bezeichnung Thema: #{fach.Lernentw}
+      .row
+        .col-xs-12
+          hr
+          |Fehlstunden: #{hj.sum_fehl_std}, davon unentschuldigt: #{hj.sum_fehl_std_u}
+          .voffset-20
+            b Bemerkungen
+          -if !hj.zeugnis_bem.empty? || hj.noten.any?{ |n| n.noten_krz == "5" || n.noten_krz == "6" }
+            -if hj.zeugnis_bem
+              =(hj.zeugnis_bem)
+            -if hj.noten.any? { |n| n.noten_krz == "5" || n.noten_krz == "6" }
+              -if s.abschluss_datum.include? (hj.jahr.to_s)
+                |Nicht ausreichende Leistungen gefährden den Abschluss.
+              -else
+                |Nicht ausreichende Leistungen gefährden die Versetzung.
+          -else
+            |keine
+      .row
+        .box-datum
+          .col-xs-12
+              |#{Schule.ort}, #{hj.zeugnis_datum.strftime("%d.%m.%Y")}
+      .row
+        .box-unterschrift
+          .col-xs-4.text-center
+            hr
+            |#{hj.v_name_klassenlehrer} – #{hj.klassenlehrer_in}
+          .col-xs-4
+            |Siegel
+          -if !s.volljaehrig?
+            .col-xs-4.text-center
+              hr
+              |Erziehungsberechtige
+      .row
+        .box-kleingedrucktes
+          .col-xs-12
+              |Schulnummer: #{Schule.schulnummer}
+              br
+              =partial doc.textbaustein 'Notenstufen'
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"

+ 81 - 0
hjz_2015.slim

@@ -0,0 +1,81 @@
+#doc-einstellungen data-json='{"logo_top":"zeugnis_logo.svg","logo_seite":"traeger_logo.svg","Name":"Halbjahreszeugnis 2015","Ignoriere-Abschnitt":2}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  -next if hj.nil?
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{s.geburtsdatum.strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          |besuchte im #{hj.abschnitt}. Halbjahr des Schuljahres #{hj.schuljahr} die Klasse #{hj.klasse}
+          .voffset-2
+          |Leistungen laut Konferenzbeschluss vom #{hj.konferenzdatum.strftime("%d.%m.%Y")}:
+      ==partial :p_zeugnis_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          -unless s.asd_schulform.start_with? "E"
+            |Fehlstunden: #{hj.sum_fehl_std}
+            =", davon unentschuldigt: #{hj.sum_fehl_std_u}" unless hj.sum_fehl_std == 0
+            .voffset-1
+          b Bemerkungen
+          br/
+          ==hj.bemerkungen
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+              br/
+              |#{hj.klassenlehrer_in}
+          .col-xs-2
+            .klein-7.text-center Siegel
+          -unless s.asd_schulform.start_with?("E")
+            .col-xs-5.col-xs-offset-4
+              .voffset-2
+              |Die Kenntnisnahme wird bestätigt:
+            .col-xs-3
+              .voffset-4
+              hr
+              .klein-7.text-center
+                -if s.volljaehrig_bei?(hj._zeugnis_datum)
+                  =s.schueler_in
+                -else
+                  |Erziehungsberechtigte
+        .klein-7.eng
+          .row
+            .col-xs-12
+              .grau Schulnummer: #{Schule.schulnummer}
+              hr.hr-grau
+              .grau
+                =partial doc.textbaustein 'Notenstufen'
+                .voffset-halb
+                'Dem Zeugnis liegen zugrunde:
+                =partial doc.textbaustein 'APO'
+                .voffset-halb
+                'Rechtsbehelfsbelehrung:
+                =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 88 - 0
hjz_lf_2015.slim

@@ -0,0 +1,88 @@
+#doc-einstellungen data-json='{"logo_top":"zeugnis_logo.svg","logo_seite":"traeger_logo.svg","Name":"Halbjahreszeugnis für Lernfeldgruppen","Gruppen":["E"],"Ignoriere-Abschnitt":2}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  -next if hj.nil? #manche schüler haben kein halbjahr, z.b. wenn sie neu in die klasse kommen.
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          -if s.asd_schulform.start_with? "E"
+            |besuchte im Schuljahr #{hj.schuljahr} die Klasse #{hj.klasse}
+          -else
+            |besuchte das #{hj.abschnitt}. Halbjahr des Schuljahres #{hj.schuljahr} in der Klasse #{hj.klasse}
+          .voffset-2
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      ==partial :p_zeugnis_lf_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          -unless s.asd_schulform.start_with? "E"
+            |Fehlstunden: #{hj.sum_fehl_std}
+            =", davon unentschuldigt: #{hj.sum_fehl_std_u}" unless hj.sum_fehl_std == 0
+            .voffset-1
+          b =hj.versetzungsvermerk
+          ==s.asd_schulform.start_with?("C") && hj.versetzung_krz=="V"? "<br/>Der Unterricht in der Klasse 12 kann nur aufgenommen werden, wenn zu Beginn des 12. Schuljahres der Nachweis über die erfolgreiche Ableistung des Praktikantenjahres gemäß Praktikum-Ausbildungsordnung, RdErl. v. 11.12.2006 (BASS 13 – 31 Nr. 1) vorgelegt wird.":""
+          .voffset-1
+          b Bemerkungen
+          br/
+          ==hj.bemerkungen
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+              br/
+              |#{hj.klassenlehrer_in}
+          .col-xs-2
+            .klein-7.text-center Siegel
+          -unless s.asd_schulform.start_with?("E")
+            .col-xs-5.col-xs-offset-4
+              .voffset-2
+              |Die Kenntnisnahme wird bestätigt:
+            .col-xs-3
+              .voffset-3
+              hr
+              .klein-7.text-center
+                -if s.volljaehrig_bei?(hj.zeugnis_datum)
+                  =s.schueler_in
+                -else
+                  |Erziehungsberechtigte
+        .voffset-2
+        .klein-7.eng
+          .row
+            .col-xs-12
+              .grau Schulnummer: #{Schule.schulnummer}
+              hr.hr-grau
+              .grau
+                =partial doc.textbaustein 'Notenstufen'
+                .voffset-halb
+                'Dem Zeugnis liegen zugrunde:
+                =partial doc.textbaustein 'APO'
+                .voffset-halb
+                'Rechtsbehelfsbelehrung:
+                =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 93 - 0
jz_2014.slim

@@ -0,0 +1,93 @@
+#doc-einstellungen data-json='{"logo_top":"zeugnis_logo.svg","logo_seite":"traeger_logo.svg","Name":"Jahreszeugnis"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          -if s.asd_schulform.start_with? "E"
+            |besuchte das Schuljahr #{hj.schuljahr} in der Klasse #{hj.klasse}
+          -else
+            |besuchte im #{hj.abschnitt}. Halbjahr des Schuljahres #{hj.schuljahr} die Klasse #{hj.klasse}
+          .voffset-2
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      ==partial :p_zeugnis_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          -unless s.asd_schulform.start_with? "E"
+            |Fehlstunden: #{hj.sum_fehl_std}
+            =", davon unentschuldigt: #{hj.sum_fehl_std_u}" unless hj.sum_fehl_std == 0
+            .voffset-1
+          b =hj.versetzungsvermerk
+          ==s.asd_schulform.start_with?("C") && hj.versetzung_krz=="V"? "<br/>Der Unterricht in der Klasse 12 kann nur aufgenommen werden, wenn zu Beginn des 12. Schuljahres der Nachweis über die erfolgreiche Ableistung des Praktikantenjahres gemäß Praktikum-Ausbildungsordnung, RdErl. v. 11.12.2006 (BASS 13 – 31 Nr. 1) vorgelegt wird.":""
+          .voffset-1
+          b Bemerkungen
+          br/
+          ==hj.bemerkungen
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              br/
+              =Schule.schulleiter_in
+          .col-xs-2
+            .klein-7.text-center Siegel
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+              br/
+              |#{hj.klassenlehrer_in}
+          -unless s.asd_schulform.start_with?("E")
+            .col-xs-5.col-xs-offset-4
+              .voffset-2
+              |Die Kenntnisnahme wird bestätigt:
+            .col-xs-3
+              .voffset-3
+              hr
+              .klein-7.text-center
+                -if s.volljaehrig_bei?(hj.zeugnis_datum)
+                  =s.schueler_in
+                -else
+                  |Erziehungsberechtigte
+        .klein-7.eng
+          .row
+            .col-xs-12
+              .grau Schulnummer: #{Schule.schulnummer}
+              hr.hr-grau
+              .grau
+                =partial doc.textbaustein 'Notenstufen'
+                .voffset-halb
+                'Dem Zeugnis liegen zugrunde:
+                =partial doc.textbaustein 'APO'
+                .voffset-halb
+                'Rechtsbehelfsbelehrung:
+                =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 95 - 0
jz_lf_2014.slim

@@ -0,0 +1,95 @@
+#doc-einstellungen data-json='{"logo_top":"zeugnis_logo.svg","logo_seite":"traeger_logo.svg","Name":"Jahreszeugnis für Lernfeldgruppen","Gruppen":["E"],"Ignoriere-Abschnitt":1}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  -next if hj.nil? #manche schüler haben kein halbjahr, z.b. wenn sie neu in die klasse kommen.
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 15pt; line-height: 1.5em"
+            =hj.string('Schulform')
+          div style="font-size: 12pt; line-height: 1.2em"
+            =hj.string('Bereich')
+            -if s.asd_schulform.start_with?("B")
+              br/
+              |Abschluss #{hj.berufsbezeichnung_mw}
+          .voffset-1
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br /
+          -if s.asd_schulform.start_with? "E"
+            |besuchte im Schuljahr #{hj.schuljahr} die Klasse #{hj.klasse}
+          -else
+            |besuchte das #{hj.abschnitt}. Halbjahr des Schuljahres #{hj.schuljahr} in der Klasse #{hj.klasse}
+          .voffset-2
+          |Leistungen laut Konferenzbeschluss vom #{(hj.konferenzdatum).strftime("%d.%m.%Y")}:
+      ==partial :p_zeugnis_lf_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          hr
+          -unless s.asd_schulform.start_with? "E"
+            |Fehlstunden: #{hj.sum_fehl_std}
+            =", davon unentschuldigt: #{hj.sum_fehl_std_u}" unless hj.sum_fehl_std == 0
+            .voffset-1
+          b =hj.versetzungsvermerk
+          ==s.asd_schulform.start_with?("C") && hj.versetzung_krz=="V"? "<br/>Der Unterricht in der Klasse 12 kann nur aufgenommen werden, wenn zu Beginn des 12. Schuljahres der Nachweis über die erfolgreiche Ableistung des Praktikantenjahres gemäß Praktikum-Ausbildungsordnung, RdErl. v. 11.12.2006 (BASS 13 – 31 Nr. 1) vorgelegt wird.":""
+          .voffset-1
+          b Bemerkungen
+          br/
+          ==hj.bemerkungen
+      .pull-bottom
+        .row
+          .col-xs-4
+            '#{Schule.ort},
+            |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+              br/
+              =Schule.schulleiter_in
+          .col-xs-2
+            .klein-7.text-center Siegel
+          .col-xs-3
+            .voffset-2
+            hr
+            .klein-7.text-center
+              |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+              br/
+              |#{hj.klassenlehrer_in}
+          -unless s.asd_schulform.start_with?("E")
+            .col-xs-5.col-xs-offset-4
+              .voffset-2
+              |Die Kenntnisnahme wird bestätigt:
+            .col-xs-3
+              .voffset-3
+              hr
+              .klein-7.text-center
+                -if s.volljaehrig_bei?(hj.zeugnis_datum)
+                  =s.schueler_in
+                -else
+                  |Erziehungsberechtigte
+        .voffset-2
+        .klein-7.eng
+          .row
+            .col-xs-12
+              .grau Schulnummer: #{Schule.schulnummer}
+              hr.hr-grau
+              .grau
+                =partial doc.textbaustein 'Notenstufen'
+                .voffset-halb
+                'Dem Zeugnis liegen zugrunde:
+                =partial doc.textbaustein 'APO'
+                .voffset-halb
+                'Rechtsbehelfsbelehrung:
+                =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 22 - 0
klassenbilder.slim

@@ -0,0 +1,22 @@
+#doc-einstellungen data-json='{"logo_seite":"traeger_logo.svg","Name":"Schülerfotos als Übersicht"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          -s=schueler.first
+          b="Klasse #{s.klasse}, #{s.akt_halbjahr.klassenlehrer.nachname rescue "Klassenlehrer nicht angegeben"} –  erstellt am #{Time.new.strftime("%d.%m.%Y")}."
+          hr.hr-rot
+          table
+            -schueler.each_slice 5 do |ss|
+              tr
+                -ss.each do |s|
+                  td width="20%"
+                    img src="/images/schueler/#{s.id}.jpg" height="140px" alt="kein Bild vorhanden"
+              tr
+                -ss.each do |s|
+                  td width="20%"
+                    b ="#{s.vorname} #{s.name}"

+ 38 - 0
klassenliste.slim

@@ -0,0 +1,38 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Klassenliste"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get('logo_top')}" width="100%" data-failover="/images/#{Document.default 'logo_top'}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+            b
+              -s=schueler.first
+              ="#{s.klasse} – #{s.akt_halbjahr.v_name_klassenlehrer}, Stand: #{Time.now.strftime("%d.%m.%Y")}"
+            table.table.table-eng
+              -schueler.each_with_index do |s,i|
+                tr
+                  td
+                    =i+1
+                  td
+                    b =s.name
+                  td
+                    b =s.vorname
+                  td
+                    =s.adresse
+                  td
+                    =s.telefon
+                tr
+                  td
+                  td
+                    =s.geburtsdatum.strftime "%d.%m.%Y"
+                  td
+                  td
+                    =s.e_mail
+                  td
+                    =s.fax

+ 34 - 0
partials/p_ahr_noten.slim

@@ -0,0 +1,34 @@
+.row
+  .col-xs-11
+    table.table.table-bordered.table-eng
+      tr
+        td rowspan="2"
+          |Fach
+          sup 1
+        td rowspan="2" width="20px"
+          |Aufg.- feld
+          sup 2
+        td rowspan="2" width="20px"
+          |Abitur- fach
+          sup 3
+        td rowspan="2" width="20px"
+          |Fach der Berufs- abschlussprüfung
+          sup 4
+        td colspan="4"
+          |Leistungen im Halbjahr
+          sup 5, 6
+      tr
+        td.text-center 12.1
+        td.text-center 12.2
+        td.text-center 13.1
+        td.text-center 13.2
+      -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |f|
+        tr
+          td =f.fach.bezeichnung
+          td.text-center ="I"*(f.fach.aufgabenfeld).to_i
+          td.text-center =f.abi_fach
+          td.text-center ="+" if f.abi_fach.to_i.between?(1,3) || f.fach_krz == "DM"
+          td.text-center =f.P12_1 || "–"
+          td.text-center =f.P12_2 || "–"
+          td.text-center =f.P13_1 || "–"
+          td.text-center =f.P13_2 || "–"

+ 33 - 0
partials/p_asz_zeugnis_noten.slim

@@ -0,0 +1,33 @@
+.row
+  .col-xs-12
+    table.col-xs-12.table-noten
+      -hj.faechergruppen.each do |gruppe|
+        -unless gruppe.empty?
+          tr
+            td.fachgruppe-margin
+              b =hj.string('Fachgruppe', gruppe.first.fachgruppe_ID)
+            td
+          -lernbereich_ab = gruppe.index{ |f| f.fach.SortierungS2.to_s[-1] == "1"}
+          -gruppe.each_with_index do |fach,i|
+            -if i == lernbereich_ab
+              tr
+                td.fach-bezeichnung colspan="2"
+                  =hj.string("Lernbereich")
+            tr
+              td.fach-bezeichnung class=("lernbereich" if fach.fach.SortierungS2.to_s[-1] == "1") class=("fett" if fach.Lernentw)
+                =fach.bezeichnung
+                -sprache=hj.string("Fremdsprache", fach.fach_id)
+                -unless sprache.nil?
+                  =<sprache
+                  sup 1
+                -if s.asd_schulform.start_with?("C") and fach.fach.GewichtungFHR == 0 || !fach.fach.GewichtungFHR
+                  -if s.bk_abschluss.bestanden == "+" || s.bk_abschluss.bestanden_ba == "+"
+                    sup ="*"
+                -if s.asd_schulform.start_with?("E") && fach.fach.gewichtung_fhr >= 1 && s.DurchschnittsnoteFHR
+                  sup ="*"
+              /td=s.asd_schulform
+              td.td-fach-note
+                span =s.bk_abschluss_leistungen_dataset.where(:Fach_ID => fach.fach_id).first.note(:note_abschluss) || "––––––" rescue (Warnung.add(s.name, "Einige Fächer sind ohne eingetragene Note in der BK-Abschlussberechnung.");"FEHLER")
+              -if fach.Lernentw
+                tr
+                  td.fach-bezeichnung.padding-5.eng #{fach.Lernentw}

+ 11 - 0
partials/p_zeugnis_bemerkungen.slim

@@ -0,0 +1,11 @@
+.row
+  .col-xs-12
+    hr
+    /.voffset-2
+    b Bemerkungen
+    br/
+    -if !hj.zeugnis_bem.empty?
+      ==(hj.zeugnis_bem).gsub("\r\n","<br/>")
+    -else
+      |keine
+

+ 13 - 0
partials/p_zeugnis_kopf.slim

@@ -0,0 +1,13 @@
+.row
+  .col-xs-12
+    /.voffset-3
+    b #{s.anrede} #{s.vorname} #{s.name}
+    br /
+    |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+    br /
+    'war vom #{s.beginn_bildungsgang.strftime("%d.%m.%Y")} bis zur Aushändigung des Zeugnisses
+    |#{s.schueler_studierende} #{hj.string('Zeugniskopf')}
+    .voffset-2
+    |Der allgemeine Prüfungsausschuss stellte in seiner Abschlusskonferenz am #{(hj.konferenzdatum).strftime("%-d.%-m.%Y")} fest:
+    .voffset-1
+    b Leistungen

+ 36 - 0
partials/p_zeugnis_lf_noten.slim

@@ -0,0 +1,36 @@
+.row style='font: 9pt "Tex Gyre Heros"'
+  .col-xs-12
+    table.col-xs-12.table-noten
+      -hj.faechergruppen.each do |gruppe|
+        -unless gruppe.empty?
+          tr
+            td.fachgruppe-margin
+              div style="font-size: 10pt"
+                b =hj.string('Fachgruppe', gruppe.first.fachgruppe_ID)
+            td
+          -lernbereich_1_ab = gruppe.index{ |f| f.fach.SortierungS2%10 == 1}
+          -lernbereich_2_ab = gruppe.index{ |f| f.fach.SortierungS2%10 == 2}
+          -lernbereich_3_ab = gruppe.index{ |f| f.fach.SortierungS2%10 == 3}
+          -gruppe.each_with_index do |fach,i|
+            -if i == lernbereich_1_ab
+              tr
+                td colspan="2"
+                  u =hj.string("Lernfeld_Lernbereich")
+            -if i == lernbereich_2_ab
+              tr
+                td colspan="2"
+                  u =hj.string("Lernfeld_Lernbereich_LF")
+            -if i == lernbereich_3_ab
+              tr
+                td colspan="2" &nbsp;
+            tr
+              td class=("lernfeld-lernbereich" if fach.fach.SortierungS2%10 >= 1 && fach.fach.SortierungS2%10 != 3) class=("fett" if fach.Lernentw)
+                =fach.fach.Zeugnisbez || fach.bezeichnung
+              /td=fach.fach.SortierungS2
+              td.td-fach-note
+                span class=("e-note" if fach.noten_krz.start_with? "E")
+                  =fach.note || "––––––"
+                  =>fach.lernentw if fach.fach.ist_sprache == "+"
+              -if fach.Lernentw && fach.fach.ist_sprache == "-"
+                tr
+                  td.fach-bezeichnung.padding-5 Thema: #{fach.Lernentw}

+ 26 - 0
partials/p_zeugnis_noten.slim

@@ -0,0 +1,26 @@
+.row
+  .col-xs-12
+    table.col-xs-12.table-noten
+      -hj.faechergruppen.each do |gruppe|
+        -unless gruppe.empty?
+          tr
+            td.fachgruppe-margin
+              b =hj.string('Fachgruppe', gruppe.first.fachgruppe_ID)
+            td
+          -lernbereich_ab = gruppe.index{ |f| f.fach.SortierungS2.to_s[-1] == "1"}
+          -gruppe.each_with_index do |fach,i|
+            -if i == lernbereich_ab
+              tr
+                td.fach-bezeichnung colspan="2"
+                  =hj.string("Lernbereich")
+            tr
+              td.fach-bezeichnung class=("lernbereich" if fach.fach.SortierungS2.to_s[-1] == "1") class=("fett" if fach.Lernentw && fach.fach.ist_sprache == "-")
+                =fach.bezeichnung
+                ==< "#{fach.lernentw}<sup>1</sup>" if fach.fach.ist_sprache == "+" && fach.Lernentw
+              /td=fach.fach.SortierungS2
+              td.td-fach-note
+                span class=("e-note" if (fach.noten_krz.start_with?("E") || (s.asd_schulform.start_with?("D")) && (fach.fachgruppe_ID == 30) && (fach.noten_krz == "NB") ))
+                  =fach.note || "––––––"
+              -if fach.Lernentw && fach.fach.ist_sprache == "-"
+                tr
+                  td.fach-bezeichnung.padding-5 #{fach.Lernentw}

+ 16 - 0
partials/p_zeugnis_unterschrift_pa.slim

@@ -0,0 +1,16 @@
+.row
+  .col-xs-6
+    |#{Schule.ort}, den #{hj.zeugnis_datum.strftime("%d.%m.%Y")}
+    .voffset-3
+.row.klein
+  .text-center Siegel
+  .col-xs-5
+    hr
+    .text-center
+      =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+      |– Vorsitzender des allgemeinen Prüfungsausschusses
+  .col-xs-5.col-xs-offset-2
+    .text-center
+      hr
+      =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+      ="– #{Schule.schulleiter_in}"

+ 65 - 0
print_brief.scss

@@ -0,0 +1,65 @@
+$font-stack:    "Tex Gyre Heros";
+$font-color-light:  #c0c0c0;
+
+.page {
+  // 296 für Chrome, andere sind mit 197 ok
+  width: 210mm;
+  height: 296mm;
+  background-color: #fff;
+  font: 11pt $font-stack !important;
+}
+.subpage {
+  font: 11pt $font-stack !important;
+  background-color: transparent;
+}
+.logo {
+  position: absolute;
+  &.logo-top {
+    top: 7mm;
+    left: 125mm;
+    width: 80mm;
+  }
+  &.logo-bottom {
+    bottom: 20mm;
+    left: 5mm;
+    height: 50mm;
+  }
+}
+.info {
+  font: 9.5pt $font-stack !important;
+  position: absolute;
+  left: 145.5mm;
+  color: $font-color-light !important;
+  b {
+    color: $font-color-light !important;
+  }
+  &.info-top {
+    top: 50mm;
+  }
+  &.info-bottom {
+    bottom: 20mm;
+  }
+}
+.absender {
+  font: 7.5pt $font-stack !important;
+  position: absolute;
+  top: 45mm;
+  left: 20mm;
+}
+.anschrift {
+  font: 9.5pt $font-stack !important;
+  position: absolute;
+  top: 60mm;
+  left: 25mm;
+}
+.text {
+  position: absolute;
+  top: 100mm;
+  left: 25mm;
+  width: 115mm;
+}
+@media print and (color) {
+  @page {
+    size: A4 portrait;
+  }
+}

+ 257 - 0
slb_ahr_2014.slim

@@ -0,0 +1,257 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Schullaufbahnbescheinigung AHR","Gruppen":["D"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.eng
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 12pt; line-height: 1.5em"
+           |Bescheinigung über die Schullaufbahn gemäß §13 APO-BK, Anlage D
+          div style="font-size: 11pt; line-height: 1.2em"
+            |Berufliches Gymnasium, #{hj.string "Bereich"}
+          .voffset-1
+          '#{s.anrede}
+          b> #{s.vorname} #{s.name}
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br/
+          'besuchte im Schuljahr #{hj.schuljahr} die Jahrgangsstufe #{(hj.asd_jahrgang.to_i)+10}.#{hj.abschnitt}
+          |im
+          b< Bildungsgang #{o=hj.string("Schulform");s.geschlecht==3 ? o : o.gsub("/","in/")}
+          |.
+          .voffset-1
+          |In der Konferenz am #{(hj.konferenzdatum).strftime("%d.%m.%Y")} sind folgende Leistungen festgestellt worden:
+      ==partial :p_ahr_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          |Versäumte Stunden: #{hj.sum_fehl_std}, davon unentschuldigt: #{hj.sum_fehl_std_u}
+          .voffset-1
+          |Kurse unter 5 Punkten in den Fächern und Jahrgangsstufen:
+      .row
+        .col-xs-12
+          table.col-xs-12
+            -punkte={}
+            tr
+              td width="7%"
+                b 12.1:
+              td width="40%"
+                -punkte[:p12_1]=s.abi_abschluss_leistungen.select{|f|f.p12_1.to_i < 5 && f.p12_1.to_i > 0}
+                =punkte[:p12_1].empty? ? "- keine -" : punkte[:p12_1].map{|f| f.fach.bezeichnung}.join(", ")
+              -if s.jahrgang == 3 || (s.jahrgang == 2 && s.akt_abschnitt == 2)
+                td width="7%"
+                  b 12.2:
+                td
+                  -punkte[:p12_2]=s.abi_abschluss_leistungen.select{|f|f.p12_2.to_i < 5 && f.p12_2.to_i > 0}
+                  =punkte[:p12_2].empty? ? "- keine -" : punkte[:p12_2].map{|f| f.fach.bezeichnung}.join(", ")
+            -if s.jahrgang == 3
+              tr
+                td
+                  b 13.1:
+                td
+                  -punkte[:p13_1]=s.abi_abschluss_leistungen.select{|f|f.p13_1.to_i < 5 && f.p13_1.to_i > 0}
+                  =punkte[:p13_1].empty? ? "- keine -" : punkte[:p13_1].map{|f| f.fach.bezeichnung}.join(", ")
+                -if s.akt_abschnitt == 2
+                  td
+                    b 13.2:
+                  td
+                    -punkte[:p13_2]=s.abi_abschluss_leistungen.select{|f|f.p13_2.to_i < 5 && f.p13_2.to_i > 0}
+                    =punkte[:p13_2].empty? ? "- keine -" : punkte[:p13_2].map{|f| f.fach.bezeichnung}.join(", ")
+      .row
+        .col-xs-12
+          .voffset-1
+          -if punkte.values.any?{|v|!v.empty?}
+            |Ihre Schullaufbahn weist Defizite auf, durch die die Zulassung zur Abiturprüfung und zur Berufsabschlussprüfung gefährdet wird.
+          .voffset-1
+          b Bemerkungen
+          -if hj.bemerkungen=="keine"
+            |: keine
+          -else
+            br/
+            ==hj.bemerkungen
+      .voffset-5
+      .pull-bottom.row
+        .col-xs-4
+          '#{Schule.ort},
+          |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+        .col-xs-3
+          .voffset-2
+          hr
+          .klein-7.text-center
+            =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+            br/
+            =Schule.schulleiter_in
+        .col-xs-2
+          .klein-7.text-center Siegel
+        .col-xs-3
+          .voffset-2
+          hr
+          .klein-7.text-center
+            |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+            br/
+            |#{hj.klassenlehrer_in}
+        -unless s.asd_schulform.start_with?("E")
+          .col-xs-5.col-xs-offset-4
+            .voffset-1
+            |Die Kenntnisnahme wird bestätigt:
+          .col-xs-3
+            .voffset-3
+            hr
+            .klein-7.text-center
+              -if s.volljaehrig_bei?(hj.zeugnis_datum)
+                =s.schueler_in
+              -else
+                |Erziehungsberechtigte
+          .col-xs-12
+            .klein-7
+              |Schulnummer: #{Schule.schulnummer}
+              hr
+              table
+                tr
+                  td
+                    sup> 1
+                  td colspan="5" In der Reihenfolge der erlassenen Stundentafel
+                tr
+                  td rowspan="4" valign="top"
+                    sup> 2
+                  td I
+                  td width="70%"
+                    |= sprachlich literarisches Aufgabenfeld
+                  td rowspan="4" valign="top" align="right"
+                    sup> 3
+                  td 1
+                  td
+                    |= erstes Leistungsfach
+                tr
+                  td II
+                  td
+                    |= gesellschaftswissenschaftliches Aufgabenfeld
+                  td 2
+                  td
+                    |= zweites Leistungsfach
+                tr
+                  td III
+                  td
+                    |= mathematisch-naturwissenschaftlich-technisches Aufgabenfeld
+                  td 3
+                  td
+                    |= drittes Abiturfach
+                tr
+                  td colspan="2"
+                  td 4
+                  td
+                    |= viertes Abiturfach
+              sup> 4
+              |Alle Fächer der Berufsabschlussprüfung sind zu kennzeichnen
+              br
+              sup> 5
+              |Für die Umsetzung von Noten in Punkte gilt:
+              table border="1" width="80%" bordercolor="#bebebe"
+                tr
+                  td width="5%"
+                  td.text-center width="10%" sehr gut
+                  td.text-center width="10%" gut
+                  td.text-center width="10%" befriedigend
+                  td.text-center width="10%" ausreichend
+                  td.text-center width="10%" mangelhaft
+                  td.text-center width="10%" ungenügend
+                tr
+                  td Noten
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 1
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 2
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 3
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 4
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 5
+                        td.text-center width="33%" -
+                  td.text-center 6
+                tr
+                  td Punkte
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 15
+                        td.text-center width="33%" 14
+                        td.text-center width="33%" 13
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 12
+                        td.text-center width="33%" 11
+                        td.text-center width="33%" 10
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 09
+                        td.text-center width="33%" 08
+                        td.text-center width="33%" 07
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 06
+                        td.text-center width="33%" 05
+                        td.text-center width="33%" 04
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 03
+                        td.text-center width="33%" 02
+                        td.text-center width="33%" 01
+                  td.text-center 00
+              .voffset-halb
+                table
+                  tr
+                    td width="1%"
+                      sup> 6
+                    td width="3%" E1
+                    td width="40%"
+                      |= Mit besonderem Erfolg teilgenommen
+                    td width="3%" E2
+                    td width="30%"
+                      |= Mit Erfolg teilgenommen
+                    td width="3%" E3
+                    td width="15%"
+                      |= Teilgenommen
+  .page
+    .subpage
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            hr.hr-grau
+            .grau
+              b.grau Dem Zeugnis liegen zugrunde:
+              br/
+              =partial doc.textbaustein 'APO'
+              .voffset-1
+              b.grau  Rechtsbehelfsbelehrung:
+              br/
+              =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 254 - 0
slb_ahr_2014_ausnahme.slim

@@ -0,0 +1,254 @@
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.eng
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          div style="font-size: 12pt; line-height: 1.5em"
+           |Bescheinigung über die Schullaufbahn gemäß §13 APO-BK, Anlage D
+          div style="font-size: 11pt; line-height: 1.2em"
+            |Berufliches Gymnasium, #{hj.string "Bereich"}
+          .voffset-1
+          '#{s.anrede}
+          b> #{s.vorname} #{s.name}
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          br/
+          'besuchte im Schuljahr #{hj.schuljahr} die Jahrgangsstufe #{(hj.asd_jahrgang.to_i)+10}.#{hj.abschnitt}
+          |im
+          b< Bildungsgang #{o=hj.string("Schulform");s.geschlecht==3 ? o : o.gsub("/","in/")}
+          |.
+          .voffset-1
+      ==partial :p_ahr_noten, :s => s, :hj => hj
+      .row
+        .col-xs-12
+          .voffset-1
+          |Kurse unter 5 Punkten in den Fächern und Jahrgangsstufen:
+      .row
+        .col-xs-12
+          table.col-xs-12
+            -punkte={}
+            tr
+              td width="7%"
+                b 12.1:
+              td width="40%"
+                -punkte[:p12_1]=s.abi_abschluss_leistungen.select{|f|f.p12_1.to_i < 5 && f.p12_1.to_i > 0}
+                =punkte[:p12_1].empty? ? "- keine -" : punkte[:p12_1].map{|f| f.fach.bezeichnung}.join(", ")
+              -if s.jahrgang == 3 || (s.jahrgang == 2 && s.akt_abschnitt == 2)
+                td width="7%"
+                  b 12.2:
+                td
+                  -punkte[:p12_2]=s.abi_abschluss_leistungen.select{|f|f.p12_2.to_i < 5 && f.p12_2.to_i > 0}
+                  =punkte[:p12_2].empty? ? "- keine -" : punkte[:p12_2].map{|f| f.fach.bezeichnung}.join(", ")
+            -if s.jahrgang == 3
+              tr
+                td
+                  b 13.1:
+                td
+                  -punkte[:p13_1]=s.abi_abschluss_leistungen.select{|f|f.p13_1.to_i < 5 && f.p13_1.to_i > 0}
+                  =punkte[:p13_1].empty? ? "- keine -" : punkte[:p13_1].map{|f| f.fach.bezeichnung}.join(", ")
+                -if s.akt_abschnitt == 2
+                  td
+                    b 13.2:
+                  td
+                    -punkte[:p13_2]=s.abi_abschluss_leistungen.select{|f|f.p13_2.to_i < 5 && f.p13_2.to_i > 0}
+                    =punkte[:p13_2].empty? ? "- keine -" : punkte[:p13_2].map{|f| f.fach.bezeichnung}.join(", ")
+      .row
+        .col-xs-12
+          .voffset-1
+          -if punkte.values.any?{|v|!v.empty?}
+            |Ihre Schullaufbahn weist Defizite auf, durch die die Zulassung zur Abiturprüfung und zur Berufsabschlussprüfung gefährdet wird.
+          .voffset-1
+          b Bemerkungen
+          -if hj.bemerkungen=="keine"
+            |: keine
+          -else
+            br/
+            ==hj.bemerkungen
+      .voffset-5
+      .pull-bottom.row
+        .col-xs-4
+          '#{Schule.ort},
+          |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+        .col-xs-3
+          .voffset-2
+          hr
+          .klein-7.text-center
+            =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name}"
+            br/
+            =Schule.schulleiter_in
+        .col-xs-2
+          .klein-7.text-center Siegel
+        .col-xs-3
+          .voffset-2
+          hr
+          .klein-7.text-center
+            |#{hj.klassenlehrer.vorname} #{hj.klassenlehrer.nachname}
+            br/
+            |#{hj.klassenlehrer_in}
+        -unless s.asd_schulform.start_with?("E")
+          .col-xs-5.col-xs-offset-4
+            .voffset-1
+            |Die Kenntnisnahme wird bestätigt:
+          .col-xs-3
+            .voffset-3
+            hr
+            .klein-7.text-center
+              -if s.volljaehrig_bei?(hj.zeugnis_datum)
+                =s.schueler_in
+              -else
+                |Erziehungsberechtigte
+          .col-xs-12
+            .klein-7
+              |Schulnummer: #{Schule.schulnummer}
+              hr
+              table
+                tr
+                  td
+                    sup> 1
+                  td colspan="5" In der Reihenfolge der erlassenen Stundentafel
+                tr
+                  td rowspan="4" valign="top"
+                    sup> 2
+                  td I
+                  td width="70%"
+                    |= sprachlich literarisches Aufgabenfeld
+                  td rowspan="4" valign="top" align="right"
+                    sup> 3
+                  td 1
+                  td
+                    |= erstes Leistungsfach
+                tr
+                  td II
+                  td
+                    |= gesellschaftswissenschaftliches Aufgabenfeld
+                  td 2
+                  td
+                    |= zweites Leistungsfach
+                tr
+                  td III
+                  td
+                    |= mathematisch-naturwissenschaftlich-technisches Aufgabenfeld
+                  td 3
+                  td
+                    |= drittes Abiturfach
+                tr
+                  td colspan="2"
+                  td 4
+                  td
+                    |= viertes Abiturfach
+              sup> 4
+              |Alle Fächer der Berufsabschlussprüfung sind zu kennzeichnen
+              br
+              sup> 5
+              |Für die Umsetzung von Noten in Punkte gilt:
+              table border="1" width="80%" bordercolor="#bebebe"
+                tr
+                  td width="5%"
+                  td.text-center width="10%" sehr gut
+                  td.text-center width="10%" gut
+                  td.text-center width="10%" befriedigend
+                  td.text-center width="10%" ausreichend
+                  td.text-center width="10%" mangelhaft
+                  td.text-center width="10%" ungenügend
+                tr
+                  td Noten
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 1
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 2
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 3
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 4
+                        td.text-center width="33%" -
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" +
+                        td.text-center width="33%" 5
+                        td.text-center width="33%" -
+                  td.text-center 6
+                tr
+                  td Punkte
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 15
+                        td.text-center width="33%" 14
+                        td.text-center width="33%" 13
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 12
+                        td.text-center width="33%" 11
+                        td.text-center width="33%" 10
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 09
+                        td.text-center width="33%" 08
+                        td.text-center width="33%" 07
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 06
+                        td.text-center width="33%" 05
+                        td.text-center width="33%" 04
+                  td.text-center
+                    table width="100%"
+                      tr
+                        td.text-center width="33%" 03
+                        td.text-center width="33%" 02
+                        td.text-center width="33%" 01
+                  td.text-center 00
+              .voffset-halb
+                table
+                  tr
+                    td width="1%"
+                      sup> 6
+                    td width="3%" E1
+                    td width="40%"
+                      |= Mit besonderem Erfolg teilgenommen
+                    td width="3%" E2
+                    td width="30%"
+                      |= Mit Erfolg teilgenommen
+                    td width="3%" E3
+                    td width="15%"
+                      |= Teilgenommen
+  .page
+    .subpage
+      .pull-bottom.klein
+        .row
+          .col-xs-12
+            hr.hr-grau
+            .grau
+              b.grau Dem Zeugnis liegen zugrunde:
+              br/
+              =partial doc.textbaustein 'APO'
+              .voffset-1
+              b.grau  Rechtsbehelfsbelehrung:
+              br/
+              =partial doc.textbaustein 'Rechtsbehelfsbelehrung'

+ 47 - 0
sprachenfolge_2015.slim

@@ -0,0 +1,47 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Sprachenfolge zur Abiturprüfung","Gruppen":["D"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.font-size-11
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          b Übersicht Fremdsprachen zur Abiturprüfung #{s.akt_schuljahr+1}
+          br
+          '#{s.anrede}
+          b> #{s.vorname} #{s.name}
+          .voffset-1
+      .row
+        .col-xs-12
+          table.table.table-bordered
+            tr
+              th Sprache
+              th Von
+              th Bis
+              th Niveau
+              -s.sprachenfolge.each do |sprache|
+                tr
+                  td =sprache.fach.bezeichnung
+                  td ="#{sprache.jahrgangvon}.#{sprache.abschnittvon}"
+                  td ="#{sprache.jahrgangbis}.#{sprache.abschnittbis}"
+                  td =sprache.referenzniveau
+      .row
+        .col-xs-12
+          .voffset-2
+          -if s.abi_abschluss.latinum? || s.abi_abschluss.kl_latinum?
+            |Nachweis Latein:
+            => "Latinum" if s.abi_abschluss.latinum?
+            => "Kleines Latinum" if s.abi_abschluss.kl_latinum?
+          -else
+            |Kein Nachweis für Latein
+      .row
+        .col-xs-12
+          .voffset-3
+          |Bitte prüfen Sie die angegebenen Sprachen und Sprachnachweise auf Richtigkeit

+ 20 - 0
test.slim

@@ -0,0 +1,20 @@
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.font-size-11
+      .row
+        .col-xs-12
+          -keys=s.fhr_abschluss_leistungen[1].keys
+          table.table.table-condensed.table-bordered
+            -s.fhr_abschluss_leistungen.count.times do |row|
+              tr
+                td
+                  =keys[row].to_s
+                -s.fhr_abschluss_leistungen.each do |l|
+                  td
+                    =l[keys[row]]
+

+ 45 - 0
vornoten_abi_2015.slim

@@ -0,0 +1,45 @@
+#doc-einstellungen data-json='{"Name":"Vornoten Abitur BG","Gruppen":["D"],"Orientierung":"landscape"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4_landscape.css" rel="stylesheet" media="all"
+-schueler.select{|s| s.abi_abschluss }.each_slice(4).with_index do |(*schueler_slice), slice_i|
+  .page
+    .subpage.font-size-8
+      .row
+        .col-xs-12
+          h5
+            |Konferenzliste APA BK Abitur #{schueler.first.klasse},
+            small< Stand: #{(Time.now).strftime("%d.%m.%Y – %H:%M")}, Seite #{slice_i+1}/#{(schueler.count/4) + 1 if (schueler.count.%(4)>0)}
+          .voffset-1
+          -schueler_slice.each_with_index do |s,i|
+            -array=[]
+            -array << ["<br>✎<br>→", "12.1", "12.2", "13.1", "13.2"]
+            -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |n|
+              -inner_array = []
+              -inner_array << n.fach_krz
+              -inner_array << n.p12_1 || ""
+              -inner_array << n.p12_2 || ""
+              -inner_array << n.p13_1 || ""
+              -inner_array << n.p13_2 || ""
+              -array << inner_array
+            -array = array.transpose
+            -faecher = array.shift
+            .row
+              .col-xs-8
+                b #{i+1+(3*slice_i)}. #{s.name}, #{s.vorname}
+                table.table.table-condensed.table-bordered.fixed.table-eng
+                  tr
+                    -faecher.each do |f|
+                      th.text-center height="60px" ==f
+                  -array.each do |a|
+                    tr
+                      -a.each do |l|
+                        td.text-center class=("danger" if l.to_i.between?(1,4) || l == "0")
+                          =l
+                .voffset-1
+              .col-xs-4
+                |Bemerkungen:
+                -5.times do
+                  hr
+                  .voffset-2
+                ="Zugelassen: #{s.abi_abschluss.zulassung? ? "Ja":"Nein"}"
+

+ 47 - 0
vornoten_abi_ba_2015.slim

@@ -0,0 +1,47 @@
+#doc-einstellungen data-json='{"Name":"Vornoten Berufsabschluss BG","Gruppen":["D"],"Orientierung":"landscape"}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4_landscape.css" rel="stylesheet" media="all"
+-schueler.select{|s| s.bk_abschluss }.each_slice(3).with_index do |(*schueler_slice), slice_i|
+  .page
+    .subpage.font-size-8
+      .row
+        .col-xs-12
+          h5
+            |Konferenzliste APA BK Berufsabschluss #{schueler.first.klasse},
+            small< Stand: #{(Time.now).strftime("%d.%m.%Y – %H:%M")}, Seite #{slice_i+1}/#{(schueler.count/3) + 1 if (schueler.count.%(4)>0)}
+          .voffset-1
+          -schueler_slice.each_with_index do |s,i|
+            -array=[]
+            -array << ["<br>✎<br>→", "13.1", "13.2", "VN", "SP", "MP", "BA"]
+            -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |n|
+              -if n.fach.fachgruppe_id == 30 || n.fach_id == 126
+                -Presenters::Warnung.add("Dokument", "Fachgruppe 30 (Diffbereich)/FR übersprungen")
+                -next
+              -inner_array = []
+              -inner_array << n.fach_krz
+              -inner_array << NotenHelfer.note_aus_punkten(n.p13_1) || ""
+              -inner_array << NotenHelfer.note_aus_punkten(n.p13_2) || ""
+              -anzahl_noten = [n.p13_1, n.p13_2].reject{ |n| n.to_i == 0 }.count
+              -inner_array << ((n.p13_1.to_i+n.p13_2.to_i == 0) ? "" : NotenHelfer.note_aus_punkten(((n.p13_1.to_f + n.p13_2.to_f)/anzahl_noten).round).to_i)
+              -inner_array << "" << "" << ""
+              -array << inner_array
+            -array = array.transpose
+            -faecher = array.shift
+            .row
+              .col-xs-8
+                b #{i+1+(3*slice_i)}. #{s.name}, #{s.vorname}
+                table.table.table-condensed.table-bordered.fixed.table-eng
+                  tr
+                    -faecher.each do |f|
+                      th.text-center height="60px" ==f
+                  -array.each do |a|
+                    tr
+                      -a.each do |l|
+                        td.text-center class=("danger" if l.to_i > 4 && l.to_i < 7)
+                          =l
+                .voffset-1
+              .col-xs-4
+                |Bemerkungen:
+                -5.times do
+                  hr
+                  .voffset-2

+ 144 - 0
zabi_2015.slim

@@ -0,0 +1,144 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Ergebnisse Zentraler Abiturausschuss","Gruppen":["D"]}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage.eng
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+      .row
+        .col-xs-12
+          b Abiturprüfung #{s.akt_schuljahr+1}
+          br
+          |Ergebnis der 1. Konferenz des allgemeinen Prüfungsausschusses
+          br
+          '#{s.anrede}
+          b> #{s.vorname} #{s.name}
+          .voffset-1
+      .row
+        .col-xs-12
+          table.table.table-bordered.table-eng
+            tr
+              td rowspan="3" width="40px"
+                |Abitur- fach
+              td rowspan="3"
+                |Fach
+              td colspan="4"
+                |Leistungsbewertung in den Halbjahren der Qualifikationsphase
+              td colspan="3"
+                |Zur Zulassung angerechnete Punkte
+              td rowspan="3"
+                |Durchschnitts- punktzahl
+            tr
+              td.text-center rowspan="2" 12.1
+              td.text-center rowspan="2" 12.2
+              td.text-center rowspan="2" 13.1
+              td.text-center rowspan="2" 13.2
+              td.text-center rowspan="2" Grund- kurse
+              td.text-center colspan="2" Leistungskurse
+            tr
+              td.text-center einfach
+              td.text-center zweifach
+            -s.abi_abschluss_leistungen.sort_by{|f|f.f_sortierung}.each do |f|
+              tr
+                td.text-center =f.abi_fach
+                td =f.fach.bezeichnung
+                td.text-center
+                  ="(" if f.R12_1 == "-"
+                  =f.P12_1 || "–"
+                  =")" if f.R12_1 == "-"
+                td.text-center
+                  ="(" if f.R12_2 == "-"
+                  =f.P12_2 || "–"
+                  =")" if f.R12_2 == "-"
+                td.text-center
+                  ="(" if f.R13_1 == "-"
+                  =f.P13_1 || "–"
+                  =")" if f.R13_1 == "-"
+                td.text-center
+                  ="(" if f.R13_2 == "-"
+                  =f.P13_2 || "–"
+                  =")" if f.R13_2 == "-"
+                td.text-center = f.kursart_allg == "GK" ? f.zulassung : "**"
+                td.text-center = f.kursart_allg == "LK" ? f.zulassung/2 : "**"
+                td.text-center = f.kursart_allg == "LK" ? f.zulassung : "**"
+                td.text-center = f._durchschnitt ? '%.2f' % f._durchschnitt : "**"
+            tr
+              td colspan="2"
+              td colspan="3"
+                b Summe der Punkte
+              td
+              td.text-center =s.abi_abschluss.summe_gk
+              td
+              td.text-center =s.abi_abschluss.summe_lk
+            tr
+              td colspan="9"
+                br
+            tr
+              td colspan="2"
+              td colspan="6"
+                b Gesamtsumme
+              td.text-center =s.abi_abschluss.summe_lk + s.abi_abschluss.summe_gk
+            tr
+              td colspan="2"
+              td colspan="6"
+                b> Anzahl der eingebrachten Kurse
+                |(min. 32)
+              td.text-center =s.abi_abschluss.kurse_i
+      .row
+        .col-xs-12
+          .voffset-halb
+          |Die Punktzahlen in Klammern wurden nicht in die Zulassungsberechnung einbezogen.
+          .voffset-1
+      .row
+        .col-xs-5
+          b Punktsumme im Block I
+          br
+          |Berechnung gemäß Formel
+        .col-xs-4
+          .voffset-halb
+          img src="/images/abiturformel.png" width="60px"
+        .col-xs-3
+          h4
+            =>s.abi_abschluss.punktsumme_i
+      .row
+        .col-xs-12
+          .voffset-halb
+          .klein-7
+            |P = Erzielte Punkte in den eingebrachten Fächern. Die Ergebnisse in den Leistungskursfächern werden doppelt gewichtet.
+            br
+            |S = Anzahl der Schulhalbjahresergebnisse. Doppelt gewichtete Fächer zählen auch hier doppelt.
+      .row
+        .col-xs-12
+          .voffset-1
+          |Die Prüfung der Zulassung erfolgte unter Berücksichtigung aller erbrachten Leistungen in der Qualifikationsphase mit der Maßgabe der Erreichung einer höchstmöglichen Punktzahl (für den Block I) gemäß § 15 Absatz 2 APO-BK Anlage D. Falls der Prüfling beantragen möchte, dass Änderungen bezüglich der Einbringung für die Berechnung der Punktsumme im Block I vorgenommen werden, so ist dies innerhalb von drei Werktagen nach der ersten Konferenz schriftlich gegenüber der Schule zu erklären.
+          .voffset-1
+          |#{s.anrede} #{s.vorname} #{s.name} ist #{{s.abi_abschluss.zugelassen == "+" ? "":"<b>nicht</b>"}} zur Abiturprüfung <b>zugelassen</b>.
+          -unless s.abi_abschluss.zugelassen == "+"
+            .voffset-1
+            |Es liegen folgende Verstöße gegen die Zulassungsbedingung(en) nach § 15 APO-BK Anlage D vor:
+            ul.list-unstyled
+            -if true
+              li Bewertung eines zu belegenden Kurses des berufsbezogenen oder berufsübergreifenden Lernbereiches mit null Punkten
+            -if s.abi_abschluss.punktsumme_i.to_i < 200
+              li Nichterreichen von mindestens 200 Punkten im Block I
+            -if true
+              li Bewertung eines einzubringenden Kurses mit null Punkten
+            -if true
+              li Überschreitung der maximal zulässigen Anzahl einzubringender Kurse mit weniger als fünf Punkten
+          .voffset-1
+      .voffset-5
+      .pull-bottom.row
+        .col-xs-4
+          '#{Schule.ort},
+          |den #{(Easter.datum(hj.jahr+1)-10).strftime("%-d.%-m.%Y")}
+        .col-xs-7
+          .voffset-2
+          hr
+          .klein-7.text-center
+            |Der Vorsitzende des Allgemeinen Prüfungsausschusses

+ 40 - 0
zert_betreuungskraft_b.slim

@@ -0,0 +1,40 @@
+#doc-einstellungen data-json='{"logo_top":"bk_logo_ohne_text.svg","logo_seite":"traeger_logo.svg","Name":"Zertifikat Betreuungskraft","Gruppen":["B"],"Ignoriere-Abschnitt":1}'
+link href="/css/print.css" rel="stylesheet" media="all"
+link href="/css/print_a4.css" rel="stylesheet" media="all"
+-schueler.each_with_index do |s,i|
+  -hj=s.halbjahr(jahr, abschnitt)
+  .page
+    .seitenlogo
+      img src="/images/#{doc.get("logo_seite")}" height="160px" data-failover="/images/#{Document.default "logo_seite"}"
+    .subpage
+      .row
+        .col-xs-12
+          img src="/images/#{doc.get("logo_top")}" width="100%" data-failover="/images/#{Document.default "logo_top"}"
+          hr.hr-rot
+          h3.text-center Zertifikat über die fachliche Qualifikation zur „Betreuungskraft“
+          .voffset-4
+          b #{s.anrede} #{s.vorname} #{s.name}
+          br /
+          |geboren am #{(s.geburtsdatum).strftime("%d.%m.%Y")} in #{s.geburtsort}
+          .voffset-4
+          | wird bescheinigt, dass #{s.geschlecht == 4 ? "sie":"er"} im Rahmen der Ausbildung #{s.geschlecht == 4 ? "zur":"zum"}
+            #{hj.berufsbezeichnung_mw.gsub /geprüfter?/, "geprüften"} die erforderlichen Kenntnisse zur
+            Betreuungskraft gemäß Richtlinien nach § 87b Absatz 3 SGB XI (Betreuungskräfte-RL
+            vom 19. August 2008) erworben hat.
+          .voffset-3
+          | Dieses Zertifikat gilt in Verbindung mit dem Abgangszeugnis/Abschlusszeugnis des
+            Bildungsganges der Berufsfachschule #{hj.berufsbezeichnung_mw}
+            vom #{(hj.zeugnis_datum).strftime("%d.%m.%Y")}.
+          .voffset-9
+          .voffset-9
+      .row
+        .col-xs-5
+          '#{Schule.ort},
+          |den #{hj.zeugnis_datum.strftime("%-d.%-m.%Y")}
+        .col-xs-2
+          .klein-7.text-center Siegel
+        .col-xs-5
+          .voffset-2
+          hr
+          .text-center
+            =>"#{Schule.first.schulleiter_vorname} #{Schule.first.schulleiter_name} – #{Schule.schulleiter_in}"