# coding: iso-8859-1
#
#---Bezeichnung: Einkaufs MWST-Typ fixieren
#   Klassen: UserEintrag
#   ObjectScript: Y
#   ContainerScript: N
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Bei Spesen und Auslagen wird der EinkaufsMWSt-Typ fixiert.
#---2010-12-03, MR: erstellt.
#---2011-02-09, MR: Weitergeleitet auf Auslagen Kreditor berücksichtigen.
#   24.06.2020, STH: Umgeschrieben in Python für MWST-Senkung in DE.
#   21.11.2023, STH: Datum geändert für die MWST-Erhöhung in der Schweiz per 01.01.2024.
#   Version 103

import datetime

def MwStEKfixieren():

    datum = datetime.date(2023, 12, 31)
    
    abfrage = vtcapp.msgbox("Möchten Sie den Einkaufs MWST-Typ auf nicht gebuchten Spesen und Auslagen fixieren bis zum %s?" % datum, 1)
    
    if abfrage <> 2:
        sql = "datum<=%s and kreditor not in (select bold_id from Kreditor where gebucht = 1) and xMWSTTypEK = -1" % vtcapp.sqldateliteral(datum)
        
        auslagen = vtcapp.getwithsql("Auslage", "%s" % sql, "")
        for auslage in auslagen:
            kreditor = auslage.kreditor
            if kreditor:
               if kreditor.weitergeleitet:
                  kreditor.weitergeleitet = False
                  auslage.xMWSTTypEK = auslage.evalocl("mWSTTypEK.oclastype(MwstTyp)")
                  kreditor.weitergeleitet = True
               else:
                  auslage.xMWSTTypEK = auslage.evalocl("mWSTTypEK.oclastype(MwstTyp)")
            else:
                auslage.xMWSTTypEK = auslage.evalocl("mWSTTypEK.oclastype(MwstTyp)")
            vtcapp.updatedatabase()

        spesen = vtcapp.getwithsql("Spesen", "%s" % sql, "")
        for spese in spesen:
            spese.xMWSTTypEK = spese.evalocl("mWSTTypEK.oclastype(MwstTyp)")
            vtcapp.updatedatabase()
            
        vtcapp.msgbox("Die Verarbeitung ist abgeschlossen. %i Einträge wurden fixiert." % (len(auslagen)+len(spesen)))

MwStEKfixieren()