Esempio n. 1
0
class AjanlatModositoUrlap(simpledialog.Dialog):
    def __init__(self, szulo, kon):
        self._kon = kon
        super().__init__(szulo, title="Ajánlat módosítása")

    def body(self, szulo):

        self._ajanlat_valaszto = Valaszto("ajánlat", self._ajanlatok(), self)
        self._ajanlat_valaszto.set_callback(self._reszletek)
        self._ajanlat_valaszto.pack(ipadx=2, ipady=2)

        self._ajanlat_urlap = AjanlatUrlap(self)
        self._ajanlat_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH)

        self._reszletek(1)
        return self._ajanlat_valaszto.valaszto

    def validate(self):
        if not bool(self._ajanlat_urlap.export()):
            messagebox.showwarning("Hiányos adat!",
                                   "Add meg az ajánlati árat!",
                                   parent=self)
            return False
        if not self._ajanlat_urlap.datum_ervenyes():
            messagebox.showwarning("Dátumhiba!",
                                   "Formátum vagy sorrend hibás!",
                                   parent=self)
            return False
        return True

    def apply(self):
        meglevo_ajanlat = self._ajanlat_valaszto.elem
        modositott_ajanlat = self._ajanlat_urlap.export()
        meglevo_ajanlat.adatok = modositott_ajanlat
        if meglevo_ajanlat.ment(self._kon.ajanlat):
            print("Bejegyzés módosítva.")
        else:
            print("Nem sikerült módosítani!")

    def _ajanlatok(self):
        ajanlatok = self._kon.ajanlat.select("ajanlat")
        return sorted(map(lambda ajanlat: Ajanlat(kon=self._kon, **ajanlat),
                          ajanlatok),
                      key=repr)

    def _reszletek(self, event):
        """Megjeleníti a kiválasztott ajánlat módosítható részleteit.
        event: tkinter esemény-paraméter (itt nincs rá szükség)"""
        meglevo_ajanlat = self._ajanlat_valaszto.elem
        if not meglevo_ajanlat.leadva:
            meglevo_ajanlat.leadva = date.isoformat(date.today())
        if not meglevo_ajanlat.ervenyes:
            meglevo_ajanlat.ervenyes = date.isoformat(date.today() +
                                                      timedelta(days=30))
        self._ajanlat_urlap.beallit(meglevo_ajanlat)
Esempio n. 2
0
class AjanlatkeresModositoUrlap(simpledialog.Dialog):
    """Csak olyan ajánlatkérést lehet módosítani, amire nem született még ajánlat."""
    def __init__(self, szulo, kon):
        self._kon = kon
        super().__init__(szulo, title="Ajánlatkérés módosítása")

    def body(self, szulo):
        ajanlatkeres = Frame(self)
        self._ajanlatkeres_valaszto = Valaszto("ajánlatkérés", self._ajanlatkeresek(), ajanlatkeres)
        self._ajanlatkeres_valaszto.set_callback(self._megjelenit)
        self._ajanlatkeres_valaszto.pack(ipadx=2, ipady=2)
        self._ajanlatkeres_urlap = AjanlatkeresUrlap(ajanlatkeres, self._kon)
        self._ajanlatkeres_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH, side=BOTTOM)
        ajanlatkeres.pack(ipadx=2, ipady=2, fill=BOTH, side=TOP)
        self._megjelenit(1)
        return self._ajanlatkeres_valaszto.valaszto

    def validate(self):
        if not self._ajanlatkeres_urlap.datum_ervenyes():
            messagebox.showwarning("Dátumhiba!", "Formátum vagy sorrend hibás!", parent=self)
            return False
        return True

    def apply(self):
        ajanlatkeres = self._ajanlatkeres_valaszto.elem
        modositas = self._ajanlatkeres_urlap.export()
        ajanlatkeres.adatok = modositas
        if ajanlatkeres.ment(self._kon.ajanlat):
            print("Bejegyzés módosítva.")
        else:
            print("Nem sikerült módosítani!")
    
    def _megjelenit(self, event):
        self._ajanlatkeres_urlap.beallit(self._ajanlatkeres_valaszto.elem)

    def _ajanlatkeresek(self):
        # azok az ajánlatkérések kellenek, melyekre még nem született ajánlat
        ajanlatkeresek = self._kon.ajanlat.execute("""
            SELECT *
            FROM ajanlatkeres
            WHERE azonosito NOT IN (
                SELECT ajanlatkeres.azonosito
                FROM ajanlatkeres, ajanlat
                ON ajanlatkeres.azonosito = ajanlat.ajanlatkeres
            );
            """)
        return sorted(map(lambda ajanlatkeres: Ajanlatkeres(kon = self._kon, **ajanlatkeres), ajanlatkeresek), key=repr)
