Idee für Datumsfeld gesucht

Hallo,

ich brauche mal eure Ideen. :blush:

Ich habe keine Produkte sondern Dienstleistungen (Beruf Dolmetscher).
Bei Produkten habe ich jetzt 3 angelegt, die ich benötige (Fahrtzeit, km-Geld, Dolmetschzeit). Diese funktionieren auch soweit.
Jetzt habe ich aber das Problem, dass ich bei einem Kunden nicht nur an einem Tag sondern z.B. 3 Tage die Woche bin. In der Rechnung soll das dann pro Zeile so aufgegliedert werden, dass dann als erstes das Datum des Termins und dann die anderen 3 Werte stehen.
Wie kann ich das am besten realisieren mit dem Datum?
Erst hatte ich überlegt, mit benutzerdefinierten Feldern das ganze zu machen. Da muss ich aber dann ja diverse Felder anlegen, da ich ja eine unterschiedliche Zahl an Terminen pro Monat habe.

Vielleicht hat ja jemand eine Idee für mich?

Gruß
Anja

Note: Sorry to post in English. Please, do not change into English at any time. I’ve read and can read your messages with the help of Google Translator. Thus, please continue using German in this German forum :wink:

Since the Description field can be edited, I would suggest that you use it as a template:

  1. create a product with “Date: dd-mm-2018” or similar in the Description,
  2. insert the product in the invoice,
  3. replace the “dd-mm” text with the actual date in the invoice,
  4. save the invoice and the new Description text will be saved with your invoice.

as shown in this screenshot:

date-in-description

Vielen Dank für den Tipp.
Funktioniert schonmal. Jetzt werde ich mich ans Layout machen, da aktuell die drei Zeilen untereinander stehen, aber sie sollen dann pro Datum in einer Zeile stehen.

Ich bin froh zu wissen, dass es funktioniert (if it doesn’t make sense, blame the Google Translator :wink:)

It make sense. Thank you for your help.

Komme leider nicht ganz klar, wie es mit dem Datumsfeld weitergeht.
In der Description steht es jetzt drin, aber wie programmiere ich es, dass die Werte dann alle in einer Zeile stehen in folgendem Format:

Datum Fahrtzeit Arbeitszeit …
01-10-2018 1 Std. 2 Std. …

So wie ich es verstehe, benötige ich eine Funktion / Abfrage, wo ich auf die Description prüfe, ob diese gleich ist und schreibe die Werte dann nacheinander hin?

I don’t think you can achieve that without modifying the code of the software.

The description field is a plain text container and it will display the text as you write it (think of it as a post it note). If you enter a line break, it will keep it, and will display the text in multiple lines, and if you enter multiple spaces it will also keep them.

image

although apparently only line breaks will survive the conversion to PDF

image

And if you install any of the browser extensions mentioned here you will be able to enter tabbed spaces, although it may be removed as well during the HTML → PDF conversion process.

If you need or want to give your clients a more detailed report, you will have to create it outside InvoicePlane and add the file to the invoice as an attachment.

Hm, das ist jetzt schade, dass es nicht so funktioniert, wie ich will.

Da muss ich mir wohl eine andere Lösung überlegen, damit ich die verschiedenen Produkte in einer Zeile aufführen kann, wenn sie das selbe Datum haben.

Sorry! I also tried the project & tasks to see if that could be a solution for you, but it is not.

My best advice if you want to use IP is to enter one item per line, to type the service date in the description, and to sort items according to the service date. That way your customers will have all the information in chronological order.

Das Problem ist halt, dass die verschiedenen Werte ein Auftrag sind und zusammengehören. Kann ich schlecht in verschiedene Zeilen schreiben.
Und es sind pro Rechnung nicht nur ein Auftrag sondern z.B. 5 Aufträge an verschiedenen Tagen…

Ich werde es jetzt mal folgendermaßen probieren. Mal schauen, ob es klappt…

Neues custom_field für das Datum eingeführt .
Dieses vergleiche ich in einer if-Schleife mit dem description-Feld. Wenn diese übereinstimmen, soll er die Tabelle ausgeben.
Das ganze dann in einer foreach-Schleife, damit ich dann jedes Datum in einer eigenen Zeile habe.

Well, changing the software is the only way to make IP do things the way you want.

The drawback with that approach is that whatever changes you make you will have to reapply them every time you update to a new IP version. Thus, my recommendation is (1) mark and document your changes, and (2) keep a list of the files you have changed, so that next time you will not have to start from zero.

