Home Forum Nuclos Konfiguration Businessprozesse Automatisch fortlaufende Nummer Aw: Automatisch fortlaufende Nummer

#4144
Matthias Haake
Teilnehmer

Hallo,

hier ein paar Details zu unserer Lösung. Diese bildet die bei uns vorhandenen Anforderungen ab – auf besondere generische Eigenschaften haben wir nicht geachtet. Ziel war für uns, dass wir die Nummernkreis-Entität überall verwenden können und unterschiedlichste Berechnungsregeln hinterlegen wollen ohne dass die Auswahlbox überläuft.

***Entität „NumberRangeType“:
-Name (Text)
-Abkürzung (Text)
-Hier können beliebig viele Typen definiert werden, um später danach zu filtern

***Entität „NumberRange“:
-Name (Text)
-Prefix (Text / optional)
-Suffix (Text / optional)
-Länge (int)
-Startwert (int)
-Endwert (int)
-Schrittweite (int)
-Letzte vergebene Nummer (int / im Layout readonly)
-Typ (Referenz zu „NumberRangeType“)
-Es lassen sich beliebig viele Nummernkreise definieren.

***Entität „Employee“
-Numberrange (Referenz zu „NumberRange“)
-EmployeeNumber (Text / optional)

Im Layout der Entität „Employee“ ist eine Combobox mit einem ValueListProvider. Dieser filtert alle Nummernkreise vom Typ „Employee“ heraus. Das ist quasi das gleiche Prinzip wie bei den Aktionen von Nuclos.

Als letztes habe ich eine Geschäftsregel geschrieben, die beim Speichern eines Mitarbeiters anspringt. Die Logik des Nummernkreises (berechne die nächste Nummer anhand des gewählten Nummernkreises) ist in einer Bibliotheksregel hinterlegt (NumberRangerHelper).


if(server.hasFieldChanged("employee", "numberrange") || server.getFieldValue("employee", "employeenumber") == null)
{
try
{
// load number range object
MasterDataVO numberRange = server.getMasterData("numberrange", server.getAttribute("numberrange").getValueId());
tools.NumberRangeHelper helper = new tools.NumberRangeHelper(numberRange);

// update employee number
server.setFieldValue("employee", "employeenumber", helper.CalculateNextNumberString());
// remember last calculated number
server.setFieldValue("numberrange", numberRange.getIntId(), "nextvalue", helper.GetNextValue());
}
catch (Exception e)
{
throw new NuclosBusinessRuleException(e);
}
}

Sinnvolle Ergänzungen könnten z. B. Platzhalter sein, in die automatisch bei Nummernvergabe bestimmte Werte eingefügt werden (%MONTH%, %DAY% etc.)

Wenn es in den Kern wandert – wunderbar 🙂 Einfach per E-Mail melden für Bibliotheksregel usw.

Viele Grüße,
Matthias