Exemplo n.º 1
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:
         where += " and (akte.vn like '%%%s%%' or akte.na like '%%%s%%')" % (klname, klname)
     if klvorname:
         where += " and (akte.vn like '%%%s%%')" % (klvorname,)
     if klnachname:
         where += " and (akte.na like '%%%s%%')" % (klnachname,)
     if klname or klvorname or klnachname:
         sort = ('akte__na', 'akte__vn', 'bgy', 'bgm', 'bgd')
     if fn:
         where += " and fall.fn like '%%%s%%'" % fn
         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
Exemplo n.º 2
0
 def beratungen(self, welche, mitarbeiter=None,
                stelle=None,
                ab_jahr=None,
                ab_fallnummer=None,
                sort=()):
     assert welche in ('laufend', 'abgeschlossen', 'alle')
     assert ab_jahr and ab_fallnummer or not ab_fallnummer
     where = 'fall.zday %s 0' % (welche=='laufend' and '=' or
                                 welche=='abgeschlossen' and '>' or
                                 welche=='alle' and '>='
                                 )
     # 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 mitarbeiter:
         where += ' and mitarbeiter.id=%s' % mitarbeiter['id']
     if stelle:
         where += ' and akte.stzbg=%s' % stelle['id']
     if ab_jahr:
         where += ' and fall.bgy >= %s' % ab_jahr
     fall_list = FallList(
         where=where,
         join=[('zustaendigkeit', 'zustaendigkeit.fall_id=fall.id'),
               ('akte', 'fall.akte_id=akte.id'),
               ('mitarbeiter', 'zustaendigkeit.mit_id=mitarbeiter.id')])
     if ab_jahr and ab_fallnummer:
         def ab_fn(fall):
             j = fall['bgy']
             c = fall['fn_count'] # Fallnummerzähler, definiert in ebapi.py
             return  j > ab_jahr or (j == ab_jahr and c >= ab_fallnummer)
         fall_list = fall_list.filter(ab_fn)
     fall_list.sort(*sort)
     return fall_list
Exemplo n.º 3
0
 def _get_gruppe_address_data_for_one(self, gruppe_id):
     """Eine dict pro Adresse. Mehrere dicts pro Teilnehmer.
     Zuerst die dict des Teilnehmers selber, dann der Klient, 
     falls nicht selber Teilnehmer, dann die übrigen 
     Bezugspersonen.
     """
     res = []
     gruppe = Gruppe(gruppe_id)
     # innerhalb einer Gruppe die Adressen eines Falles
     # nur einmal anzeigen
     fn2fall = {}
     teilnehmer = {}
     kl_teilnehmer = FallGruppeList(
         where='gruppe_id=%s' % gruppe_id)
     bp_teilnehmer = BezugspersonGruppeList(
         where='gruppe_id=%s' % gruppe_id)
     # alle beteiligte Fälle ermitteln
     for kl in kl_teilnehmer:
         fall = kl['fall']
         fn = fall['fn']
         fn2fall[fn] = fall
         key = GruppeAddresse(rolle='Klient',
                              fallnummer=fn,
                              vorname=fall['akte__vn'],
                              nachname=fall['akte__na'],
                              ).key
         teilnehmer[key] = True
     for bpg in bp_teilnehmer:
         bp = bpg['bezugsp']            
         akte = bp['akte']
         fall =  akte['letzter_fall']
         fn = fall['fn']
         fn2fall[fn] = fall
         key = GruppeAddresse(rolle=bp['verw__name'],
                              fallnummer=fn,
                              vorname=bp['vn'],
                              nachname=bp['na'],
                              ).key
         teilnehmer[key] = True
     faelle = FallList(fn2fall.values())
     faelle.sort('bgy', 'bgm', 'bgd')
     for fall in faelle:
         ag = self._get_gruppen_adressen_pro_fall(fall, gruppe)
         for a in ag:
             if a.key in teilnehmer:
                 a.teilnehmer = 'ja'
         res += ag
     return res