Home Forum Nuclos Konfiguration Businessprozesse Lagerumbuchung

Ansicht von 5 Beiträgen - 1 bis 5 (von insgesamt 5)
  • Autor
    Beiträge
  • #6550
    Safet Biberovic
    Teilnehmer

    Nuclos Version: 3.11

    beim Statuswechsel kommt die Fehlermeldung

    Ein Fehler ist aufgetreten.
    Fehler bei der Ausführung der Geschäftsregel „Nuclet Lager: Lagerumbuchungen durchführen“ (Zeile 23) aufgetreten:
    MasterDataVO should be constructed with entity name set,

    was kann ich da machen?

    #6551
    Frank Pavlic
    Teilnehmer

    Hallo,
    was genau nutzt Du denn? Das Business-Template ? Selbst entwickelte Regel?

    Darüber sind leider keine Angaben gemacht worden. Ein wenig mehr Infos wären hilfreich.
    Die Fehlermeldung „MasterDataVO should be constructed with entity name set“ sagt aus, dass MasterDataVO-Constructor ohne Entitätenname aufgerufen wird,was seit ein-drei nuclos-Versionen nicht mehr erlaubt ist.

    Was Du tun kannst? Geschäftsregel „Nuclet Lager: Lagerumbuchungen durchführen“ öffnen und in Zeile 23 fixen.

    Gruß
    Frank

    #6552
    Safet Biberovic
    Teilnehmer

    Danke Frank,
    ich nutze eben die neueste Business-Template, und ist alles Original ohne das ich was von mir eingefügt habe.


    public void rule(RuleInterface server) throws NuclosBusinessRuleException {

    org.nuclet.common.stock.Constants stockConstants = new org.nuclet.common.stock.Constants();
    org.nuclet.common.stock.Transaction stockTransaction = new org.nuclet.common.stock.Transaction(server);

    Collection colUmbuchungsposition = server.getDependants(stockConstants.ENTITY_UMBUCHUNGSPOSITION);

    for (MasterDataVO position: colUmbuchungsposition) {
    Integer iMaterial = (Integer)position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_ARTIKEL + "Id");
    if (iMaterial == null) { throw new NuclosBusinessRuleException("Das Material für die Lagerumbuchung der Position " + position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_POS) + " kann nicht ermittelt werden."); }
    Integer iLagerVon = (Integer)position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_LAGER_VON + "Id");
    Integer iLagerplatzVon = (Integer)position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_LAGERPLATZ_VON + "Id");
    Integer iLagerNach = (Integer)position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_LAGER_NACH + "Id");
    Integer iLagerplatzNach = (Integer)position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_LAGERPLATZ_NACH + "Id");
    Double dMenge = (Double)position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_MENGE);
    if (dMenge == null) { throw new NuclosBusinessRuleException("Die Menge für die Lagerumbuchung der Position " + position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_POS) + " kann nicht ermittelt werden."); }
    stockTransaction.moveStock(iMaterial, iLagerVon, iLagerNach, iLagerplatzNach, dMenge, (String)position.getField(stockConstants.FIELD_UMBUCHUNGSPOSITION_POS));
    }
    }

    #6553
    Frank Pavlic
    Teilnehmer

    Ok, folgende Zeilen in der org.nuclet.common.stock.Transaktion.java müsstest Du anpassen:

    1. Funktion logTransaction(…):
    Original-Zeile:
    MasterDataVO voLagerbewegung = new MasterDataVO(null, null, null, null, null, null, fields);

    Neu:
    MasterDataVO voLagerbewegung = new MasterDataVO(stockConstants.ENTITY_LAGERBEWEGUNG ,null, null, null, null, null, null, fields);

    2. Funktion readMaterialbestand(…):
    Original-Zeile:
    return new MasterDataVO(null, null, null, null, null, null, fields);
    Neu:
    return new MasterDataVO(stockConstants.ENTITY_ARTIKELBESTAND ,null, null, null, null, null, null, fields);

    Die Änderungen bitte über die Nuclos-GUI durchführen.
    Bibliotheksregel speichern,compilieren und Statuswechsel erneut testen.

    Transaktion ist eine Bibliotheksregel, also auch im entsprechenden Menüpunkt zu finden. Ich habe es über eine Shell angeschaut, daher auch der Name Transaktion.java, da ich keine BusinessTemplate-Installation habe.

    Tipp:
    Vertiefe dich nicht allzu sehr in die alte Regel-API, eine neue Regel-API existiert bereits und ab Version 4.0 wird die alte Regel-API auch nicht mehr funktionieren. Falls du also eigenen Regeln implementieren willst, freunde dich gleich mit der neuen API an.

    Gruß
    Frank

    #6554
    Safet Biberovic
    Teilnehmer

    es geht 🙂
    Vielen dank Frank

    Gruß
    Safet

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