Mehrere Templates für Rechnungen nutzen?

Habe heute InvoicePlane entdeckt und muss sagen ich bin soweit begeistert :slight_smile:

Eine Frage habe ich allerdings zu den Rechnungstemplates auf die ich noch keine schlüssige Antwort gefunden habe:

Wir haben aktuell 3 verschiedene Templates:

  • MwSt.
  • USt. frei weil IG Lieferung
  • USt. frei weil iG Leistung
  • Schweiz

Dass wir hier mehrere Templates in unserem aktuellen Programm einsetzen hat folgenden Grund (neben der Steuerberechnung): Es muss auf die Rechnung jeweils noch ein Satz mit drauf (z.B. eben am Template für die Schweiz folgender Satz: NICHT STEUERBARE AUSLANDSLEISTUNG.).

Kann man dies irgendwie mit InvoicePlane realisieren, ohne dass man jedes mal bei den Systemeinstellungen -> Invoices die Vorlage vor Rechnungsstellung ändern muss?

Dankeschön :slight_smile:
LG Andi

Hey, schau dir das mal an:

Wir haben das Problem ebenfalls und ich will versuchen es über ein internes Freitextfeld zu lösen. Mit der neuen Beta sind auch Selectfelder möglich, die perfekt dafür wären. Wenn ich es hinbekomme, melde ich mich hier noch einmal :slight_smile:

1 Like

Das schaut interessant aus - danke :slight_smile:

Aber wär das bei Updates nicht weg?

Das mit den Selectfeldern klingt gut. Würde mich freuen, wenn du mich hier am Laufenden halten könntest - vielen Dank!

Hab mir das jetzt ein bisschen angesehen - es müsste auch gehen (zumindest für meine Zwecke) wenn man im Rechnungs-Template den verwendeten Steuersatz abfragen kann und dann entsprechende Sätze einblendet.

Muss mich auf die Suche machen nach Variablen die ich da hernehmen kann :slight_smile:

Infos über Variablen in Templates: https://wiki.invoiceplane.com/en/1.5/templates/customize-templates

In version 1.5 sind lediglich die Custom Fields hinzugekommen, der Rest war bereits vorher drin, also auch die Invoice Tax Rates. :wink:

1 Like

Dankeschön :slight_smile:

Das funktioniert bei mir und löst mein Problem:

<?php if($invoice_tax_rate->tax_rate_id == 2) { ?>
	<p style="font-weight: bold;">Innergemeinschaftliche Leistung, steuerfrei gem. ...</p>
<?php }
	else if($invoice_tax_rate->tax_rate_id == 3) { ?>
	<p style="font-weight: bold;">Innergemeinschaftliche Lieferung, steuerfrei gem. ...</p>
<?php } 
	else if ($invoice_tax_rate->tax_rate_id == 4) { ?>
	<p style="font-weight: bold;">NICHT STEUERBARE AUSLANDSLEISTUNG.</p>
<?php } ?>

Ich bin jetzt nicht der Programmierer, zerreist mich also nicht in der Luft sollte man etwas “schöner” schreiben können :wink:

Diese Abfrage funktioniert bei mir nun bei IP 1.5.0 Beta 4 leider nicht mehr.

Es sollte nun statt:
$invoice_tax_rate
heissen:
$invoice_tax_rates

Allerdings bekomme ich auch hier folgende Fehlermeldungen im PDF angezeigt:
https://paste.invoiceplane.com/view/705cfa38

Wenn ich nun allerdings nach “Trying to get property of non-object” google dann übersteigt das meine mageren PHP-Kenntnisse 8-). Leider.

Der Fehler bedeutet, dass du auf Variableninhalt zugreifen willst, der gar nicht vorhanden ist. Das liegt wahrscheinlich daran, dass innerhalb von $invoice_tax_rates mehrere Steuersätze gespeichert sind.

Demnach wäre es wenn dann $invoice_tax_rates[0]->tax_rate_id in der Abfrage. Mit [0] wird hierbei der erste Steuersatz ausgewählt.

Um weitere Fehler zu vermeiden, sollte die Abfrage noch erweitert werden:

