Jooglies Goodies für Joomla und VirtueMart

VirtueMart Rechnung Pro - Dokumentation

Overrides für die Virtuemart-Rechnung und den VirtueMart-Lieferschein.

Das Admin Template wird durch ein System-Plugin ersetzt. Die Steuerung der Funktionen wurde aus dem Admin Template genommen und wird nun über das System-Plugin "Jooglies VirtueMart Overrides Controller" gesteuert. Bitte installieren Sie in Zukunft nur noch die Plugin-Version der Overrides. Das Admin-Template wird noch einige Zeit gepflegt werden, allerdings streben wir an, das Admin-Template im VirtueMart Core mit den VirtueMart-Entwicklern zusammen zu verbessern. Dieser Weg ist effizienter. Einige Funktionen wie die farbige Bestellliste werden demnächst über ein anderes kostenloses Plugin zur Verfügung gestellt.
Ein Grund für diese Entscheidung war das komplizierte Update des Admin Templates, ein Auto-Update für Admin Templates wie für andere Erweiterungen gibt es nicht. Nicht zur Version passende Admin Templates konnten zu Problemen mit VirtueMart und Joomla führen, es fehlten Funktionen. So stellten wir zwischenzeitlich vier verschiedene Versionen des Templates zur Verfügung, aus denen ausgewählt werden musste. Das war zu kompliziert.
Nun wird nur ein Plugin benötigt, das automatisch aktualisiert werden kann, und selten ein Update benötigt. In einem Wort: pflegeleicht.

Voraussetzungen für die Installation und Konfiguration

Voraussetzungen

  • FTP-Zugang und FTP-Programm zur Übertragung der Override-Dateien.
  • Zugang zum Joomla Erweiterungmanager als Super User oder Administrator.

Installation

Das ZIP-Archiv enthält vier Dateien im Ordner invoice/, die in den Override-Ordner invoice im Template kopiert werden müssen.
/templates/Mein_Template/html/com_virtuemart/invoice/
(Mein_Template entspricht dem Namen Ihres Templates)

Im Download sind zwei Dateien erhalten, für Neuistallationen bitte die neuere Version 3.4.x installieren, die andere Datei 3.2.x. ist für bestehende angepasste Systeme zum Vergleich.

Das Plugin "Jooglies VirtueMart Overrides Controller" (plg_system_jglvmoverrides.3.4.x.y.zip) wird über den Joomla Erweiterungsmanager installiert.
Joomla Menü -> Erweiterungen -> Verwalten -> Installieren

Bitte sichern sie zuerst alle vorhandenen Dateien im Ordner invoice, sofern er bereits vorhanden ist, ansonsten legen Sie diesen an.

Enthaltene Dateien:
  • invoice.php
  • invoice_order.php
  • invoice_items.php
  • invoice_orderitems.php

Sprach-Overrides in Joomla anlegen

Für einige Sprachvariablen können Sprach-Overrides angelegt werden, um die Voreinstellungen in VM Rechnung Pro an Ihre Bedürfnisse anzupassen. Bitte legen Sie die Overrides im Joomla-Backend sowohl für "Site" als auch "Administrator" an. (siehe Tutorial Sprach-Overrides anlegen)

  • COM_VIRTUEMART_SHOP_ADDRESS_LINE="Meine Firma, Mein Name, Meine Straße, 12345 Stadt"
  • COM_VIRTUEMART_UID="USt-IdNr. "
  • COM_VIRTUEMART_INVOICE_UID_MESSAGE="Übergang der Steuerschuld auf den Leistungsempfänger."
  • COM_VIRTUEMART_INVOICE_NUMBER_CONNECTOR=" Nr. "
  • COM_VM_CUSTOMER_NR="Kundennummer"
  • COM_VIRTUEMART_INVOICE_SPECIAL_TEXT="Ich möchte meinem Kunden eine Standardnachricht in jeder Rechnung mitteilen, das hat hier Platz."