Esempio n. 3
0
class ProjektModositoUrlap(simpledialog.Dialog):
    def __init__(self, szulo, kon):
        self._kon = kon  # super() előtt kell legyen
        super().__init__(szulo, title="Projekt módosítása")

    def body(self, szulo):
        self._projekt_valaszto = Valaszto("megnevezés", self._projektek(),
                                          self)
        self._projekt_valaszto.set_callback(self._projekt_megjelenit)
        self._projekt_valaszto.pack(ipadx=2, ipady=2)

        megnevezes = LabelFrame(self, text="projekt neve")
        self._projekt_urlap = ProjektUrlap(megnevezes)
        self._projekt_urlap.pack(ipadx=2, ipady=2)
        self._projekt_megjelenit(1)
        megnevezes.pack(fill=X, padx=2, pady=2)

        return self._projekt_valaszto.valaszto

    def validate(self):
        """Ezen a ponton a projektek a projektszám miatt mindenképpen különbözni fognak egymástól."""
        return True

    def apply(self):
        projekt = self._modositott_projekt()
        if projekt.ment(self._kon.projekt):
            print("{}: Bejegyzés módosítva.".format(projekt))
        else:
            print("Nem sikerült módosítani.")
        self._projekt_valaszto.beallit(self._projektek())
        self._projekt_megjelenit(1)

    def _projektek(self):
        return sorted(map(lambda projekt: Projekt(**projekt),
                          self._kon.projekt.select("projekt")),
                      key=lambda elem: (elem.gyakorisag, repr(elem)))

    def _projekt_megjelenit(self, event):
        self._projekt_urlap.beallit(self._projekt_valaszto.elem or Projekt())

    def _modositott_projekt(self):
        projekt = self._projekt_valaszto.elem
        projekt.adatok = self._projekt_urlap.export()
        return projekt
Esempio n. 4
0
class UjAjanlatUrlap(simpledialog.Dialog):
    def __init__(self, szulo, kon):
        self._kon = kon
        super().__init__(szulo, title="Új ajánlat rögzítése")

    def body(self, szulo):
        self._ajanlatkeres_valaszto = Valaszto("ajánlatkérés",
                                               self._ajanlatkeresek(), self)
        self._ajanlatkeres_valaszto.set_callback(self._alapertelmezes)
        self._ajanlatkeres_valaszto.pack(ipadx=2, ipady=2, fill=BOTH)

        self._ajanlat_urlap = AjanlatUrlap(self)
        self._ajanlat_urlap.pack(padx=2, pady=2, ipadx=2, ipady=2, fill=BOTH)

        self._alapertelmezes(1)
        return self._ajanlatkeres_valaszto.valaszto

    def validate(self):
        if not bool(self._ajanlat_urlap.export()):
            messagebox.showwarning("Hiányos adat!",
                                   "Add meg az ajánlati árat!",
                                   parent=self)
            return False
        if not self._ajanlat_urlap.datum_ervenyes():
            messagebox.showwarning("Dátumhiba!",
                                   "Formátum vagy sorrend hibás!",
                                   parent=self)
            return False
        return True

    def apply(self):
        ajanlatkeres = self._ajanlatkeres_valaszto.elem
        ajanlat = self._ajanlat_urlap.export()
        ajanlat.ajanlatkeres = ajanlatkeres.azonosito
        if ajanlat.ment(self._kon.ajanlat):
            print("Árajánlat mentve.")
        else:
            print("Az árajánlatot nem sikerült elmenteni!")

    def _ajanlatkeresek(self):
        # azok az ajánlatkérések kellenek, melyekre még nem született ajánlat
        ajanlatkeresek = self._kon.ajanlat.execute("""
            SELECT *
            FROM ajanlatkeres
            WHERE azonosito NOT IN (
                SELECT ajanlatkeres.azonosito
                FROM ajanlatkeres, ajanlat
                ON ajanlatkeres.azonosito = ajanlat.ajanlatkeres
            );
            """)
        return sorted(map(
            lambda ajanlatkeres: Ajanlatkeres(kon=self._kon, **ajanlatkeres),
            ajanlatkeresek),
                      key=repr)

    def _alapertelmezes(self, event):
        ma = date.isoformat(date.today())
        egyhonapmulva = date.isoformat(date.today() + timedelta(days=30))
        self._ajanlat_urlap.beallit(
            Ajanlat(ajanlatiar="",
                    leadva=ma,
                    ervenyes=egyhonapmulva,
                    megjegyzes=""))
