Example #1
0
 def processForm(self, REQUEST, RESPONSE):
     jahr = check_int_not_empty(self.form, 'jahr', "Fehler im Jahr", '')
     anzeige = h.FieldsetInputTable(
         legend='Jahr wählen',
         daten=[[h.SelectItem(label='Ab Jahr',
                              name='jahr',
                              class_='listbox45',
                              tip='Gruppenbeginn ab dem gewählten Jahr',
                              options=self.for_jahre(sel=jahr,
                                                     erster_eintrag='Alle'),
                              ),
                 h.Button(value="Anzeigen",
                          name='op',
                          tip="Gruppen anzeigen",
                          type='submit',
                          n_col=2,
                          ),
                 ],
                ],
         )
     mitarbeiter = welche = stelle = None
     gruppe_list = self.beratungen_gruppe(ab_jahr=jahr,
                                          mitarbeiter=mitarbeiter,
                                          welche=welche,
                                          stelle=stelle)
     headers=('Gruppennr.', 'Mitarbeiter', 'Name',
              'Thema', 'Art', 'Teilnehmer', '-zahl', 'Beginn', 'Ende')
     daten = self.get_table_daten(gruppe_list,
                                  (('gn', 'grkarte?gruppeid=%(id)s'),
                                   'mitarbeiternamen', 'name', 'thema',
                                   'grtyp__name', 'teiln__name', 'tzahl',
                                   'bg', 'e',
                                   ),
                                  )
     report = h.FieldsetDataTable(
         legend='Gruppenüberblick',
         headers=headers,
         daten=daten,
         )
     res = h.FormPage(
         title='Gruppenüberblick',
         name='gruppenue',action="abfr8",method="post",
         breadcrumbs = (('Hauptmenü', 'menu'),
                        ),
         hidden=(),
         rows=(self.get_auswertungs_menu(),
               anzeige,
               report,
               ),
         )
     return res.display()
Example #2
0
 def processForm(self, REQUEST, RESPONSE):
     jahr = check_int_not_empty(self.form, "jahr", "Fehler im Jahr", "")
     anzeige = h.FieldsetInputTable(
         legend="Jahr wählen",
         daten=[
             [
                 h.SelectItem(
                     label="Ab Jahr",
                     name="jahr",
                     class_="listbox45",
                     tip="Gruppenbeginn ab dem gewählten Jahr",
                     options=self.for_jahre(sel=jahr, erster_eintrag="Alle"),
                 ),
                 h.Button(value="Anzeigen", name="op", tip="Gruppen anzeigen", type="submit", n_col=2),
             ]
         ],
     )
     mitarbeiter = welche = stelle = None
     gruppe_list = self.beratungen_gruppe(ab_jahr=jahr, mitarbeiter=mitarbeiter, welche=welche, stelle=stelle)
     headers = ("Gruppennr.", "Mitarbeiter", "Name", "Thema", "Art", "Teilnehmer", "-zahl", "Beginn", "Ende")
     daten = self.get_table_daten(
         gruppe_list,
         (
             ("gn", "grkarte?gruppeid=%(id)s"),
             "mitarbeiternamen",
             "name",
             "thema",
             "grtyp__name",
             "teiln__name",
             "tzahl",
             "bg",
             "e",
         ),
     )
     report = h.FieldsetDataTable(legend="Gruppenüberblick", headers=headers, daten=daten)
     res = h.FormPage(
         title="Gruppenüberblick",
         name="gruppenue",
         action="abfr8",
         method="post",
         breadcrumbs=(("Hauptmenü", "menu"),),
         hidden=(),
         rows=(self.get_auswertungs_menu(), anzeige, report),
     )
     return res.display()
Example #3
0
 def processForm(self, REQUEST, RESPONSE):
     jahr = check_int_not_empty(self.form, 'jahr', "Fehler im Jahr", '')
     if not jahr:
         jahr = today().year
     anzeige = h.FieldsetInputTable(
         legend='Jahr wählen',
         daten=[[h.SelectItem(label='Jahr',
                              name='jahr',
                              class_='listbox45',
                              tip='Klientenzahl pro Mitarbeiter für das gewählte Jahr',
                              options=self.for_jahre(sel=jahr),
                              ),
                 h.Button(value="Anzeigen",
                          name='op',
                          tip="Klientenanzahl pro Mitarbeiter anzeigen",
                          type='submit',
                          n_col=2,
                          ),
                 ],
                ],
         )
     mitarbeiter_ergebnisse, gesamt = self.get_mitarbeiter_ergebnisse(jahr)
     report = h.FieldsetDataTable(
         legend='Neumeldungen und Abschlüsse pro Mitarbeiter %s' % jahr,
         headers=('Mitarbeiter', 'Neu', 'davon Fallbeginn', 'Laufend', 'Beendet','davon z.d.A.'),
         daten=[[h.String(string=m[0]),
                 h.String(string=m[1],
                          tip='Zuständigkeit neu übernommen'),
                 h.String(string=m[2],
                          tip='Zuständigkeit für neuen Fall übernommen'),
                 h.String(string=m[3],
                          tip='Laufende Fälle am Ende des Jahres'),
                 h.String(string=m[4],
                          tip='Zuständigkeit beendet'),
                 h.String(string=m[5],
                          tip='Zuständigkeitsende durch Fallabschluss'),
         ] for m in mitarbeiter_ergebnisse] +
         [[h.String(string='Gesamt',
                   class_='tabledatabold'),
          h.String(string=gesamt[0],
                   class_='tabledatabold',
                   tip='Zuständigkeit neu übernommen'),
          h.String(string=gesamt[1],
                   class_='tabledatabold',
                   tip='Zuständigkeit für neuen Fall übernommen'),
          h.String(string=gesamt[2],
                   class_='tabledatabold',
                   tip='Laufende Fälle am Ende des Jahres'),
          h.String(string=gesamt[3],
                   class_='tabledatabold',
                   tip='Zuständigkeit beendet'),
          h.String(string=gesamt[4],
                   class_='tabledatabold',
                   tip='Zuständigkeitsende durch Fallabschluss'),
          ]],
         )
     res = h.FormPage(
         title='Neumeldungen und Abschlüsse pro Mitarbeiter',
         name='neumelde',action="abfr5",method="post",
         breadcrumbs = (('Hauptmenü', 'menu'),
                        ),
         hidden=(),
         rows=(self.get_auswertungs_menu(),
               anzeige,
               report,
               ),
         )
     return res.display()