Wenn Sie die Namen der Rechnung ändern möchten, legen Sie zusätzlich für Administrator und Site die Sprachvariable COM_VIRTUEMART_FILEPREFIX_INVOICE an.
Zum Beispiel: COM_VIRTUEMART_FILEPREFIX_INVOICE="Rechnung_"

Konfiguration

Es gibt zwei Möglichkeiten, die Layouts zu konfigurieren. Über die Variablen im PHP-Quelltext der Overrides oder durch das Plugin "Jooglies VirtueMart Override Controller) . Das Admin-Template wird nicht weiter entwickelt, allerdings noch einige Zeit gepflegt.
Wenn Sie keine Änderungen in den Layouts vorgenommen haben, empfehlen wir den Wechsel auf die Plugin-Version.

Da die Rechnungslayouts meistens nur einmal konfiguriert werden, und die Einstellungen dann nicht mehr geändert werden, ist es möglich, die Einstellungen für Live-Shops nur in den Layouts vorzunehmen und das Plugin nicht zu verwenden.

Plugin "Jooglies VirtueMart Overrides Controller" öffnen

  • Öffnen Sie den Plugin-Manager im Joomla-Menü -> Erweiterungen -> Plugins.
  • Geben Sie in der Suche "Jooglies" an.
  • Klicken Sie zum Öffnen des Plugins auf "System - Jooglies VirtueMart Overrides Plugin".

Rechnungseinstellungen im zweiten Reiter des Plugins

Die ersten drei Einstellungen bestimmen, welche Spalten in der Rechnung angezeigt werden.
Wählen Sie Nein, wenn Sie die Spalten Artikelnummer, Status oder Preisnachlass ausblenden möchten.

Die Einstellung zum Ausblenden der Mehrwertsteuer befindet sich nach wie vor im Reiter Kasseneinstellungen der originalen VirtueMart-Konfiguration.

Einige der folgenden Einstellungen sind selbsterklärend und werden hier nicht näher behandelt.

  • Anzeige der Lieferanschrift in der Rechnung. Ja/Nein. - Lieferanschrift wird unterhalb der Rechnung angezeigt.
  • Zeige Shopadresse im Brieffenster - Eine Sprachvariable wird oberhalb der Kundenadresse eingefügt: COM_VIRTUEMART_SHOP_ADDRESS_LINE
    Für diese Sprachvariable legen Sie bitte einen Sprach-Override in Joomla an.
  • Die Zahlungsart kann in der Tabelle zur Berechnung des Endpreises ausgeblendet werden (VM original eingeblendet).
  • Die Zahlungsart kann unterhalb der Tabelle zur Berechnung des Endpreises angezeigt werden. (Wenn keine Kosten für die Zahlungsart auftreten, kann so die Tabelle für die Berechnung des Endpreises kurz gehalten werden.)
  • Bei mehreren Mehrwertsteuersätzen kann unter der Tabelle zur Berechnung des Endpreises die getrennte Mehrwertsteuer angzeigt werden. Wenn der Shop nur eine MwSt. verwendet, kann dieses ausgeschaltet werden, sofern die MwSt. in der Tabelle oben angezeigt wird.
  • Falls Ihre Kunden eine Umsatzsteuer-Identifikationsnummer angeben, können Sie die Position auf der Rechnung bestimmen.
  • Bei Angabe einer USt-IdNr. können Sie eine beliebige Nachricht ausgeben, die über einen Sprach-Override für COM_VIRTUEMART_INVOICE_UID_MESSAGE angelegt wird. (z. Bsp. Übergang der Steuerschuld auf den Leistungsempfänger)

Umsatzsteuer-Identifikationsnummer

Das Template kann die USt-IdNr. des Kunden anzeigen, wenn ein Kundenfeld mit der Feldbezeichnung uid angelegt ist.

