def processForm(self, REQUEST, RESPONSE):
     if self.form.has_key('fallid'):
         fallid = self.form.get('fallid')
     else:
         self.last_error_message = "Keine ID für den Fall erhalten"
         return self.EBKuSError(REQUEST, RESPONSE)
     fall = Fall(fallid)
     benr = self.mitarbeiter['benr__code']
     if benr in ('verw',):
         # Verwaltungskraft kann Einträge für andere Mitarbeiter machen
         mitarbeiter = [fall['zustaendig__mit']]
     else:
         mitarbeiter = [self.mitarbeiter]
     bkont = Beratungskontakt()
     bkont.init(
         id=Beratungskontakt().getNewId(),
         faelle=[fall],
         mitarbeiter=mitarbeiter,
         teilnehmer_bs=cc('teilnbs', '0'),
         anzahl=1,
         art_bs=cc('kabs', '1'),
         art=None,
         dauer='',
         offenespr=cn('ja_nein', 'nein'),
         no='',
         stz=self.stelle['id'],
        )
     bkont.setDate('k', today())
     return self._process(REQUEST, RESPONSE,
                          title="Neuen Beratungskontakt eintragen",
                          legendtext="Neuen Beratungskontakt eintragen für",
                          fall=fall,
                          bkont=bkont,
                          file='bkonteinf',
                          )
 def count_row(self, netto, brutto, bkont):
     "Einen Kontakt auszählen"
     art = bkont['art_bs__code']
     dauer = bkont['dauer']
     netto[art] += dauer
     brutto[art] += bkont['brutto']
     if bkont['offenespr'] == cn('ja_nein', 'ja'):
         # Offene Sprechstunde
         netto['offenespr'] += dauer
         brutto['offenespr'] += bkont['brutto']
 def _item(self, data, jgh):
     if isinstance(data, basestring):
         return fb_zwischenueberschrift_t % data
     assert isinstance(data, dict)
     item = data.copy()
     label = item['typ'][0]
     if label == 'kat':
         kat_code = item['typ'][1]
         name = item['name']
         default = jgh.get(name)
         if name == 'gs': # Geschlecht readonly
             # Wert muss da sein! Nur f黵 Geschlecht gedacht.
             item['value'] = Code(jgh[name])['name']
             item['name'] = '' # readonly feld
             item['ro'] = 'readonly'
             item['tip'] = ''
             return fb_text_item_t % item
         if not default:
             default = item.get('default')
             if default and default != ' ':
                 default = cc(kat_code, default)
         codes = get_codes(kat_code)
         #item['options'] = mkselstr(fb_option_t, codes, 'id', default)
         no_empty_option = item.get('no_empty_option')
         item['options'] = ''.join(make_option_list(codes, default, no_empty_option))
         maxl = max([len(c['name']) for c in codes])
         if maxl < 60:
             w = "%sem" % max(maxl, 3)
         else:
             w = "100%"
         item['width'] = w
         if name == 'hda':
             item['onChange'] = """onChange="del_anzahl_kontakte('%s', '%s')" """ % \
                                (cn('ja_nein', 'ja'), cn('ja_nein', 'nein'))
         else:
             item['onChange'] = ''
         return fb_select_one_item_t % item
     elif label == 'int':
         minl, maxl = item['typ'][1:3]
         item['size'] = len(str(maxl))
         name = item['name']
         default = jgh.get(name)
         if not default:
             default = item.get('default')
             if default == None:
                 default = ''
         item['value'] = default
         if item.get('readonly'):
             item['ro'] = 'readonly'
         else:
             item['ro'] = ''
         extra = item.get('extra')
         if extra:
             item['tip'] = tip_t % {'tip': extra}
         else:
             item['tip'] = ''
         return fb_int_item_t % item
     elif label == 'checkbox':
         name = item['name']
         value = jgh.get(name)
         item['value'] = '1'
         item['checked'] = (value == '1' and 'checked' or '')
         return fb_checkbox_item_t % item
     else:
         return ''
 def _process(self, REQUEST, RESPONSE,
              title,
              legendtext,
              fall, # einer der Fälle, der am Kontakt teilnahme
                    # von dessen Klientenkarte aus man kam
              bkont,
              file,
              ):
     #print 'BKONT MITARBEITER', bkont['mitarbeiter']
     if config.BERATUNGSKONTAKTE_BS:
         beratungs_kontakt_bearbeiten = h.FieldsetInputTable(
             legend = '%s %s %s' % (legendtext, fall['akte__vn'], fall['akte__na']),
             daten = [[h.SelectItem(label='Mitarbeiter',
                                    name='mitid',
                                    options=self.for_mitarbeiter(
             sel=[m['id'] for m in bkont['mitarbeiter']]),
                                    multiple=True,
                                    size=8,
                                    ),
                       h.SelectItem(label='Klienten',
                                    name='bkfallid',
                                    class_='listbox280',
                                    options=self.for_klienten(
             sel=[f['id'] for f in bkont['faelle']]),
                                    multiple=True,
                                    size=8,
                                    ),
                       ],
                       [h.DatumItem(label='Datum/Uhrzeit',
                                    name='k',
                                    date =  bkont.getDate('k'),
                                    time = bkont.getTime('k'),
                                    ),
                        h.SelectItem(label='Art des Kontaktes',
                                     name='art_bs',
                                     class_='listbox280',
                                     options=self.for_kat('kabs', sel=bkont['art_bs'])
                                     ),
                        ],
                       [h.TextItem(label='Dauer in Minuten',
                                   name='dauer',
                                   value=bkont['dauer'],
                                   tip='Bitte in 10-Schritten angeben, z.B. 10, 20, 40, etc.',
                                   class_='textboxsmall',
                                   maxlength=3,
                                   ),
                        h.SelectItem(label='Teilnehmer',
                                     name='teilnehmer_bs',
                                     multiple=True,
                                     size=5,
                                     tip='Wer hat teilgenommen?',
                                     rowspan=3,
                                     options=self.for_kat('teilnbs', sel=bkont['teilnehmer_bs'])
                                     ),
                        ],
                       [h.TextItem(label='Anzahl',
                                   name='anzahl',
                                   value=bkont['anzahl'],
                                   tip='Anzahl der Teilnehmer',
                                   class_='textboxsmall',
                                   maxlength=2,
                                   ),
                        ],
                       [h.CheckItem(label='In offener Sprechstunde',
                                    name='offenespr',
                                    value=cn('ja_nein', 'ja'),
                                    checked=bkont['offenespr']==cn('ja_nein', 'ja'),
                                    ),
                        ],
                       [h.TextItem(label='Notiz',
                                   name='no',
                                   value=bkont['no'],
                                   class_='textboxverylarge',
                                   maxlength=1024,
                                   n_col=4,
                                   ),
                        ],
                       ],
             )
     else:
         beratungs_kontakt_bearbeiten = h.FieldsetInputTable(
             legend = '%s %s %s' % (legendtext, fall['akte__vn'], fall['akte__na']),
             daten = [[h.SelectItem(label='Mitarbeiter',
                                    name='mitid',
                                    options=self.for_mitarbeiter(
             sel=[m['id'] for m in bkont['mitarbeiter']]),
                                    multiple=True,
                                    size=8,
                                    ),
                       h.SelectItem(label='Klienten',
                                    name='bkfallid',
                                    class_='listbox280',
                                    options=self.for_klienten(
             sel=[f['id'] for f in bkont['faelle']]),
                                    multiple=True,
                                    size=8,
                                    n_col=4,
                                    ),
                       ],
                      [h.DatumItem(label='Datum',
                                   name='k',
                                   date =  bkont.getDate('k')),
                       h.SelectItem(label='Art des Kontaktes',
                                  name='art',
                                  options=self.for_kat('fska', sel=bkont['art'])),
                       h.SelectItem(label='Dauer',
                                    name='dauer_kat',
                                    options=self.for_kat('fskd',
                                                         sel=bcode('fskd', bkont['dauer'], 0)['id'])),
                       ],
                       [h.TextItem(label='Notiz',
                                   name='no',
                                   value=bkont['no'],
                                   class_='textboxverylarge',
                                   maxlength=1024,
                                   n_col=4,
                                   ),
                        ],
                       ],
             )
     beratungskontakte = fall['beratungskontakte']
     konseq_jgh = h.FieldsetDataTable(
         legend='Konsequenzen für die Bundesstatistik',
         )
     res = h.FormPage(
         title=title,
         name="beratungskontakt",action="klkarte",method="post",
         breadcrumbs = (('Hauptmenü', 'menu'),
                        ('Klientenkarte', 'klkarte?akid=%(akte_id)s' % fall),
                        ),
         hidden=(("akid", fall['akte_id']),
                 ("stz", bkont['stz']),
                 ("bkontid", bkont['id']),
                 ("fallid", fall['id']),
                 ("file", file),
                 ),
         rows=(beratungs_kontakt_bearbeiten,
               #konseq_jgh,
               h.SpeichernZuruecksetzenAbbrechen(),
               self.get_beratungskontakte(beratungskontakte),
               )
         )
     return res.display()