mahnung/admin/templatevars.php
Eduard Wisch 993ac50c0c
All checks were successful
Deploy mahnung / deploy (push) Successful in 13s
Feature: ODT-Template-System, Widget, Dokumentenliste, Templatevariablen-Referenz [deploy]
- ODT-Template-System: Pro Mahnstufe eigenes Template (mahnung_stufe1/2/3.odt),
  Fallback auf generisches Template; Basis-Klasse ModelePDFMahnung,
  pdf_standard_mahnung (TCPDF refactored), doc_generic_mahnung_odt (ODTPHP)
- Widget box_mahnung_offen: Überfällige Rechnungen mit Mahnstufe-Badge (blau/orange/rot)
- card.php: Dokumentenliste mit Lupe (PDF-Vorschau), Download, Modellauswahl
- admin/templatevars.php: Referenzseite aller verfügbaren ODT-Variablen
- admin/setup.php: Dokumentenmodell-Verwaltung, Upload-Bereich mit Benennungskonvention
- mahnung.class.php: generateDocument() + socid-Alias für commonGenerateDocument()
- modMahnung.class.php: models=1, MAHNUNG_ADDON_PDF/ODT_PATH-Konstanten,
  document_model-Registrierung in init(), Widget registriert
- mahnungpdf.class.php entfernt, Logik in pdf_standard_mahnung.modules.php

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 18:28:24 +02:00

220 lines
8.9 KiB
PHP

