Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: PDFBill Next - PDF Rechnung/Lieferschein - Inklusive Mailversand

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 10.673
    • Geschlecht:
    Für das Senden der Rechnung bei Status-Änderung einer Bestellung im Backend des Shops gibt es ja eine (nicht update-sichere) Code-Anpassung in /admin/orders.php für case update_order':, wo mittels der Funktion xtc_pdf_bill() mit zweitem Parameter true die Rechnung versendet wird.
    Nun mußt du ja eine Art Connector haben der die von Ama. komemnden Daten verarbeitet. In dem Script mußt du die nötigen Files includen und die Funktion xtc_pdf_bill(ORDER_NO, true) mit der Bestellnummer, die dem Script ja bekannt sein müsste, als erstem Parameter und true als zweitem Parameter aufrufen.

    Gruß,
    noRiddle

    oneQ

    • Viel Schreiber
    • Beiträge: 704
    Bin gerade das Modul am testen und habe ein paar Fragen/Anmerkungen:

    1. In der bill_nr.php
    wird die letzte Rechnungsnummer in die DB geschrieben
    Code: PHP  [Auswählen]
        // update last ibn_billnr        
        $sqlUpLast = "UPDATE " . TABLE_CONFIGURATION . " SET configuration_value='" . $new_billnr . "' WHERE configuration_key = 'MODULE_INVOICE_NUMBER_IBN_BILLNR'";
        $resUpLast = xtc_db_query($sqlUpLast);

    und die neue ReNr aus dem DB-Eintrag + 1 ermittelt
    Code: PHP  [Auswählen]
        // Get last ibn_billnr

        $sqlLastBill = "SELECT configuration_value FROM " . TABLE_CONFIGURATION . " WHERE configuration_key = 'MODULE_INVOICE_NUMBER_IBN_BILLNR'";
        $resLastBill = xtc_db_query($sqlLastBill);
        $rowLastBill = xtc_db_fetch_array($resLastBill);
        $last_bill = $rowLastBill['configuration_value'];

        // check given ibn_billnr
        if(!isset($_POST['new_billnr'])) {
            $new_billnr = $last_bill + 1;

    In der PDFBill Konfiguration und im Modul Neue Rechnungsnummer heißt es aber "Nächste Rechnungsnummer"

    Sollte dann nicht die ReNr beim Update der DB um eins erhöht werden, anstatt beim Erstellen der Rechnung?

    Im Standardmodul "Neue Rechnungsnummer" läuft es "richtig".
    Code: PHP  [Auswählen]
        $data = (int)MODULE_INVOICE_NUMBER_IBN_BILLNR;
        if ($data == 0) {
          return 0;
        }
        $data++;
       
        $sql_data_array = array(
            'configuration_value' => $data
          );
       
        xtc_db_perform(TABLE_CONFIGURATION,$sql_data_array,'update',"configuration_key = 'MODULE_INVOICE_NUMBER_IBN_BILLNR'");

    2. In der Datei xtc_pdf_bill.inc.php wird customers_gender und customers_lastname aus der Tabelle customers und nicht aus der Tabelle orders ermittelt. Das führt u.a. dazu, dass bei Gastbestellungen keine personalisierte Anrede erfolgt und wenn diese Daten in der Bestellung evtl. angepasst werden, diese nicht übernommen werden.

    oneQ

    • Viel Schreiber
    • Beiträge: 704
    ...
     Das Modul funktioniert fast wie gewünscht, doch in den Dokumenteneingeschaften des PDF stehen für mich nicht deutbare Strings:
    (Dateianhang Link)

    Und die Strings kommen meines Erachtens direkt aus dem Code über die PdfBrief.php und nicht aus der Datenbank.
    Zum Beispiel:
    Code: PHP  [Auswählen]
    $this->SetCreator("PdfBrief, PDF-RechnungNEXT (c) 2011 Robert Hoppe www.katado.com");

    Sieht bei mir genauso aus. Hab auch schon versucht an verschiedenen stellen z.B. den Autor anzupassen. Bisher ohne Erfolg.

    csskoeln

    • Neu im Forum
    • Beiträge: 2
    Das kannst du in der Datei: inc/xtc_pdf_bill.inc.php in etwa nach Zeile: 30
    Code: PHP  [Auswählen]
    // Create PDF Object
        $pdf = new PdfRechnung();
     

    einfügen.

    Bsp:

    Code: PHP  [Auswählen]
    // Create PDF Object
    $pdf = new PdfRechnung();

    $pdf->SetAuthor('Maxmustermann');
    $pdf->SetTitle('Mein Titel '.$oID);
     

    Sollte vor:
    Code: PHP  [Auswählen]
     $pdf->Init("Rechnung");
    passieren.

    oneQ

    • Viel Schreiber
    • Beiträge: 704
    So sollte es gem. Anleitung funktionieren. Klappt aber irgendwie nicht.

    der Codeblock sieht bei mir so aus:

    Code: PHP  [Auswählen]
        // Create PDF Object
        $pdf = new PdfRechnung();
        $title = 'Rechnung' . $ibn_billnr;
        $pdf->SetTitle($title);
        $pdf->SetAuthor('oneQ');
        $pdf->Init("Rechnung");
     

    oneQ

    • Viel Schreiber
    • Beiträge: 704
    Eine andere Sache....
    Ich habe das Modul etwas umgebastelt, so dass das PDF-File direkt bei der Zuordnung der ReNr erstellt wird und der Download immer direkt auf den Link zeigt und nicht jedesmal das PDF neu erstellt.
    [ Für Gäste sind keine Dateianhänge sichtbar ] [ Für Gäste sind keine Dateianhänge sichtbar ]
    (Die CSS im Admin muss ich noch anpassen. Die Schrift ist by default echt schlecht zu lesen)

    Mit
     
    Code: PHP  [Auswählen]
          xtc_redirect(xtc_href_link(FILENAME_ORDERS, 'page=1&oID='.(int)$oID.'&action=edit'));
     
    schaffe ich es, nach Zuordnung der ReNr, dass man wieder auf die Bestellung geleitet und die vergebene ReNr. angezeigt wird. Wie schaffe ich es, dass das PDF auch direkt heruntergeladen wird? Eine Möglichkeit - die ich noch nicht getestet habe - wäre evtl. eine andere "action2" zu setzen, bei der die Bestellung aufgerufen und der Download durch redirection ausgeführt wird. Aber vielleicht geht das auch einfacher/eleganter?
    15 Antworten
    1057 Aufrufe
    14. April 2020, 09:34:16 von karsta.de
    3 Antworten
    3348 Aufrufe
    09. Oktober 2013, 15:33:09 von kaisa
    4 Antworten
    3644 Aufrufe
    22. Oktober 2012, 15:00:37 von peterpan19
    anything