Example #4
0
    def processForm(self, REQUEST, RESPONSE):
        jahr = check_int_not_empty(self.form, 'jahr', "Fehler im Jahr", '')
        if not jahr:
            jahr = today().year
        anzeige = h.FieldsetInputTable(
            legend='Jahr wählen',
            daten=[[h.SelectItem(label='Jahr',
                                 name='jahr',
                                 class_='listbox45',
                                 tip='Neumeldungen und Abschlüsse für das gewählte Jahr',
                                 options=self.for_jahre(sel=jahr),
                                 ),
                    h.Button(value="Anzeigen",
                             name='op',
                             tip="Neumeldungen und Abschlüsse anzeigen",
                             type='submit',
                             n_col=2,
                             ),
                    ],
                   ],
            )

        #faelle = ('fn', 'vn', 'na', 'gb', 'fallbeginn', 'fallende', 'mitarbeiter', 'fs', 'jgh')
        monats_ergebnisse, quartals_ergebnisse, gesamt_ergebnisse = \
                           self.get_neumelde_abschluss_daten(jahr)
        report = h.FieldsetDataTable(
            legend='Neumeldungen und Abschlüsse %s' % jahr,
            headers=('Monat', 'Laufende am Monatsende', 'Neu', 'davon ASD', 'Hauptfall',
                     'Geschwisterfall', 'abgeschl. Bundesstatistik'),
            daten=[[h.String(string=m[0]),
                    h.String(string=m[1]),
                    h.String(string=m[2]),
                    h.String(string=m[3]),
                    h.String(string=m[4]),
                    h.String(string=m[5]),
                    h.String(string=m[6]),
            ] for m in monats_ergebnisse] +
            [[h.String(string='Quartal %s' % m[0],
                      class_='tabledatabold'),
             h.String(string=''),
             h.String(string=m[1],
                      class_='tabledatabold'),
             h.String(string=m[2],
                      class_='tabledatabold'),
             h.String(string=m[3],
                      class_='tabledatabold'),
             h.String(string=m[4],
                      class_='tabledatabold'),
             h.String(string=m[5],
                      class_='tabledatabold'),
             ] for m in quartals_ergebnisse] +
            [[h.String(string='Gesamt',
                      class_='tabledatabold'),
             h.String(string=''),
             h.String(string=gesamt_ergebnisse[0],
                      class_='tabledatabold'),
             h.String(string=gesamt_ergebnisse[1],
                      class_='tabledatabold'),
             h.String(string=gesamt_ergebnisse[2],
                      class_='tabledatabold'),
             h.String(string=gesamt_ergebnisse[3],
                      class_='tabledatabold'),
             h.String(string=gesamt_ergebnisse[4],
                      class_='tabledatabold'),
             ]],
            )
        res = h.FormPage(
            title='Neumelde- und Abschlusszahlen',
            name='neumelde',action="abfr4",method="post",
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ),
            hidden=(),
            rows=(self.get_auswertungs_menu(),
                  anzeige,
                  report,
                  ),
            )
        return res.display()
Example #5
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()
Example #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
                    )
 def processForm(self, REQUEST, RESPONSE):
     #print 'FORM', self.form
     welche = self.form.get('w')
     ohne_bk_raus = self.form.get('ohne_bk_raus')
     von_jahr = self.form.get('von_jahr')
     bis_jahr = self.form.get('bis_jahr')
     if bis_jahr:
         bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
     else:
         bis_jahr = today().year
     von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr)
     if von_jahr > bis_jahr:
         von_jahr = bis_jahr
     stz = check_list(self.form, 'stz', 'Keine Stelle')
     item_auswahl = check_list(self.form, 'item_auswahl', 'Bitte gewünschte Auszählung ankreuzen.')
     teilm = self.form.get('teilm')
     if teilm:
         abfr = Abfrage(teilm)
         query = Query(abfr)
     else:
         query = Query()
     fs, jgh, jgh07 = self.check_params(von_jahr, bis_jahr, stz, item_auswahl, query, welche)
     if fs:
         fs_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche,
                                           FachstatistikList, ohne_bk_raus)
     if jgh:
         jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche,
                                            JugendhilfestatistikList, ohne_bk_raus)
     if jgh07:
         jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche,
                                            Jugendhilfestatistik2007List, ohne_bk_raus)
     if fs and (jgh or jgh07):
         # beide nötig: erzeugt wird eine Liste von Paaren (fs, jgh) für jeden Fall
         # für den beide Statistiken vorliegen
         ggl = self.join_fs_jgh_list(fs_ggl, jgh_ggl)
         #ggl = ggl*500  # Performance bei längeren Listen? ---> ok, 3sec bei 3000 Fälle
         #ggl = ggl*5000 # Performance bei längeren Listen? ---> ok, 26sec bei 30000 Fälle
     elif fs:
         ggl = fs_ggl
     else:
         ggl = jgh_ggl
     anzeige_gg = self.get_grundgesamtheit_anzeige(stz, von_jahr, bis_jahr, welche,
                                                   fs, jgh, jgh07, len(ggl), ohne_bk_raus)
     
     if not ggl:
         raise EE("Keine Datensätze für die gewünschte Grundgesamtheit:"
                  "\n\n%s\n und %s" % (anzeige_gg[0], anzeige_gg[1]))
     if query.always_true():
         ggl_teilm = ggl
     else:
         def qfilter(el):
             return query.test(el)
         #ggl_teilm = ggl.filter(qfilter)
         ggl_teilm = [el for el in ggl if(qfilter(el))]
         if not ggl_teilm:
             raise EE("Keine Datensätze für Teilmenge '%s'" % abfr['name'])
     return self._display_ergebnis(
         ggl_teilm,
         anzeige_gg=anzeige_gg,
         query=query,
         item_auswahl=item_auswahl,
         )
