"bezahlt am:" in Rechnung einfügen

Hallo,

ich versuche mich eben an Anpassungen der PDF Rechnung.

Wenn ein Kunde bestellt hat, dann kann ich (im Admin) bei der Bestellung das Datum der Bezahlung eingeben.

Alle Bezahlungsmethoden, außer Rechnung sind ja in irgendeiner Form Vorkasse, d. h. der Kunde erhält seine Artikel erst nach Bezahlung.

In der myorder.php habe ich nun eine Abfrage eingebaut, nach welcher entweder:

Ihre gewählte Zahlunsweise: Rechnung
Zahlbar bis zum 18.10.2011

Oder alternativ:

Ihre gewählte Zahlweise: Vorkasse
Betrag erhalten am: 12.10.2011

Das sieht so aus:

    protected function _setPayUntilInfo( &$iStartPos )
    {
		if ( $this->_oData->oxorder__oxpaymenttype->value == 'oxidinvoice') {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ).date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) ); }
		else { $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_GETPAYMENT' ); }
        $this->font( $this->getFont(), '', 10 );
        $this->text( 15, $iStartPos + 4, $text );
        $iStartPos += 4;
    }

Wobei ‘ORDER_OVERVIEW_PDF_GETPAYMENT’ neu in der Sprachdatei für “Betrag erhalten am:” definiert ist.

Leider fehlt mir am Ende wie ich das Datum der Bezahlung einfügen kann, bzw. in welcher Variablen wird dieses Datum abgelegt und wie kann ich das einfügen?

Bin für jeden Tipp dankbar.

In der Tabelle oxorder gibt es eine Spalte oxpaid - dort stehen allerdings nur die Zeitangaben der eingegangenen Zahlungen.

Der Wert “zahlbar bis” wird so nicht erfasst - denkbar wäre aber vielleicht diesen errechnen zu lassen mit dem Datum aus oxorderdate in der selben Tabelle.

Hallo,

vielen Dank für deine Antwort.

[QUOTE=Hebsacker;70596]In der Tabelle oxorder gibt es eine Spalte oxpaid - dort stehen allerdings nur die Zeitangaben der eingegangenen Zahlungen.[/QUOTE]

Genau das will ich ja auch einfügen und anzeigen lassen bei: “Betrag erhalten am:”

Auch habe ich die Zahlungsart: Barzahlung/Selbstabholung einfügen können.

Leider habe ich noch ein problem mit der Syntax beim Einfügen des Bezahlt-Datums.

Anbei nochmals der Code-Schnipsel mit der Frage, was ist da in der “else - Zeile” falsch, weswegen mir nichts ausgegeben wird.

    protected function _setPayUntilInfo( &$iStartPos )
    {
		if ( $this->_oData->oxorder__oxpaymenttype->value == 'oxidinvoice') {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ).date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) ); }
		elseif ( $this->_oData->oxorder__oxpaymenttype->value == '137f22ee658e97f842a2d06b08e7e9dc') {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_GETPAYMENT' ); }		
		else { $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_GETPAYMENT' ).$this->_oData->oxorder__oxpaid->value.; }
        $this->font( $this->getFont(), '', 10 );
        $this->text( 15, $iStartPos + 4, $text );
        $iStartPos += 4;
    }

Frage hat sich erledigt, hab´s hingekriegt.

Dann teile uns das doch bitte mit wie du es hinbekommen hast ;).
Gibt ja vielleicht noch mehr User die das so auch gerne hätten…