Für das Reverse-Charge-Verfahren kann in der Rechnung ein Hinweis auf dieses Verfahren angezeigt werden. Über die Sprachvariable COM_VIRTUEMART_INVOICE_UID_MESSAGE kann diese Nachricht an das entsprechende Recht des Landes angepasst werden.

Wir dürfen keine Beratung zu rechtlichen Fragen übernehmen. Die hier eingefügten Texte sind nur Beispiele aus Kundenarbeiten, die Sie durch eigene Texte ersetzen können. Bitte informieren Sie sich bei Ihrem Anwalt oder Steuerberater, um eine rechtsverbindliche Beratung zu erhalten.

Briefkopf für VirtueMart-Rechnungen konfigurieren

Der Kopf der VirtueMart-E-Mail und der Kopf der Rechnung sind identisch. Der Kopf wird weiterhin über die VirtueMart-eigenen Einstellungen für den Shop-Verkäufer konfiguriert.

Öffnen Sie die Verkäufer-Einstellungen über VirtueMart-Menü -> Shop -> Shop oder über Joomla-Menü -> VirtueMart -> Shop.

Wenn Sie noch kein Bild für den Verkäufer hochgeladen haben, können Sie dies nun im ersten Reiter nachholen. JPG ist bevorzugt, PNG wirft eine Fehlermeldung. Im Abschnitt "Datei hochladen" wählen Sie die Option "hochladen", anschließend eine Bilddatei auf der Festplatte aus. Speichern Sie mit dem Speichern-Button oben. Evtl. müssen Sie im Reiter (Ver)Käufer Informationen noch einige Angaben ausfüllen, bevor Sie speichern können.

Weiter zum Reiter Rechnungen/E-Mails.
Im Abschnitt Briefkopf verwenden Sie die folgenden Einstellungen, um ein Logo links und z. Bsp. Ihre Adresse rechts anzugeben.

  • Briefkopf anzeigen: Ja (Haken setzen)
  • Linie unter dem Briefkopf: Ja (empfohlen)
  • Verkäuferabbildung einblenden: Ja
  • Briefkopf-Zelle Höhenverhältnis: 1 (Voreinstellung)
  • Linienfarbe: #000000 (schwarz, Voreinstellung)
  • Größe der Verkäuferabbildung: 60mm (Der Wert steht für die Höhe.)

Beispiel-Code für Briefkopf/Header

Beispiel mit automatisch generierten Daten aus der Verkäuferadresse:

<table>
  <tr>
    <td style="width:30%;"> </td>
    <td style="width:70%;">
      <h1>{vm:vendorname}</h1>
      <p> </p>
      <p>{vm:vendoraddress}</p>
    </td>
  </tr>
</table>

Beispiel mit frei wählbarem Text:

<table>
  <tr>
    <td style="width:30%;"> </td>
    <td style="width:70%;text-align: right;">
      <h1 style="text-align: right;">Blumengeschäft Freudlinger</h1>
      <p>Im Rosengarten 12<br />
        12345 Rosendorf<br />
        Telefon: 01234 567890</p>
    </td>
  </tr>
</table>

Die erste Tabellenzelle TD mit der Breite 30% fügt Abstand zum Logo ein. Die zweite Tabellenzelle mit der Breite 70% enthält den anzuzeigenden Text. Diese Werte müssen je nach Art und Größe des Logos angepasst werden. Achten Sie darauf, dass es zusammen 100% werden.

Beispiel-Code für Brieffuß/Footer mit 4 Spalten

<table style="width: 100%;">
<tbody>
  <tr><td colspan="4"> </td></tr>
  <tr>
    <td style="width: 25%;vertical-align: top">
      <p>Geschäftsführer/Inhaber<br />
        Vorname, Name</p>
    </td>
    <td style="width: 25%;;vertical-align: top">
      <p>Name der Bank<br />
        IBAN DE00 0000 0000 0000 0000 00<br />
        BIC XXXXXXXXXXX</p>
    </td>
    <td style="width: 25%;;vertical-align: top">
      <p>Geben Sie bei einer Überweisung immer die Rechnungsnummer
        und Bestellnummer als Verwendungszweck ein.</p>
    </td>
    <td style="width: 25%;;vertical-align: top">
      <p>Amtsgericht -Stadt-, HRB 000000<br />
        UST-IdNr. DE000000000<br />
        Steuer-Nr. 000/0000/0000</p>
    </td>
  </tr>
  <tr><td colspan="4"> </td></tr>
  <tr>
    <td colspan="4">Seite {vm:pagenum} von {vm:pagecount}</td>
  </tr>
