class SelEsercizioChoice(awch.Choice): esercizi = None allow_empty_esercizio = True def __init__(self, *args, **kwargs): k = 'allow_empty_esercizio' if k in kwargs: self.allow_empty_esercizio = kwargs.pop(k) awch.Choice.__init__(self, *args, **kwargs) reg = adb.DbTable(bt.TABNAME_CONTAB_H, 'reg', fields=None) reg.Synthetize() reg.AddGroupOn('esercizio') reg.AddOrder('esercizio') #, adb.ORDER_DESCENDING) reg.Retrieve() self.dbreg = reg self.dbprg = adb.DbTable(bt.TABNAME_CFGPROGR, 'progr') self.dbese = ProgrEsercizio() self.esercizi = list() self.ReadEsercizi() def ReadEsercizi(self, regfilter=None, force_esercizio=None): prg = self.dbprg if prg.Retrieve('codice=%s', 'ccg_esercizio') and prg.OneRow(): ec = prg.progrnum else: ec = 0 sov = self.dbese.GetSovrapposizione() self.Clear() reg = self.dbreg reg.Retrieve(regfilter) e = self.esercizi del e[:] if self.allow_empty_esercizio and regfilter is None: self.Append('Tutti') e.append(None) for reg in reg: d = str(reg.esercizio).zfill(4) if reg.esercizio == ec - 1 and sov: d += ' (da chiud.)' elif reg.esercizio < ec: d += ' (chiuso)' elif reg.esercizio == ec: d += ' (in corso)' self.Append(d) e.append(int(reg.esercizio)) if force_esercizio is not None and not force_esercizio in e: d = str(force_esercizio).zfill(4) if force_esercizio == ec: d += ' (in corso)' self.Append(d) e.append(force_esercizio) if self.GetCount(): self.SetSelection(0) def ReadEserciziNoStampaGiornale(self): ec = self.dbese.GetEsercizioInCorso() self.ReadEsercizi( "(reg.st_giobol IS NULL or reg.st_giobol<>1) AND reg.tipreg<>'E'", force_esercizio=ec) if self.GetCount(): self.SetValue(ec) def ReadEserciziSiStampaGiornale(self): self.ReadEsercizi("(reg.st_giobol=1) AND reg.tipreg<>'E'") if self.GetCount(): self.SetSelection(self.GetCount() - 1) def SetValue(self, val): if val is None and not self.allow_empty_esercizio: raise Exception, "Esercizio nullo non consentito" if val is None: n = 0 else: try: n = self.esercizi.index(int(val)) except ValueError, e: n = len(self.esercizi) - 1 self.SetSelection(n)
def __init__(self, *args, **kwargs): SelEsercizioExChoice.__init__(self, *args, **kwargs) ese = ProgrEsercizio() e = ese.GetEsercizioInCorso() self.SetValue(e)