Jump to content

Rechnungsinhalt je nach Zahlart anpassen


Recommended Posts

Hallo Leute,

 

ich möchte BillSafe in mein Shop integrieren. Billsafe wünscht einen Hinweis auf der Rechnung, wenn mit BillSafe gezahlt wurde.

 

Meine Frage ist:

- Kann ich abfragen welche Zahlart verwendet wurde und dementsprechend einen Hinweis auf der Rechnung platzieren(Hinweis soll enthalten, dass Kunde den Betrag X selber zu überweisen hat) ?

- Wenn ja, wie? Und wo?

 

Danke,

brush51

Link to comment
Share on other sites

Den Freitext gibt es auch für PS 1.4. an der gleichen Stelle. Einen Text pro Zahloption kann man leider nicht einfügen, außer das entsprechende Zahlmodul sieht so etwas vor und man kann es dort einpflegen.

Link to comment
Share on other sites

Hallo brush51,

je nachdem wie gut Du Dich in Smarty auskennst, kannst Du auch eine if-Bedinung in das invoice.tpl an die entsprechende Stelle einbauen. Hier mal beispielhaft für die Zahlart "Kauf auf Rechnung"

{if $payment->payment_method == 'Kauf auf Rechnung'}
<tr style="width: 100%">
 <td style="width: 100%; text-align: justify;">{l s='Bitte überweisen Sie den Rechnungsbetrag spätestens bis zum' pdf='true'} {date("d.m.Y",((strtotime($order_invoice->date_add))+(86400*14)))} {l s='auf unser unten angegebenes Konto.' pdf='true'}</td>
</tr>
<tr style="width: 100%">
 <td style="width: 100%; text-align: justify;"><br />{l s='Die Rechnung wird zum Rechnungsdatum' pdf='true'} ({$date|escape:'htmlall':'UTF-8'}) {l s='fällig. Der Verzug tritt automatisch 30 Tage nach Fälligkeit ein. Die Ware bleibt bis zur vollständigen Bezahlung sämtlicher Forderungen aus dieser Geschäftsverbindung unser Eigentum.' pdf='true'}</td>
</tr>
{/if}

Viele Grüße

Edited by Luca01 (see edit history)
Link to comment
Share on other sites

Ja, aber da musst du ihn pro Rechnung immer wieder neu erfassen. Das Modul ist dagegen für dauerhafte Texte.

Nö, der Text wird einmal erfasst und ist dann in jeder Rechnung fix eingebaut. Eigentlich nicht das was brush51 umsetzen möchte. Luca01 kommt der Lösung näher. Einzubauen, aber nur wenn man ein eigenes Theme verwendet, denn bei einm Upgrade wäre der Code wieder überschrieben.

Link to comment
Share on other sites

Hallo Luca01,

 

dein Vorschlag ist bestimmt gut gemeint, aber das Problem, dass der Freitext immer wieder neu erfasst werden muss, sollte wirklich nicht mit einer Templateänderung bewirkt werden,wenn man das mit einem simplen Modul erreichen kann.

 

Direkte Eingaben in den Template-Textfeldern würden zudem bewirken, dass du auf diese Weise neue Pseudo-Übersetzungsitems kreierst, die bei den Übersetzungen auftauchen. Das unterläuft nicht nur die Mehrsprachigkeit, sondern führt zu Verwirrung, weil diese zusätzlichen Items als Übersetzungsvariablen angeboten werden, aber gar nicht mehr übersetzt werden müssen.

Davon kann ich nur dringend abraten.

 

Gruß

eleazar

Link to comment
Share on other sites

Danke für eure Zahlreichen Antworten. Ich bin am Überlegen, welches wohl die langfristigste und auch für den Kunden überzeugendste Methode wäre.

 

In der invoice.tpl die Abfrage zu machen und entsprechend einen Text zu platzieren hört sich verlockend and aber langfristig ist dies keine effektive Lösung, da durch "Theme wechsel" solche Sachen dann mitgezogen werden müssen. Ebenfalls sollte das dann noch sorgfältig dokumentiert werden, damit ich nach einer Zeit weiss, was ich da überhaupt angestellt hatte.

 

Ich nutze derzeit Prestashop in Version 1.4.9.0

 

Danke nochmals, ich werde jeden angesprochenen Lösungsweg durchdenken und testen. Ich berichte.

 

brush51

Link to comment
Share on other sites

Hallo brush51,

