Ejemplo n.º 1
0
 def processForm(self, REQUEST, RESPONSE):
     #print 'ADRESSEN FORM:', self.form
     welche = check_str_not_empty(self.form, 'wel', "Keine Exportart", 'keine')
     if welche == 'gruppe':
         return self._process_gruppe(REQUEST, RESPONSE)
     elif welche == 'fall':
         return self._process_fall(REQUEST, RESPONSE)
     else:
         return 'Keine Auswahl'
Ejemplo n.º 2
0
    def processForm(self, REQUEST, RESPONSE):
        expr = check_str_not_empty(self.form, 'expr', "Kein Suchausdruck")
        table = check_str_not_empty(self.form, 'table', "Keine Suchklasse")
        if not expr:
            raise EE('Kein Suchausdruck')
        if not table:
            raise EE('Keine Suchklasse')
        if self.mitarbeiter['benr__code'] == 'bearb':
            # eingeschränkt auf angemeldeten Mitarbeiter
            mitarbeiter = self.mitarbeiter
        elif self.mitarbeiter['benr__code'] == 'verw':
            mitarbeiter = None
        if table == "akte":
            headers=('Fallnr.', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A', 'Zuständig')
            faelle = self.beratungen_fall(mitarbeiter, klname=expr)
            daten = self.get_table_daten(faelle,
                                         (('fn', 'klkarte?akid=%(akte_id)s'),
                                          'akte__vn', 'akte__na', 'akte__gb',
                                          'bg', 'zda', 'zuletzt_zustaendig__mit__na',
                                          ),
                                         )
            legend="Suchergebnisse für: Klientenname enthält '%s'" % expr
        elif table == "fall":
            headers=('Fallnr.', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A', 'Zuständig')
            faelle = self.beratungen_fall(mitarbeiter, fn=expr)
            daten = self.get_table_daten(faelle,
                                         (('fn', 'klkarte?akid=%(akte_id)s'),
                                          'akte__vn', 'akte__na', 'akte__gb',
                                          'bg', 'zda', 'zuletzt_zustaendig__mit__na',
                                          ),
                                         )
            legend="Suchergebnisse für: Fallnummer enthält '%s'" % expr
        elif table == "bezugsperson":
            headers=('Fallnr.', 'Vorname der Bezugsperson', 'Nachname der Bezugsperson', 'Bezug', 'Beginn', 'z.d.A', 'Zuständig')
            bezugspersonen = self.beratungen_bezugsperson(mitarbeiter, bzpname=expr)
            daten = self.get_table_daten(bezugspersonen,
                                         (('akte__letzter_fall__fn', 'klkarte?akid=%(akte_id)s'),
                                          'vn', 'na', 'verw__name',
                                          'akte__letzter_fall__bg', 'akte__letzter_fall__zda',
                                          'akte__letzter_fall__zuletzt_zustaendig__mit__na',
                                          ),
                                         )
            legend="Suchergebnisse für: Bezugspersonname enthält '%s'" % expr
        elif table == "gruppe":
            headers=('Gruppennr.', 'Mitarbeiter', 'Name',
                     'Thema', 'Art', 'Teilnehmer', '-zahl', 'Beginn', 'Ende')

            gruppe_list = self.beratungen_gruppe(mitarbeiter=mitarbeiter, grname=expr)
            daten = self.get_table_daten(gruppe_list,
                                         (('gn', 'grkarte?gruppeid=%(id)s'),
                                          'mitarbeiternamen', 'name', 'thema',
                                          'grtyp__name', 'teiln__name', 'tzahl',
                                          'bg', 'e',
                                          ),
                                         )
            legend = "Suchergebnisse für: Gruppenname oder -thema enthält '%s'" % expr
        tabelle = h.FieldsetDataTable(
            legend=legend,
            headers=headers,
            daten=daten,
            )
        res = h.Page(
            title='Suchergebnisse',
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ),
            rows=(self.get_zurueck(),
                  tabelle,
                  ),
            )
        return res.display()
Ejemplo n.º 3
0
    def xprocessForm(self, REQUEST, RESPONSE):
        default_sort = ('bgy', 'fn_count', 'akte__na',
                        'zuletzt_zustaendig__mit__na',
                        'has_fachstatistik', 'has_jghstatistik')
        default_sort_code = '012345' # Indizes in default_sort
        tmpl = '<option value="%s"%s>%s</option>'
        # erster Wert ist Index in default_sort
        sort_options_data = (
            (0, 'Jahr des Fallbeginns'),
            (1, 'Fallnummer'),
            (2, 'Name des Klienten'),
            (3, 'Name des Mitarbeiters'),
            (4, 'Fachstatistik vorhanden'),
            (5, 'Bundesstatistik vorhanden'),
            )
        welche = check_str_not_empty(self.form, 'w', "Keine Fallart", 'laufend')
        sel = ' selected="selected"'
        welche_options = '\n'.join([tmpl % (v,
                                            v==welche and sel or '',
                                            v.capitalize())
                                    for v in ('laufend', 'abgeschlossen', 'alle')])
        title = (welche=='laufend' and 'Laufende' or
                 welche=='abgeschlossen' and 'Abgeschlossene' or
                 welche=='alle' and 'Alle' or '') + ' Beratungen'
        legend_app = ''
        jahr = check_int_not_empty(self.form, 'jahr', "Fehler im Jahr", '')
        fn_count = check_int_not_empty(self.form, 'fnc', "Fehler in laufender Nummer", '')
        if fn_count and not jahr:
            raise EE("Laufende Fallnummer nur zusammen mit Jahr")
        if fn_count:
            legend_app += ' ab Fallnummer %s-%s%s' % (fn_count, jahr, self.stelle['code'])
        elif jahr:
            legend_app += ' ab Jahr %s' % (jahr,)
        mit_id = check_str_not_empty(self.form, 'mitid', "Kein Mitarbeiter", '')
        seq = check_str_not_empty(self.form, 'seq', "Keine Sortierung", default_sort_code)
        seq = [int(x) for x in seq]
        seq_new = check_str_not_empty(self.form, 'seqn', "Keine Sortierung", '1')
        if seq_new:
            seq_new = int(seq_new)
            assert seq_new in seq, 'Fehler beim Sortieren'
            if seq_new == 1:
                seq.remove(1)
                seq.remove(0)
                seq = [0,1] + seq
            else:
                seq.remove(seq_new)
                seq = [seq_new] + seq
        sort_options = '\n'.join([tmpl % (c, c==seq_new and sel or '', n)
                                  for c, n in sort_options_data])
        sort = tuple([default_sort[i] for i in seq])
        mitarbeiter = None
        if self.mitarbeiter['benr__code'] == 'verw':
            if mit_id:
                mitarbeiter = Mitarbeiter(mit_id)
                mitarbeiter_options = (tmpl % ('', '', 'Alle')
                + self.for_mitarbeiter(sel=int(mit_id)))
            else:
                mitarbeiter_options = (tmpl % ('', 'selected="selected"', 'Alle')
                + self.for_mitarbeiter(sel=None))
        elif self.mitarbeiter['benr__code'] == 'bearb':
            mitarbeiter = self.mitarbeiter
        beratungen = self.beratungen(welche=welche,
                                     stelle=self.stelle,
                                     mitarbeiter=mitarbeiter,
                                     ab_jahr=jahr,
                                     ab_fallnummer=fn_count,
                                     sort=sort)

        anzeige = h.FieldsetInputTable(
            legend='Anzuzeigende Beratungen',
            daten=[[h.SelectItem(label='Welche',
                                 name='w',
                                 options=welche_options,
    tip='Nur laufende, nur abgeschlossene, oder alle Fälle zeigen',
                                 ),
                    h.SelectItem(label='Fallbeginn ab Jahr',
                                 name='jahr',
                                 class_='listbox45',
                                 tip='Nur Fälle ab dem gewählten Jahr zeigen',
                                 options=self.for_jahre(sel=jahr,
                                                        erster_eintrag='Alle'),
                                 ),
                    h.TextItem(label='ab laufender Nummer',
                               name='fnc',
                               class_='textboxmid',
                               value=fn_count,
                               tip='z.B. 9, 23, etc.',
                               ),
                    ],
                    [self.mitarbeiter['benr__code'] == 'verw' and
                     h.SelectItem(label='Mitarbeiter',
                                  name='mitid',
                                  tip='Nur Fälle des gewählten Mitarbeiters zeigen',
                                  options=mitarbeiter_options,
                                  ) or
                    h.TextItem(label='Mitarbeiter',
                               name='xxx',
                               value=mitarbeiter['na'],
                               readonly=True,
                               ),
                     h.SelectItem(label='Sortieren nach',
                                  name='seqn',
                                  tip='Wonach die Fälle sortiert sein sollen',
                                  options=sort_options,
                                  ),
                    ],
                   [h.Dummy(n_col=8)],
                   [h.Button(value="Anzeigen",
                             name='op',
                             tip="Beratungen anzeigen",
                             type='submit',
                             n_col=8,
                             ),
                    ],
                   ],
            )

        #faelle = ('fn', 'vn', 'na', 'gb', 'fallbeginn', 'fallende', 'mitarbeiter', 'fs', 'jgh')
        report = h.FieldsetDataTable(
            legend=title + legend_app,
            headers=('Fallnr.', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A', 'Zuständig', 'FS', 'BS'),
            daten=[[h.Link(string=fall['fn'],
                           url='klkarte?akid=%(akte_id)s' % fall),
                    h.String(string=fall['akte__vn']),
                    h.String(string=fall['akte__na']),
                    h.String(string=fall['akte__gb']),
                    h.Datum(date=fall.getDate('bg')),
                    h.Datum(date=fall.getDate('zda')),
                    h.String(string=fall['zuletzt_zustaendig__mit__na']),
                    h.String(string=fall['has_fachstatistik']),
                    h.String(string=fall['has_jghstatistik']),
            ] for fall in beratungen],
            )

        res = h.FormPage(
            title=title,
            name='beratungen',action="abfr1",method="post",
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ),
            hidden=(("seq", ''.join([('%s' % i) for i in seq])),
                    ),
            rows=(self.get_auswertungs_menu(),
                  anzeige,
                  report,
                  ),
            )
        return res.display()
Ejemplo n.º 4
0
    def fall_auswahl_form(self):
        default_sort = ('bgy', 'fn_count', 'akte__na',
                        'zuletzt_zustaendig__mit__na',
                        'has_fachstatistik', 'has_jghstatistik')
        default_sort_code = '012345' # Indizes in default_sort
        tmpl = '<option value="%s"%s>%s</option>'
        # erster Wert ist Index in default_sort
        sort_options_data = (
            (0, 'Jahr des Fallbeginns'),
            (1, 'Fallnummer'),
            (2, 'Name des Klienten'),
            (3, 'Name des Mitarbeiters'),
            (4, 'Fachstatistik vorhanden'),
            (5, 'Bundesstatistik vorhanden'),
            )
        welche = check_str_not_empty(self.form, 'w', "Keine Fallart", 'laufend')
        jahr = check_int_not_empty(self.form, 'jahr', "Fehler in ab Jahr", '')
        fn_count = check_int_not_empty(self.form, 'fnc', "Fehler in laufender Nummer", '')
        bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Fehler in bis Jahr", '')
        bis_fn_count = check_int_not_empty(self.form, 'bis_fnc', 
                                           "Fehler in bis laufender Nummer", '')
        ab_jahr_zda = check_int_not_empty(self.form, 'ab_jahr_zda', 
                                          "Fehler in ab Jahr Abschluss", '')
        bis_jahr_zda = check_int_not_empty(self.form, 'bis_jahr_zda', 
                                          "Fehler in ab Jahr Abschluss", '')

        if fn_count and not jahr:
            raise EE("Ab laufende Fallnummer nur zusammen mit ab Jahr")
        if bis_fn_count and not bis_jahr:
            raise EE("Bis laufende Fallnummer nur zusammen mit bis Jahr")
        if ab_jahr_zda or bis_jahr_zda:
            # in diesem Fall nur abgeschlossene Fälle
            welche = 'abgeschlossen'
        mit_id = check_str_not_empty(self.form, 'mitid', "Kein Mitarbeiter", '')
        seq = check_str_not_empty(self.form, 'seq', "Keine Sortierung", default_sort_code)
        seq = [int(x) for x in seq]
        seq_new = check_str_not_empty(self.form, 'seqn', "Keine Sortierung", '1')
        if seq_new:
            seq_new = int(seq_new)
            assert seq_new in seq, 'Fehler beim Sortieren'
            if seq_new == 1:
                seq.remove(1)
                seq.remove(0)
                seq = [0,1] + seq
            else:
                seq.remove(seq_new)
                seq = [seq_new] + seq
        sort = tuple([default_sort[i] for i in seq])

        mitarbeiter = None
        if self.mitarbeiter['benr__code'] == 'verw':
            if mit_id:
                mitarbeiter = Mitarbeiter(mit_id)
        elif self.mitarbeiter['benr__code'] == 'bearb':
            mitarbeiter = self.mitarbeiter
        legend='Anzuzeigende Beratungen',
        return dict(welche=welche,
                    ab_jahr=jahr,
                    ab_fallnummer=fn_count,
                    bis_jahr=bis_jahr,
                    bis_fallnummer=bis_fn_count,
                    ab_jahr_zda=ab_jahr_zda,
                    bis_jahr_zda=bis_jahr_zda,
                    mitarbeiter=mitarbeiter,
                    sort_options_data=sort_options_data,
                    sort_sel=seq_new, # index der auswahl
                    sort_seq=seq,     # liste von indices
                    sort=sort,        # tuple der sortier-felder
                    )
Ejemplo n.º 5
0
    def processForm(self, REQUEST, RESPONSE):
        expr = check_str_not_empty(self.form, "expr", "Kein Suchausdruck")
        table = check_str_not_empty(self.form, "table", "Keine Suchklasse")
        if not expr:
            raise EE("Kein Suchausdruck")
        if not table:
            raise EE("Keine Suchklasse")
        if self.mitarbeiter["benr__code"] == "bearb":
            # eingeschränkt auf angemeldeten Mitarbeiter
            mitarbeiter = self.mitarbeiter
        elif self.mitarbeiter["benr__code"] == "verw":
            mitarbeiter = None
        if table == "akte":
            headers = ("Fallnr.", "Vorname", "Name", "Geb.", "Beginn", "z.d.A", "Zuständig")
            faelle = self.beratungen_fall(mitarbeiter, klname=expr)
            daten = self.get_table_daten(
                faelle,
                (
                    ("fn", "klkarte?akid=%(akte_id)s"),
                    "akte__vn",
                    "akte__na",
                    "akte__gb",
                    "bg",
                    "zda",
                    "zuletzt_zustaendig__mit__na",
                ),
            )
            legend = "Suchergebnisse für: Klientenname enthält '%s'" % expr
        elif table == "fall":
            headers = ("Fallnr.", "Vorname", "Name", "Geb.", "Beginn", "z.d.A", "Zuständig")
            faelle = self.beratungen_fall(mitarbeiter, fn=expr)
            daten = self.get_table_daten(
                faelle,
                (
                    ("fn", "klkarte?akid=%(akte_id)s"),
                    "akte__vn",
                    "akte__na",
                    "akte__gb",
                    "bg",
                    "zda",
                    "zuletzt_zustaendig__mit__na",
                ),
            )
            legend = "Suchergebnisse für: Fallnummer enthält '%s'" % expr
        elif table == "bezugsperson":
            headers = (
                "Fallnr.",
                "Vorname der Bezugsperson",
                "Nachname der Bezugsperson",
                "Bezug",
                "Beginn",
                "z.d.A",
                "Zuständig",
            )
            bezugspersonen = self.beratungen_bezugsperson(mitarbeiter, bzpname=expr)
            daten = self.get_table_daten(
                bezugspersonen,
                (
                    ("akte__letzter_fall__fn", "klkarte?akid=%(akte_id)s"),
                    "vn",
                    "na",
                    "verw__name",
                    "akte__letzter_fall__bg",
                    "akte__letzter_fall__zda",
                    "akte__letzter_fall__zuletzt_zustaendig__mit__na",
                ),
            )
            legend = "Suchergebnisse für: Bezugspersonname enthält '%s'" % expr
        elif table == "gruppe":
            headers = ("Gruppennr.", "Mitarbeiter", "Name", "Thema", "Art", "Teilnehmer", "-zahl", "Beginn", "Ende")

            gruppe_list = self.beratungen_gruppe(mitarbeiter=mitarbeiter, grname=expr)
            daten = self.get_table_daten(
                gruppe_list,
                (
                    ("gn", "grkarte?gruppeid=%(id)s"),
                    "mitarbeiternamen",
                    "name",
                    "thema",
                    "grtyp__name",
                    "teiln__name",
                    "tzahl",
                    "bg",
                    "e",
                ),
            )
            legend = "Suchergebnisse für: Gruppenname oder -thema enthält '%s'" % expr
        tabelle = h.FieldsetDataTable(legend=legend, headers=headers, daten=daten)
        res = h.Page(title="Suchergebnisse", breadcrumbs=(("Hauptmenü", "menu"),), rows=(self.get_zurueck(), tabelle))
        return res.display()
Ejemplo n.º 6
0
    def fall_auswahl_form(self):
        default_sort = (
            "bgy",
            "fn_count",
            "akte__na",
            "zuletzt_zustaendig__mit__na",
            "has_fachstatistik",
            "has_jghstatistik",
        )
        default_sort_code = "012345"  # Indizes in default_sort
        tmpl = '<option value="%s"%s>%s</option>'
        # erster Wert ist Index in default_sort
        sort_options_data = (
            (0, "Jahr des Fallbeginns"),
            (1, "Fallnummer"),
            (2, "Name des Klienten"),
            (3, "Name des Mitarbeiters"),
            (4, "Fachstatistik vorhanden"),
            (5, "Bundesstatistik vorhanden"),
        )
        welche = check_str_not_empty(self.form, "w", "Keine Fallart", "laufend")
        jahr = check_int_not_empty(self.form, "jahr", "Fehler in ab Jahr", "")
        fn_count = check_int_not_empty(self.form, "fnc", "Fehler in laufender Nummer", "")
        bis_jahr = check_int_not_empty(self.form, "bis_jahr", "Fehler in bis Jahr", "")
        bis_fn_count = check_int_not_empty(self.form, "bis_fnc", "Fehler in bis laufender Nummer", "")
        ab_jahr_zda = check_int_not_empty(self.form, "ab_jahr_zda", "Fehler in ab Jahr Abschluss", "")
        bis_jahr_zda = check_int_not_empty(self.form, "bis_jahr_zda", "Fehler in ab Jahr Abschluss", "")

        if fn_count and not jahr:
            raise EE("Ab laufende Fallnummer nur zusammen mit ab Jahr")
        if bis_fn_count and not bis_jahr:
            raise EE("Bis laufende Fallnummer nur zusammen mit bis Jahr")
        if ab_jahr_zda or bis_jahr_zda:
            # in diesem Fall nur abgeschlossene Fälle
            welche = "abgeschlossen"
        mit_id = check_str_not_empty(self.form, "mitid", "Kein Mitarbeiter", "")
        seq = check_str_not_empty(self.form, "seq", "Keine Sortierung", default_sort_code)
        seq = [int(x) for x in seq]
        seq_new = check_str_not_empty(self.form, "seqn", "Keine Sortierung", "1")
        if seq_new:
            seq_new = int(seq_new)
            assert seq_new in seq, "Fehler beim Sortieren"
            if seq_new == 1:
                seq.remove(1)
                seq.remove(0)
                seq = [0, 1] + seq
            else:
                seq.remove(seq_new)
                seq = [seq_new] + seq
        sort = tuple([default_sort[i] for i in seq])

        mitarbeiter = None
        if self.mitarbeiter["benr__code"] == "verw":
            if mit_id:
                mitarbeiter = Mitarbeiter(mit_id)
        elif self.mitarbeiter["benr__code"] == "bearb":
            mitarbeiter = self.mitarbeiter
        legend = ("Anzuzeigende Beratungen",)
        return dict(
            welche=welche,
            ab_jahr=jahr,
            ab_fallnummer=fn_count,
            bis_jahr=bis_jahr,
            bis_fallnummer=bis_fn_count,
            ab_jahr_zda=ab_jahr_zda,
            bis_jahr_zda=bis_jahr_zda,
            mitarbeiter=mitarbeiter,
            sort_options_data=sort_options_data,
            sort_sel=seq_new,  # index der auswahl
            sort_seq=seq,  # liste von indices
            sort=sort,  # tuple der sortier-felder
        )
Ejemplo n.º 7
0
    def xprocessForm(self, REQUEST, RESPONSE):
        default_sort = (
            "bgy",
            "fn_count",
            "akte__na",
            "zuletzt_zustaendig__mit__na",
            "has_fachstatistik",
            "has_jghstatistik",
        )
        default_sort_code = "012345"  # Indizes in default_sort
        tmpl = '<option value="%s"%s>%s</option>'
        # erster Wert ist Index in default_sort
        sort_options_data = (
            (0, "Jahr des Fallbeginns"),
            (1, "Fallnummer"),
            (2, "Name des Klienten"),
            (3, "Name des Mitarbeiters"),
            (4, "Fachstatistik vorhanden"),
            (5, "Bundesstatistik vorhanden"),
        )
        welche = check_str_not_empty(self.form, "w", "Keine Fallart", "laufend")
        sel = ' selected="selected"'
        welche_options = "\n".join(
            [tmpl % (v, v == welche and sel or "", v.capitalize()) for v in ("laufend", "abgeschlossen", "alle")]
        )
        title = (
            welche == "laufend"
            and "Laufende"
            or welche == "abgeschlossen"
            and "Abgeschlossene"
            or welche == "alle"
            and "Alle"
            or ""
        ) + " Beratungen"
        legend_app = ""
        jahr = check_int_not_empty(self.form, "jahr", "Fehler im Jahr", "")
        fn_count = check_int_not_empty(self.form, "fnc", "Fehler in laufender Nummer", "")
        if fn_count and not jahr:
            raise EE("Laufende Fallnummer nur zusammen mit Jahr")
        if fn_count:
            legend_app += " ab Fallnummer %s-%s%s" % (fn_count, jahr, self.stelle["code"])
        elif jahr:
            legend_app += " ab Jahr %s" % (jahr,)
        mit_id = check_str_not_empty(self.form, "mitid", "Kein Mitarbeiter", "")
        seq = check_str_not_empty(self.form, "seq", "Keine Sortierung", default_sort_code)
        seq = [int(x) for x in seq]
        seq_new = check_str_not_empty(self.form, "seqn", "Keine Sortierung", "1")
        if seq_new:
            seq_new = int(seq_new)
            assert seq_new in seq, "Fehler beim Sortieren"
            if seq_new == 1:
                seq.remove(1)
                seq.remove(0)
                seq = [0, 1] + seq
            else:
                seq.remove(seq_new)
                seq = [seq_new] + seq
        sort_options = "\n".join([tmpl % (c, c == seq_new and sel or "", n) for c, n in sort_options_data])
        sort = tuple([default_sort[i] for i in seq])
        mitarbeiter = None
        if self.mitarbeiter["benr__code"] == "verw":
            if mit_id:
                mitarbeiter = Mitarbeiter(mit_id)
                mitarbeiter_options = tmpl % ("", "", "Alle") + self.for_mitarbeiter(sel=int(mit_id))
            else:
                mitarbeiter_options = tmpl % ("", 'selected="selected"', "Alle") + self.for_mitarbeiter(sel=None)
        elif self.mitarbeiter["benr__code"] == "bearb":
            mitarbeiter = self.mitarbeiter
        beratungen = self.beratungen(
            welche=welche, stelle=self.stelle, mitarbeiter=mitarbeiter, ab_jahr=jahr, ab_fallnummer=fn_count, sort=sort
        )

        anzeige = h.FieldsetInputTable(
            legend="Anzuzeigende Beratungen",
            daten=[
                [
                    h.SelectItem(
                        label="Welche",
                        name="w",
                        options=welche_options,
                        tip="Nur laufende, nur abgeschlossene, oder alle Fälle zeigen",
                    ),
                    h.SelectItem(
                        label="Fallbeginn ab Jahr",
                        name="jahr",
                        class_="listbox45",
                        tip="Nur Fälle ab dem gewählten Jahr zeigen",
                        options=self.for_jahre(sel=jahr, erster_eintrag="Alle"),
                    ),
                    h.TextItem(
                        label="ab laufender Nummer",
                        name="fnc",
                        class_="textboxmid",
                        value=fn_count,
                        tip="z.B. 9, 23, etc.",
                    ),
                ],
                [
                    self.mitarbeiter["benr__code"] == "verw"
                    and h.SelectItem(
                        label="Mitarbeiter",
                        name="mitid",
                        tip="Nur Fälle des gewählten Mitarbeiters zeigen",
                        options=mitarbeiter_options,
                    )
                    or h.TextItem(label="Mitarbeiter", name="xxx", value=mitarbeiter["na"], readonly=True),
                    h.SelectItem(
                        label="Sortieren nach",
                        name="seqn",
                        tip="Wonach die Fälle sortiert sein sollen",
                        options=sort_options,
                    ),
                ],
                [h.Dummy(n_col=8)],
                [h.Button(value="Anzeigen", name="op", tip="Beratungen anzeigen", type="submit", n_col=8)],
            ],
        )

        # faelle = ('fn', 'vn', 'na', 'gb', 'fallbeginn', 'fallende', 'mitarbeiter', 'fs', 'jgh')
        report = h.FieldsetDataTable(
            legend=title + legend_app,
            headers=("Fallnr.", "Vorname", "Name", "Geb.", "Beginn", "z.d.A", "Zuständig", "FS", "BS"),
            daten=[
                [
                    h.Link(string=fall["fn"], url="klkarte?akid=%(akte_id)s" % fall),
                    h.String(string=fall["akte__vn"]),
                    h.String(string=fall["akte__na"]),
                    h.String(string=fall["akte__gb"]),
                    h.Datum(date=fall.getDate("bg")),
                    h.Datum(date=fall.getDate("zda")),
                    h.String(string=fall["zuletzt_zustaendig__mit__na"]),
                    h.String(string=fall["has_fachstatistik"]),
                    h.String(string=fall["has_jghstatistik"]),
                ]
                for fall in beratungen
            ],
        )

        res = h.FormPage(
            title=title,
            name="beratungen",
            action="abfr1",
            method="post",
            breadcrumbs=(("Hauptmenü", "menu"),),
            hidden=(("seq", "".join([("%s" % i) for i in seq])),),
            rows=(self.get_auswertungs_menu(), anzeige, report),
        )
        return res.display()