<?php if(isset($invoice_tax_rates[0]->tax_rate_id) && $invoice_tax_rates[0]->tax_rate_id == 2) { ?>
...

Danke für die Hilfe.

Hab das so eingebaut, allerdings funktioniert es nicht.

Meine if-Abfrage schaut nun so aus:

<?php if(isset($invoice_tax_rates[0]->tax_rate_id) && $invoice_tax_rates[0]->tax_rate_id == 2) { ?>
	<p style="font-weight: bold;">Innergemeinschaftliche Leistung, steuerfrei gem. ...</p>
<?php }
	else if(isset($invoice_tax_rates[0]->tax_rate_id) && $invoice_tax_rates[0]->tax_rate_id == 3) { ?>
	<p style="font-weight: bold;">Innergemeinschaftliche Lieferung, steuerfrei gem. ....</p>
<?php } 
	else if(isset($invoice_tax_rates[0]->tax_rate_id) && $invoice_tax_rates[0]->tax_rate_id == 4) { ?>
	<p style="font-weight: bold;">NICHT STEUERBARE AUSLANDSLEISTUNG.</p>
<?php } ?>

Um Fehler auszuschliessen, hab ich jetzt noch mal das Standard-Template kopiert, den neuen Code eingefügt, zudem noch:

<?php print_r($invoice_tax_rates); ?>

Die Ausgabe dieser Zeile ist leer, im PDF steht nur:
Array ( )

Eventuell muss ich das nun doch wie @sash85 meinte mit den Freitextfeldern lösen. Ich blick hier nicht mehr durch. In der Beta 3 ging das ja leider noch wie schon geschrieben.

Es wurde wirklich nichts weiter geändert außer die umbenannte Variable. Die Historie kann hier eingesehen werden.

Die Variable $invoice_tax_rate ist nur innerhalb oder nach der Schleife verfügbar, die die Steuersätze darstellt. Diese beginnt an Zeile 190.

Wenn du deinen alten Code nutzen möchtest, dann bitte doppelt und dreifach prüfen, ob er richtig platziert wurde. Vor dieser Zeile funktioniert wenn überhaupt nur mein Lösungsvorschlag mit $invoice_tax_rates[0].

Ok, na ich glaub dir das eh. Aber verstehen tu ich es nicht. Aber ich komme eher aus dem Grafikbereich, wenns programmiertechnisch in die Tiefe geht in PHP steig ich aus. :slight_smile:

Also ich hab den Code eingefügt bei Zeile 250.

Und diese Zeile vor < /footer> bzw. bei Zeile 259:
<?php print_r($invoice_tax_rates); ?>

Aber die Ausgabe ist leer.
Ich versuche mir das in aller Ruhe mal anzusehen - so nebenbei komm ich nicht drauf. Allerdings sollt ich das hinkriegen, denn ich brauch nun eine Lösung für die Rechnungen und würd schon gern IP verwenden.

Hast du geprüft ob die entsprechende Rechnung einen Steuersatz zugewiesen hat? Weil egal was für Rechnung ich teste, bei mir ist die Variable nur leer, wenn ich der Rechnung keinen Steuersatz zugewiesen habe.

Hm, ja - einen Steuersatz schon, allerdings ist der 0%. Ist das vielleicht des Rätsels Lösung?

Ich habe IG-Leistung, IG-Lieferung und Schweiz jeweils einen Steuersatz mit 0%. Benötigen tu ich das für das jeweilige Gsatzl auf der Rechnung.

Kann es sein, dass bei 0% Steuersatz die Variable leer ist und ich die tax_rate_id 's nicht abfragen kann deswegen?

Und gleich noch eine Frage:
Ich stelle den Steuersatz bei dem Posten/Artikel ein. Bei “Belegsteuer” unten bei der Zusammenfassung lösche ich die 20% zum testen raus. Ist das falsch in dieser Konstellation? Ich kann dort zum testen nämlich keine anderen Steuersätze auswählen, es wird beim anlegen einer neuen Rechnung auch bei einem deutschen Testkunden mit UID 20% Ust. verwendet (ich bin aus Ö), und ich habe unten keine Möglichkeit, den Steuersatz für die gesamte Rechnung zu ändern. Kann nur mittels Symbol die 20% entfernen:

Hm, eigentlich sollte die Steuer ausgegeben auch wenn sie null ist. Aber ich teste das noch mal.

Auf jeden Fall. Ich habe das im Wiki bereits aktualisiert, das man nicht Artikelsteuern und Rechnungssteuern zusammen nutzen soll, da die Berechnung nicht 100%ig korrekt ist.
Aber du solltest jederzeit andere Steuersätze hinzufügen können. Was genau erscheint denn im Auswahlfeld, wenn du einen neuen Steuersatz hinzufügen willst?

Ja, das im Wiki hab ich eh gelesen, dass die beiden Steuervarianten (Artikelbezogen und Rechnungsbezogen) nicht gemixt werden sollten…

Was genau erscheint denn im Auswahlfeld, wenn du einen neuen Steuersatz hinzufügen willst?

Ich weiss nicht genau, welches Auswahlfeld du meinst - das beim Artikel zeigt mir alle 4 angelegten Steuersätze. Siehe Screenshot:

Bezüglich Rechnungs-Steuer hab ich ein kurzes Video gemacht um zu veranschaulichen wie das bei mir aussieht, ich weiss nicht ob das so gehört:
CloudApp

Ich kann hier nämlich eben nur die 20% rauslöschen. Dann aber nichts angeben…

Ah okay.

Haha, ich meinte im Dialog zum Hinzufügen von Steuersätzen. Unter Optionen, die erste Option, weiß gerade nicht was die übersetzt heißt…

Also manchmal ist man echt d*mm :smiley:

Dort oben hab ich das nicht vermutet mit dem generellen Steuersatz für die Rechnung - hab das Dialogfeld aber natürlich für andere Einträge x-mal offen gehabt. Das aber irgendwie nicht registriert…

Ein erster Text zeigt, dass wenn ich z.B: IG Leistung auswähle der entsprechende Satz drauf ist - so scheint es also zu funktionieren. :slight_smile:
Danke!