Antwort auf: Hallo deeda,
ich finde gerade keine Zeit, das Skript zu überarbeiten.
Aber wenn Du dem Forum oder mir eine IDML-Datei mit einer Beispieltabelle, aus der die Anforderung hervorgeht, zur Verfügung stellst (am besten 'vorher - nachher'), dann kann ich mir das heute Abend mal genauer ansehen und das Skript vielleicht entsprechend überarbeiten.
Das wäre genial! Ich habe eben mal alles vorbereitet. Eine Vorher-Tabelle und eine Nachher-Tabelle und dazu noch einmal die Punkte direkt im Dokument, damit man es versteht. Macht echt Spaß in Indesign solche Dinge zu machen, auch wenn der Aufwand manchmal riesig ist :-)
Können Sie mir ihre Mail schicken, damit ich Ihnen das Dokument schicken kann? Ich kann hier die IDML leider nicht hochladen.
Hier nochmal die Basis des aktuellen Skripts, was schon gut funktioniert:
// simpleBilling.jsx
var MWST = 19/100;
if (app.selection[0].parent.constructor.name == "Cell"){
var myTable = app.selection[0].parent.parent;
var myLastCol = myTable.columns.length-1;
var myLastRow = myTable.rows.length-1;
var myStunden = myTable.columns.item(1).contents;
var myNetto = myTable.columns.item(2).contents;
var mySum = 0;
var myPrice = 0;
for (k = 1; k < myLastRow-2; k++) {
myPrice = ((myTable.columns.item(1).cells[k].contents.replace(",", "."))*(myTable.columns.item(2).cells[k].contents.replace(",", ".")));
myTable.columns.item(1).cells[k].contents.replace(".", ",");
myTable.columns.item(2).cells[k].contents.replace(".", ",");
myTable.columns[myLastCol].cells[k].contents = digitFormatter(myPrice) + " g";
mySum += (myTable.columns[myLastCol].cells[k].contents.replace(",", "."))*1;
}
myTable.columns[myLastCol].cells[myLastRow-2].contents = digitFormatter(mySum) + " h";
myTable.columns[myLastCol].cells[myLastRow-1].contents = digitFormatter(mySum*MWST) + " h";
myTable.columns[myLastCol].cells[myLastRow].contents = digitFormatter(mySum*MWST + mySum) + " h";
}
function digitFormatter(x) {
// Quelle: http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_runden#6
var k = (Math.round(x * 100) / 100).toString();
k += (k.indexOf('.') == -1)? '.00' : '00';
var p = k.indexOf('.');
return k.substring(0, p) + ',' + k.substring(p+1, p+3);
}