tüit Logo Direkt zum Hauptinhalt

Anpassung der Preise der Itempositionen je nach Ausprägung eines Attributs

Intro

Manchmal ist es notwendig vor dem Speichern eines Dokuments Anpassung von Feldern in der Itempositionstabelle zu machen. Diese Änderungen können abhängig sein von einem Attribut / einem Feld des jeweiligen Tabelleneintrages oder der Tabellenposition.

Anleitung

Das Skript unterhalb kann genau so als Client Skript für Angebote eingebaut werden. In der Variable fields ( Zeile 9 ) können die Item Felder gelistet werden, die bei der Änderung geändert werden.

In Zeile 19 kann anstelle der letzten 0 ein String-Value, ein Integer-Value, ein Float-Value oder eine Variable eingefügt werden, die dem geänderten Wert vom Feld in fields entspricht.

 

// Set item fields before save
// Date: 18.01.2022
// Version: 0.1.0
// Author: Marius Widmann
// Licence:

// Fields in the items table that should be set to zero
var fields = [
    "rate",
    ];

frappe.ui.form.on('Quotation', {
	validate(frm) {
	    frappe.show_progress('Adapting prices based on Positionsart...', 0, 100, 'Please wait');
        for (let i = 0; i < frm.doc.items.length; i++) {
            var item = frm.doc.items[i];
            if(item.positionsart != "Standard"){
                for ( let j = 0; j < fields.length; j++ ) {
                    frappe.model.set_value(item.doctype, item.name,fields[j],0);
                    frm.refresh_fields(fields[j]);
                    frappe.show_progress('Adapting prices based on Positionsart...', ((i+1)*(j+1))/((frm.doc.items.length)*(fields.length))*100, 100, 'Please wait');
                }
            }
	    }
	    frappe.show_progress('Adapting prices based on Positionsart...', 100, 100, 'Please close');
	}
});