Erpal (Drupal Distribution) - Ein Feld in Rechnung ergänzen und auch in pdf ausgeben

Ich beschäftige mich zur Zeit mit der Drupal Distribution Erpal (https://www.drupal.org/project/erpal) die dem Namen nach wohl als ERP-System auf Basis von Drupal zu sehen ist. Im Projekt selbst (http://www.erpal.info/de) spricht man nicht direkt von ERP-Software sondern von Software für Business Management. Erpal richtet sich speziell an "Service Provider" also an Dienstleister (wie z. B. Agenturen, Softwareentwickler, etc.) bei denen reine Dienstleistung das Kerngeschäft ist. Ich möchte Erpal zunächst für mein eigenes Kleinunternehmen einsetzen und ggf. später auch für meine Kunden anbieten.

Eine der ersten Sachen die ich nicht so ganz im Standard abbilden konnte, war das Vorhaben ein weiteres Feld in der Rechnung zu ergänzen welches zusätzliche Informationen ausgibt. Das benötige ich teilweise um bei meinen Rechnungen die Tätigkeiten etwas ausführlicher zu erläutern. Es gibt zwar bereits ein Feld für Anmerkungen in der Rechnung. Allerdings ist dieses Feld eher für Anmerkungen zur Zahlung gedacht und steht ganz am Ende der Rechnung. Ich wollte ein weiteres Text-Feld mit anderen Inhalten und das Feld sollte weiter oben in der Rechnung stehen.

Der erste Schritt dazu ist dem Inhaltstyp "Rechnung" das zusätzliche Feld hinzuzufügen, ganz normal über Felder verwalten. Dann muss das Feld auch entsprechend bei der Erfassung der Rechnung angezeigt werden in dem man das erstellte Feld aktiviert. Das ist so weit alles noch ganz einfach über das Drupal-Admin-Interface zu lösen. Ggf. bedarf es noch ein bisschen CSS-Formatierung um das Feld bei der Erfassung auch passend darzustellen.

Um nun das Feld auch im pdf der Rechnung auszugeben muss man allerdings etwas tiefer in Drupal einsteigen.

Zunächst muss man das Feld als Variable im für die Rechnung verwendeten Template "invoice_pdf_html.tpl" verfügbar machen. Dazu kann man eine Template-Funktion verwenden (Man sollte bereits ein eigenes Theme für Erpal erstellt haben).

Die Funktion kann folgendermaßen aussehen (Das Feld heißt bei mir field_explanation, den Namen kann man unter dem Inhaltstyp Rechnung unter "Felder verwalten" auslesen und bei der Erstellung des Feldes individuell festlegen)

function template_preprocess_invoice_pdf_html(&$variables) {
$invoice = $variables['invoice'];
if (isset($invoice->field_explanation[LANGUAGE_NONE][0]['value']))
{
$variables['explanation'] = $invoice->field_explanation[LANGUAGE_NONE][0]['value'];
}
}

Nun ist der Inhalt des Feldes in der Variable $explanation im Template "invoice_pdf_html.tpl" verfügbar und kann dort an beliebiger Stelle und in beliebiger Form ausgegeben werden. Man sollte ggf. auch im Template abfragen ob die Variable vorhanden ist (isset) und damit entscheiden ob die Variable ausgegeben wird. Das ist z. B. relevant wenn man noch zusätzlichen Text zur Variable ausgibt und diesen nur ausgeben möchte wenn die Variable auch selbst Text enthält.

Neuen Kommentar schreiben

Filtered HTML

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
  • To post pieces of code, surround them with <code>...</code> tags. For PHP code, you can use <?php ... ?>, which will also colour it based on syntax.

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.