# Skripte # 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'); } }); ```