Example #8
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()
Example #9
0
 def processForm(self, REQUEST, RESPONSE):
     #print self.form
     alter = self.form.get('alter')
     if alter == None:
         alter = config.LOESCHFRIST
     else:
         alter = check_int_not_empty(
         self.form, 'alter', 'Fehler im Alter in Monaten')
         if alter < config.LOESCHFRIST:
             raise EE('Löschfrist beträgt mindestens %s Monate' % config.LOESCHFRIST)
     aufbew = self.form.get('aufbew')
     if aufbew == None:
         aufbew = cc('aufbew', '1')
     else:
         aufbew = check_code(self.form, 'aufbew', 'aufbew',
                             'Fehler in Aufbewahrungskategorie')
     op = self.form.get('op')
     rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '')
     if op == 'Endgültig löschen' and rm:
         hidden = [('rmak', r) for r in rm] + [('op', 'loeschen_confirmed')]
         return h.SubmitOrBack(
             legend='Endgültig löschen',
             action='rmakten2',
             method='post',
             hidden=hidden,
             zeilen=("Sollen die markierten Akten endgültig gelöscht werden?",
                     )
             ).display()
     alter_und_kategorie = h.FieldsetFormInputTable(
         name="rmaktenanzeigen",
         action="rmakten",
         method="post",
         hidden = (),
         legend='Alter und Kategorie der zu löschenden Akten wählen',
         daten=[[h.SelectItem(label='Aufbewahrungskategorie',
                              name='aufbew',
                              options=self.for_kat('aufbew',
                                                   sel=aufbew or cc('aufbew', '1')),
                              ),
                 h.TextItem(label='Monate seit Abschluss des letzten Falls',
                            name='alter',
                            value=alter or '',
                            class_='textboxsmall',
                            maxlength=3,
                            tip='Mindesanzahl der Monate seit Abschluss des letzten Falls'
                            ),
                 ],
                [h.Dummy(n_col=4)],
                [h.Button(value="Anzeigen",
                          name='op',
                          tip="Akten der gewählten Kategorie und des gewählten Alters anzeigen",
                          type='submit',
                          n_col=4,
                          ),
                 ],
                ],
         )
     if alter and aufbew:
         rmdatum = today().add_month(-(alter+1)) # damit immer mindestens die Anzahl Monate
                                                 # dazwischen liegt
         #print 'LOESCHDATUM', rmdatum
         alle_faelle = FallList(
             where = 'zday <= %(year)s and zdam <= %(month)s and zday > 0'
             % rmdatum)
         faelle = [f for f in alle_faelle
                   if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']]
         akten = h.FieldsetFormDataTable(
             name="rmakten",
             #action="abfragedef",
             action="rmakten",
             method="post",
             hidden = (),
             legend='Akten zum löschen auswählen (Statistiken bleiben erhalten)',
             headers=('Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss', '', 'Löschen'),
             daten=[[h.String(string=fall['akte__na']),
                     h.String(string=fall['akte__vn']),
                     h.String(string=fall['akte__gb']),
                     h.Datum(date=fall.getDate('zda')),
                     h.CheckItem(label='',
                                 name='rmak',
                                 value=fall['akte_id'],
                                 checked=False,
                                 tip='Hier markieren, um die Akte endgültig zu löschen',
                                 ),
                     ] for fall in faelle],
             no_button_if_empty=True,
             button=h.Button(value="Endgültig löschen",
                        name='op',
                        tip="Markierte endgültig Akten löschen",
                        type='submit',
                        class_='buttonbig',
                        n_col=6,
                  ),
             empty_msg="Keine Akten gefunden.",
             )
         
     else:
         akten = None
     res = h.Page(
         title='Akten löschen nach Ablauf der Löschfrist',
         breadcrumbs = (('Aministratorhauptmenü', 'menu'),
                        ),
         rows=(self.get_hauptmenu(),
               alter_und_kategorie,
               akten,
               ),
         )
     return res.display()
Example #10
0
 def processForm(self, REQUEST, RESPONSE):
     #print 'FORM', self.form
     von_jahr = self.form.get('von_jahr')
     bis_jahr = self.form.get('bis_jahr')
     if bis_jahr:
         bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
     else:
         bis_jahr = today().year
     von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr)
     if von_jahr > bis_jahr:
         von_jahr = bis_jahr
     stellen_ids = [int(id) for id in check_list(self.form, 'stz', 'Keine Stelle',
                                                 [self.stelle['id']])]
     quartal = self.form.get('quartal')
     if quartal:
         quartal = check_int_not_empty(self.form, 'quartal', 'Fehler im Quartal')
         if von_jahr != bis_jahr:
             raise EE('Quartalsauswertungen nur in einem Jahr möglich')
     else:
         quartal == None
     mitarbeiter, res = self.count(stellen_ids, von_jahr, bis_jahr, quartal)
     aktivitaets_arten = [c['code'] for c in get_codes('fuabs')]
     def row(name, tupl):
         netto, brutto = tupl
         row = [h.String(string=name)]
         for ka in aktivitaets_arten:
             row.append(h.String(string="%s / %s" %
                                 (netto[ka], brutto[ka]),
                                 tip='Netto/Brutto')
                        )
         return row
     mitarbeiter_daten = [row(m['name'], res[m['id']])
                          for m in mitarbeiter]
     stellen_row = row(', '.join([Code(s)['name'] for s in stellen_ids]),
                       res['summe'])
     headers = [''] + [c['name'] for c in get_codes('fuabs')]
     
     fuer = ''
     if von_jahr < bis_jahr:
         fuer += " für %(von_jahr)s bis %(bis_jahr)s" % locals()
     else:
         fuer += " für %(bis_jahr)s" % locals()
     if quartal:
         fuer += " Quartal %(quartal)s" % locals()
     tabelle_mitarbeiter = h.FieldsetDataTable(
         legend='Zeiten für fallunabhängige Aktivitäten Mitarbeiter' + fuer,
         headers=headers,
         daten=mitarbeiter_daten,
         )
     tabelle_stellen = h.FieldsetDataTable(
         legend='Zeiten für fallunabhängige Aktivitäten summiert für Stellen' + fuer,
         headers=headers,
         daten=[stellen_row],
         )
     res = h.FormPage(
         name="fuaform",action="fuabsabfr",method="post",
         title='Auswertung fallunabhängige Aktivitäten',
         breadcrumbs = (('Hauptmenü', 'menu'),
                        ),
         hidden = (),
         rows=(self.get_auswertungs_menu(),
               self.grundgesamtheit(von_jahr=von_jahr,
                                    bis_jahr=bis_jahr,
                                    quartal=quartal,
                                    stellen_ids=stellen_ids,
                                    legend='Jahr und Stelle wählen',
                                    submit_value='Anzeigen'),
               tabelle_mitarbeiter,
               tabelle_stellen,
               ),
         )
     return res.display()
