PDF Rechnung anpassen und editieren?

Hallo zusammen,

mich würde mal interessieren wie ich bei der Easy Silver Mietshop Variante die Rechnungs und Lieferhinweis PDF editieren kann.
Zum einen ist das Logo von Oxid zwar schön, hier aber total überflüssig.
Dieses möcht5e ich durch mein Logo ersetzen und dazu noch das Rechnungsdatum von der Rechnugsnummer runter ziehen. diese werden in der “Standard” Variatne übereinander gedruckt.

Wenn dieses Problem schonmal einer hatte bitte lasst es mich wissen.

Gruß
Sven-TopSpin

Hi Sven-TopSpin

ich kann dir sagen wo man das Logo ändert aber das mit dem Datum weiß ich auch nicht.

unter /out/basic/img ist es die Datei pdf_logo.jpg erstelle dein Logo und speichere es unter pdf_logo.jpg ab und ersetze es mit der vorhanden Datei.

gruss

N3M3SIS

Greife nochmals dieses Thema auf. Hat evt. schon jemand rausgefunden, was der Fehler ist wenn in der PDF Erstellung bei Standart Datum und Rechnungsadresse übereinander liegt?

Hallo,

ich habe dazu einen Eintrag in unserem Bugtracker geschrieben (https://bugs.oxid-esales.com/view.php?id=1009). Dort wird auch eine Möglichkeit aufgezeigt, wie man das Verhalten ändern kann.

Gruß

Vielen Dank für die Info, werde es gleich mal durchführen, aber in welcher Datei oder .tpl muss ich das machen?

Die Datei myorder.php liegt in dem Ordner modules/invoicepdf/. (Am besten vorher die Datei sichern)
Hierbei gibt es ausnahmsweiße mal keine Template Datei :slight_smile:

Wenn du weitere Sprachvariablen einbauen möchtest, musst du diese in der language Datei cust_lang.php in dem Verzeichnis out/admin/de/ einbinden.

Gruß

Ich habe auch ein Problem mit dem Rechnungsdatum, bin aber schon dabei es zu ändern. Wenn wer ein paar hilfreiche Tipps hat kann er sie mir gerne mitteilen.

Das Rechnungsdatum soll immer das Datum sein, an dem die Rechnung bezahlt worden ist, und nicht das aktuelle Datum. Speziell bei Vorrauskasse und wenn man die Rechnungen später noch einmal ausdruckt ist das sehr sinnvoll.

Auch macht es keinen Sinn bei Vorrauskasse auf der Rechnung “Zahlbar bis” drauf stehen zu haben.

habs geändert:

Dann ist Rechnungsdatum gleich Bezahldatum.

Rechnung:
~Zeile 481
Habs einfach geändert, da zahlbar bis nicht gebraucht wird:
(Originalzeilen besser nicht löschen sondern auskommentieren und diese Zeilen verwenden)

protected function _setPayUntilInfo( &$iStartPos )
{
    //macht das "Bezahlbar bis" weg
    $text = $this->_oData->translate( 'ORDER_OVERVIEW_PDF_PAYED' );
    $this->font( 'Arial', '', 10 );
    $this->text( 15, $iStartPos + 4, $text );
    $iStartPos += 4;
}

~Zeile 913
// shop city Bezahldatum statt aktuellen Datum
$aPaymentDate = explode( ’ ‘, $this->oxorder__oxpaid->value );
$sPaymentDate = oxUtilsDate::getInstance()->formatDBDate( $aPaymentDate[0]);
$sText = $oShop->oxshops__oxcity->value.’, '.$sPaymentDate;

Lieferschein:
~Zeile 1039
// shops city Bezahldatum statt aktuellen Datum
$aPaymentDate = explode( ’ ‘, $this->oxorder__oxpaid->value );
$sPaymentDate = oxUtilsDate::getInstance()->formatDBDate( $aPaymentDate[0]);
$sText = $oShop->oxshops__oxcity->value.’, '.$sPaymentDate;
$oPdf->setFont( ‘Arial’, ‘’, 10 );
$oPdf->text( 195 - $oPdf->getStringWidth( $sText ), 95, $sText );

Dann ist Rechnungsdatum gleich dem Bezahldatum.

Anschließend noch den Text für ORDER_OVERVIEW_PDF_PAYED noch in basic/admin/language/ Dateien eintragen, sowas wie Rechnungsdatum entspricht Lieferdatum und Bezahldatum.

Im Footer BIC, IBAN, Mobilnummer, Steuernummer und PID einfügen

    /*$oPdf->line( 15, 272, 195, 272 );*/
    /* column 1 - company name, shop owner info, shop address */
    $oPdf->setFont( 'Arial', 'B', 7 );
    $oPdf->text( 15, 275, strip_tags( $oShop->oxshops__oxcompany->value ) );
    $oPdf->setFont( 'Arial', '', 7 );
    $oPdf->text( 15, 278, strip_tags( $oShop->oxshops__oxfname->value ).' '. strip_tags( $oShop->oxshops__oxlname->value ) );
    $oPdf->text( 15, 281, strip_tags( $oShop->oxshops__oxstreet->value ) );
    $oPdf->text( 15, 284, strip_tags( $oShop->oxshops__oxzip->value ).' '. strip_tags( $oShop->oxshops__oxcity->value ) );
    $oPdf->text( 15, 287, '' ), strip_tags( $oShop->oxshops__oxcountry->value ) );
    /* column 2 - phone, fax, url, email address */
    $oPdf->text( 50, 275, $this->translate( 'ORDER_OVERVIEW_PDF_PHONE' ).strip_tags( $oShop->oxshops__oxtelefon->value ) );
    $oPdf->text( 50, 278, $this->translate( 'ORDER_OVERVIEW_PDF_FAX' ).strip_tags( $oShop->oxshops__oxtelefax->value ) );
    $oPdf->text( 50, 281, $this->translate( 'Email: ' ).strip_tags( $oShop->oxshops__oxorderemail->value ) );
    $oPdf->text( 50, 284, $this->translate( 'Internet: ' ).strip_tags( $oShop->oxshops__oxurl->value ) );

