use SL::IC;
use SL::IO;
+use SL::DB::Language;
+use SL::DB::Printer;
+
require "bin/mozilla/common.pl";
use strict;
$extension = 'xls';
}
- my $email_extension = (($form->{media} eq 'email') && (-f "$myconfig{templates}/$form->{formname}_email$form->{language}${printer_code}.${extension}")) ? '_email' : '';
+ # search for the template
+ my @template_files;
+ push @template_files, "$form->{formname}_email$form->{language}$printer_code.$extension" if $form->{media} eq 'email';
+ push @template_files, "$form->{formname}$form->{language}$printer_code.$extension";
+ push @template_files, "$form->{formname}.$extension";
+ push @template_files, "default.$extension";
- $form->{IN} = "$form->{formname}${email_extension}$form->{language}${printer_code}.${extension}";
+ $form->{IN} = undef;
+ for my $filename (@template_files) {
+ if (-f "$myconfig{templates}/$filename") {
+ $form->{IN} = $filename;
+ last;
+ }
+ }
+
+ if (!defined $form->{IN}) {
+ $::form->error($::locale->text('Cannot find matching template for this print request. Please contact your template maintainer. I tried these: #1.', join ', ', map { "'$_'"} @template_files));
+ }
delete $form->{OUT};
}
# /saving the history
+ # prepare meta information for template introspection
+ $form->{template_meta} = {
+ formname => $form->{formname},
+ language => SL::DB::Manager::Language->find_by_or_create(id => $form->{language_id}),
+ format => $form->{format},
+ media => $form->{media},
+ extension => $extension,
+ printer => SL::DB::Manager::Printer->find_by_or_create(id => $form->{printer_id}),
+ };
+
$form->parse_template(\%myconfig);
$form->{callback} = "";
</table>
</p>
+ <p>Zusätzlich werden angeforderte Sprache und Druckerkürzel in den Dateinamen mit eingearbeitet. So wird aus der Vorlage <code>sales_order.ext</code> bei Sprache <code>de</code> und Druckerkürzel <code>lpr2</code> der Vorlagenname <code>sales_order_de_lpr2.ext</code>. Zusätzlich können für E-Mails andere Vorlagen erstellt werden, diese bekommen dann noch das Kürzel <code>_email</code>, der vollständige Vorlagenname wäre dann <code>sales_order_email_de_lpr2.ext</code>. In allen Fällen kann eine Standarddatei <code>default.ext</code> hinterlegt werden. Diese wird verwendet, wenn keine der anderen Varianten gefunden wird.</p>
+
+ <p>Die vollständige Suchreihenfolge für einen Verkaufsauftrag mit der Sprache "de" und dem Drucker "lpr2", der per E-Mail im Format PDF verschickt wird, ist:</p>
+ <p>
+ <table border='1'>
+ <tr><th>Reihenfolge der möglichen Vorlagennamen</th></tr>
+ <tr><td><code>sales_order_email_de_lpr2.tex</code></td></tr>
+ <tr><td><code>sales_order_de_lpr2.tex</code></td></tr>
+ <tr><td><code>sales_order.tex</code></td></tr>
+ <tr><td><code>default.tex</code></td></tr>
+ </table>
+ </p>
+
+ <p>Die kurzen Varianten dieser Vorlagentitel müssen dann entweder Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten, siehe dazu <a href="#allgemein_meta">Metadaten in Vorlagen</a></p>
+
<small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
zum Inhaltsverzeichnis</a></small><br>
<hr>
<h2><a name="allgemeine_variablen">
Allgemeine Variablen, die in allen Vorlagen vorhanden sind</a></h2>
+ <h3><a name="allgemein_meta">
+ Metainformationen zur angeforderten Vorlage:</a></h3>
+
+ <p>Diese Variablen liefern Informationen darüber welche Variante einer Vorlage der Benutzer angefragt hat. Sie sind nützlich für Vorlagenautoren, die aus einer zentralen Layoutvorlage die einzelnen Formulare einbinden möchten.</p>
+
+ <p>
+ <table border="1">
+ <tr><th>Variablenname</th><th>Bedeutung</th></tr>
+ <tr>
+ <td><code>template_meta.formname</code></td>
+ <td>Basisname der Vorlage. Identisch mit der <a href="#zuordnung_dateinamen">Zurordnung zu den Dateinamen</a> ohne die Erweiterung. Ein Verkaufsauftrag enthält hier <code>sales_order</code>.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.description</code></td>
+ <td>Beschreibung der verwendeten Sprache</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.template_code</code></td>
+ <td>Vorlagenürzel der verwendeten Sprache, identisch mit dem Kürzel das im Dateinamen verwendetet wird.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.output_numberformat</code></td>
+ <td>Zahlenformat der verwendeten Sprache in der Form "1.000,00". <em>Experimentell!</em>. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.output_dateformat</code></td>
+ <td>Datumsformat der verwendeten Sprache in der Form "dd.mm.yyy". <em>Experimentell!</em>. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.format</code></td>
+ <td>Das angeforderte Format. Kann im Moment die Werte <code>pdf</code>, <code>postscript</code>, <code>html</code>, <code>opendocument</code>, <code>opendocument_pdf</code> und <code>excel</code> enthalten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.extension</code></td>
+ <td>Dateierweiterung, wie im Dateinamen. Wird aus <code>format</code> entschieden.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.media</code></td>
+ <td>Ausgabemedium. Kann zur Zeit die Werte <code>screen</code> für Bildschirm, <code>printer</code> für Drucker, und <code>queue</code> für Warteschlange enthalten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.printer.description</code></td>
+ <td>Beschreibung des ausgewählten Druckers</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.printer.template_code</code></td>
+ <td>Vorlagenürzel des ausgewählten Druckers, identisch mit dem Kürzel das im Dateinamen verwendetet wird.</td>
+ </tr>
+ </table>
+ </p>
+
<h3><a name="allgemein_stammdaten">
Stammdaten von Kunden und Lieferanten:</a></h3>
'Cannot delete quotation!' => 'Angebot kann nicht gelöscht werden!',
'Cannot delete transaction!' => 'Buchung kann nicht gelöscht werden!',
'Cannot delete vendor!' => 'Lieferant kann nicht gelöscht werden!',
+ 'Cannot find matching template for this print request. Please contact your template maintainer. I tried these: #1.' => '',
'Cannot have a value in both Debit and Credit!' => 'Es kann nicht gleichzeitig Soll und Haben gebucht werden!',
'Cannot post Payment!' => 'Zahlung kann nicht gebucht werden!',
'Cannot post Receipt!' => 'Beleg kann nicht gebucht werden!',
'month' => 'Monatliche Abgabe',
'monthly' => 'monatlich',
'new Window' => 'neues Fenster',
- 'next' => 'Nächste',
'no' => 'nein',
'no bestbefore' => 'keine Mindesthaltbarkeit',
'no chargenumber' => 'keine Chargennummer',
'pos_eur' => 'E/ÜR',
'pos_ustva' => 'UStVA',
'posted!' => 'gebucht',
- 'prev' => 'Vorherige',
'print' => 'drucken',
'proforma' => 'Proforma',
'project_list' => 'projektliste',