Example #11
0
 def processForm(self, REQUEST, RESPONSE):
     #print self.form
     alter = self.form.get('alter')
     if alter == None:
         alter = config.LOESCHFRIST
     else:
         alter = check_int_not_empty(
         self.form, 'alter', 'Fehler im Alter in Monaten')
         if alter < config.LOESCHFRIST:
             raise EE('Löschfrist beträgt mindestens %s Monate' % config.LOESCHFRIST)
     aufbew = self.form.get('aufbew')
     if aufbew == None:
         aufbew = cc('aufbew', '1')
     else:
         aufbew = check_code(self.form, 'aufbew', 'aufbew',
                             'Fehler in Aufbewahrungskategorie')
     op = self.form.get('op')
     rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '')
     if op == 'Endgültig löschen' and rm:
         hidden = [('rmak', r) for r in rm] + [('op', 'loeschen_confirmed')]
         return h.SubmitOrBack(
             legend='Endgültig löschen',
             action='rmakten2',
             method='post',
             hidden=hidden,
             zeilen=("Sollen die markierten Akten endgültig gelöscht werden?",
                     )
             ).display()
     alter_und_kategorie = h.FieldsetFormInputTable(
         name="rmaktenanzeigen",
         action="rmakten",
         method="post",
         hidden = (),
         legend='Alter und Kategorie der zu löschenden Akten wählen',
         daten=[[h.SelectItem(label='Aufbewahrungskategorie',
                              name='aufbew',
                              options=self.for_kat('aufbew',
                                                   sel=aufbew or cc('aufbew', '1')),
                              ),
                 h.TextItem(label='Monate seit Abschluss des letzten Falls',
                            name='alter',
                            value=alter or '',
                            class_='textboxsmall',
                            maxlength=3,
                            tip='Mindesanzahl der Monate seit Abschluss des letzten Falls'
                            ),
                 ],
                [h.Dummy(n_col=4)],
                [h.Button(value="Anzeigen",
                          name='op',
                          tip="Akten der gewählten Kategorie und des gewählten Alters anzeigen",
                          type='submit',
                          n_col=4,
                          ),
                 ],
                ],
         )
     if alter and aufbew:
         rmdatum = today().add_month(-(alter+1)) # damit immer mindestens die Anzahl Monate
                                                 # dazwischen liegt
         #print 'LOESCHDATUM', rmdatum
         #alle_faelle = FallList(
         #    where = 'zday <= %(year)s and zdam <= %(month)s and zday > 0'
         #    % rmdatum)
         alle_faelle = FallList(
             where = '(zday < %(year)s or (zday = %(year)s and zdam <= %(month)s)) and zday > 0'
                % rmdatum, 
             order = 'zday, zdam, zdad')
         # Hier gab es einen Fehler (in Reinickendorf):
         # AttributeError: Could not resolve field 'akte__letzter_fall' for instance of 'Fall'
         # Daher wurde nichts zum löschen angezeigt
         # faelle = [f for f in alle_faelle
         #           if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']]
         faelle = []
         for f in alle_faelle:
             try:
                 if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']:
                     faelle.append(f)
             except Exception, e:
                 t = sys.exc_info()[0]
                 logging.exception("Interner Fehler: %s: %s", t, e)
                 logging.exception("  Falle ohne Akte? fall_id=%s" % f['id'])
         akten = h.FieldsetFormDataTable(
             name="rmakten",
             #action="abfragedef",
             action="rmakten",
             method="post",
             hidden = (),
             legend='Akten zum löschen auswählen (Statistiken bleiben erhalten)',
             headers=('Fallnummer', 'Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss', '', 'Löschen'),
             daten=[[h.String(string=fall['fn']),
                     h.String(string=fall['akte__na']),
                     h.String(string=fall['akte__vn']),
                     h.String(string=fall['akte__gb']),
                     h.Datum(date=fall.getDate('zda')),
                     h.CheckItem(label='',
                                 name='rmak',
                                 value=fall['akte_id'],
                                 checked=False,
                                 tip='Hier markieren, um die Akte endgültig zu löschen',
                                 ),
                     ] for fall in faelle],
             no_button_if_empty=True,
             button=h.Button(value="Endgültig löschen",
                        name='op',
                        tip="Markierte endgültig Akten löschen",
                        type='submit',
                        class_='buttonbig',
                        n_col=6,
                  ),
             empty_msg="Keine Akten gefunden.",
             )
