Script: Vorschuss stornieren

Erstellt: 25.07.2008, Änderung:
Mehr ansehen

Inhalt

Dieses Skript löscht einen Vorschuss aus allen Rechnungen.

Es geht davon aus, dass die Rechnungen bereits in der FiBu verbucht sind. Dort werden sie storniert, der Vorschuss wird aus den Rechnungen entfernt und die Rechnungen werden wieder gebucht.

Der Vorschuss wird nicht gelöscht.

Ausführen

Auf dem betreffenden Vorschuss.

Version

Version Beschreibung Script
ab Version 5.0 Verwendet die Variablen Vertec und argobject. Vorschussstorno.txt
ab Version 5.8 Verwendet anstelle der VB Standardfunktion die Vertec-Funktion msgbox (siehe dazu msgbox/inputbox: Beschreibung der Parameter) Vorschussstorno58.txt

Scripttext

'---Bezeichnung: Vorschuss stornieren
'   Klassen: Vorschuss
'   ObjectScript: Yes
'   ContainerScript: No
'---Dieses Skript loescht einen Vorschuss aus allen Rechnungen raus.
'   Es geht davon aus, dass die Rechnungen bereits in der FiBu sind.
'   Dort werden sie storniert, der Vorschuss wird aus den Rechnungen entfernt
'   und die Rechnungen werden wieder gebucht. Der Vorschuss wird nicht geloescht.
'   Auszufuehren auf dem betreffenden Vorschuss.
'---12.12.2007, mw: erstellt
'---01.11.2013, sr: msgbox durch vertec.msgbox ersetzt.

option explicit

sub main()

Dim vorschuss
Dim Projekt
Dim rechnungenPersistent()
Dim rechnungen
Dim rechnung
Dim links
Dim link
Dim vorschussrechnung
Dim i

' Klassentest
if not vertec.argobject.classname = "Vorschuss" then
  vertec.msgbox "Bitte auf einem Vorschuss ausfuehren. Vorgang abgebrochen.",,"Vertec"

else
  ' Initialisierung
  Set vorschuss = vertec.argobject
  Set Projekt = vorschuss.member("projekt")
  Set rechnungen = vorschuss.member("rechnungen")
  Set vorschussrechnung = vorschuss.member("vorschussrechnung")
  Redim rechnungenPersistent(rechnungen.count)

  ' Stornieren und verrechnen rueckgaengig machen
  if rechnungen.count <> 0 then
    for i = 0 to rechnungen.count-1
      Set rechnung = rechnungen.objects(i)
      rechnungenPersistent(i) = rechnung.eval("boldID")
      rechnung.stornieren(false)
      rechnung.makeoffen()
    next
  end if
  if not vorschussrechnung is nothing then
    vorschussrechnung.stornieren(false)
    vorschussrechnung.makeoffen()
  end if

  ' Vorschuss von Rechnungen entfernen
  Set links = vorschuss.eval("rechnungvorschusslink")
  if links.count <> 0 then
    for i = 0 to links.count-1
      Set link = links.objects(i)
      link.delete()
    next
  end if
  if not vorschussrechnung is nothing then
    vorschuss.member("vorschussrechnung") = nothing
  end if

  ' Rechnungen wieder verrechnen und buchen
  if Ubound(rechnungenPersistent) <> 0 then
    for i = 0 to Ubound(rechnungenPersistent)-1
      Set rechnung = Projekt.eval("rechnungen->select(boldID=" + CStr(rechnungenPersistent(i)) + ")->first")
      rechnung.makeverrechnet()
      rechnung.buchen(false)
    next
  end if
  if not vorschussrechnung is nothing then
    vorschussrechnung.makeverrechnet()
    vorschussrechnung.buchen(false)
  end if
  erase rechnungenPersistent
end if
end sub

main()