je nachdem wie gut Du Dich in Smarty auskennst, kannst Du auch eine if-Bedinung in das invoice.tpl an die entsprechende Stelle einbauen. Hier mal beispielhaft für die Zahlart "Kauf auf Rechnung"

{if $payment->payment_method == 'Kauf auf Rechnung'}
<tr style="width: 100%">
 <td style="width: 100%; text-align: justify;">{l s='Bitte überweisen Sie den Rechnungsbetrag spätestens bis zum' pdf='true'} {date("d.m.Y",((strtotime($order_invoice->date_add))+(86400*14)))} {l s='auf unser unten angegebenes Konto.' pdf='true'}</td>
</tr>
<tr style="width: 100%">
 <td style="width: 100%; text-align: justify;"><br />{l s='Die Rechnung wird zum Rechnungsdatum' pdf='true'} ({$date|escape:'htmlall':'UTF-8'}) {l s='fällig. Der Verzug tritt automatisch 30 Tage nach Fälligkeit ein. Die Ware bleibt bis zur vollständigen Bezahlung sämtlicher Forderungen aus dieser Geschäftsverbindung unser Eigentum.' pdf='true'}</td>
</tr>
{/if}

Viele Grüße

 

invoice.tpl existiert wahrscheinlich erst ab 1.5+ oder?

 

Ich habe noch 1.4.9 und finde diese Datei nicht.

Der freie Text stört, da er bei jeder Zahlart erscheint. Leider.

 

Wie gehe ich bei der Version 1.4.9 an die Sache heran? muss ich die classes/PDF.php bearbeiten?

Link to comment
Share on other sites

Im Prinzip ja. Da wirst du allerdings nicht weit kommen. Denn du hast hier nur den Freetext in de Funktion footer()

(ab Zeile 291) zur Verfügung. Aber vielleicht hat ja Luca01 eine Idee, das folgende entsprechen umzuschreiben:

 

global $cookie;
 if ($freeText = Configuration::get('PS_INVOICE_FREE_TEXT', (int)$cookie->id_lang))
  $totalLineDetailFooter += count(explode("\n", $freeText));
 // A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm).
 // This is a very common unit in typography; font sizes are expressed in that unit.
 // 8 point = 2.8mm and the cell height = 4mm
 $this->SetY(-(21.0 + (4 * $totalLineDetailFooter)) - ($y_delta * 7.0));
 $this->SetFont(self::fontname(), '', 7);
 $this->Cell(190, 5, Tools::iconv('utf-8', self::encoding(), self::l('P. ')).$this->GroupPageNo().' / '.$this->PageGroupAlias(), 'T', 1, 'R');
 if ($freeText)
 {
  $this->Cell(0, 5, utf8_decode($freeText), 0, 0, 'C', 0);
  $this->Ln(4);
 }

 

Ich würde es lieber lassen ...

Link to comment
Share on other sites

Hallo brush51,

ups, habe mich aus dem Thread geklinkt. :)

Klar lief das auch bei uns in der 1.4 Version der Code ist nur etwas komplexer und sah so aus:

$pdf->Cell(20, 5, ' ', 1, 0, 'L');
   $pdf->Ln(8);
   $methode='Kauf gegen Rechnung';
		    if ($order->payment == $methode)
		    {$pdf->SetFont(self::fontname(), '', 12);
		    $pdf->SetX(20);
		    /*Tools::displayDate(self::$order->invoice_date, self::$order->id_lang);*/
		    $mahndate=strtotime($order->invoice_date)+(86400*14);
		    $mahndate=date("d.m.Y", $mahndate);
   $pdf->MultiCell(170, 5,'Bitte überweisen Sie den Rechnungsbetrag spätestens bis zum '.($mahndate).' auf unser unten angegebenes Konto.', 0, 'J');
   $pdf->Ln(8);
   $pdf->SetX(20);
   $mahndate=strtotime($order->invoice_date);
		    $mahndate=date("d.m.Y", $mahndate);
		    $pdf->MultiCell(170, 5,'Die Rechnung wird zum Rechnungsdatum ('.($mahndate).') fällig. Der Verzug tritt automatisch 30 Tage nach Fälligkeit ein. Die Ware bleibt bis zur vollständigen Bezahlung sämtlicher Forderungen aus dieser Geschäftsverbindung unser Eigentum.', 0, 'J');

			 }

Ich hoffe es hilft Dir weiter. Man braucht Grundwissen in verschiedenen Codestrukturen um das wirrwarr zu verstehen. :blink:

Viele Grüße

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...