</tbody>
</table>

Beispiel-Code für Brieffuß/Footer mit einer Zeile in voller Breite

<table style="width: 100%;">
<tbody>
  <tr><td> </td></tr>
  <tr>
    <td style="width: 100%;vertical-align: top">
      Unternehmen - Herr Mustermann - Musterstraße - 12345 Musterstadt - Land
    </td>
  </tr>
  <tr><td> </td></tr>
  <tr>
    <td>Seite {vm:pagenum} von {vm:pagecount}</td>
  </tr>
</tbody>
</table>

TCPDF ist ein PDF-Generator, der im Hintergrund die Formatierung der PDF-Datei übernimmt. TCPDF beherrscht nicht alle CSS-Regeln, und akzeptiert auch keine externen CSS-Dateien. Das eigenwillige Verhalten von TCPDF ist der Grund, warum das HTML nicht immer dem Auge des Perfektionisten wohltut.

Feintuning per Handarbeit für Coder

Sollten Sie mit der Breite der Spalten in der Rechnung nicht zufrieden sein, bedarf es ein wenig Handarbeit in der invoice-items.php.

  • Öffnen Sie die Datei in einem Code-Editor wie Notepad++ oder Sublime Text.
  • Im oberen Bereich sind Prozentzahlen für die Tabellenspalten angegeben. Es wird unterschieden zwischen 4 bis 8 Spalten.
  • Ändern Sie die Prozentzahlen für die Anzahl der Spalten, die bei Ihnen zur Verfügung stehen (z. Bsp. 6 Spalten, wenn Sie Status und Preisnachlass ausgeblendet haben).
  • Für die ausgeblendeten Spalten tragen Sie 0% ein, für die anderen sollte die Summe der Prozentzahlen 100% ergeben, wenn die Tabelle über die ganze Seite gehen soll.
  • Speichern Sie die Datei nach der Anpassung und achten Sie darauf, dass die Datei als UTF-8 ohne BOM gespeichert wird.

Mit der vorhandenen Anleitung sollten Sie in der Lage sein, eine sauber aufgebaute Rechnung zu bekommen. Diese Rechnung ist ein Zusammenschnitt aus jahrelangen Anpassungen von Rechnungen für Einzelkunden, die oft ein Vielfaches für die Erstellung einer Rechnung ausgegeben haben, die ihrem Corporate Design entspricht. Dieses Grundlayout kann nicht bis auf die kleinste Einzelheit auf jedes Design angepasst werden, jedoch denken wir, einen guten Kompromiss zwischen Preis und Erscheinungsbild gefunden zu haben, so dass Shop-Betreiber mit mittlerem Budget ihren Kunden eine ansehnliche Rechnung bieten können.

Individuelle Anpassung auf Wunsch

Sollten Sie weitergehende Anpassungen wünschen, lassen wir Sie nicht im Regen stehen. Nehmen Sie einfach Kontakt zu uns auf. Wir machen Ihnen gerne einen Kostenvoranschlag.

Anhang Einstellungen

