Home Forum Allgemeines Allgemeines zu Nuclos BO Attribute

Ansicht von 12 Beiträgen - 1 bis 12 (von insgesamt 12)
  • Autor
    Beiträge
  • #9158
    K. Struckmeier
    Teilnehmer

    Hallo, wie mache ich es wenn ich zwei BO’s habe, und ich in einem etwas anlege, das Nuclos das dann auch in das andere BO einträgt.

    (Bsp.: BO: Lager, Wareneingang. Ich habe mir den Namen und die Mengenangabe eines Artikels aus dem Lager geholt und die gelieferte Menge mit der Menge aus dem Lager addiert. Dann habe ich einen endgültigen Wert der Menge eines Artikels. Nun muss dieser Wert wieder ins Lager zu dem Artikel übertragen werden.)

    Wie mach ich das?

    Bisheriger Regel-Code:

    package org.nuclet.businessentity;

    import org.nuclos.api.rule.InsertRule;
    import org.nuclos.api.context.InsertContext;
    import org.nuclos.api.annotation.Rule;
    import org.nuclos.api.exception.BusinessException;

    /** @name
    * @description
    * @usage
    * @change
    */
    @Rule(name=“addition“, description=“addition“)
    public class addition implements InsertRule {

    @Override
    public void insert(InsertContext context) throws BusinessException {

    Wareneingang wareneingang = context.getBusinessObject(Wareneingang.class);
    //Artikel artikel = context.getBusinessObject Artikel.class);

    int a,b,c;

    a=wareneingang.getMenge();

    b=wareneingang.getGeliefert();
    c=a+b;
    wareneingang.setMenge(c);

    //Artikel.setBestand(c);

    }
    }

    #9163
    Ronald Sedelies
    Teilnehmer

    Sollte eigentlich nicht so schwer sein.
    Innerhalb der Regel hast du ja die Entität des Wareneingangs ja schon geholt. Sollte der Wareneingang den Artikel referenzieren (also ein Attribut mit Typ „Referenzfeld“ auf Artikel), dann funktioniert es so:

    Artikel artikel = wareneingang.getArtikelBO();
    artikel.setBestand(c);
    BusinessObjectProvider.update(artikel);

    Ich hoffe, ich habe dein Problem richtig verstanden;-)

    Viele Grüße

    Ronald

    #9166
    Dieter Mennig
    Teilnehmer

    Hallo KSC-2016,

    siehe auch hier:

    http://wiki.nuclos.de/display/Konfiguration/BusinessObjectProvider

    Dort ist zu den einzelnen Methoden auch ein Beispiel angegeben.

    Viele Grüße

    #9171
    K. Struckmeier
    Teilnehmer

    Danke für die Antworten aber beim speichern der Regel kommt diese Fehlermeldung:

    addition.java:37: cannot find symbol
    symbol: variable BusinessObjectProvider
    location: class org.nuclet.businessentity.addition

    Mein Regel-Code:

    package org.nuclet.businessentity;

    import org.nuclos.api.rule.InsertRule;
    import org.nuclos.api.context.InsertContext;
    import org.nuclos.api.annotation.Rule;
    import org.nuclos.api.exception.BusinessException;

    /** @name
    * @description
    * @usage
    * @change
    */
    @Rule(name=“addition“, description=“addition“)
    public class addition implements InsertRule {

    @Override
    public void insert(InsertContext context) throws BusinessException {

    Wareneingang wareneingang = context.getBusinessObject(Wareneingang.class);
    //Artikel artikel = context.getBusinessObject(Artikel.class);
    Artikel artikel = wareneingang.getArtikelBO();

    int a,b,c;

    a=artikel.getBestand();

    b=wareneingang.getGeliefert();
    c=a+b;

    artikel.setBestand(c);
    BusinessObjectProvider.update(artikel);

    }
    }

    #9172
    Nick Röder
    Teilnehmer

    ich vermute es liegt am Copy&Paste aus einer HTML-Seite. Da sind manchmal dann Zeichen vorhanden, die Nuclos nicht interpretieren kann.

    Kopieren Sie mal den Code in einen Texteditor und dann zurück in Nuclos. Evtl. zeigt der Texteditor ein (verstecktes) Zeichen an.

    #9173
    K. Struckmeier
    Teilnehmer

    Hab ich gemacht. Da kommt aber immer noch die selbe Fehlermeldung.

    Muss ich nicht noch irgendetwas im Regelmanager machen?

    #9174
    Nick Röder
    Teilnehmer

    Können Sie noch den weiteren Text der Fehlermeldung posten. Der Regelcode hat ja nur 35 Zeilen, evtl ist eine andere Regel davon betroffen

    #9175
    K. Struckmeier
    Teilnehmer

    Da steht nur im unteren Fehlermeldung-Fenster dieser eine Fehler:

    addition.java:32: cannot find symbol
    symbol: variable BusinessObjectProvider
    location: class org.nuclet.businessentity.addition

    Und wenn ich oben auf den grünen Hacken klicke, kommt die Meldung: Quelltext erfolgreich kompiliert.

    #9176
    K. Struckmeier
    Teilnehmer

    Was ist den mit diesem Code? Vielleicht hilft der mir weiter, wenn Sie mir erläutern könnten, welche Codeteile ich auf mich bezogen ändern muss.

    public class Bestellunganlegen implements InsertRule {
        public void insert(InsertContext context) throws BusinessException {
            
            Artikel myArticel = QueryProvider.getById(Artikel.class, 40465351L);
               
            myArticel.setEinstandspreis(3.99d);
             
            BusinessObjectProvider.update(myArticel);
        }
    }

    Vor allem würde ich gerne wissen, was es mit diesem Code auf sich hat:

     Artikel myArticel = QueryProvider.getById(Artikel.class, 40465351L);

    #9177
    Nick Röder
    Teilnehmer

    Sorry, habe die Fehlermeldung nicht richtig gelesen.

    Nuclos findet die Klassen für den BusinessObjectProvider nicht, dieser muss importiert werden (bei den anderen Imports).

    import org.nuclos.api.provider.BusinessObjectProvider;

    #9178
    K. Struckmeier
    Teilnehmer

    VIELEN VIELEN DANK , Danke Danke 🙂

    #9179
    Nick Röder
    Teilnehmer

    Bzgl Ihrem Code. Darüber holen Sie sich ein Objekt anhand einer ID (die jeder Datensatz hat). Das ist im Wiki und unter api.nuclos.de ausführlich beschrieben.

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