protected function _setPayUntilInfo( &$iStartPos )
    {
		if ( $this->_oData->oxorder__oxpaymenttype->value == 'oxidinvoice') {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ).date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) ); }
		elseif ( $this->_oData->oxorder__oxpaymenttype->value == '137f22ee658e97f842a2d06b08e7e9dc') {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_GETPAYMENT' ); }		
		else { $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_WRITEPAYMENT' ).$this->_oData->oxorder__oxpaid->value; }
        $this->font( $this->getFont(), '', 10 );
        $this->text( 15, $iStartPos + 4, $text );
        $iStartPos += 4;
    }

So funktioniert es jetzt. Ich hatte hinter dem letzten “value” einen Punkt zuviel.

Zusätzlich habe ich noch in der lang.php folgendes definiert:

'ORDER_OVERVIEW_PDF_GETPAYMENT'                            => 'Betrag erhalten',
'ORDER_OVERVIEW_PDF_WRITEPAYMENT'                          => 'Betrag erhalten am: ',

Gruß Achim

Hallo zusammen,

ich habe eben mal versucht den Code aus dem letzten Beitrag in mein myorder.php einzufügen. Und zwar habe ich den bestehenden Code bei Zeile 518 bei protected function _setPayUntilInfo( &$iStartPos ) einfach komplett ersetzt. Also statt:

    protected function _setPayUntilInfo( &$iStartPos )
    {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ).date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) );
        $this->font( 'Arial', '', 10 );
        $this->text( 15, $iStartPos + 4, $text );
        $iStartPos += 4;
    }

eben den geposteten Code. Leider kann jetzt im Backend kein PDF mehr generiert werden, es passiert einfach garnichts. Habe ich es an der falschen Stelle eingefügt oder wo liegt mein Fehler?

Danke für jeden Tip! und viele Grüße,
Jan

P.S.: Die 2 Zeilen in der lang.php habe ich iengefügt.

Schau dir mal die zeile an:

		elseif ( $this->_oData->oxorder__oxpaymenttype->value == '137f22ee658e97f842a2d06b08e7e9dc') {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_GETPAYMENT' ); }

Ich habe hier eine neue Zahlungsmethode eingefügt, welche nicht Standart von oxid ist.

Versuch mal die beiden Zeilen zu löschen, dann müsste es auch bei dir gehen. (Bei mir ist dies Zahlungsweise: “Barzahlung, Selbstabholung” welche ich selber als Zahlungsart in der Datenbank festgelegt habe. Oxid findet bei dir wahrscheinlich nichts und deswegen generiert oxid auch keine PDF)

Gruß Achim

Hallo Achim,

danke für deine Antwort und die Erläuterung!

Habe die beiden Zeilen entfern, mein Code schaut jetzt wie folgt aus:

	protected function _setPayUntilInfo( &$iStartPos )
    {
		if ( $this->_oData->oxorder__oxpaymenttype->value == 'oxidinvoice') {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ).date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) ); }
		else { $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_WRITEPAYMENT' ).$this->_oData->oxorder__oxpaid->value; }
        $this->font( $this->getFont(), '', 10 );
        $this->text( 15, $iStartPos + 4, $text );
        $iStartPos += 4;
    }

Jedoch noch immer das gleiche Problem, es wird keine PDF mehr generiert.

Viele Grüße und einen ruhigen Feiertag,
Jan

Welche Version haste denn?

Ich würde erstmal eine Bestellung mit Zahlungsart Rechnung erstellen und dann sehen, ob die Rechnung auch erstellt wird.