Die Original-Files habe ich nicht verwendet, sondern immer eine Kopie erstellt. Wie es sich für einen guten Programmierer gehört, habe ich auch die Änderungen dokumentiert (lt. meinen Lehrkräften in der Ausbildung :wink: ).
Eine Sicherheitskopie auf einem anderen Share wird am Ende des Tages auf einem anderen Share erstellt.

:clap: :+1:

When you are done with the changes, if you don’t mind, post a screen-capture so that we can see the final result. Maybe others will find it useful and we could incorporate it into IP.

Kann ich gerne machen, aber bis dahin ist es glaub ich noch ein weiter Weg.

Frage:
Mit
<?php foreach ($items as $item) ....
werden alle Werte der Produkte in das Array $item geschrieben.
Da das ganze ja ein Array ist, wie kann ich z.B. auf das erste Produkt nur zugreifen und dieses ausgeben?
Im Prinzip echo $item[0]. Bei mir kommt da leider immer nur nichts raus. So als würde da nichts drin stehen.

Without some context (e.g. the name of the file you are editing) I cannot answer your question, but you can inspect both $itemsand $item with the code print_r($items);.

For instance, in a view file containing html code you would insert,

<pre><?php print_r($items); ?></pre>
<pre><?php print_r($item); ?></pre>

to display the content of these variables/arrays.

Ich editiere eine Kopie von invoiceplane.php (das Rechnungstemplate).

In dem Bereich

<p class="einleitung">Somit stelle ich wie folgt in Rechnung:</p>
     <div class="berechnung">


 </div>

soll dann eine Tabelle rein, mit folgender Formatierung:

Einsatzdatum Einsatzdauer Fahrt- und Wartezeit Fahrtkosten Hin- & Rück Zwischensumme
15.10.2018 4 Stunden 2 Stunden 100€ xxxx €

Die Werte habe ich jeweils in einem Produkt hinterlegt. Ich habe also 4 Produkte angelegt.

Mit

<?php print_r($items); ?>
bekomme ich beispielsweise für die Einsatzdauer folgende Werte:
object(stdClass)#295 (34) { [“item_amount_id”]=> string(2) “31”
[“item_id”]=> string(2)
“31”
[“item_subtotal”]=> string(6) “195.00”
[“item_tax_total”]=> string(4) “0.00”
[“item_discount”]=> string(4) “0.00”
[“item_total”]=> string(6) “195.00”
[“product_id”]=>
string(1) “1”
[“family_id”]=> NULL
[“product_sku”]=> string(0) “”
[“product_name”]=>
string(12) “einsatzdauer”
[“product_description”]=> string(10) “dd.mm.YYYY”
[“product_price”]=> string(5) “65.00”
[“purchase_price”]=> NULL
[“provider_name”]=>
string(0) “”
[“tax_rate_id”]=> NULL
[“unit_id”]=> NULL
[“product_tariff”]=> string(1) “0”
[“invoice_id”]=> string(1) “9”
[“item_tax_rate_id”]=> string(1) “0”
[“item_product_id”]=>
string(1) “1”
[“item_date_added”]=> string(10) “2018-10-08”
[“item_task_id”]=> NULL
[“item_name”]=> string(12) “einsatzdauer”
[“item_description”]=> string(10) “08.10.2018”
[“item_quantity”]=> string(4) “3.00”
[“item_price”]=> string(5) “65.00”
[“item_discount_amount”]=> NULL
[“item_order”]=> string(1) “1”
[“item_is_recurring”]=> NULL
[“item_product_unit”]=> NULL
[“item_product_unit_id”]=>
NULL [“item_date”]=> NULL
[“item_tax_rate_percent”]=> NULL
[“item_tax_rate_name”]=> NULL }

Aktuell hänge ich jetzt, wie ich am besten auf die bestimmten Werte, die ich oben geschrieben habe pro Produkt zugreifen kann und nicht, so wie usprünglich alles ausgeben kann. Danach das Produkt Fahrtzeit …

Gedacht hatte ich mir, dass ich nach der foreach-Schleife eine if-Schleife baue und dort prüfe, ob das Feld Datum gleich dem Description-Feldes ist. Falls ja, soll er dann in der Tabelle den Wert von item_quantity von der Einsatzdauer ausgeben.

Falls noch was unklar ist, einfach melden.