Example #12
0
 def processForm(self, REQUEST, RESPONSE):
     jahr = check_int_not_empty(self.form, "jahr", "Fehler im Jahr", "")
     if not jahr:
         jahr = today().year
     anzeige = h.FieldsetInputTable(
         legend="Jahr wählen",
         daten=[
             [
                 h.SelectItem(
                     label="Jahr",
                     name="jahr",
                     class_="listbox45",
                     tip="Klientenzahl pro Mitarbeiter für das gewählte Jahr",
                     options=self.for_jahre(sel=jahr),
                 ),
                 h.Button(
                     value="Anzeigen",
                     name="op",
                     tip="Klientenanzahl pro Mitarbeiter anzeigen",
                     type="submit",
                     n_col=2,
                 ),
             ]
         ],
     )
     mitarbeiter_ergebnisse, gesamt = self.get_mitarbeiter_ergebnisse(jahr)
     report = h.FieldsetDataTable(
         legend="Neumeldungen und Abschlüsse pro Mitarbeiter %s" % jahr,
         headers=("Mitarbeiter", "Neu", "davon Fallbeginn", "Laufend", "Beendet", "davon z.d.A."),
         daten=[
             [
                 h.String(string=m[0]),
                 h.String(string=m[1], tip="Zuständigkeit neu übernommen"),
                 h.String(string=m[2], tip="Zuständigkeit für neuen Fall übernommen"),
                 h.String(string=m[3], tip="Laufende Fälle am Ende des Jahres"),
                 h.String(string=m[4], tip="Zuständigkeit beendet"),
                 h.String(string=m[5], tip="Zuständigkeitsende durch Fallabschluss"),
             ]
             for m in mitarbeiter_ergebnisse
         ]
         + [
             [
                 h.String(string="Gesamt", class_="tabledatabold"),
                 h.String(string=gesamt[0], class_="tabledatabold", tip="Zuständigkeit neu übernommen"),
                 h.String(
                     string=gesamt[1], class_="tabledatabold", tip="Zuständigkeit für neuen Fall übernommen"
                 ),
                 h.String(string=gesamt[2], class_="tabledatabold", tip="Laufende Fälle am Ende des Jahres"),
                 h.String(string=gesamt[3], class_="tabledatabold", tip="Zuständigkeit beendet"),
                 h.String(string=gesamt[4], class_="tabledatabold", tip="Zuständigkeitsende durch Fallabschluss"),
             ]
         ],
     )
     res = h.FormPage(
         title="Neumeldungen und Abschlüsse pro Mitarbeiter",
         name="neumelde",
         action="abfr5",
         method="post",
         breadcrumbs=(("Hauptmenü", "menu"),),
         hidden=(),
         rows=(self.get_auswertungs_menu(), anzeige, report),
     )
     return res.display()
Example #13
0
    def processForm(self, REQUEST, RESPONSE):
        jahr = check_int_not_empty(self.form, "jahr", "Fehler im Jahr", "")
        if not jahr:
            jahr = today().year
        anzeige = h.FieldsetInputTable(
            legend="Jahr wählen",
            daten=[
                [
                    h.SelectItem(
                        label="Jahr",
                        name="jahr",
                        class_="listbox45",
                        tip="Neumeldungen und Abschlüsse für das gewählte Jahr",
                        options=self.for_jahre(sel=jahr),
                    ),
                    h.Button(
                        value="Anzeigen", name="op", tip="Neumeldungen und Abschlüsse anzeigen", type="submit", n_col=2
                    ),
                ]
            ],
        )

        # faelle = ('fn', 'vn', 'na', 'gb', 'fallbeginn', 'fallende', 'mitarbeiter', 'fs', 'jgh')
        monats_ergebnisse, quartals_ergebnisse, gesamt_ergebnisse = self.get_neumelde_abschluss_daten(jahr)
        report = h.FieldsetDataTable(
            legend="Neumeldungen und Abschlüsse %s" % jahr,
            headers=(
                "Monat",
                "Laufende am Monatsende",
                "Neu",
                "davon ASD",
                "Hauptfall",
                "Geschwisterfall",
                "abgeschl. Bundesstatistik",
                "davon noch ohne z.d.A",
            ),
            daten=[
                [
                    h.String(string=m[0]),
                    h.String(string=m[1]),
                    h.String(string=m[2]),
                    h.String(string=m[3]),
                    h.String(string=m[4]),
                    h.String(string=m[5]),
                    h.String(string=m[6]),
                    h.String(string=m[7]),
                ]
                for m in monats_ergebnisse
            ]
            + [
                [
                    h.String(string="Quartal&nbsp;%s" % m[0], class_="tabledatabold"),
                    h.String(string=""),
                    h.String(string=m[1], class_="tabledatabold"),
                    h.String(string=m[2], class_="tabledatabold"),
                    h.String(string=m[3], class_="tabledatabold"),
                    h.String(string=m[4], class_="tabledatabold"),
                    h.String(string=m[5], class_="tabledatabold"),
                    h.String(string=""),
                ]
                for m in quartals_ergebnisse
            ]
            + [
                [
                    h.String(string="Gesamt", class_="tabledatabold"),
                    h.String(string=""),
                    h.String(string=gesamt_ergebnisse[0], class_="tabledatabold"),
                    h.String(string=gesamt_ergebnisse[1], class_="tabledatabold"),
                    h.String(string=gesamt_ergebnisse[2], class_="tabledatabold"),
                    h.String(string=gesamt_ergebnisse[3], class_="tabledatabold"),
                    h.String(string=gesamt_ergebnisse[4], class_="tabledatabold"),
                    h.String(string=""),
                ]
            ],
        )
        res = h.FormPage(
            title="Neumelde- und Abschlusszahlen",
            name="neumelde",
            action="abfr4",
            method="post",
            breadcrumbs=(("Hauptmenü", "menu"),),
            hidden=(),
            rows=(self.get_auswertungs_menu(), anzeige, report, self.get_neumelde_nach_region_tabelle(jahr)),
        )
        return res.display()