Esempio n. 5
0
class MunkareszModositoUrlap(simpledialog.Dialog):
    def __init__(self, szulo, kon):
        self._kon = kon  # super() előtt kell legyen
        super().__init__(szulo, title="Munkarész módosítása")

    def body(self, szulo):
        self._munkaresz_valaszto = Valaszto("munkarész", self._munkareszek(),
                                            self)
        self._munkaresz_valaszto.set_callback(self._munkaresz_megjelenit)
        self._munkaresz_valaszto.pack(ipadx=2, ipady=2)

        munkaresz = LabelFrame(self, text="munkarész")
        self._munkaresz_urlap = MunkareszUrlap(munkaresz)
        self._munkaresz_urlap.pack(ipadx=2, ipady=2)
        munkaresz.pack(fill=X, padx=2, pady=2)

        cim = LabelFrame(self, text="munkarész címe")
        self._cim_urlap = CimUrlap(cim)
        self._cim_urlap.pack(ipadx=2, ipady=2)
        cim.pack(padx=2, pady=2)

        jelleg = LabelFrame(self, text="munkarész jellege")
        self._jelleg_urlap = JellegUrlap(jelleg)
        self._jelleg_urlap.pack(ipadx=2, ipady=2)
        jelleg.pack(fill=X, padx=2, pady=2)

        self._munkaresz_megjelenit(1)
        return self._munkaresz_valaszto.valaszto

    def validate(self):
        munkaresz = self._munkaresz_urlap.export()
        cim = self._cim_urlap.export()
        jelleg = self._jelleg_urlap.export()

        if not munkaresz:
            messagebox.showwarning("Hiányos adat!",
                                   "Legalább a nevet add meg!",
                                   parent=self)
            return False

        if munkaresz.meglevo(self._kon.projekt) and cim.meglevo(
                self._kon.projekt) and jelleg.meglevo(self._kon.projekt):
            messagebox.showwarning("Létező munkarész!",
                                   "Pontosítsd!",
                                   parent=self)
            return False

        return True

    def apply(self):
        munkaresz, cim, jelleg = self._modositott_munkaresz()
        if munkaresz.ment(self._kon.projekt) and cim.ment(
                self._kon.projekt) and jelleg.ment(self._kon.projekt):
            print("Bejegyzés mentve.")
        else:
            print("Nem sikerült elmenteni!")

    def _munkareszek(self):
        return sorted(map(lambda jelleg: Jelleg(kon=self._kon, **jelleg),
                          self._kon.projekt.select("jelleg")),
                      key=repr)

    def _munkaresz_kivalaszt(self, event):
        self._munkaresz_valaszto.beallit(self._munkareszek())
        self._munkaresz_megjelenit(1)

    def _munkaresz_megjelenit(self, event):
        munkaresz, cim, jelleg = self._meglevo_munkaresz()
        self._munkaresz_urlap.beallit(munkaresz)
        self._cim_urlap.beallit(cim)
        self._jelleg_urlap.beallit(jelleg)

    def _meglevo_munkaresz(self):
        jelleg = self._munkaresz_valaszto.elem
        munkaresz = self._kon.projekt.select(
            "munkaresz", azonosito=jelleg.munkaresz).fetchone()
        munkaresz = Munkaresz(**munkaresz)
        cim = self._kon.projekt.select(
            "cim", munkaresz=munkaresz.azonosito).fetchone()
        cim = Cim(**cim)
        return (munkaresz, cim, jelleg)

    def _modositott_munkaresz(self):
        munkaresz, cim, jelleg = self._meglevo_munkaresz()
        munkaresz.adatok = self._munkaresz_urlap.export()
        cim.adatok = self._cim_urlap.export()
        jelleg.adatok = self._jelleg_urlap.export()
        return (munkaresz, cim, jelleg)
