Script: Reset invoice number

Resets the invoice number counter

Product line

Standard

|

Expert

Operating mode

CLOUD ABO

|

ON-PREMISES

Modules

Services & CRM

Budget & Phases

Purchases

Resource Planning

Business Intelligence

Created: 12.02.2004
Machine translated
Updated: 15.10.2024 | Added information about version 6.7.0.12.

Resets the invoice number. This script is used, for example, when an invoice needs to be deleted and re-created, so that the invoice number is not “wasted”.

There are 2 scripts:

  • Script 1: Resets the invoice number by one counter.
  • Script 2: If you want to reset the invoice number by more than one counter, use this script. You can specify the desired value in a query.

For both scripts, they reset the last used invoice number with the current prefix.

If you want to increase the invoice number instead, you do not need this script, but you can specify the next invoice number in the system settings > Invoice.

version description Scripting
6.6 This script can also be used with Vertec versions from 6.7.0.12, it does not use argobject still selectedobjects.

Script 1: Resetinvoice number.py

Script 2: Resetinvoice numberinput.py

Execute

Somewhere in Vertec via Script Editor .

When you Register the script, register it so that it is available where it makes sense for you.

As of Vertec version 6.7.0.12 you can also register the script to a folder, for example on Invoicing with the class Ordner and the display condition self->first.eintragid = 'FolderInvoicing'.

Script Text 1

Resets the invoice number by one counter.

# coding: windows-1252
#
#---Bezeichnung: Rechnungsnummer zurücksetzen
#   Klasse: 
#   CondExpression:
#   Selectedobjectsscript: Yes
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Setzt die Rechnungsnummer um einen Zähler zurück.
#---12.02.2004, Vertec AG: erstellt
#---02.06.2008, sr: UpdateDatabase ergänzt.
#---19.06.2017, sr: Script in Python erstellt.


def main():

    prop = vtcapp.evalocl("property->select(propertyname='PraefixRechnungsnummer')->first")
    if prop:
        prefix = vtcapp.evalocl("usedprefix->select(prefix='" + prop.propertyvalue + "')->first")
        if prefix:
            lastusednumber = prefix.lastusednumber
            if lastusednumber > 0: 
                prefix.lastusednumber = lastusednumber - 1
                vtcapp.updatedatabase()
                vtcapp.msgbox('Die Nummer wurde zurückgesetzt')

main()

Script Text 2

Sets the invoice number to the value requested by the user.

# coding: windows-1252
#
#---Bezeichnung: Rechnungsnummer zurücksetzen mit Input
#   Klasse: 
#   CondExpression:
#   Selectedobjectsscript: Yes
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Setzt die Rechnungsnummer zurück. Die zu verwendende nächste
#   Rechnungsnummer kann in einer Abfrage angeben werden.
#---15.02.2007, sc: erstellt.
#---31.12.2012, sr: Angaben in msgbox um Präfix ergänzt.
#---19.06.2017, sr: Script in Python erstellt.

def main():

    prop = vtcapp.evalocl("property->select(propertyname='PraefixRechnungsnummer')->first")
    if prop:
        prefix = vtcapp.evalocl("usedprefix->select(prefix='" + prop.propertyvalue + "')->first")
        if prefix:
            lastusednumber = prefix.lastusednumber
            userinput = vtcapp.inputbox("Vertec","Die zuletzt vergebene Rechnungsnummer ist: %s \r\r Der zugehörige Präfix lautet: %s \r\r Geben Sie eine neue Rechnungsnummer (ohne Präfix) ein:" % (lastusednumber, prop.propertyvalue),"")
            if userinput:
                try:
                    newnumber = int(userinput)
                    if newnumber < 1:
                        vtcapp.msgbox('Der eingegebene Wert muss mindestens 1 sein. Bitte geben Sie eine positive Zahl > 1 ein.', 0, 'Vertec')
                        return
                    prefix.lastusednumber = int(newnumber) -1
                    vtcapp.updatedatabase()
                except ValueError:
                    vtcapp.msgbox('Der eingegebene Wert ist keine Zahl. Bitte geben Sie eine Zahl ein.', 0, 'Vertec')

main()