PDF Rechnung Datum zahlbar bis

Hallo

Ich kann einen Lieferschein perfekt auf PDF ausgeben.
Die Fristen und Layout verändern geht tadellos.

Eine Rechnung geht soweit auch, aber:
Das Format der Zahlungsfrist (und nur die Zahlungsfrist!)
laesst sich einfach nicht von

[B]2013-01-08
auf
08.01.2013 aendern.[/B]

Im Demoshop ist das im Ueberigen auch so.
[I]Auf dem Lieferschein scheints zu funken.
[/I]
Freundliche Grüsse
Alf

Der Fehler müsste hier zu finden sein …

    // setting invoice number
    if ( !$this->oxorder__oxbillnr->value ) {
        $this->oxorder__oxbillnr->setValue($this->getNextBillNum());
        $this->oxorder__oxbilldate->setValue( date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 10, date( 'Y' ) ) ) );
        $this->save();

Hallo zusammen,

ich habe gerade das gleiche Problem und nach ewigem Suchen leider noch keine passende Hilfe gefunden. Mir ist aufgefallen, dass in meiner Version des Shops (Version 4.7.1) die funktion “_setPayUntilInfo” anders aussieht als in manchen Themas hier beschrieben.

Hier, wie es bei mir aussieht:

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

Die Umformatierung mit date( ‘d.m.Y.’ …) ist zwar noch da, aber auskommentiert und ich weiß einfach nicht, wie ich das funktionsfähig anbinden kann. (Ist ja sicherlich nicht ohne Grund ausgebaut worden …?)

Danke für eure Hilfe im Voraus!

Viele Grüße,
Jacqueline

Ändere:

$text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ) . $this->_oData->oxorder__oxbilldate->value; //date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) );

in:

$text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ) . date( 'd.m.Y', strtotime($this->_oData->oxorder__oxbilldate->value));

:wink:

Hallo rubbercut,

vielen, vielen Dank! Funktioniert klasse :)! Dankeschön!

Viele Grüße,
Jacqueline

@rubbercut
Vielen Dank - das hat auch bei mir geklappt.

Ebenfalls merci @jshoffmann - hab dann die “richtige” Funktion auch noch gefunden

( _setPayUntilInfo ) :wink:

fg Alf

Beitrag gelöscht, da stimmt noch was nicht…

So, jetzt müsste das passen:

Da ist aber noch ein ganz anderes Problem in der myorder.php, was damit auch zusammenhängt.

Jedesmal, wenn du im Backend eine Rechnung ausdruckst (also eine PDF generierst) wird das aktuelle Tagesdatum ausgegeben. (In Deutschland so nicht richtig!!!)

Um das zu vermeiden ist in der Version 4.7.3 (oder früher?) das hinzugekommen:

        // setting invoice number
        if ( !$this->oxorder__oxbillnr->value ) {
            $this->oxorder__oxbillnr->setValue($this->getNextBillNum());
            $this->oxorder__oxbilldate->setValue( date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) ) );
            $this->save();
        }

Das bedeutet, beim ersten Aufruf der Rechnung, wird das Rechnunsdatum in der Datenbank gespeichert. (oxorder__oxbilldate)

Der Fehler dabei ist, es wird beim Abspeichern in die Datenbank bereits 7 Tage hinzuaddiert. Damit ist dieser Datenbankeintrag nicht mehr als Rechnungsdatum zu gebrauchen, sondern nur noch als Zahlungsziel und das Rechnungsdatum wird wieder als Tagesdatum ausgegeben.

Mein Vorschlag:

In der Zeile 853: + 7 löschen. (Das ist das Datum des ersten Aufrufes in der Datenbank.)

Damit können wir das PDF Rechnungsdatum aus der Datenbank übernehmen:

Zeile 1062:

        $sText = $oShop->oxshops__oxcity->getRawValue().', '.date( 'd.m.Y' );

ersetzen mit:

        $sText = $oShop->oxshops__oxcity->getRawValue().', ' .date( 'd.m.Y', strtotime($this->oxorder__oxbilldate->value));

Um dann aber auch das Zahlungsziel wieder in die Zukunft legen zu können, müssen wir noch die Zeile 619:

        $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ) . $this->_oData->oxorder__oxbilldate->value; //date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) );

mit dem ersetzen:

	$text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ) .date('d.m.Y' ,strtotime('+10 day', strtotime($this->_oData->oxorder__oxbilldate->value)));

(In dem Fall Zahlungsziel = 10 Tage)

Es gibt nur ein Problem: bei denen, die produktiv mit dem shop gearbeitet haben, stimmt nach der Änderung das Rechnungsdatum nicht mehr. (Ist bei den alten Rechnungen immer 7 Tage in der Zukunft)

Gruß Achim

Dann war da noch:

folgendes auskommentieren

        // payment date
        $oPdf->setFont( $oPdfBlock->getFont(), '', 10 );
        $text = $this->translate( 'ORDER_OVERVIEW_PDF_PAYUPTO' ).date( 'd.m.Y', mktime( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date( 'Y' ) ) );
        $oPdf->text( 15, $siteH + 4, $text );

sonst steht auf dem Lieferschein ein völlig wirres Datum. (Zahlbar bis zum…)

ich hoffe, ich habs korrekt zusammengefasst: https://bugs.oxid-esales.com/view.php?id=4999