예제 #1
0
 def beratungen_bezugsperson(self, mitarbeiter=None, bzpname=None):
     join=[('zustaendigkeit', 'zustaendigkeit.fall_id=fall.id'),
           ('akte', 'bezugsperson.akte_id=akte.id'),
           ('fall', 'fall.akte_id=akte.id'),
           ('mitarbeiter', 'zustaendigkeit.mit_id=mitarbeiter.id')]
     # nur die eigene Stelle
     where = "akte.stzbg=%s" % self.stelle['id']
     # nur die letzte Zuständigkeit deren Endedatum gleich dem ZDA-Datum ist
     where += """ and fall.zday = zustaendigkeit.ey and 
     fall.zdam = zustaendigkeit.em and 
     fall.zdad = zustaendigkeit.ed"""
     if bzpname:
         expr = escape('%' + bzpname + '%')
         where += " and (bezugsperson.vn like %s or bezugsperson.na like %s)" % \
                  (expr, expr)
     if mitarbeiter:
         where += " and mitarbeiter.id = %s" % mitarbeiter['id']
     bezugsperson_list = BezugspersonList(
         where=where,
         join=join,
         )
     sort = ('na', 'vn',
     'bezugsperson__akte__letzter_fall__bgy',
     'bezugsperson__akte__letzter_fall__bgm',
     'bezugsperson__akte__letzter_fall__bgd',
     )
     bezugsperson_list.sort(*sort)
     return bezugsperson_list
예제 #2
0
 def beratungen_gruppe(self,
                       welche=None,
                       mitarbeiter=None,
                       stelle=None,
                       ab_jahr=None,
                       grname=None):
     join=[('mitarbeitergruppe', 'gruppe.id=mitarbeitergruppe.gruppe_id'),
           ('mitarbeiter', 'mitarbeitergruppe.mit_id=mitarbeiter.id')]
     # nur die eigene Stelle
     where = []
     if stelle:
         where.append("gruppe.stz=%s" % stelle['id'])
     if ab_jahr:
         where.append("gruppe.bgy>=%s" % ab_jahr)
     if mitarbeiter:
         where.append("mitarbeiter.id=%s" % mitarbeiter['id'])
     if grname:
         expr = escape('%' + grname + '%')
         where.append("(gruppe.name like %s or gruppe.thema like %s)" % \
                  (expr, expr))
     if welche=='laufend':
         where.append('gruppe.ey=0')
     elif welche=='abgeschlossen':
         where.append('gruppe.ey>0')
     gruppe_list = GruppeList(
         where=' and '.join(where),
         join=join,
         )
     sort = ('bgy', 'bgm', 'bgd', 'name')
     gruppe_list.sort(*sort)
     return gruppe_list
예제 #3
0
 def beratungen_fall(self, mitarbeiter=None,
                     klname=None,
                     klvorname=None,
                     klnachname=None,
                     fn=None,
                     sort=()):
     join=[('zustaendigkeit', 'zustaendigkeit.fall_id=fall.id'),
           ('akte', 'fall.akte_id=akte.id'),
           ('mitarbeiter', 'zustaendigkeit.mit_id=mitarbeiter.id')]
     # nur die eigene Stelle
     where = "akte.stzbg=%s" % self.stelle['id']
     # nur die letzte Zuständigkeit deren Endedatum gleich dem ZDA-Datum ist
     where += """ and fall.zday = zustaendigkeit.ey and 
     fall.zdam = zustaendigkeit.em and 
     fall.zdad = zustaendigkeit.ed"""
     if klname:
         expr = escape('%' + klname + '%')
         where += " and (akte.vn like %s or akte.na like %s)" % \
         (expr, expr)
     if klvorname:
         expr = escape('%' + klvorname + '%')
         where += " and (akte.vn like %s)" % (expr,)
     if klnachname:
         expr = escape('%' + klnachname + '%')
         where += " and (akte.na like %s)" % (expr,)
     if klname or klvorname or klnachname:
         sort = ('akte__na', 'akte__vn', 'bgy', 'bgm', 'bgd')
     if fn:
         expr = escape('%' + fn + '%')
         where += " and fall.fn like %s" % expr
         sort = ('bgy', 'fn_count')
     if mitarbeiter:
         where += " and mitarbeiter.id = %s" % mitarbeiter['id']
     fall_list = FallList(
         where=where,
         join=join,
         )
     fall_list.sort(*sort)
     return fall_list