Example #14
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
        )
    def processForm(self, REQUEST, RESPONSE):
        #print 'FORM', self.form
        von_jahr = self.form.get('von_jahr')
        bis_jahr = self.form.get('bis_jahr')
        if bis_jahr:
            bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
        else:
            bis_jahr = today().year
        von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr)
        if von_jahr > bis_jahr:
            von_jahr = bis_jahr
#         stellen_ids = [int(id) for id in check_list(self.form, 'stz', 'Keine Stelle',
#                                                     [self.stelle['id']])]
        stellen_ids = [self.stelle['id']]
        quartal = self.form.get('quartal')
        if quartal:
            quartal = check_int_not_empty(self.form, 'quartal', 'Fehler im Quartal')
            if von_jahr != bis_jahr:
                raise EE('Quartalsauswertungen nur in einem Jahr möglich')
        else:
            quartal == None
        monat = self.form.get('monat')
        if monat:
            monat = check_int_not_empty(self.form, 'monat', 'Fehler im Monat')
            if von_jahr != bis_jahr:
                raise EE('Monatsauswertungen nur in einem Jahr möglich')
        else:
            monat == None
        if monat and quartal:
            raise EE('Monats- und Quartalsauswertung nicht gleichzeitig möglich')
        mitarbeiter, res = self.count(stellen_ids, von_jahr, bis_jahr,
                                      quartal, monat)
        kontakt_arten = [c['code'] for c in get_codes('kabs')]
        def row(name, tupl):
            netto, brutto = tupl
            row = [h.String(string=name)]
            summe_netto = 0
            summe_brutto = 0
            for ka in kontakt_arten:
                summe_netto += netto[ka]
                summe_brutto += brutto[ka]
                row.append(h.String(string="%s / %s" %
                                    (netto[ka], brutto[ka]),
                                    tip='Netto/Brutto')
                           )
            row.append(h.String(string="%s / %s" %
                                    (summe_netto, summe_brutto),
                                    tip='Netto/Brutto')
                           )
            return row
        mitarbeiter_daten = [row(m['name'], res[m['id']])
                             for m in mitarbeiter]
        stellen_row = row(', '.join([Code(s)['name'] for s in stellen_ids]),
                          res['summe'])
        headers = [''] + [c['name'] for c in get_codes('kabs')] + ['Summe']
        fuer = ''
        if von_jahr < bis_jahr:
            fuer += " für %(von_jahr)s bis %(bis_jahr)s" % locals()
        else:
            fuer += " für %(bis_jahr)s" % locals()
        if quartal:
            fuer += " Quartal %(quartal)s" % locals()
        if monat:
            fuer += " Monat %(monat)s" % locals()
        tabelle_mitarbeiter = h.FieldsetDataTable(
            legend='Beratungskontaktzeiten Mitarbeiter' + fuer,
            headers=headers,
            daten=mitarbeiter_daten,
            )
        if self.mitarbeiter['benr__code'] == 'bearb':
            tabelle_stellen = None
        else:
            tabelle_stellen = h.FieldsetDataTable(
                legend='Beratungskontaktzeiten summiert über Mitarbeiter' + fuer,
                headers=headers,
                daten=[stellen_row],
                )
        res = h.FormPage(
            title='Auswertung Beratungskontaktzeiten',
            name="bkontform",action="bkontbsabfr",method="post",
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ),
            hidden = (),
            rows=(self.get_auswertungs_menu(),
                  self.grundgesamtheit(von_jahr=von_jahr,
                                       bis_jahr=bis_jahr,
                                       quartal=quartal,
                                       monat=monat,
                                       show_monat=True,
                                       show_stelle = False,
                                       stellen_ids=stellen_ids,
                                       legend='Zeitraum wählen',
                                       submit_value='Anzeigen'),
                  tabelle_mitarbeiter,
                  tabelle_stellen,
                  ),
            )
        return res.display()