Dann versuch mal eine Bestellung zu machen mit einer anderen Zahlungsart und dann im Admin die Zahlung als “erhalten” eingeben. (Wenn die Zahlung noch nicht als “erhalten” definiert ist, dann ist das Feld “oxorder_oxpaid” in der Datenbank leer vielleicht liegts daran…

Wenn bei Zahlung per Rechnung die PDF erstellt wird, dann liegt der Fehler nach “else”,

Viel Glück,

Achim

Hi, verwende CE 4.4.7_30016

Im Shop kann man nur per Vorauskasse und PayPal bezahlen. Ohne die Änderung von oben funktioniert das generieren des PDFs, ob die Zahlung per PayPal oder Vorauskasse war ist egal, geht beides :slight_smile:

Aber ich teste mal durch und melde mich nochmal…danke schonmal

Eben sehe ich, du hast 4.4.7, meine Änderungen sind für die Version 4.5.2

Ob das so bei dir überhaupt geht, weis ich nicht. Schau mal in deiner Datenbank nach, ob die Variable für das “bezahlt-Datum” auch die “oxorder_oxpaid” ist.

Dann würde dir reichen, wenn du nur das einfügst:


    protected function _setPayUntilInfo( &$iStartPos )
    {
        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_WRITEPAYMENT' ).$this->_oData->oxorder__oxpaid->value; 
        $this->font( 'Arial', '', 10 );
        $this->text( 15, $iStartPos + 4, $text );
        $iStartPos += 4;
    }

Dann steht auf deiner Rechnung:
Betrag erhalten am: “Datum”

Bei mir geht noch:
Rechnung, dann rechnet er 1 Woche in die Zukunft.
Ansonsten steht Betrag erhalten (Bei Selbstabholung ohne Datum, das schreibst dann bei Abholung von Hand rein)
Oder die anderen Verfahren (Paypal, Vorauskasse, Abbuchung ect. dann schreibt er das Datum rein, an welchem du im Admin die Zahlung verbucht hast)

Gruß Achim

stimmt natürlich, die anderen Fälle brauche ich dann garnicht :slight_smile: Danke nochmal.

Im PDF wird das Datum nun korrekt ausgegeben, leider funktioniert aber die Übersetzung nicht:

“ORDER_OVERVIEW_PDF_WRITEPAYMENT2011-11-01 15:32:25”

In der lang.php steht der Eintrag wie folgt:
‘ORDER_OVERVIEW_PDF_GETPAYMENT’ => “Betrag erhalten”,
‘ORDER_OVERVIEW_PDF_WRITEPAYMENT’ => "Betrag erhalten am: ",

Liegt der Fehler an der Übersetzung oder ein kleines fehlendes Zeichen im Code?!

Such mal ein bisschen rum, es gibt mehrere “lang.php” (zumindest in der 4.5.2)

…und dann war da noch tmp Ordner löschen :slight_smile:

[QUOTE=nochbr;72151]…und dann war da noch tmp Ordner löschen :-)[/QUOTE]

jep das hab ichs chon, ohne erfolg :slight_smile: ich such gerade noch nach weiteren lang.php
Bin bisher aber nur in out-admin-de-lang.php fündig geworden…

[B]EDIT1[/B]
Und ich glaube genau da gehört es auch rein :slight_smile:
Allerdings wird jetzt im Backend jedes Sonderzeichen/Umlaut nicht mehr dargestellt… Mist :confused: Ich mach mich ma auf die Fehlersuche, das ist unlogisch…

[B]EDIT2[/B]
Niemals Änderungen direkt in der lang.php machen :slight_smile: daran lags. Vielen Dank nochmals!

Wie kann man denn die Ausgabe des Zahlungszieles komplett entfernen`?

[QUOTE=rs webregie;83039]Wie kann man denn die Ausgabe des Zahlungszieles komplett entfernen`?[/QUOTE]

suche in der Datei mal nach “Sets pay until date to pdf” und klammere das was danach kommt bis zum nächsten Comment aus

[QUOTE=power87;83059]suche in der Datei mal nach “Sets pay until date to pdf” und klammere das was danach kommt bis zum nächsten Comment aus[/QUOTE]

Vielen Dank…
Leider gibt er dann das PDF nicht mehr aus. Das hatte ich nämlich auch schon probiert.

Version 4.5.4

Ich glaub dann geh ich lieber den voran genannten Weg und versuche für alle Paymentmöglichkeiten das Datum individuell zu gestalten.
Leider sind es sehr viele:

  • Vorkasse
  • Paypal
  • Nachnahme
  • Sofortüberweisung
  • giropay

hoffe ich bekomme das mit der Schleife hin…

versuche mal eine “Wurstellösung” und setze die Schriftgröße auf 0 - wär auf jeden Fall mal einen Versuch wert
"$this->font( $this->getFont(), ‘’, 0 );"