Пример #1
0
 def createView(self) -> AnlageVView:
     self._view.openAnlageV.connect(self.onOpenAnlageV)
     self._view.printAnlageV.connect(self.onPrintAnlageV)
     self._view.printAllAnlageV.connect(self.onPrintAllAnlageV)
     # Feststellen, für welches Veranlagungsjahr die Anlagen V erstellt werden sollen:
     jahre = AnlageV_Base_Logic.getJahre()
     dlg = JahrAuswahlDialog(jahre)
     dlg.move(self._view.cursor().pos())
     if dlg.exec_():
         self._jahr = dlg.jahr
         try:
             self._busi = AnlageV_Preview_Logic(self._jahr)
         except Exception as ex:
             box = ErrorBox(
                 "AnlageVController.createView()",
                 "Instantiation AnlageV_Preview_Logic failed.\n", str(ex))
             box.exec_()
             return None
     else:
         return None
     master_objekte = self._busi.getObjektNamen()
     accepted, objlist = self.showAnlageVAuswahlDialog(master_objekte)
     if accepted:
         self._master_objekte = objlist
         self._provideTabs(objlist)
         return self._view
     else:
         self._jahr = 0
         self._master_objekte.clear()
         return None
    def createView(self) -> QWidget:
        try:
            jahre = GeschaeftsreiseUcc.inst().getDistinctJahre()
            jahr = jahre[
                0]  # die Liste der Jahre muss mindestens ein Jahr (das laufende) enthalten
            tm: GeschaeftsreisenTableModel = self._ucc.getGeschaeftsreisenTableModel(
                jahr)
        except Exception as ex:
            box = ErrorBox("Fehler beim Erzeugen des GeschaeftsreiseView",
                           str(ex), "")
            box.exec_()
            return None

        self._view = GeschaeftsreisenView(tm)
        self._view.setJahre(jahre)
        self._view.setJahr(jahr)
        self._view.save.connect(self.onSave)
        self._view.yearChanged.connect(self.onYearChanged)
        self._view.createItem.connect(self.onCreate)
        self._view.editItem.connect(self.onEdit)
        self._view.deleteItem.connect(self.onDelete)

        w = self._view.getPreferredWidth()
        screenwidth = getScreenWidth()
        if w > screenwidth:
            w = screenwidth
        sz = self._view.size()
        self._view.resize(w, sz.height())
        return self._view
Пример #3
0
 def _doCsvExport( self, dlg:IccDialog ):
     model: QAbstractItemModel = dlg.getView().getModel()
     try:
         BusinessLogic.inst().exportToCsv( model )
     except Exception as ex:
         box = ErrorBox( "Export als .csv-Datei", str( ex ), "in MainController.exportToCsv()" )
         box.exec_()
Пример #4
0
 def kuendigeMietverhaeltnis(self, mv_id: str, kuendDatum: str) -> None:
     # Kündigung in der Datenbank durchführen
     try:
         BusinessLogic.inst().kuendigeMietverhaeltnis(mv_id, kuendDatum)
         self.mietverhaeltnisGekuendigt.emit(mv_id, kuendDatum)
     except Exception as ex:
         box = ErrorBox(
             "Kündigung hat nicht geklappt",
             "MiniKuendigungsController.kuendigeMietverhaeltnis()", str(ex))
         box.exec_()
Пример #5
0
 def validate( self, x: XGeschaeftsreise ) -> bool:
     msg = ""
     if not x.mobj_id: msg = "Objekt muss angegeben sein."
     if not x.von: msg = "Beginn muss angegeben sein."
     if not x.bis: msg = "Ende muss angegeben sein."
     if x.von > x.bis: msg = "Beginn muss vor dem Ende sein."
     if not x.ziel: msg = "Ziel muss angegeben sein."
     if not x.zweck: msg = "Zweck muss angegeben sein."
     if x.km <= 0: msg = "Kilometerangabe fehlt. Muss angegeben werden."
     if msg:
         box = ErrorBox( "Angaben unvollständig", msg, "" )
         box.exec_()
         return False
     return True
