Zum Hauptinhalt springen

Mengenvalidierung (RMB)

Mengenvalidierung (RMB)

Validierung gegen die Bestellmenge (RMB)

Die Validierung gegen die Bestellmenge für RMB-Positionen kann über die Eigenschaft settings.validateAgainstOrderQuantity im Skript ou.cust.ptpINV.settings aktiviert oder deaktiviert werden.

Ist die Eigenschaft auf true gesetzt, wird pro Position validiert, dass die Rechnungs- und die gelieferte Menge, wenn diese gleich sind, die Bestellmenge nicht unter- und nicht überschreiten. Ist die Eigenschaft auf false gesetzt (Standard), wird diese Validierung übersprungen.

Validierungsschritte

  1. Stimmt die gelieferte Mengeneinheit und die der Rechnung überein? -> Fehler, wenn nicht
  2. Ist die gelieferte Menge größer als die Bestellmenge? -> Fehler, wenn ja
  3. Ist die gelieferte Menge kleiner als die Bestellmenge? -> Rechnung wartet auf Wareneingang, wenn ja
  4. Ende der Funktion, wenn validateAgainstOrderQuantity auf false gesetzt ist
  5. Ist die Rechnungsmenge größer als die Bestellmenge? -> Fehler, wenn ja
  6. Ist die Rechnungsmenge kleiner als die Bestellmenge? -> Fehler, wenn ja

Validierung gegen den Bestellpreis (RMB)

Die Validierung des Bestell-Einzelpreises gegen den Rechnungs-Einzelpreis kann über die Eigenschaft settings.validateOrderAndInvoiceSingleAmount im Skript ou.cust.ptpINV.settings gesteuert werden.

Die folgenden Werte sind möglich:

WertBeschreibung
"off"Keine Preisprüfung
"goodsReceiptRequired"Nur Positionen mit WE erforderlich = true
"noGoodsReceiptRequired"Nur Positionen mit WE erforderlich = false
"all"Alle Positionen (Standard)

Die Prüfung wird nach einer erfolgreichen Wareneingangsprüfung durchgeführt. Wenn der Bestell-Einzelpreis und der Rechnungs-Einzelpreis nicht übereinstimmen, wird ein Fehlerstatus gesetzt und die Mappe wird an "Prüfe Einkauf" weitergeleitet.

const settings = {
(...)
// Nur Positionen mit WE erforderlich prüfen
validateOrderAndInvoiceSingleAmount: "goodsReceiptRequired",
(...)
};

Steuerung der Validierung über Callbacks

Im Callback-Skript ou.tmpl.ptpINV.callbacks.goodsReceiptCheck gibt es die Funktion checkIfAllGoodsDeliveredBefore, die vor der Mengenvalidierung pro Position aufgerufen wird.

Um die Funktion anzupassen, muss zuerst ein zugehöriges Cust-Skript ou.cust.ptpINV.callbacks.goodsReceiptCheck erstellt werden.

Standardmäßig gibt die Funktion nichts zurück, was bedeutet, dass die Validierung wie gewohnt durchgeführt wird.

Die folgende Validierung überschreiben

Um die Validierung zu überschreiben, kann nun der Funktion checkIfAllGoodsDeliveredBefore ein Rückgabewert hinzugefügt werden:

{
allGoodsDelivered?: boolean;
isOrderQuantityMismatch?: boolean;
}

allGoodsDelivered steuert, ob die Lieferung der Rechnung als vollständig behandelt werden soll, d.h. ob die Rechung weiterhin auf einen Wareneingang wartet oder im Workflow fortschreiten soll.

isOrderQuantityMismatch steuert, ob die Validierung gegen die Bestellmenge erfolgreich war oder nicht. Je nach Wert, wird der Mappe ein Statuseintrag hinzugefügt bzw. dieser entfernt.

Einen Fehler werfen

Soll im Prozess ein Fehler geworfen, an der Mappe also der Status GoodsReceiptCheckStates.ERROR gesetzt werden, kann dem Array errorMessages, der in die Funktion gegeben wird, eine Fehlermeldung hinzugefügt werden. Diese wird dann als Statuseintrag an der Mappe gesetzt.