// Hier kann man noch eine Mobilnummer einfügen
$oPdf->text( 50, 287, ‘’), $this->translate( ‘Mobil: +49 (170) 12345678’ ) );

    /* column 3 - bank information */
    $oPdf->text( 100, 275, strip_tags( $oShop->oxshops__oxbankname->value ) );
    $oPdf->text( 100, 278, $this->translate( 'ORDER_OVERVIEW_PDF_ACCOUNTNR' ).strip_tags( $oShop->oxshops__oxbanknumber->value ) );
    $oPdf->text( 100, 281, $this->translate( 'ORDER_OVERVIEW_PDF_BANKCODE' ).strip_tags( $oShop->oxshops__oxbankcode->value ) );
    $oPdf->text( 100, 284, $this->translate('BIC: ' ).strip_tags( $oShop->oxshops__oxbiccode->value ) );
    $oPdf->text( 100, 287, $this->translate('IBAN: ' ).strip_tags( $oShop->oxshops__oxibannumber->value ) );
    
    /* column 4 - VAT information */
    $oPdf->text( 145, 275, 'ESt.Nr.111/222/33333 Finanzamt XXX' );
    $oPdf->text( 145, 278, $this->translate('UStID: ').strip_tags( $oShop->oxshops__oxvatnumber->value ) );
    $oPdf->text( 145, 281, 'PID: kann hier noch stehen' );
    $oPdf->text( 145, 284, '' );
    $oPdf->text( 145, 287, '' );
}

WENN mir jetzt noch einer sagen könnte, wie ich ein Hintergrundbild auf die Rechnung bringe wäre ich glücklich.

Hallo,

bei mir erscheint in der Rechnung neben dem Gesamtpreis [B]USt. %[/B] (das habe ich bereits entfernen können), direkt darunter [B]19[/B] (wie bekomme ich die Zahl weg?).

Durch beide genannten Zeichenketten sieht die Rechnung in der rechten Spalte nämlich sehr unschön aus. Für die Mehrwertsteuer wird ja unter der Artikelbeschreibung sowieso eine extra Spalte zzgl. MwSt. 19% Betrag ausgegeben.

Daher denke ich sind o.g. Zeichenketten überflüssig. Wie bekomme ich die weg?

Wer kennt die Lösung?

Vielen Dank,
RudiU

Schonmal dran gedacht, dass du auch Artikel mit 7% MwSt verkaufen kannst ? Dann brauchst du es wieder.

Ansonsten gibt es irgendwo eine email?pdf?tpl an der du dich versuchen kannst.

CYA
Firefax

Hallo,

dann tauchen die 7% ja wohl in der Spalte Beschreibung mit zzgl. MwSt. 7% Betrag auf.

[B]Nochmal[/B], auf der PDF-Rechnung erscheinen bei mir insgesamt 6 Spalten (Menge, Art.-Nr. Beschreibung, Einzelpreis, Gesamtpreis und USt. % ).

Ich möchte die letzte Spalte komplett entfernen, das diese das Design zerreist und von mir nicht gebraucht wird!

Das ist mit Sicherheit in der [B]modules/invoicepdf/myorder.php[/B] hinterlegt, aber wo?

Wer kennt sich damit aus?

Gruß
RudiU

Habs gefunden,

die Zeile
$oPdf->text( 195 - $oPdf->getStringWidth( $oOrderArt->oxorderarticles__oxvat->value ), $iStartPos, $oOrderArt->oxorderarticles__oxvat->value );
ist auszukommentieren

Hallo Angusmedia,

danke für den Tip mit der Rechnung. Leider kriege ich es nicht hin, die Variable ORDER_OVERVIEW_PDF_PAYED richtig zu platzieren und zu bestücken. Ich habe sie in die Datei out/admin/de/lang.php direkt vor ORDER_OVERVIEW_PDF_PAYUPTO eingefügt:
‘ORDER_OVERVIEW_PDF_PAYED’ => ‘Rechnungsdatum = Lieferdatum’,
‘ORDER_OVERVIEW_PDF_PAYUPTO’ => 'Zahlbar bis zum ',
In der Rechnung wird aber nur der Variablenname angezeigt.

