From: Sven Schöling
Date: Fri, 30 Dec 2011 16:29:46 +0000 (+0100)
Subject: Merge branch 'master' of vc.linet-services.de:public/lx-office-erp
X-Git-Tag: release-2.7.0beta1~109
X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/commitdiff_plain/d0535d474013611f57691dee2e4542115a4f0123?hp=5fab9350eab8c95b77b5f02faa547c9118d45233
Merge branch 'master' of vc.linet-services.de:public/lx-office-erp
---
diff --git a/SL/DB/Helper/Manager.pm b/SL/DB/Helper/Manager.pm
index 8ebc362e2..b4d66da42 100644
--- a/SL/DB/Helper/Manager.pm
+++ b/SL/DB/Helper/Manager.pm
@@ -18,6 +18,14 @@ sub find_by {
return $class->get_all(query => [ @_ ], limit => 1)->[0];
}
+sub find_by_or_create {
+ my $class = shift;
+
+ my $found;
+ eval { $found = $class->find_by(@_); };
+ return defined $found ? $found : $class->object_class->new;
+}
+
sub get_first {
shift->get_all(
@_,
diff --git a/SL/DB/Printer.pm b/SL/DB/Printer.pm
index 2c3eaccf8..fd58eb55c 100644
--- a/SL/DB/Printer.pm
+++ b/SL/DB/Printer.pm
@@ -6,4 +6,8 @@ use SL::DB::MetaSetup::Printer;
__PACKAGE__->meta->make_manager_class;
+sub description {
+ goto &printer_description;
+}
+
1;
diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl
index 940fec968..0e10b2212 100644
--- a/bin/mozilla/io.pl
+++ b/bin/mozilla/io.pl
@@ -46,6 +46,9 @@ use SL::CT;
use SL::IC;
use SL::IO;
+use SL::DB::Language;
+use SL::DB::Printer;
+
require "bin/mozilla/common.pl";
use strict;
@@ -1473,9 +1476,24 @@ sub print_form {
$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};
@@ -1540,6 +1558,16 @@ sub print_form {
}
# /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} = "";
diff --git a/doc/dokumentenvorlagen-und-variablen.html b/doc/dokumentenvorlagen-und-variablen.html
index 91e245da8..f1eaa328b 100644
--- a/doc/dokumentenvorlagen-und-variablen.html
+++ b/doc/dokumentenvorlagen-und-variablen.html
@@ -331,6 +331,21 @@ td {
+ Zusätzlich werden angeforderte Sprache und Druckerkürzel in den Dateinamen mit eingearbeitet. So wird aus der Vorlage sales_order.ext bei Sprache de und Druckerkürzel lpr2 der Vorlagenname sales_order_de_lpr2.ext. Zusätzlich können für E-Mails andere Vorlagen erstellt werden, diese bekommen dann noch das Kürzel _email, der vollständige Vorlagenname wäre dann sales_order_email_de_lpr2.ext. In allen Fällen kann eine Standarddatei default.ext hinterlegt werden. Diese wird verwendet, wenn keine der anderen Varianten gefunden wird.
+
+ 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:
+
+
+ | Reihenfolge der möglichen Vorlagennamen |
+ sales_order_email_de_lpr2.tex |
+ sales_order_de_lpr2.tex |
+ sales_order.tex |
+ default.tex |
+
+
+
+ Die kurzen Varianten dieser Vorlagentitel müssen dann entweder Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten, siehe dazu Metadaten in Vorlagen
+
zum Inhaltsverzeichnis
@@ -338,6 +353,57 @@ td {
+
+
+ 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.
+
+
+
+ | Variablenname | Bedeutung |
+
+ template_meta.formname |
+ Basisname der Vorlage. Identisch mit der Zurordnung zu den Dateinamen ohne die Erweiterung. Ein Verkaufsauftrag enthält hier sales_order. |
+
+
+ template_meta.language.description |
+ Beschreibung der verwendeten Sprache |
+
+
+ template_meta.language.template_code |
+ Vorlagenürzel der verwendeten Sprache, identisch mit dem Kürzel das im Dateinamen verwendetet wird. |
+
+
+ template_meta.language.output_numberformat |
+ Zahlenformat der verwendeten Sprache in der Form "1.000,00". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten. |
+
+
+ template_meta.language.output_dateformat |
+ Datumsformat der verwendeten Sprache in der Form "dd.mm.yyy". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten. |
+
+
+ template_meta.format |
+ Das angeforderte Format. Kann im Moment die Werte pdf, postscript, html, opendocument, opendocument_pdf und excel enthalten. |
+
+
+ template_meta.extension |
+ Dateierweiterung, wie im Dateinamen. Wird aus format entschieden. |
+
+
+ template_meta.media |
+ Ausgabemedium. Kann zur Zeit die Werte screen für Bildschirm, printer für Drucker, und queue für Warteschlange enthalten. |
+
+
+ template_meta.printer.description |
+ Beschreibung des ausgewählten Druckers |
+
+
+ template_meta.printer.template_code |
+ Vorlagenürzel des ausgewählten Druckers, identisch mit dem Kürzel das im Dateinamen verwendetet wird. |
+
+
+
+
diff --git a/locale/de/all b/locale/de/all
index 1084c33b9..5bfbe3164 100644
--- a/locale/de/all
+++ b/locale/de/all
@@ -347,6 +347,7 @@ $self->{texts} = {
'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!',