예제 #4
0
def get_strassen_list(form, exact=False):
    """Rückgabe: Exception: bei Fehlern in den Suchstrings
                 None: Keine Suchstrings
                 Sonst: die Liste der Ergebnisse, die leer sein kann"""
    #print 'GET_STRASSEN_LIST FORM', form
    if exact:
        joker = ''
    else:
        joker = '%'
    str_id = form.get('strid')
    str_felder = ('ort', 'plz', 'bezirk', 'samtgemeinde', 'ortsteil')
    where = []
    if str_id:
        where.append("id = %s" % str_id)
    for f in str_felder:
        val = form.get(f, '')
        if val:
            where.append("%s like %s" % (f, escape(val + joker)))
    str = check_strasse(form.get('str', ''))
    if str:
        where.append("name like %s" % (escape(str + joker)))
    hsnr  = check_hausnr(form.get('hsnr', ''))
    if hsnr.startswith('-'): # ausdrücklich keine Hausnummer
        where.append("von IS NULL and bis IS NULL")
    elif hsnr:
        gu = split_hausnummer(hsnr)[2]
        where.append("(von <= '%s' or von IS NULL)" % hsnr)
        where.append("(bis >= '%s' or bis IS NULL)" % hsnr)
        where.append("(gu = '%s' or gu IS NULL)" % gu)
    strassen_list = []
    if where:
        wherestr = ' and '.join(where)
        #print 'GET_STRASSEN_LIST WHERE', where
        strassen_list = StrassenkatalogNeuList(where=wherestr, order='ort, plz, name')
        return strassen_list
    else:
        return None
예제 #5
0
 def beratungen_bezugsperson(self, mitarbeiter=None, bzpname=None):
     join = [
         ("zustaendigkeit", "zustaendigkeit.fall_id=fall.id"),
         ("akte", "bezugsperson.akte_id=akte.id"),
         ("fall", "fall.akte_id=akte.id"),
         ("mitarbeiter", "zustaendigkeit.mit_id=mitarbeiter.id"),
     ]
     # nur die eigene Stelle
     where = "akte.stzbg=%s" % self.stelle["id"]
     # nur die letzte Zuständigkeit deren Endedatum gleich dem ZDA-Datum ist
     where += """ and fall.zday = zustaendigkeit.ey and 
     fall.zdam = zustaendigkeit.em and 
     fall.zdad = zustaendigkeit.ed"""
     if bzpname:
         expr = escape("%" + bzpname + "%")
         where += " and (bezugsperson.vn like %s or bezugsperson.na like %s)" % (expr, expr)
     if mitarbeiter:
         where += " and mitarbeiter.id = %s" % mitarbeiter["id"]
     bezugsperson_list = BezugspersonList(where=where, join=join)
     sort = ("na", "vn", "akte__letzter_fall__bgy", "akte__letzter_fall__bgm", "akte__letzter_fall__bgd")
     bezugsperson_list.sort(*sort)
     return bezugsperson_list
예제 #6
0
 def beratungen_gruppe(self, welche=None, mitarbeiter=None, stelle=None, ab_jahr=None, grname=None):
     join = [
         ("mitarbeitergruppe", "gruppe.id=mitarbeitergruppe.gruppe_id"),
         ("mitarbeiter", "mitarbeitergruppe.mit_id=mitarbeiter.id"),
     ]
     # nur die eigene Stelle
     where = []
     if stelle:
         where.append("gruppe.stz=%s" % stelle["id"])
     if ab_jahr:
         where.append("gruppe.bgy>=%s" % ab_jahr)
     if mitarbeiter:
         where.append("mitarbeiter.id=%s" % mitarbeiter["id"])
     if grname:
         expr = escape("%" + grname + "%")
         where.append("(gruppe.name like %s or gruppe.thema like %s)" % (expr, expr))
     if welche == "laufend":
         where.append("gruppe.ey=0")
     elif welche == "abgeschlossen":
         where.append("gruppe.ey>0")
     gruppe_list = GruppeList(where=" and ".join(where), join=join)
     sort = ("bgy", "bgm", "bgd", "name")
     gruppe_list.sort(*sort)
     return gruppe_list