invoice.php

  • $inv_jgl_header = VmConfig::get('inv_jgl_header', 0); // Eigenen PHP-Header einbauen: 0 oder 1 - bei 1 jgl-header.php selbst erstellen
  • $inv_delivery_address_in_invoice = VmConfig::get('inv_delivery_address_in_invoice', 1); // Zeige Lieferadresse in Rechnung: 0 oder 1
  • $inv_customer_note_pos = VmConfig::get('inv_customer_note_pos', 'below_list'); // Position der Nachricht des Kunden: below_address oder below_list
  • $inv_show_payment_belowlist = VmConfig::get('inv_show_payment_belowlist', 1); // Zeige Zahlungsart unterhalb der Produkttabelle: 0 oder 1
  • $inv_uid_pos = VmConfig::get('inv_uid_pos', 'below_address'); // Position der USt-IdNr.: below_address oder below_list
  • $inv_uid_message_pos = VmConfig::get('inv_uid_message_pos', 'below_address'); // Position der Nachricht zur USt.-IdNr.: below_address oder below_list
  • $inv_legal_info = VmConfig::get('inv_legal_info', 0); // Zeige rechtliche Informationen: 0 oder 1, nicht implementiert
  • $inv_special_text = VmConfig::get('inv_special_text', 1); // Zeige Sondertext: 0 oder 1

invoice-items.php

  • $col_sku = VmConfig::get('show_col_sku', 1); // Zeige Spalte Artikelnummer: 0 oder 1
  • $col_stt = VmConfig::get('show_col_status', 1); // Zeige Spalte Status: 0 oder 1
  • $col_tax = VmConfig::get('show_tax', 1); // Zeige Spalte MwSt.: 0 oder 1
  • $col_dsc = VmConfig::get('show_col_discount', 1); // Zeige Spalte Rabatt: 0 oder 1
  • $inv_show_payment_inlist = VmConfig::get('inv_show_payment_inlist', 1); // Zeige Bezahlart in der Preisberechnung: 0 oder 1
  • $inv_show_separate_tax = VmConfig::get('inv_show_separate_tax', 1); // Zeige Steuern aufgeschlüsselt: 0 oder 1
  • $uid_pos = VmConfig::get('inv_uid_pos', 'below_address'); // Position der USt.-IdNr.: below_address oder below_list
  • $uid_message_pos = VmConfig::get('inv_uid_message_pos', 'below_address'); // Position der Nachricht zur USt.-IdNr.: below_address oder below_list

Anhang Sprachvariablen

  • COM_VM_CUSTOMER_NR
  • COM_VIRTUEMART_INVOICE
  • COM_VIRTUEMART_DELIVERYNOTE
  • COM_VIRTUEMART_CONFIRMATION
  • COM_VM_CUSTOMER_NR
  • COM_VM_INVOICE_NR
  • COM_VIRTUEMART_DELIVERY_DATE
  • COM_VIRTUEMART_DELDATE_INV="Identisch mit Rechnungsdatum" -> Wie Rechnungsdatum
  • COM_VIRTUEMART_ORDER_PRINT_PO_NUMBER
  • COM_VIRTUEMART_ORDER_PRINT_PO_DATE
  • COM_VIRTUEMART_ORDER_PRINT_SKU
  • COM_VIRTUEMART_PRODUCT_NAME_TITLE
  • COM_VIRTUEMART_ORDER_PRINT_PRODUCT_STATUS
  • COM_VIRTUEMART_ORDER_PRINT_PRICE
  • COM_VIRTUEMART_ORDER_PRINT_QTY
  • COM_VIRTUEMART_ORDER_PRINT_PRODUCT_TAX
  • COM_VIRTUEMART_ORDER_PRINT_SUBTOTAL_DISCOUNT_AMOUNT
  • COM_VIRTUEMART_ORDER_PRINT_PRODUCT_PRICE_TOTAL="Summe"
  • COM_VIRTUEMART_ORDER_PRINT_TOTAL="Gesamtpreis inkl. MwSt"
  • COM_VIRTUEMART_TOTAL_INCL_TAX="Getrennte Mehrwertsteuer"
  • COM_VIRTUEMART_ORDER_PRINT_SUBTOTAL_DISCOUNT_AMOUNT
  • COM_VIRTUEMART_COUPON_DISCOUNT