Home › Forum › Nuclos Konfiguration › Businessprozesse › Automatische Rechnungen innerhalb eines Buisnessob
- Dieses Thema hat 3 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahre, 4 Monaten von
Nick Röder.
-
AutorBeiträge
-
12 Oktober 2016 um 00:57 Uhr #8974
Björn Enders
TeilnehmerHallo liebe Community,
Ich bin dezeit am Testen ob sich unsere recht einfachen Buchungen / Bestellungen über nuclos abdecken lassen.
Ich hänge allerdings an zwei Stellen, betreffend automatischer Berechnungen:
1) Ich habe ein Buisnessobjekt „Buchungen“, hier sind positive und negative Buchungen gelistet.
2) Ich habe ein Buisnessobjekt „Buchungsreferenz“, hier sind über die Buchungsnummer (Referenzfeld) zu den Buchungen die einzelnen Positionen gelistet mit jeweiliger Steuer.Was ich nun gerne umsetzten würde;
– Die Buchungsreferenz hat eine Spalte Betrag und Nettobetrag. Ich würde gerne den Nettobetrag automatisch über den Betrag errechnen und eintragen lassen über die angegebene Steuer (also eine Rechnung mit Bezug auf die aktuelle Zeile / Eintrag)– Unter dem Layout „Buchungen“ ist das Objekt Buchungsreferenz als SubForm eingebunden und ich kann die Positionen zu den Buchungen anlegen. Hier würde ich gerne für die Buchung selbst einen Gesamtbetrag je nach Positionen eintragen lassen.
Das erste Anliegen habe ich schon über einen Berechnungsausruck in der Spalte „Nettobetrag“ probiert, allerdings passiert an der Stelle leider nichts, auch wird mir beim Compilieren keinerlei Feedback gegeben, das Fenster bleibt immer leer.
Das zweite Anliegen ist ähnlich einem Wiki-Eintrag, allerdings bringt der Berechnungsausdruck auch hier kein Ergebnis. Leider finde ich auch keinen Fehler oder Anhaltspunkt da der Compiler keine Ausgabe hat.
Beispielsweise hatte ich verwendet:
def Gesamt = new java.math.BigDecimal(0.000)
context.“#{def.buchungsreferenz.betrag}“.each {
item -> Gesamt = Gesamt.add(java.math.BigDecimal.valueOf(item.“#{def.buchungsreferenz.betrag}“))
}return Gesamt.setScale(4, java.math.RoundingMode.HALF_UP).doubleValue()
Für Hilfe an dieser Stelle wäre ich sehr dankbar
12 Oktober 2016 um 16:22 Uhr #8975Fry123
TeilnehmerIch würde das über eine Insert/Update Rules machen. Diese Berechnet dann den Nettobetrag und schreib ihn in das Feld.
http://wiki.nuclos.de/pages/viewpage.action?pageId=819814
mal so als Beispiel:
public class Beispiel implements UpdateRule, InsertRule {
private BusinessEntityTools bet = new BusinessEntityTools();public void update(UpdateContext context) throws BusinessException {
Buchungsreferenz ref = context.getBusinessObject(Buchungsreferenz.class);BigDecimal betrag = ref.getBetrag();
BigDecimal steuer = ref.getsteuer();BigDecimal netto = betrag.add(betrag.divide(new BigDecimal(100)).multiply(steuer));
ref.setNetto(netto);
}@Override
public void insert(InsertContext context) throws BusinessException {
Buchungsreferenz ref = context.getBusinessObject(Buchungsreferenz.class);BigDecimal betrag = ref.getBetrag();
BigDecimal steuer = ref.getsteuer();BigDecimal netto = betrag.add(betrag.divide(new BigDecimal(100)).multiply(steuer));
ref.setNetto(netto);
}
}das wird natürlich nicht 1:1 gehen das ich nicht genau weiß wie die Felder sind usw…
27 Oktober 2016 um 18:15 Uhr #8988Klaus Adam
TeilnehmerIch bin ebenfalls ziemlich neu in der Nuclos-Welt, stehe vermutlich aber vor ganz ähnlichen Problemen.
Ich glaube, dass bjoern gerne die Beträge direkt bei der Eingabe berechnen und anzeigen lassen würde. Die Insert/Update Rules greifen meiner Meinung nach aber erst beim physikalischen Speichern des Datensatzes auf dem Server.
Der Berechnungsausdruck bei der Definition der Attribute in den Businessobjekten suggeriert dann zumindest eine clientseitige „dynamische“ Berechnung des Feldinhaltes. Nach endlosen Tests bin ich aber dahinter gekommen, dass diese Ausdrücke nur einmal beim Anzeigen eines Datensatzes ausgelöst werden, bzw. beim ersten Tastendruck in einem neuen Datensatz. Damit scheint es also nicht möglich zu sein, bei der Eingabe von Werten andere Felder dynamisch zu füllen.
Falls ich falsch liege, würde ich mich über Informationen, wie man so etwas lösen kann, sehr freuen.3 November 2016 um 13:17 Uhr #9000Nick Röder
TeilnehmerDie clientseitigen Regeln sind leider noch ein ungelöstes Problem in Nuclos. Grundsätzlich empfiehlt sich eine serverseitige Berechnung, nur so ist sichergestellt, dass die Berechnungen immer auf die gleiche Art und Weise durchgeführt werden.
Werden z.B. Objektgeneratoren verwendet oder ein Objekt aus einer Regel heraus aufgerufen, würden die clientseitigen Regeln niemals greifen und es wäre immer eine renundante Lösung notwendig.
Allerdings sind wir uns über die Vorteile einer clientseitigen Berechnung von bestimmten Feldern durchaus bewusst. Gerade im Falle einer Rechnung wäre es natürlich schön bei der Eingabe einer Menge und eines Preises den Gesamtpreis etc. angezeigt zu bekommen.
Wir arbeiten daran, auch im Sinne einer Lösung für den WebClient.
Derzeit ist dies über Groovy-Code möglich, der dann über den Entitäten-Wizzard einem Feld zugeordnet werden kann. Allerdings ist dies Lösung aus oben genannten Gründen nur bedingt zu empfehlen und wird außerdem vom WebClient derzeit nicht unterstützt
-
AutorBeiträge