예제 #1
0
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)
예제 #2
0
 def __init__(self, *args, **kwargs):
     SelEsercizioExChoice.__init__(self, *args, **kwargs)
     ese = ProgrEsercizio()
     e = ese.GetEsercizioInCorso()
     self.SetValue(e)