Home Forum Nuclos Konfiguration Maskenlayouts Preise überschreiben

Ansicht von 9 Beiträgen - 1 bis 9 (von insgesamt 9)
  • Autor
    Beiträge
  • #6753
    Andreas Hillmann
    Teilnehmer

    Ich möchte die Einkausfspreise die der Auftragsmaske überschreiben (Subform Auftragspositionen). Hier kann ich die Werte für VK Preise zwar ändern aber die EK Preise sind nicht änderbar. Welche Einstellung legt das fest?

    #6754
    Ramin Goettlich
    Teilnehmer

    Bezieht sich die Frage auf das Basistemplate aus dem Nuclet Downloadbereich?

    #6756
    Andreas Hillmann
    Teilnehmer

    Ja, genau.

    #6757
    caf
    Verwalter

    Es besteht eigentlich kein Schreibschutz, o.ä. auf die Einkaufspreise. Könnten Sie uns zur Klärung bitte weitere Informationen liefern:

    – Welche Version des Nuclets verwenden Sie?
    – Weshalb genau lassen sich keine Einkaufspreise erfassen/ändern?
    – Ist das Unterformular für die Einkaufspreise deaktiviert?
    – Treten Fehler auf? Falls ja: welche?

    Vielen Dank!

    #6758
    caf
    Verwalter

    Noch eine Anmerkung dazu: Die Standard- und Staffelpreise (EK und VK) lassen sich übrigens je Artikel in der Artikelmaske pflegen.

    #6759
    Andreas Hillmann
    Teilnehmer

    Die Preise EK und VK habe ich in der Artikelmaske eingetragen. Trotzdem wäre es gut, diese dann im Unterformular z. B. vom Aufrag ändern zu können. Wenn ich das versuche, springt der Preis nach Speichern wieder auf den im Artikel angelegten Wert zurück. Es gibt keine Fehlermeldung. Das betrifft aber nur den EK, beim VK geht es problemlos.
    Die Entität Artikel EK Preis steht auf änderbar. Das Unterformular mit den EK Preisen der Artikel wird z. B. im Auftrag und Bestellung angezeigt.
    Nuclos 3.8.5, welche Version das Buisiness Template hat, sehe ich nicht.
    Vielen Dank.

    #6760
    caf
    Verwalter

    Das Business Template ist ein Beispiel-Nuclet, in dem diese Prozesse derartig geregelt sind. Hinterlegte Einkaufspreise werden immer angezogen und sind nicht zu überschreiben. Verkaufspreise lassen sich für jeden Auftrag individuell anpassen.

    Sie dürfen das Nuclet selbstverständlich für Ihre Zwecke anpassen und ergänzen. Abweichende Regelungen können gerne implementiert werden.

    Die betreffende Stelle finden Sie in der Methode berechnePosition(BusinessObject, VkPreis) der Java-Klasse org.nuclet.basistemplate.logic.PositionsLogik.

    Ich hoffe, ich konnte Ihnen damit weiterhelfen.

    #6761
    Andreas Hillmann
    Teilnehmer

    Sie haben mir geholfen. Ich weiß jetzt, dass die EK nicht einfach überschreibbar sind. Trotzdem wüsste ich nicht, wie ich die Methode der Java-Klasse ändern sollte.

    #6763
    caf
    Verwalter

    Bitte ersetzen Sie die Methode *berechnePosition()* in der erwähnten Java-Klasse mit dem folgenden Code-Fragment:


    public void berechnePosition(final BusinessObject businessObject,
    final VkPreis preis)
    throws
    BusinessException
    {
    final BigDecimal bgdVkNetto;
    final BigDecimal bgdEkNetto;
    final Position position = new Position(businessObject);

    if (position.getVkNetto() == null) {
    bgdVkNetto = preis.vkNetto();
    } else {
    bgdVkNetto = position.getVkNetto();
    }

    if (position.getEkNetto() == null) {
    bgdEkNetto = preis.ekNetto();
    } else {
    bgdEkNetto = position.getEkNetto();
    }

    BigDecimal bgdVkNettoRabatt = BigDecimal.ZERO;
    BigDecimal bgdVkBruttoRabatt = BigDecimal.ZERO;
    BigDecimal bgdVkBrutto = BigDecimal.ZERO;
    BigDecimal bgdVkMwst = BigDecimal.ZERO;
    BigDecimal bgdVkBruttoGesamt = BigDecimal.ZERO;
    BigDecimal bgdRohertrag = BigDecimal.ZERO;
    BigDecimal bgdHandelsspanne = BigDecimal.ZERO;

    if (null == bgdVkNetto) {
    throw new BusinessException("Für die Berechnung der Positionen wird der Verkaufspreis benötigt.");
    }

    if (null == bgdEkNetto) {
    throw new BusinessException("Für die Berechnung der Positionen wird der Einkaufspreis benötigt.");
    }

    final BigDecimal bgdMenge = position.getMenge();

    BigDecimal bgdVkNettoGesamt = warenwertLogik.berechneGesamtpreis(bgdVkNetto, bgdMenge);
    BigDecimal bgdEkNettoGesamt = warenwertLogik.berechneGesamtpreis(bgdEkNetto, bgdMenge);

    // Positionsrabatt
    final BigDecimal bgdRabatt = position.getRabattInProzent();

    if (null != bgdRabatt) {
    bgdVkNettoRabatt = bgdRabatt.multiply(bgdVkNettoGesamt).divide(new BigDecimal("100"));
    bgdVkNettoGesamt = bgdVkNettoGesamt.subtract(bgdVkNettoRabatt);
    }

    bgdVkMwst = getSteuersatz().divide(new java.math.BigDecimal("100")).multiply(bgdVkNettoGesamt);
    bgdVkBruttoGesamt = warenwertLogik.berechneBrutto(bgdVkNettoGesamt, getSteuersatz());
    bgdVkBruttoRabatt = warenwertLogik.berechneBrutto(bgdVkNettoRabatt, getSteuersatz());
    bgdHandelsspanne = warenwertLogik.berechneHandelsspanne(bgdVkNetto, bgdEkNetto);
    bgdRohertrag = warenwertLogik.berechneRohertrag(bgdVkNettoGesamt, bgdEkNettoGesamt);

    position.setMwst(rundeWert(bgdVkMwst, 2));
    position.setEkNetto(rundeWert(bgdEkNetto, 2));
    position.setEkNettoGesamt(rundeWert(bgdEkNettoGesamt, 2));
    position.setRohertrag(rundeWert(bgdRohertrag, 2));
    position.setHandelsspanne(rundeWert(bgdHandelsspanne, 2));
    position.setVkNetto(rundeWert(bgdVkNetto, 2));
    position.setVkBrutto(rundeWert(warenwertLogik.berechneBrutto(bgdVkNetto, getSteuersatz()), 2));
    position.setVkNettoGesamt(bgdVkNettoGesamt);
    position.setVkBruttoGesamt(bgdVkBruttoGesamt);
    position.setRabattNettoGesamt(bgdVkNettoRabatt);
    position.setRabattBruttoGesamt(bgdVkBruttoRabatt);

    //position.update();
    }

    Durch den Block


    if (position.getEkNetto() == null) {
    bgdEkNetto = preis.ekNetto();
    } else {
    bgdEkNetto = position.getEkNetto();
    }

    wird der hinterlegte EK-Preis nur angezogen, wenn kein EK-Preis in der Auftragszeile eingetragen ist.

    Das sollte Ihr Problem lösen.

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