Example #16
0
    def processForm(self, REQUEST, RESPONSE):
        jahr = check_int_not_empty(self.form, 'jahr', "Fehler im Jahr", '')
        if not jahr:
            jahr = today().year
        anzeige = h.FieldsetInputTable(
            legend='Jahr wählen',
            daten=[[h.SelectItem(label='Jahr',
                                 name='jahr',
                                 class_='listbox45',
                                 tip='Wartezeiten für das gewählte Jahr',
                                 options=self.for_jahre(sel=jahr),
                                 ),
                    h.Button(value="Anzeigen",
                             name='op',
                             tip="Tabelle mit Wartezeiten anzeigen",
                             type='submit',
                             n_col=2,
                             ),
                    ],
                   ],
            )
        # Fälle ermitteln, wo der Leistungsbeginn in dem gewählten
        # Jahr liegt
        faelle = self.beratungen(welche='alle',
                                 stelle=self.stelle,
                                 ab_jahr=jahr-1, # Vorjahr mit einbeziehen
                                 bis_jahr=jahr,
                                 sort=('bg',))
        faelle = faelle.filter(lambda x: x['leistungsbeginn'].year==jahr)

        auszaehlung = BereichsKategorieAuszaehlung(faelle,
                                                   'wartezeit', 
                                                   'wartez',
                                                   title='Verteilung der Wartezeiten',
                                                   )
        ausz_res = auszaehlung.get_result()
        summe_haeufigkeiten = sum([m[1] for m in ausz_res])
        summe_prozent = sum([m[2] for m in ausz_res])
        haeufigkeiten = h.FieldsetDataTable(
            legend='Wartezeiten für Fälle mit erster Leistung im Jahr %s' % jahr,
            headers=('', 'Häufigkeit', 'Prozent',),
            daten=[[h.String(string=m[0]),
                    h.String(string=m[1],
                             class_="tabledataright",),
                    h.String(string="%.2f" % m[2],
                             class_="tabledataright",),
            ] for m in ausz_res] + 
            [[h.String(string='Summe',
                       class_='tabledatabold',
                       ),
              h.String(string=summe_haeufigkeiten,
                       class_='tabledataboldright',
                       align="right",
                       ),
              h.String(string="%.2f" % summe_prozent,
                       align="right",
                       class_='tabledataboldright',
                       ),
              ]
             ]
            )

        faelle.sort('wartezeit')
#         for f in faelle:
#             print f['fn'], f['bg'], f['leistungsbeginn'], f['wartezeit']
        if len(faelle) > 0:
            median = faelle[(len(faelle)/2)]['wartezeit']
            mittelwert = sum([f['wartezeit'] for f in
                              faelle])/float(len(faelle))
        else:
            median = 'NA'
            mittelwert = 'NA'
        
        mittel = h.FieldsetDataTable(
            legend='Mittelwert und Median der Wartezeiten in '
            'Kalendertagen für Fälle mit erster Leistung im Jahr %s' % jahr,
            daten=[[h.String(string='Mittelwert (n=%s)' % len(faelle),
                             class_='tabledatabold',
                             ),
                    h.String(string="%s" % (isinstance(mittelwert,
                                                       (int,long,float))
                                            and ("%.2f" % mittelwert)
                                            or mittelwert,),
                             align="right",
                             class_='tabledataboldright',
                             ),
                    ],
                   [h.String(string='Median (n=%s)' % len(faelle),
                             class_='tabledatabold',
                             ),
                     h.String(string="%s" % median,
                              align="right",
                              class_='tabledataboldright',
                              ),
                    ],
                   ]
            )
        res = h.FormPage(
            title='Wartezeiten',
            name='wartezeiten',action="wartezeiten",method="post",
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ),
            hidden=(),
            rows=(self.get_auswertungs_menu(),
                  anzeige,
                  haeufigkeiten,
                  mittel,
                  ),
            )
        return res.display()
    def processForm(self, REQUEST, RESPONSE):
        #print 'FORM', self.form
        welche = self.form.get('w')
        von_jahr = self.form.get('von_jahr')
        bis_jahr = self.form.get('bis_jahr')
        if bis_jahr:
            bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
        else:
            bis_jahr = today().year
        von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr)
        if von_jahr > bis_jahr:
            von_jahr = bis_jahr

##         von_jahr = self.form.get('von_jahr')
##         bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
##         if not von_jahr or von_jahr > bis_jahr:
##             von_jahr = bis_jahr
# TODO
##         if von_jahr <= 2006 and bis_jahr >= 2007:
##             return h.Meldung(legend='Ungültige Jahresangaben',
##                              zeilen=('Bitte entweder nur Jahre bis 2006 (alte Bundesstatistik)',
##                                      ' oder nur Jahre ab 2007 (neue Bundesstatistik) angeben!',
##                                      ),
##                              ).display()
        stz = check_list(self.form, 'stz', 'Keine Stelle')
        item_auswahl = check_list(self.form, 'item_auswahl', 'Bitte gewünschte Auszählung ankreuzen.')
        teilm = self.form.get('teilm')
        if teilm:
            abfr = Abfrage(teilm)
            query = Query(abfr)
        else:
            query = Query()
        fs, jgh, jgh07 = self.check_params(von_jahr, bis_jahr, stz, item_auswahl, query)
