Home › Forum › Nuclos Konfiguration › Businessprozesse › Lagerumbuchung
- Dieses Thema hat 4 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 10 Jahre, 2 Monaten von
Safet Biberovic.
-
AutorBeiträge
-
2 April 2013 um 14:54 Uhr #6550
Safet Biberovic
TeilnehmerNuclos 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?
2 April 2013 um 16:06 Uhr #6551Frank Pavlic
TeilnehmerHallo,
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ß
Frank2 April 2013 um 16:49 Uhr #6552Safet Biberovic
TeilnehmerDanke 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));
}
}
2 April 2013 um 17:41 Uhr #6553Frank Pavlic
TeilnehmerOk, 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ß
Frank2 April 2013 um 18:11 Uhr #6554Safet Biberovic
Teilnehmeres geht 🙂
Vielen dank FrankGruß
Safet -
AutorBeiträge