Example #1
0
 def createSollmiete(self, xsm: XSollMiete):
     msg = self._validate(xsm)
     if msg:
         raise Exception("Anlage Sollmiete fehlgeschlagen:\n%s" % msg)
     self._db.insertSollmiete(xsm)
     sm_id = self._db.getMaxId("sollmiete", "sm_id")
     xsm.sm_id = sm_id
Example #2
0
 def getCurrentSollmiete(self, mv_id: str) -> XSollMiete:
     """
     Liefert die letzte (jüngste) Sollmiete für <mv_id>.
     Diese Sollmiete kann auch schon inaktiv sein (<bis> kleiner als current date).
     :param mv_id:
     :return:
     """
     sql = "select sm_id, mv_id, von, von, coalesce(bis, '') as bis, netto, nkv, bemerkung " \
           "from sollmiete " \
           "where mv_id = '%s' " \
           "order by von desc " % mv_id
     dictlist: List[Dict] = self.readAllGetDict(sql)
     d = dictlist[0]
     x = XSollMiete(d)
     return x
Example #3
0
 def getSollmieten3(self, mv_id: str, jahr: int) -> List[XSollMiete]:
     # liefert die Sollmieten für Mieter mv_id im Jahr jahr
     minbis = "%d-%02d-%02d" % (jahr, 1, 1)
     maxvon = "%d-%02d-%02d" % (jahr + 1, 1, 1)
     sql = "select sm.sm_id, sm.mv_id, sm.von, coalesce(sm.bis, '') as bis, sm.netto, sm.nkv, (sm.netto + sm.nkv) as brutto, " \
           "coalesce(sm.bemerkung, '') as bemerkung, mv.mobj_id " \
           "from sollmiete sm " \
           "inner join mietverhaeltnis mv on mv.mv_id = sm.mv_id " \
           "where sm.von < '%s' " \
           "and (sm.bis is NULL or sm.bis = '' or sm.bis >= '%s') " \
           "and sm.mv_id = '%s' " \
           "order by sm.mv_id, sm.von desc" % ( maxvon, minbis, mv_id )
     l: List[Dict] = self._doReadAllGetDict(sql)
     sollList: List[XSollMiete] = list()
     for d in l:
         x = XSollMiete(d)
         sollList.append(x)
     return sollList