##         # jgh-Liste dabei?
##         jgh = 'jgh_gesamt' in item_auswahl or query.jgh
##         # fs-Liste dabei?
##         fs = 'fs_gesamt' in item_auswahl or query.fs
##         #############
##         # Statistik nur für Fälle, wo beide Formulare ausgefüllt sind
##         # und wo bei der Bundesstatistik das Endejahr eingetragen ist.
##         fs = jgh = True
##         #############
##         if not jgh and not fs:
##             # Diese Annahme ist falsch für Teilmengenauswertung, weil manche sich
##             # auf jgh beziehen können.
##             # Bei Regionen problematisch, weil dadurch die GG festgelegt wird.
##             fs = True
        if fs:
            fs_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr,
                                              FachstatistikList)
        if jgh:
            jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr,
                                               JugendhilfestatistikList)
        if jgh07:
            jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr,
                                               Jugendhilfestatistik2007List)
        if fs and (jgh or jgh07):
            # beide nötig: erzeugt wird eine Liste von Paaren (fs, jgh) für jeden Fall
            # für den beide Statistiken vorliegen
            ggl = self.join_fs_jgh_list(fs_ggl, jgh_ggl)
            #ggl = ggl*500  # Performance bei längeren Listen? ---> ok, 3sec bei 3000 Fälle
            #ggl = ggl*5000 # Performance bei längeren Listen? ---> ok, 26sec bei 30000 Fälle
        elif fs:
            ggl = fs_ggl
        else:
            ggl = jgh_ggl
        anzeige_gg = self.get_grundgesamtheit_anzeige(stz, von_jahr, bis_jahr,
                                                      fs, jgh, jgh07, len(ggl))
        if not ggl:
            raise EE("Keine Datensätze für die gewünschte Grundgesamtheit:"
                     "\n\n%s\n%s" % anzeige_gg)
        if query.always_true():
            ggl_teilm = ggl
        else:
            def qfilter(el):
                return query.test(el)
            #ggl_teilm = ggl.filter(qfilter)
            ggl_teilm = [el for el in ggl if(qfilter(el))]
            if not ggl_teilm:
                raise EE("Keine Datensätze für Teilmenge '%s'" % abfr['name'])
        return self._display_ergebnis(
            ggl_teilm,
            anzeige_gg=anzeige_gg,
            query=query,
            item_auswahl=item_auswahl,
            )
Example #18
0
    def processForm(self, REQUEST, RESPONSE):
        jahr = check_int_not_empty(self.form, "jahr", "Fehler im Jahr", "")
        if not jahr:
            jahr = today().year
        anzeige = h.FieldsetInputTable(
            legend="Jahr wählen",
            daten=[
                [
                    h.SelectItem(
                        label="Jahr",
                        name="jahr",
                        class_="listbox45",
                        tip="Wartezeiten für das gewählte Jahr",
                        options=self.for_jahre(sel=jahr),
                    ),
                    h.Button(
                        value="Anzeigen", name="op", tip="Tabelle mit Wartezeiten anzeigen", type="submit", n_col=2
                    ),
                ]
            ],
        )
        # Fälle ermitteln, wo der Leistungsbeginn in dem gewählten
        # Jahr liegt
        faelle = self.beratungen(
            welche="alle", stelle=self.stelle, ab_jahr=jahr - 1, bis_jahr=jahr, sort=("bg",)  # Vorjahr mit einbeziehen
        )
        faelle = faelle.filter(lambda x: x["leistungsbeginn"].year == jahr)

        auszaehlung = BereichsKategorieAuszaehlung(faelle, "wartezeit", "wartez", title="Verteilung der Wartezeiten")
        ausz_res = auszaehlung.get_result()
        summe_haeufigkeiten = sum([m[1] for m in ausz_res])
        summe_prozent = sum([m[2] for m in ausz_res])
        haeufigkeiten = h.FieldsetDataTable(
            legend="Wartezeiten für Fälle mit erster Leistung im Jahr %s" % jahr,
            headers=("", "Häufigkeit", "Prozent"),
            daten=[
                [
                    h.String(string=m[0]),
                    h.String(string=m[1], class_="tabledataright"),
                    h.String(string="%.2f" % m[2], class_="tabledataright"),
                ]
                for m in ausz_res
            ]
            + [
                [
                    h.String(string="Summe", class_="tabledatabold"),
                    h.String(string=summe_haeufigkeiten, class_="tabledataboldright", align="right"),
                    h.String(string="%.2f" % summe_prozent, align="right", class_="tabledataboldright"),
                ]
            ],
        )

        faelle.sort("wartezeit")
        #         for f in faelle:
        #             print f['fn'], f['bg'], f['leistungsbeginn'], f['wartezeit']
        if len(faelle) > 0:
            median = faelle[(len(faelle) / 2)]["wartezeit"]
            mittelwert = sum([f["wartezeit"] for f in faelle]) / float(len(faelle))
        else:
            median = "NA"
            mittelwert = "NA"

        mittel = h.FieldsetDataTable(
            legend="Mittelwert und Median der Wartezeiten in "
            "Kalendertagen für Fälle mit erster Leistung im Jahr %s" % jahr,
            daten=[
                [
                    h.String(string="Mittelwert (n=%s)" % len(faelle), class_="tabledatabold"),
                    h.String(
                        string="%s"
                        % (isinstance(mittelwert, (int, long, float)) and ("%.2f" % mittelwert) or mittelwert,),
                        align="right",
                        class_="tabledataboldright",
                    ),
                ],
                [
                    h.String(string="Median (n=%s)" % len(faelle), class_="tabledatabold"),
                    h.String(string="%s" % median, align="right", class_="tabledataboldright"),
                ],
            ],
        )
        res = h.FormPage(
            title="Wartezeiten",
            name="wartezeiten",
            action="wartezeiten",
            method="post",
            breadcrumbs=(("Hauptmenü", "menu"),),
            hidden=(),
            rows=(self.get_auswertungs_menu(), anzeige, haeufigkeiten, mittel),
        )
        return res.display()