# coding: windows-1252
#
#---Bezeichnung: Rechnung auf gebucht/storniert setzen (ohne Buchhaltung)
#   Klassen: Rechnung
#   Selectedobjectsscript: Yes
#   Condexpression:
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Wenn das Member gebucht auf der Rechnung geändert wird, anstelle der Standardfunktion buchen,
#   dann fehlen auf den Buchungen einige Informationen (konto, pknr). Mit diesem Skript werden die Informationen
#   der Reihe nach gespeichert und nach dem Umstellen wieder eingesetzt.
#---29.10.2010, IB: erstellt.
#   05.10.2012, RS: erweitert, damit stornieren und buchen mit einem Skript möglich ist.
#   19.06.2015, BR: erweitert: Ausführen auf Listen und Einzelojekten. UpdateDatabase eingefügt.
#   05.11.2019, STH: Setze beim Buchen die Belegnr auf "0".
#   10.10.2024, sth: Angepasst an selectedobjects ab Vertec 6.7.0.12

def main(invoicelist):
    for rechnung in invoicelist:
        if rechnung.verrechnet:
            if rechnung.gebucht:
                rechnung.bhEKontoLeistungen = ""
                rechnung.bhEKontoSpesen = ""
                rechnung.bhEKontoAuslagen = ""
                rechnung.bhPersonenkonto = ""
                rechnung.bhVorschussKonto = ""
                rechnung.bhDebiKonto = ""
                rechnung.bhBeschrieb = ""
                rechnung.bhRabattKonto = ""
                rechnung.gebucht = False
            else:
                rechnung.bhEKontoLeistungen = rechnung.ErtragsKontoLeistungen
                rechnung.bhEKontoSpesen = rechnung.ErtragsKontoSpesen
                rechnung.bhEKontoAuslagen = rechnung.ErtragsKontoAuslagen
                rechnung.bhPersonenkonto = rechnung.Personenkonto
                rechnung.bhVorschussKonto = rechnung.projekt.vorschussKonto
                rechnung.bhDebiKonto = rechnung.buchungsbeleg.sammelkonto
                rechnung.bhBeschrieb = rechnung.buchungsbeleg.buchungstext
                rechnung.bhRabattKonto = vtcapp.getpropertyvalue("RabattKonto")
                rechnung.belegnr = "0"
                rechnung.gebucht = True
      
    vtcapp.updatedatabase()

main(selectedobjects)