예제 #7
0
 def processForm(self, REQUEST, RESPONSE):
     vorname = self.form.get('vorname', '')
     name = self.form.get('name', '')
     fallnummer = self.form.get('fallnummer', '')
     rest = self.form.get('rest', '')
     where = []
     altdaten = []
     if vorname:
         vorname_e = escape('%' + vorname + '%')
         where.append("vorname like %(vorname_e)s" % locals())
     if name:
         name_e = escape('%' + name + '%')
         where.append("name like %(name_e)s" % locals())
     if fallnummer:
         fallnummer_e = escape('%' + fallnummer + '%')
         where.append("fallnummer like %(fallnummer_e)s" % locals())
     if rest:
         rest_e = escape('%' + rest + '%')
         where.append("(strasse like %(rest_e)s or "
                      "ort like %(rest_e)s or "
                      "plz like %(rest_e)s or "
                      "memo like %(rest_e)s or "
                      "mitarbeiter like %(rest_e)s)" % locals())
     if where:
         altdaten = AltdatenList(where=' and '.join(where), order='name, vorname, fallnummer')
     aktuelle_daten = []
     if vorname or name:
         mitarbeiter = None
         if self.mitarbeiter['benr__code'] == 'bearb':
             mitarbeiter = self.mitarbeiter
         aktuelle_daten = self.beratungen_fall(mitarbeiter=mitarbeiter,
                                               klvorname=vorname,
                                               klnachname=name,
                                               )
     auswahl_kriterien = h.FieldsetFormInputTable(
         name="altlist",
         #action="abfragedef",
         action="altlist",
         method="post",
         hidden = (),
         legend='Suchkriterien eingeben',
         daten=[[h.TextItem(label='Vorname enthält',
                            name='vorname',
                            value=vorname,
                            tip='Groß/Kleinschreibung egal, kann mittendrin erscheinen',
                            ),
                 h.TextItem(label='Nachname enthält',
                            name='name',
                            value=name,
                            tip='Groß/Kleinschreibung egal, kann mittendrin erscheinen',
                            ),
                 ],
                [h.TextItem(label='Alte Fallnummer enthält',
                            name='fallnummer',
                            value=fallnummer,
                            tip='Groß/Kleinschreibung egal, kann mittendrin erscheinen',
                            ),
                 h.TextItem(label='Memo-, Mitarbeiter- oder Adressfeld enthält',
                            name='rest',
                            value=rest,
                            tip='Zeichenkette erscheint in einem der Felder',
                            ),
                 ],
                [h.Dummy(n_col=4)],
                [h.Button(value="Anzeigen",
                          name='op',
                          tip="Altdaten entsprechend den Suchkriterien anzeigen",
                          type='submit',
                          n_col=4,
                          ),
                 ],
                ],
         )
     daten = []
     for altd in altdaten:
         daten.append([h.String(string=altd['vorname']),
                       h.String(string=altd['name']),
                       h.String(string=altd['geburtsdatum']),
                       h.String(string=altd['geschlecht']),
                       h.String(string=altd['jahr']),
                       h.String(string=altd['fallnummer']),
                       h.String(string=altd['mitarbeiter']),
                       h.String(string="%(strasse)s %(hausnummer)s, %(plz)s %(ort)s" % altd),
                       h.String(string="%(telefon1)s, %(telefon2)s" % altd),
                       h.CheckItem(label='',
                                   name='uebern',
                                   value=altd['id'],
                                   checked=False,
                                   tip='Hier markieren, um die Daten in die Neuaufnahme zu übernehmen',
                                   ),
                       ])
         daten.append([h.String(string=altd['memo'],
                                n_col=9),
                       h.DummyItem(),
                       ])
         daten.append([h.Dummy(n_col=11),
                       ])
     altdaten_table = h.FieldsetFormDataTable(
         name="altdaten",
         #action="abfragedef",
         action="akteneu",
         method="post",
         hidden = (),
         legend='Altdaten passend zu den Suchkriterien',
         headers=('Vorname', 'Name', 'Geb.', 'm/w', 'Jahr', 'Fallnr.', 'Mitarbeiter',
                  'Adresse', 'Telefon', '', 'Übern.'),
         daten=daten,
         no_button_if_empty=False,
         buttons=[daten and h.Button(value="Übernehmen",
                           name='op',
                           tip="Markierten Datensatz für die Neuaufnahme übernehmen",
                           type='submit',
                           ) or None,
                  h.Button(value="Abbrechen",
                           name='op',
                           tip="Zurück zur Neuaufnahme ohne Datenübernahme",
                           type='button',
                           onClick="go_to_url('akteneu')",
                           ),
                  ],
         empty_msg="Keine passenden Altdaten gefunden.",
         )
     aktuelle_daten_table = h.FieldsetDataTable(
         legend='Klienten passend zu den Suchkriterien Vorname/Nachname',
         headers=('Fallnr', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A.', 'Zuständig',),
         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']),
         ] for fall in aktuelle_daten],
         empty_msg="Keine Klienten gefunden.",
         )
     res = h.Page(
         title='Altdaten',
         breadcrumbs = (('Hauptmenü', 'menu'),
                        ('Neue Akte anlegen', 'akteneu'),
                        ),
         rows=(self.get_hauptmenu(),
               auswahl_kriterien,
               altdaten_table,
               aktuelle_daten_table,
               ),
         )
     return res.display()