Example #4
0
 def saveMietverhaeltnis( self ):
     """
     Es kann sich um ein neues oder ein schon bestehendes MV handeln.
     Wenn neu:
         Fügt das übergebene Mietverhältnis und die Sollmiete in die Datenbank ein
     Wenn schon existent:
         Macht einen Update auf das schon bestehende Mietverhaeltnis und auf die Sollmiete.
     :param xmv:
     :return:
     """
     xmv = self._xmv
     mvlogic = MietverhaeltnisLogic()
     mealogic = MtlEinAusLogic()
     smlogic = SollmieteLogic()
     BEGIN_TRANSACTION()
     if xmv.id == 0:
         try:
             mvlogic.createMietverhaeltnis( xmv )
             xsm = XSollMiete()
             xsm.von = xmv.von
             xsm.bis = xmv.bis
             xsm.mv_id = xmv.mv_id
             xsm.netto = xmv.nettomiete
             xsm.nkv = xmv.nkv
             smlogic.createSollmiete( xsm )
             jahr = int( xmv.von[0:4] )
             mealogic.insertMtlEinAusFuerMieter( xmv.mv_id, jahr )
             COMMIT_TRANSACTION()
         except Exception as ex:
             ROLLBACK_TRANSACTION()
             raise Exception( "MietverhaeltnisUcc.saveMietverhaeltnis():\n"
                              "Beim Anlegen des Mietverhältnisses ist ein Fehler aufgetreten:\n" + str(ex) )
     else:
         try:
             mvlogic.updateMietverhaeltnis( xmv )
             smlogic.updateSollmiete( ?? )
             COMMIT_TRANSACTION()
         except Exception as ex:
             ROLLBACK_TRANSACTION()
             raise Exception( "MietverhaeltnisUcc.saveMietverhaeltnis():\n"
                              "Beim Ändern des Mietverhältnisses ist ein Fehler aufgetreten:\n" + str( ex ) )
    def createMietverhaeltnis(self, xmv: XMietverhaeltnis):
        """
        Prüft die für die Neuanlage notwendigen Daten für das Mietverhältnis.
        (Die für die Anlage des Sollmieten-Satzes notwendigen Daten werden in sollmietelogic geprüft.)
        Macht einen Insert in Tabelle mietverhaeltnis und ruft sollmietelogic.createSollmiete() auf.
        :param xmv:
        :return:
        """
        msg = self.validateMietverhaeltnisDaten(xmv)
        if msg:
            raise Exception(
                "Daten des neuen Mietverhältnisses fehlerhaft:\n%s" % msg)
        xmv.mv_id = self._create_mv_id(xmv.name, xmv.vorname)

        #prüfen, ob schon ein Mietverhältnis mit dieser mv_id existiert:
        try:
            if self._db.existsAktivesOderZukuenftigesMietverhaeltnis(
                    xmv.mv_id):
                raise Exception(
                    "Anlage Mietverhältnis fehlgeschlagen:\nEs existiert ein aktives Mietverhälntis für "
                    "mv_id '%s'." % xmv.mv_id)
        except Exception as ex:
            raise Exception(
                "Fehler bei der Dublettenprüfung bei Anlage Mietverhältnis für '%s':\n'%s'"
                % (xmv.mv_id, str(ex)))

        # MV-Satz anlegen:
        try:
            self._db.insertMietverhaeltnis(xmv)
            xmv.id = self._db.getMaxId("mietverhaeltnis", "id")
        except Exception as ex:
            raise Exception(
                "Bei der Anlage des Mietverhältnisses für '%s' ist der DB-Insert "
                "in die Tabelle 'mietverhaeltnis' fehlgeschlagen:\n'%s'" %
                (xmv.mv_id, str(ex)))

        # Sollmiete-Satz anlegen:
        xsm = XSollMiete()
        xsm.mv_id = xmv.mv_id
        xsm.von = xmv.von
        xsm.bis = xmv.bis
        xsm.netto = xmv.nettomiete
        xsm.nkv = xmv.nkv
        sml = SollmieteLogic()
        try:
            sml.createSollmiete(xsm)
            xsm.sm_id = self._db.getMaxId("sollmiete", "sm_id")
        except Exception as ex:
            raise Exception(
                "Bei der Anlage des Mietverhältnisses für '%s' ist der DB-Insert "
                "in die Tabelle 'sollmiete' fehlgeschlagen:\n'%s'" %
                (xsm.mv_id, str(ex)))

        # MtlEinAus-Satz anlegen:
        meinauslogic = MtlEinAusLogic()
        jahr = int(xmv.von[:4])
        try:
            meinauslogic.insertMtlEinAusFuerMieter(xmv.mv_id, jahr)
        except Exception as ex:
            raise Exception(
                "Bei der Anlage des Mietverhältnisses für '%s' ist der DB-Insert "
                "in die Tabelle 'mtleinaus' fehlgeschlagen:\n'%s'" %
                (xmv.mv_id, str(ex)))
Example #6
0
def test():
    x = XSollMiete()
    x.mv_id = "test_duempfel"
    x.von = "2021-11-11"
    x.netto = 450
    x.nkv = 100

    x2 = XSollMiete()
    x2.mv_id = "anger_inge"
    x2.von = "2021-11-12"
    x2.netto = 300
    x2.nkv = 80

    data = SollmieteData()
    BEGIN_TRANSACTION()
    data.insertSollmiete(x)
    COMMIT_TRANSACTION()
    BEGIN_TRANSACTION()
    data.insertSollmiete(x2)
    ROLLBACK_TRANSACTION()