Meine Validierungslinienfunktion scheint nur beim zweiten Klicken auf Hinzufügen zu funktionieren. Wenn also der Betrag 500 ist und ich den Rabatt auf 100 setze, sollte er beim Hinzufügen des Buttons 400 sein. Es funktioniert nicht. Wenn ich erneut auf die Zeile klicke, scheint der Rabatt doppelt zu gelten - Betrag wird 300. Wie kann ich das beheben?NetSuite - OnValidateLine funktioniert nicht
function OnValidateLine(type, name) {
var count = nlapiGetLineItemCount('expense')
var total = nlapiGetFieldValue('usertotal')
for (var x = 1; x <= count; x++) {
var amount = nlapiGetCurrentLineItemValue('expense', 'amount');
var discount = nlapiGetCurrentLineItemValue('expense', 'custcolptc_discount');
if (discount) {
nlapiSetCurrentLineItemValue('expense', 'amount', amount - discount)
}
return true;
}
return true;
}
Gibt es einen Grund, nicht die typischen Rabattartikel von NetSuite zu verwenden, anstatt dafür zu kodieren? Sind sie nicht auf Spesenlinien anwendbar? Es scheint hier keine tatsächliche Validierung zu geben, also haben Sie erwogen, stattdessen "fieldChanged" zu verschieben? Sie können das Update jederzeit auslösen, wenn sich das Feld * Betrag * oder * Rabatt * ändert. Es scheint jedoch, dass es noch viele weitere Szenarien und Anwendungsfälle geben wird, die Sie mit dieser Logik umgehen müssen. – erictgrubaugh
NetSuite hat keine Rabattfunktion für Lieferantenrechnungen, wie es für Rechnungen tut, weshalb ich das programmieren musste. Ich muss Rabatt auf Line-Ebene anwenden. Einige unserer Anbieter bieten uns Rabatte, so dass wir einen Weg brauchen, um dies von der Rechnung zu reduzieren. Mein Code funktioniert aber nur ab der 2. Zeile auf Stationen. OK - Ich werde das Feld ändern versuchen. – MG2016
Habe gerade bemerkt, dass du nie 'x' oder' count' liest. Sie sollten die 'for'-Schleife überhaupt nicht brauchen, da Sie nur eine einzige Zeile ändern. – erictgrubaugh