Esempio n. 6
0
class UjMunkareszUrlap(simpledialog.Dialog):
    def __init__(self, szulo, kon):
        self._kon = kon  # super() előtt kell legyen
        super().__init__(szulo, title="Új munkarész felvitele")

    def body(self, szulo):
        self._projekt_valaszto = Valaszto("projekt", self._projektek(), self)
        self._projekt_valaszto.set_callback(self._cim_megjelenit)
        self._projekt_valaszto.pack(ipadx=2, ipady=2)

        munkaresz = LabelFrame(self, text="munkarész")
        self._munkaresz_urlap = MunkareszUrlap(munkaresz)
        self._munkaresz_urlap.pack(ipadx=2, ipady=2)
        munkaresz.pack(fill=X, padx=2, pady=2)

        cim = LabelFrame(self, text="munkarész címe")
        self._cim_urlap = CimUrlap(cim)
        self._cim_urlap.pack(ipadx=2, ipady=2)
        self._cim_megjelenit(1)
        cim.pack(padx=2, pady=2)

        jelleg = LabelFrame(self, text="munkarész jellege")
        self._jelleg_urlap = JellegUrlap(jelleg)
        self._jelleg_urlap.pack(ipadx=2, ipady=2)
        jelleg.pack(fill=X, padx=2, pady=2)

        return self._projekt_valaszto.valaszto

    def validate(self):
        munkaresz = self._munkaresz_urlap.export()
        cim = self._cim_urlap.export()
        jelleg = self._jelleg_urlap.export()

        if not munkaresz:
            messagebox.showwarning("Hiányos adat!",
                                   "Legalább a nevet add meg!",
                                   parent=self)
            return False

        if munkaresz.meglevo(self._kon.projekt) and cim.meglevo(
                self._kon.projekt) and jelleg.meglevo(self._kon.projekt):
            messagebox.showwarning("Létező munkarész!",
                                   "Pontosítsd!",
                                   parent=self)
            return False

        return True

    def apply(self):
        projekt = self._projekt_valaszto.elem
        munkaresz = self._munkaresz_urlap.export()
        munkaresz.projekt = projekt.azonosito

        munkaresz = self._munkaresz_urlap.export()
        munkaresz.projekt = projekt.azonosito
        if not (munkaresz_azonosito := munkaresz.ment(self._kon.projekt)):
            print("A munkarészt nem sikerült elmenteni!")
            return

        cim = self._cim_urlap.export()
        cim.munkaresz = munkaresz_azonosito
        jelleg = self._jelleg_urlap.export()
        jelleg.munkaresz = munkaresz_azonosito
        if not (cim.ment(self._kon.projekt)
                and jelleg.ment(self._kon.projekt)):
            print("A címet/jelleget nem sikerült elmenteni!")
            return

        print("Bejegyzés mentve.")