<?php
/* Copyright (C) 2026 Eduard Wisch <data@data-it-solution.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 3.
*/
/**
* \file mahnung/admin/templatevars.php
* \ingroup mahnung
* \brief Uebersicht aller verfuegbaren Variablen fuer ODT-Templates.
*/
$res = 0;
if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) {
$res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
}
$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME'];
$tmp2 = realpath(__FILE__);
$i = strlen($tmp) - 1;
$j = strlen($tmp2) - 1;
while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) {
$i--;
$j--;
}
if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) {
$res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
}
if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) {
$res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
}
if (!$res && file_exists("../../main.inc.php")) {
$res = @include "../../main.inc.php";
}
if (!$res) {
die("Include of main fails");
}
global $langs, $user;
$langs->loadLangs(array('admin', 'mahnung@mahnung'));
if (!$user->admin && !$user->hasRight('mahnung', 'setup')) {
accessforbidden();
}
llxHeader('', 'Mahnung — Template-Variablen');
print load_fiche_titre('Verfuegbare Variablen fuer ODT-Templates', '<a href="setup.php">Zurueck zum Setup</a>', 'fa-envelope-open-text');
print '<div class="opacitymedium" style="margin-bottom: 15px;">';
print 'Diese Variablen koennen in ODT-Templates mit geschweiften Klammern verwendet werden, z.B. <code>{mahnung_ref}</code>.<br>';
print 'Stufen-spezifische Templates: <code>mahnung_stufe1.odt</code>, <code>mahnung_stufe2.odt</code>, <code>mahnung_stufe3.odt</code> — Fallback: beliebiges <code>.odt</code> im Template-Verzeichnis.';
print '</div>';
// Mahnung-Variablen
print '<table class="noborder centpercent">';
print '<tr class="liste_titre"><th colspan="3">Mahnung</th></tr>';
print '<tr class="liste_titre"><th>Variable</th><th>Beschreibung</th><th>Beispiel</th></tr>';
$mahnungVars = array(
array('{mahnung_ref}', 'Mahnung-Referenznummer', 'MAHN2026-0001'),
array('{mahnung_stufe}', 'Mahnstufe (Nummer)', '1'),
array('{mahnung_stufe_label}', 'Bezeichnung der Mahnstufe', 'Zahlungserinnerung'),
array('{mahnung_date}', 'Datum der Mahnung', '10.05.2026'),
array('{mahnung_date_lim_alt}', 'Urspruengliches Faelligkeitsdatum der Rechnung', '25.04.2026'),
array('{mahnung_date_lim_neu}', 'Neue Zahlungsfrist', '24.05.2026'),
array('{mahnung_betrag_offen}', 'Offener Rechnungsbetrag', '131,34'),
array('{mahnung_mahngebuehr}', 'Mahngebuehr dieser Stufe', '5,00'),
array('{mahnung_pauschale_b2b}', 'B2B-Pauschale nach BGB §288 Abs. 5', '40,00'),
array('{mahnung_verzugszinsen}', 'Berechnete Verzugszinsen', '1,23'),
array('{mahnung_summe}', 'Gesamtforderung (offen + Gebuehren + Zinsen)', '177,57'),
array('{mahnung_basiszins}', 'BGB-Basiszinssatz (Snapshot bei Erstellung)', '1,27'),
array('{mahnung_zinssatz}', 'Effektiver Zinssatz (Basis + Aufschlag)', '6,27'),
array('{mahnung_kundentyp}', 'Kundentyp', 'B2C oder B2B'),
array('{mahnung_versandart}', 'Versandart', 'pdf, mail, druck, none'),
array('{mahnung_pdf_intro}', 'Einleitungstext der Mahnstufe (aus Setup oder Default)', 'unsere unten aufgefuehrte Rechnung...'),
);
foreach ($mahnungVars as $v) {
print '<tr class="oddeven">';
print '<td><code>'.dol_escape_htmltag($v[0]).'</code></td>';
print '<td>'.dol_escape_htmltag($v[1]).'</td>';
print '<td class="opacitymedium">'.dol_escape_htmltag($v[2]).'</td>';
print '</tr>';
}
print '</table>';
// Rechnungs-Variablen
print '<br>';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre"><th colspan="3">Verknuepfte Rechnung</th></tr>';
print '<tr class="liste_titre"><th>Variable</th><th>Beschreibung</th><th>Beispiel</th></tr>';
$factureVars = array(
array('{facture_ref}', 'Rechnungsnummer', 'IN2604-0036'),
array('{facture_date}', 'Rechnungsdatum', '01.04.2026'),
array('{facture_date_lim}', 'Original-Faelligkeitsdatum', '25.04.2026'),
array('{facture_total_ht}', 'Nettobetrag der Rechnung', '110,37'),
array('{facture_total_ttc}', 'Bruttobetrag der Rechnung', '131,34'),
array('{facture_total_tva}', 'MwSt-Betrag', '20,97'),
array('{facture_already_paid}', 'Bereits gezahlter Betrag', '0,00'),
);
foreach ($factureVars as $v) {
print '<tr class="oddeven">';
print '<td><code>'.dol_escape_htmltag($v[0]).'</code></td>';
print '<td>'.dol_escape_htmltag($v[1]).'</td>';
print '<td class="opacitymedium">'.dol_escape_htmltag($v[2]).'</td>';
print '</tr>';
}
print '</table>';
// Firmen-Variablen (Absender)
print '<br>';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre"><th colspan="3">Eigene Firma (Absender)</th></tr>';
print '<tr class="liste_titre"><th>Variable</th><th>Beschreibung</th><th>Beispiel</th></tr>';
$mysocVars = array(
array('{mycompany_name}', 'Firmenname', 'Alles Watt Laeuft'),
array('{mycompany_address}', 'Strasse', 'Musterstrasse 1'),
array('{mycompany_zip}', 'PLZ', '24536'),
array('{mycompany_town}', 'Ort', 'Neumuenster'),
array('{mycompany_country}', 'Land', 'Deutschland'),
array('{mycompany_phone}', 'Telefonnummer', '04321 1234567'),
array('{mycompany_fax}', 'Faxnummer', ''),
array('{mycompany_email}', 'E-Mail-Adresse', 'info@example.de'),
array('{mycompany_web}', 'Webseite', 'www.example.de'),
array('{mycompany_idprof1}', 'Handelsregisternummer', ''),
array('{mycompany_idprof2}', 'SIRET/Steuernummer', ''),
array('{mycompany_capital}', 'Stammkapital', ''),
array('{mycompany_logo}', 'Firmenlogo (wird als Bild eingefuegt)', '(Bilddatei)'),
);
foreach ($mysocVars as $v) {
print '<tr class="oddeven">';
print '<td><code>'.dol_escape_htmltag($v[0]).'</code></td>';
print '<td>'.dol_escape_htmltag($v[1]).'</td>';
print '<td class="opacitymedium">'.dol_escape_htmltag($v[2]).'</td>';
print '</tr>';
}
print '</table>';
// Kunden-Variablen
print '<br>';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre"><th colspan="3">Kunde (Empfaenger)</th></tr>';
print '<tr class="liste_titre"><th>Variable</th><th>Beschreibung</th><th>Beispiel</th></tr>';
$companyVars = array(
array('{company_name}', 'Kundenname', 'Brigitte Ladewig'),
array('{company_alias}', 'Kurzname/Alias', ''),
array('{company_address}', 'Strasse', 'Beispielweg 5'),
array('{company_zip}', 'PLZ', '24534'),
array('{company_town}', 'Ort', 'Neumuenster'),
array('{company_country}', 'Land', 'Deutschland'),
array('{company_phone}', 'Telefon', '04321 9876543'),
array('{company_email}', 'E-Mail', 'b.ladewig@example.de'),
array('{company_idprof1}', 'Handelsregister', ''),
array('{company_idprof2}', 'Steuernummer', ''),
array('{company_vatnumber}', 'USt-IdNr.', 'DE123456789'),
array('{company_note_public}', 'Oeffentliche Notiz des Kunden', ''),
);
foreach ($companyVars as $v) {
print '<tr class="oddeven">';
print '<td><code>'.dol_escape_htmltag($v[0]).'</code></td>';
print '<td>'.dol_escape_htmltag($v[1]).'</td>';
print '<td class="opacitymedium">'.dol_escape_htmltag($v[2]).'</td>';
print '</tr>';
}
print '</table>';
// Bank-Variablen
print '<br>';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre"><th colspan="3">Bankverbindung</th></tr>';
print '<tr class="liste_titre"><th>Variable</th><th>Beschreibung</th><th>Beispiel</th></tr>';
$bankVars = array(
array('{mahnung_bank_label}', 'Name der Bank', 'Sparkasse Suedholstein'),
array('{mahnung_bank_iban}', 'IBAN', 'DE89 3704 0044 0532 0130 00'),
array('{mahnung_bank_bic}', 'BIC/SWIFT', 'COBADEFFXXX'),
);
foreach ($bankVars as $v) {
print '<tr class="oddeven">';
print '<td><code>'.dol_escape_htmltag($v[0]).'</code></td>';
print '<td>'.dol_escape_htmltag($v[1]).'</td>';
print '<td class="opacitymedium">'.dol_escape_htmltag($v[2]).'</td>';
print '</tr>';
}
print '</table>';
// Dolibarr-Standard-Variablen
print '<br>';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre"><th colspan="3">Dolibarr-Standard (Auswahl)</th></tr>';
print '<tr class="liste_titre"><th>Variable</th><th>Beschreibung</th><th>Beispiel</th></tr>';
$stdVars = array(
array('{__FROM_NAME__}', 'Absender-Name', 'Alles Watt Laeuft'),
array('{__FROM_EMAIL__}', 'Absender-E-Mail', 'info@example.de'),
array('{__DATE__}', 'Aktuelles Datum', '10.05.2026'),
array('{myuser_lastname}', 'Nachname des eingeloggten Users', 'Wisch'),
array('{myuser_firstname}', 'Vorname des eingeloggten Users', 'Eduard'),
array('{myuser_email}', 'E-Mail des eingeloggten Users', 'data@example.de'),
);
foreach ($stdVars as $v) {
print '<tr class="oddeven">';
print '<td><code>'.dol_escape_htmltag($v[0]).'</code></td>';
print '<td>'.dol_escape_htmltag($v[1]).'</td>';
print '<td class="opacitymedium">'.dol_escape_htmltag($v[2]).'</td>';
print '</tr>';
}
print '</table>';
llxFooter();
$db->close();