# coding: windows-1252
#
#---Bezeichnung: Kreditor auf gebucht setzen (ohne Buchhaltung)
#   Klassen: Kreditor
#   Selectedobjectsscript: Yes
#   Condexpression:
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Wenn das Member gebucht auf dem Kreditor geändert wird, anstelle der Standardfunktion buchen,
#   dann fehlen auf den Buchungen einige Informationen. Mit diesem Skript werden die Informationen
#   der Reihen nach gespeichert und nach dem Umstellen wieder eingesetzt.
#---12.04.2012, RS: erstellt.
#   23.10.2013, MW: Auslagen und Spesen behandeln, statt nur Auslagen.
#   11.10.2024, sth: Angepasst auf selectedobjects mit Vertec 6.7.0.12

def main(creditorlist):
    for kreditor in creditorlist:
        if kreditor.gebucht:
            # Informationen zurücksetzen
            kreditor.gebucht = False
            
            kreditor.bhAufwandkontoAuslagen = ""
            kreditor.bhAufwandkontoSpesen = ""
            kreditor.bhKrediCode = ""
            kreditor.bhSammelKonto = ""

            auslagenbase=kreditor.eval('auslagen->union(spesen).oclastype(AuslageBase)')
            for auslagebase in auslagenbase:
                auslagebase.verrMWSTCodeEK = None
                auslagebase.verrMWSTSatzEK = None
                auslagebase.krediAufwandKonto = ""
                
        else:
            # Informationen auslesen und setzen
            kreditor.bhAufwandkontoAuslagen = kreditor.aufwandkontoAuslagen
            kreditor.bhAufwandkontoSpesen = kreditor.aufwandkontoSpesen
            kreditor.bhKrediCode = kreditor.krediCode
            kreditor.bhSammelKonto = kreditor.sammelKonto

            auslagenbase=kreditor.eval('auslagen->union(spesen).oclastype(AuslageBase)')
            for auslagebase in auslagenbase:
                auslagebase.verrMWSTCodeEK = auslagebase.MWSTCodeEK
                auslagebase.verrMWSTSatzEK = auslagebase.MWSTSatzEK
                auslagebase.krediAufwandKonto = auslagebase.AufwandKonto

            kreditor.gebucht = True
            
    vtcapp.updatedatabase()

main(selectedobjects)