Пример #6
0
 def writeChanges(self, changes: Any = None) -> bool:
     self._view.applyChanges(
     )  # Änderungen von der GUI in XMieterwechsel übernehmen
     retval: ReturnValue = MietverhaeltnisServices.processMieterwechsel(
         self._view.getMieterwechselData())
     if not retval.missionAccomplished():
         box = ErrorBox("Fehler beim Mieterwechsel", retval.exceptiontype,
                        retval.errormessage)
         box.exec_()
         return False
     box = InfoBox("Mieterwechsel", "Verarbeitung erfolgreich.", "", "OK")
     box.exec_()
     self._view.setSaveButtonEnabled(False)
     return True
Пример #7
0
def main():
    app = QApplication()
    #iccstate = IccStateHandler( "ftp.ini")
    setScreenSize(app)
    env = "DEVELOP"
    if not runningInDev():
        # release version running
        terminate_if_running()  # one instance only
        # try:
        #     iccstate.startApplication() # download immo.db from server and set is-in-use flag
        # except Exception as ex:
        #     print( str(ex) )
        #     box = ErrorBox( "ImmoControlCenter", "Failed starting application", str( ex ) )
        #     box.exec_()
        #     return
        createControlFile()  # flag file showing application is running
        env = "RELEASE"
    win = IccMainWindow(env)
    # see: https://stackoverflow.com/questions/53097415/pyside2-connect-close-by-window-x-to-custom-exit-method
    shutDownFilter = ShutDownFilter(win, app)
    win.installEventFilter(shutDownFilter)
    win.show()
    try:
        pos_size = getGeometryOnLastShutdown()
        win.move(pos_size["x"], pos_size["y"])
        #win.resize( pos_size["w"], pos_size["h"] )
        win.setFixedWidth(1100)
        win.setFixedHeight(63)
    except:
        win.resize(1900, 1000)

    MainController(win)

    icon = QIcon("./images/houses.png")
    app.setWindowIcon(icon)

    app.exec_()

    if not runningInDev():
        try:
            # iccstate.stopApplication() # upload immo.db to server and set not-in-use flag
            pass
        except Exception as ex:
            print(str(ex))
            box = ErrorBox("ImmoControlCenter",
                           "Failed shutting down application", str(ex))
            box.exec_()
        finally:
            deleteControlFile()
Пример #8
0
 def validate( self ) -> bool:
     x = self._view.getDataCopyWithChanges()
     msg = ""
     if not x.mobj_id: msg = "Objekt muss angegeben sein."
     elif not x.von: msg = "Beginn muss angegeben sein."
     elif not x.bis: msg = "Ende muss angegeben sein."
     elif x.von > x.bis: msg = "Beginn muss vor dem Ende sein."
     elif not x.ziel: msg = "Ziel muss angegeben sein."
     elif not x.zweck: msg = "Zweck muss angegeben sein."
     elif x.km <= 0: msg = "Kilometerangabe fehlt. Muss angegeben werden."
     if msg:
         box = ErrorBox( "Angaben unvollständig", msg, "" )
         box.exec_()
         return False
     return True
Пример #9
0
def uploadDatabase() -> bool:
    """
    upload immo.db to server
    :return: True if upload was successful
    """
    ftpini = FtpIni("ftp.ini")
    ftp = Ftp(ftpini)
    try:
        ftp.connect()
        ftp.upload("immo.db", "immo.db")
        return True
    except Exception as ex:
        box = ErrorBox("File Transfer failed", "FTP failed.\n", str(ex))
        box.exec_()
        return False
 def writeChanges(self, changes: Any = None) -> bool:
     changes: Dict[str, List[XGeschaeftsreise]] = self.getChanges()
     for x in changes["INSERT"]:
         try:
             self._ucc.insertGeschaeftsreise(x)
         except Exception as ex:
             box = ErrorBox("Fehler beim Einfügen der Geschäftsreise",
                            str(ex))
             box.exec_()
             return False
     for x in changes["UPDATE"]:
         try:
             self._ucc.updateGeschaeftsreise(x)
         except Exception as ex:
             box = ErrorBox("Fehler beim Ändern der Geschäftsreise",
                            str(ex))
             box.exec_()
             return False
     for x in changes["DELETE"]:
         try:
             self._ucc.deleteGeschaeftsreise(x.id)
         except Exception as ex:
             box = ErrorBox("Fehler beim Löschen der Geschäftsreise",
                            str(ex))
             box.exec_()
             return False
     return True
Пример #11
0
 def showException(self, title, msg, more=None):
     box = ErrorBox(title, msg, more)
     crsr = QCursor.pos()
     box.move(crsr.x(), crsr.y())
     box.exec_()