Trennlinie auf PDF zwischen den Artikeln, wie?

Thema wurde von kai_holst, 22. Juli 2023 erstellt.

  1. kai_holst

    kai_holst Erfahrener Benutzer

    Registriert seit:
    4. Mai 2022
    Beiträge:
    415
    Danke erhalten:
    173
    Danke vergeben:
    299
    Hallo allerseits,

    ich möchte gerne zwecks besserer Übersicht auf den Lieferschein- und Rechnungs-PDFs zwischen den einzelnen Artikeln eine feine hellgraue waagerechte Trennlinie haben.
    Kann mir da jemand einen Tipp geben oder hat das vielleicht bereits umgesetzt?
     
  2. Dominik Späte

    Dominik Späte Erfahrener Benutzer

    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.170
    Danke erhalten:
    1.043
    Danke vergeben:
    365
    Hallo Kai :)

    m.E. nicht praktikabel update-sicher machbar.

    /admin/includes/gm/classes/gmOrderPDF.php

    Links original (4.8.0.2), rechts angepasst:

    gambio-trennlinie-pdf.png

    Original-Code:
    Code:
            foreach($this->order_data as $product)
            {
                // -> font face/style/size/color
                parent::getFont($this->pdf_fonts['ORDER']);
    
                $new_y = $this->is_newPage($product, $product['PRODUCTS_ATTRIBUTES'], $y);
                if(!empty($new_y))
                {
                    $y = $new_y;
                }
    
                // -> font face/style/size/color
                parent::getFont($this->pdf_fonts['ORDER']);
    
                $y = $this->getCells($product['PRODUCTS_MODEL'],
                                     $product['PRODUCTS_NAME'],
                                     $product['PRODUCTS_QTY'] . ' ' . $product['PRODUCTS_UNIT'],
                                     $product['PRODUCTS_TAX'],
                                     $product['PRODUCTS_PRICE_SINGLE'],
                                     $product['PRODUCTS_PRICE'],
                                     $y,
                                     $this->pdf_fonts_size ?? null,
                                     '0',
                                     '');
    Anpasster Code:
    Code:
            foreach($this->order_data as $c => $product)
            {
                // -> font face/style/size/color
                parent::getFont($this->pdf_fonts['ORDER']);
    
                $new_y = $this->is_newPage($product, $product['PRODUCTS_ATTRIBUTES'], $y);
                if(!empty($new_y))
                {
                    $y = $new_y;
                }
    
                // -> font face/style/size/color
                parent::getFont($this->pdf_fonts['ORDER']);
                $DrawColorBk = $this->DrawColor;
                $this->SetDrawColor(200, 200, 200);
    
                $y = $this->getCells($product['PRODUCTS_MODEL'],
                                     $product['PRODUCTS_NAME'],
                                     $product['PRODUCTS_QTY'] . ' ' . $product['PRODUCTS_UNIT'],
                                     $product['PRODUCTS_TAX'],
                                     $product['PRODUCTS_PRICE_SINGLE'],
                                     $product['PRODUCTS_PRICE'],
                                     $y,
                                     $this->pdf_fonts_size ?? null,
                                     $c > 0 ? 'T' : '',
                                     '');
                $this->DrawColor = $DrawColorBk;
    
    200, 200, 200 sind die RGB-Farben, sprich: 255, 255, 255 = weiß, 0, 0, 0 = schwarz.
     
  3. kai_holst

    kai_holst Erfahrener Benutzer

    Registriert seit:
    4. Mai 2022
    Beiträge:
    415
    Danke erhalten:
    173
    Danke vergeben:
    299
    Danke Dominik,

    genau das Problem wollte ich schon vorm Jahr irgendwie lösen (lassen)...


    Genau wie ich es mir vorgestellt habe.
    Schön, dass Du Dir solcher Dinge einfach so annimmst.:)
     
  4. markus_gernandt

    markus_gernandt Erfahrener Benutzer

    Registriert seit:
    25. Mai 2018
    Beiträge:
    94
    Danke erhalten:
    12
    Danke vergeben:
    34
    Hey Dominik,

    super Sache.. Danke dir :)
    Kurze Frage: hast Du eine Idee wie man die hellblaue Trennlinie zwischen Artikel Nr , Artikel und den einzelnen Produkten sowie als Abschluss auch schwarz bekommt.... Es muss irgendwo hinterlegt sein. Habe diese php durchsucht aber finde da immer nur einen Platzhalter z.B.
    // -> set draw color

    parent::SetDrawColor((int)$this->pdf_draw_color['r'], (int)$this->pdf_draw_color['g'], (int)$this->pdf_draw_color['b']);

    Danke dir :)
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    3. Juli 2020
    Beiträge:
    51
    Danke erhalten:
    31
    Danke vergeben:
    26
    Bei der Konfiguration der Rechnung kann man beim Punkt "Schriften" ganz unten die Farbe für die Linien angeben. Ob das auch bei den hinzugefügten Linien zwischen den Artikeln greift, weiß ich nicht. Die drei anderen Trennlinien kann man damit aber farblich anpassen.
     
  6. Dominik Späte

    Dominik Späte Erfahrener Benutzer

    Registriert seit:
    16. Oktober 2018
    Beiträge:
    1.170
    Danke erhalten:
    1.043
    Danke vergeben:
    365
    Hi Markus :)

    Wenn Du die Trennlinien in der Standard-Farbe (Einstellung wie von @Alexandra R. beschrieben) haben möchtest statt hellgrau, lässt Du im angepassten Code folgende Zeilen weg:

    Code:
                $DrawColorBk = $this->DrawColor;
                $this->SetDrawColor(200, 200, 200);
    
    Code:
                $this->DrawColor = $DrawColorBk;
    
    Also in dem Fall sind nur diese 2 Zeilen anzupassen:

    Code:
           foreach($this->order_data as $c => $product)
    
    Code:
                                    $c > 0 ? 'T' : '',
    
     
  7. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.944
    Danke erhalten:
    629
    Danke vergeben:
    114
    #7 Developer, 26. Juli 2023
    Zuletzt bearbeitet: 26. Juli 2023
    Hallo Dominik,

    vielen Dank für das Teilen deines Codes. Das kommt mir irgendwie bekannt vor, jedoch nur in einer anderen Fassung. Viele Wege führen, wie immer, nach Rom. :)

    Ich würde dir gerne, aber auch den anderen Mitgliedern, die updatesichere Variante vorstellen, die ich aus meiner alten Schublade herausgekramt und etwas vom Staub befreit habe. Das Modul stammt bzw. Fragmente hieraus stammen ursprünglich aus Mai 2015, wo ich einem User geholfen habe, graue Kästchen vor den Produkten auf dem Lieferschein abzubilden. Danach kamen, um jetzt zurück zum Thema zu kommen, die Trennlinien dazu und viele weitere Anpassungen zum Lieferschein.

    Hier der damalige Beitrag mit den Kästchen: https://www.gambio.de/forum/threads...-rechnung-bzw-lieferschein.20331/#post-166052

    Im Laufe der Zeit gab es natürlich einige Anpassungen hierzu, weil das System sich ja auch weiterentwickelt hat.

    @all:

    Man muss ebenfalls wissen, dass die Stelle DEPRECATED ist und folglich für die Zukunft, die neue GX-Engine greifen wird.

    Das Modul bildet die grauen Kästchen und Trennlinien ab.

    Hier ein Bild dazu:

    lieferschein-graue-kaestchen-trennlinien.png

    Bevor Ihr euch das Ei ins Nest legt: Alle Daten ohne Gewähr. Macht für das Worst-Case-Szenario, wie immer, eine Sicherung.

    Nach dem Entpacken des Moduls, könnt Ihr die Daten via FTP ins Rootverzeichnis des Shops laden. Bitte vergisst nicht, den Cache zu leeren. Die ersten beiden davon reichen aus.

    Viel Spaß mit dem Modul. :)
     

    Anhänge:

  8. craft-tools

    craft-tools Erfahrener Benutzer

    Registriert seit:
    9. Juni 2016
    Beiträge:
    103
    Danke erhalten:
    63
    Danke vergeben:
    245
    Hallo @Developer,
    im Test Shop mit Lieferscheine klappt es wunderbar.
    Wäre schön wenn es bei den Rechnungen auch sowas gäbe.
    Danke
     
  9. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.944
    Danke erhalten:
    629
    Danke vergeben:
    114
    Hallo craft-tools,

    die Abfrage wurde um das Rechnungsformular erweitert. Jeder kann sich nun das Script (GM00066_gmOrderPDF.inc.php) nach seinem Gusto anpassen, sofern sich jemand damit auskennt und selbst die Modifizierungen vornehmen möchte.

    Siehe hierzu: Zeile 109 und 159

    Bevor Ihr euch das Ei wieder ins Nest legt: Alle Daten ohne Gewähr. Macht für das Worst-Case-Szenario, wie immer, eine Sicherung.

    Nach dem Entpacken des Moduls, könnt Ihr den Inhalt des Ordners via FTP ins Rootverzeichnis des Shops laden. Bitte vergisst nicht, den Cache zu leeren. Die ersten beiden davon reichen aus.

    Viel Spaß mit dem Modul. :)

    P.S.: Eigentlich benötigt man die if-Anweisung für die Überprüfung der Formulare in Zeile 109 und die reine Überprüfung der Formulare in Zeile 159 nicht, wenn man beide Typen ansteuern möchte. Habe sie jedoch implementiert, damit man dies selbst entscheiden kann, wenn man in Selbstjustiz Änderungen vornehmen möchte.
     

    Anhänge:

  10. craft-tools

    craft-tools Erfahrener Benutzer

    Registriert seit:
    9. Juni 2016
    Beiträge:
    103
    Danke erhalten:
    63
    Danke vergeben:
    245
    Hallo @Developer,
    Dankeschön, das sieht es gut aus!
    Werde unverändert so Übernehmen.
    ☺️