Wenn ich festen Text an der Stelle im Programm verwende, wird dieser angezeigt. Hier die neue Funktion:
protected function _setPayUntilInfo( &$iStartPos )
{
if ($this->_oData->oxorder__oxpaymenttype->value != “oxidpayadvance”)
$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->font( ‘Arial’, ‘’, 10 );
$this->text( 15, $iStartPos + 4, $text );
$iStartPos += 4;
// $text = $this->_oData->translate( ‘ORDER_OVERVIEW_PDF_PAYED’ );
$text = ‘Rechnungsdatum = Lieferdatum’;
$this->text( 15, $iStartPos + 4, $text );
$iStartPos += 4;
}
Wo is’n da jetzt der Hänger ?

Viele Grüße

Wie bekomm ich das Widerrufsreht auf die Rechnung?

kann mir einer Helfen? Bitte.

Hallo Ralf09,

dazu muss eine neue Methode geschrieben werden, die dir den Text aus der Datenbank, je nach Sprache des PDF’s, ausliest.
Im angehängten Script kannst du diese ganz unten finden (“getRightOfWithdrawal()”). Damit der Text ausgegeben wird, musst du an der richtigen Stelle die Methode mit $this->getRightOfWithdrawal() aufrufen.
Beispiel:
$oPdf->text( 15, 128, $this->getRightOfWithdrawal() ) );

Bei dem Dateinamen musst du natürlich noch die Endung “.txt” entfernen :wink:

edit: Hab ich mit einer CE 4.2.0 getestet

Hallo Michael,

mal eine Frage am Rande: woher weißt Du, welche Methoden zur Verfügung stehen und welche Variablen Smarty zur Auswahl hat? Bei meinen Anpassungen ist das ein ewiges Gesuche und Ausprobiere, bis ich endlich einmal etwas passendes finde.

Vielen Dank schon einmal dafür!

Grüße

Armin

Hallo Armin,

ich nutze dazu ausgiebig die Sourcecode Dokumentation der CE Version. Die aktuellste findest du hier: http://www.oxid-esales.com/de/resources/help-faq/manual-eshop-pe-ce-4-0-0-0/informationen-fuer-entwickler
Dort hat man die Möglichkeit die Klassen nach Methoden und Variablen zu durchsuchen.

In dem Fall war es so:
Da der Shop das PDF standardmäßig in Deutsch und Englisch ausgeben kann, muss ja irgendwo in der Klasse eine entsprechende Methode sein, die die jeweilige Sprachdatei einbindet. So hab ich nach dem Wort “lang” die Datei durchsucht und bin so schnell auf die passende Methode gefunden.

Ich möchte den linken Rand der Rechnung komplett etwas einrücken - etwa 2,5 cm - damit sich die Rechnung auch ganz normal lochen und abheften lässt.

Sehe ich das richtig daß ich dazu in jedem Abschnitt $iLPos extra anpassen muß? Oder gibts da sowas wie ne globale Variable?:confused:

Problem noch nicht gelöst, hat denn niemand ne Idee dazu?

Ich hab auch ein Problem mit dem anpassen der Rechnung … geht dabei aber eher um die Qualität bzw. Auflösung des Logos oben im Formular:

Mein Logo hat einen weißen Hintergrund und sollte daher auf der PDF Datei dann ohne einen sichtbaren Rand gedruckt werden.
Allerdings erscheint das Logo im Ausdruck mit einem leicht grauen Hintergrund und von der Qualität auch wesentlich schlechter, als wenn ich die Grafik direkt auf meinem Drucker ausgebe.
Ich habe jetzt auch schon mit verschiedenen Qualitäten die Datei (PNG und JPG) im Shop ausprobiert (75 dpi, 150 dpi und 300 dpi) - das Ergebnis ist immer das gleiche … und auch die Schrift ist im PDF Ausdruck verpixxelter als ich das möchte …

Mein Code:


        //logo
        $myConfig = $this->getConfig();
        $aSize    = getimagesize( $myConfig->getAbsImageDir().'/faktura_logo.png' );
        $iMargin  = 195 - $aSize[0] * 0.2;
        $oPdf->setLink( $oShop->oxshops__oxurl->value );
        $oPdf->image( $myConfig->getAbsImageDir().'/faktura_logo.png', $iMargin, 10, $aSize[0] * 0.2, $aSize[1] * 0.2, '', $oShop->oxshops__oxurl->value );
        return 14 + $aSize[1] * 0.2;

Mit MARGIN wird ja ein Randabstand definiert … aber warum werden alle SIZE-Werte mit 0.2 multipliziert?
Gibt es keine Möglichkeit, die Grafikdatei dort wirklich 1:1 einzubinden, damit die Qualität des Ausdrucks besser wird?
(Evtl. wäre dann auch das Problem mit dem Grauschleier im Hintergrund behoben …)