Esempio n. 7
0
class KontaktModositoUrlap(simpledialog.Dialog):
    def __init__(self, szulo, kon=None):
        self._kon = kon
        super().__init__(szulo, title="Kontaktszemély módosítása")

    def body(self, szulo):
        self._szervezetvalaszto = Valaszto("szervezet",
                                           self._szervezetnevsor(), self)
        self._szervezetvalaszto.set_callback(self._megjelenit)
        self._szervezetvalaszto.pack(ipadx=2, ipady=2)

        self._szemelyvalaszto = Valaszto("személy", self._szemelynevsor(),
                                         self)
        self._szemelyvalaszto.set_callback(self._reszletek)
        self._szemelyvalaszto.pack(ipadx=2, ipady=2)

        self._modszemelyvalaszto = Valaszto("személy",
                                            self._modszemelynevsor(), self)
        self._modszemelyvalaszto.pack(ipadx=2, ipady=2)

        self._megjegyzes = StringVar()
        Label(self, text="megjegyzés").pack(ipadx=2, ipady=2)
        Entry(self, textvariable=self._megjegyzes, width=32).pack(ipadx=2,
                                                                  ipady=2)

        self._megjelenit(1)

        return self._szervezetvalaszto

    def validate(self):
        return True

    def apply(self):
        szervezet = self._szervezetvalaszto.elem.azonosito
        szemely = self._szemelyvalaszto.elem.azonosito
        modszemely = self._modszemelyvalaszto.elem.azonosito
        megjegyzes = self._megjegyzes.get()
        kontakt_id = self._kon.kontakt.select("kontakt",
                                              "azonosito",
                                              szemely=szemely,
                                              szervezet=szervezet,
                                              logic="AND")
        kontakt_id = kontakt_id.fetchone()["azonosito"]
        kontakt = Kontakt(azonosito=kontakt_id,
                          szemely=modszemely,
                          szervezet=szervezet,
                          megjegyzes=megjegyzes)
        if kontakt.ment(self._kon.kontakt):
            print("Bejegyzés módosítva.")
        else:
            print("Nem sikerült módosítani.")

    def _szervezetnevsor(self):
        return sorted(map(lambda szervezet: Szervezet(**szervezet),
                          self._kon.szervezet.select("szervezet")),
                      key=repr)

    def _szemelynevsor(self):
        szervezetazonosito = self._szervezetvalaszto.elem.azonosito
        szervezethez_rendelt_szemelyek = self._kon.szervezet.execute(
            """
            SELECT * 
            FROM szemely 
            WHERE azonosito IN (
                SELECT szemely FROM kontakt WHERE szervezet = ?
            );
        """, (szervezetazonosito, ))
        return sorted(map(lambda szemely: Szemely(**szemely),
                          szervezethez_rendelt_szemelyek),
                      key=repr)

    def _modszemelynevsor(self):
        szervezetazonosito = self._szervezetvalaszto.elem.azonosito
        szervezethez_nem_rendelt_szemelyek = self._kon.szervezet.execute(
            """
            SELECT * 
            FROM szemely 
            WHERE azonosito NOT IN (
                SELECT szemely 
                FROM kontakt 
                WHERE szervezet = ?
            );
        """, (szervezetazonosito, ))
        return sorted(map(lambda szemely: Szemely(**szemely),
                          szervezethez_nem_rendelt_szemelyek),
                      key=repr)

    def _megjelenit(self, event):
        self._szemelyvalaszto.beallit(self._szemelynevsor())
        self._modszemelyvalaszto.beallit(self._modszemelynevsor())
        self._reszletek(1)

    def _reszletek(self, event):
        szemely = self._szemelyvalaszto.elem.azonosito
        szervezet = self._szervezetvalaszto.elem.azonosito
        megjegyzes = self._kon.kontakt.select("kontakt",
                                              "megjegyzes",
                                              szemely=szemely,
                                              szervezet=szervezet,
                                              logic="AND").fetchone()
        self._megjegyzes.set(megjegyzes["megjegyzes"])