Home Forum Allgemeines Allgemeines zu Nuclos Defaultwert Groovy

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #8013
    Matthias KÖPER
    Teilnehmer

    Hallo Groovy-Experten,

    ich haben in mein Business-Objekt (Artikel) diverse mit Groovy berechnete Felder eingebaut. Die Felder beziehen sich aufeinander und berechnene irgendwelche Werte. Das funktioniert auch. Jetzt ergibt sich aber folgendes Problem:
    Wenn ich einen Artikel neu anlege, sollen die Felder mit sinnvollen Werten belegt werden. Passiert das nicht bekomme ich eine Numberformat-Exception, weil einige der Felder keinen Wert haben.
    Ich habe z.B. folgendes Szenario: Feld1 berechnet sich aus Feld2 * 2. Wenn das Objekt neu angelegt wird, kann es vorkommen, dass Feld2 noch keinen Wert hat, während Nuclos schon versucht, den Wert für Feld1 zu berechnen. Das Feld bleibt also leer. Wenn der Benutzer jetzt also den neuen Artikel speichert ohne vorher einen Wert für Feld2 einzutragen wird eine Exception geworfen.
    Ich habe schon Standardwerte ausprobiert, ohne Erfolg.
    Auch ein Ausdruck der Art (if Feld2==null setze Defaultwert) in Feld2 nützt nichts, da die Reihenfolge, in der die einzelnen Felder ihre Werte berechnen zufällig ist.

    Wie kann ich das Problem lösen?

    skoeper

    #8014
    Matthias KÖPER
    Teilnehmer

    So, ich habe noch einmal alles Mögliche ausprobiert. Folgendes funktioniert: Keine Standardwerte für das entsprechende Feld setzen. Dann alle abhängigen Felder einzeln auf null prüfen. Erst dann das Feld mit dem berechneten Wert füllen.


    def defaultwert = new java.math.BigDecimal(0.0)

    def einkaufspreis = context."#{JAE5.Artikel.einkaufspreis}"
    def skontoinprozent = context."#{JAE5.Artikel.lieferantenskontoinprozent}"

    if ((skontoinprozent == null) || (einkaufspreis == null))
    {
    return defaultwert.setScale(4, java.math.RoundingMode.HALF_UP).doubleValue()
    }
    else
    {
    return context."#{JAE5.Artikel.einkaufspreis}" * context."#{JAE5.Artikel.lieferantenskontoinprozent}" / 100
    }

    Sieht im Nachhinein ganz einfach aus…

    Viele Grüße
    skoeper

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)