Skip to main content

Versteckte User-Exits: 3-Way-Match

Bei der Prüfung der Rechnungsmenge gegen die Bestellmenge und den Wareneingang wird pro Rechnungszeile ein QuantityObject erstellt und die Zeile wird gegen die Bestellung und gegen den Wareneingang geprüft. Die Prüfung bietet einige Eingriffspunkt zur Manipulation. Die Prüfung wird pro Gentable-Zeile ausgeführt. Das Objekt enthält das DocFile-Objekt ("DocFile"), die aktuelle Zeilennummer ("RowNo") und die Informationen zur Gentable-Zeile ("OrderNumber", "OrderPosition", "GoodsReceiptID", "GoodsReceiptPos", "GoodsReceiptCheck", "ExtraLine"). Zudem enthält das Objekt die Prüfergebnisse. Bei einer Abweichung zur Bestellung gibtt es die Bool-Werte "OrderResult", "OpenQuantityResult" und die Fehlermeldung wird in "OrderError" ausgegeben.
Bei der Prüfung gegen den Wareneingang sind es entsprechend "GoodsReceiptResult" und "GoodsReceiptError".

 

QuantityObject.prototype.ue_3WayMatch_ParseQuantity = function(){ ... }

Vor dem Vergleich der Mengen können die Mengen umgerechnet werden. das QuantityObject enthält die Menge aus der Rechnungsposition ("Quantity") , die Bestellmenge ("QuantityOrdered") sowie die gelieferte Menge ("QuantityDelivered"). Zudem gibt es die verbrauchten Mengen ("UsedOrderedQuantity" / "UsedDeliveredQuantity") und die offene Bestellmenge ("OpenOrderedQuantity") sowie die offene Liefermenge ("OpenDeliveredQuantity"). Darüber hinaus gibt es auch die Mengeneinheiten ("QuantityUnit" / "QuantityUnitOrdered" / "QuantityUnitDelivered").

Nach dem Aufruf der UserExit-Funktion werden "QuantityUnit" und "QuantityUnitOrdered"  verglichen. Bei einer Abweichung wird eine Fehlermeldung ausgegeben. Zudem gibt es eine Fehlermeldung, wenn die "Quantity" größer als die "QuantityOrdered" ist. Die Prüfung gegen den Wareneingang erfolgt nur, wenn "GoodsReceiptCheck" den Wert "true" hat. Hier werden ebenfalls die Mengeneinheiten abgeglichen und die Menge darf die gelieferte Menge nicht überschreiten. Eine Fehlermeldung wird ausgegeben, wenn die Preisabweichung größer 0 ist.

 

QuantityObject.prototype.ue_3WayMatch_CheckPriceDiff = function( priceCalculated, priceOrdered ){ ... }

Über die Funktion können bei Preisabweichungen sehr spezifische Toleranz-Regeln umgesetzt werden. Bei den Preisen gibt es nur die Werte aus der Rechnungsposition ("Price", "PriceUnit" ) und aus der Bestellung ("PriceOrdered", "PriceUnitOrdered"). Aus Preis und Preiseinheit ergibt sich der kalkulierte Preis ("PriceCalc" / "PriceCalcOrdered") und die Preisdifferenz ("PriceDiff").

 

QuantityObject.prototype.ue_3WayMatch_CheckEnd = function(){ ... }

Wenn die Funktion aufgrund eines Fehlers abbricht, dann wird diese Funktion am Ende nicht mehr ausgeführt! Über die Funktion können die Ergebnisse manipuliert werden und es können weitere Prüfungen ausgeführt werden.

 

/** User exit after loading order master data to manipulate or to add order information.
 * Called: docFile.replacePositionsByHeadOrderValue()
 * Script: Invoice_Action_GetOpenOrderPosition
 * @param {string} optExecType Optional parameter to set execution type information
**/
Gentable.prototype.adjustLoadedOrderPositions = function(optExecType){
    /*
    var id    = (this.DocFile)? this.DocFile.getid() : "Unknown";
    this.Log += "[INFO]["+id+"] function adjustLoadedOrderPositions()"+this.LineBreak;
    for( var r=0; r<this.Rows.length; r++ ){
        
    }
    */
}