X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Famtemplates.pl;h=d32cf790a1b5602839ea4b6fd85cd6b2ca4c9d72;hb=af9a1f44788ded346d8510511d26a760d996ba14;hp=fa55a0118ccaadc3dfbbcdd78f085fd917c3067c;hpb=66671e22ff33f493fae7d8a88145ac1ecf34b3b3;p=kivitendo-erp.git diff --git a/bin/mozilla/amtemplates.pl b/bin/mozilla/amtemplates.pl index fa55a0118..d32cf790a 100644 --- a/bin/mozilla/amtemplates.pl +++ b/bin/mozilla/amtemplates.pl @@ -24,56 +24,76 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1335, USA. #====================================================================== # # administration # #====================================================================== +use File::Find; + +use SL::DB::Default; use SL::AM; use SL::Form; use Data::Dumper; +use strict; + 1; -require "$form->{path}/common.pl"; +require "bin/mozilla/common.pl"; # end of main sub display { - call_sub($form->{display_nextsub}); + call_sub($main::form->{display_nextsub}); } sub save { - call_sub($form->{save_nextsub}); + call_sub($main::form->{save_nextsub}); } sub edit { - call_sub($form->{edit_nextsub}); + call_sub($main::form->{edit_nextsub}); } sub display_template { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + + $main::auth->assert('admin'); $form->{edit} = 0; display_template_form(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub edit_template { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + + $main::auth->assert('admin'); $form->{edit} = 1; display_template_form(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub save_template { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + + $main::auth->assert('admin'); $form->isblank("formname", $locale->text("You're not editing a file.")) unless ($form->{type} eq "stylesheet"); @@ -85,20 +105,35 @@ sub save_template { $form->{edit} = 0; display_template_form(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub display_template_form { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + + $main::auth->assert('admin'); + + my $defaults = SL::DB::Default->get; + $form->error($::locale->text('No print templates have been created for this client yet. Please do so in the client configuration.')) if !$defaults->templates; + + if ($form->{"formname"} =~ m|\.\.| || $form->{"formname"} =~ m|^/|) { + $form->{"formname"} =~ s|.*/||; + } - $form->{"formname"} =~ s|.*/||; my $format = $form->{"format"} eq "html" ? "html" : "tex"; $form->{"title"} = $form->{"type"} eq "stylesheet" ? $locale->text("Edit the stylesheet") : $locale->text("Edit templates"); + if ($form->{"format"}) { + $form->{"title"} = uc($form->{"format"}) . " - " . $form->{"title"}; + } my %options; - my @hidden = qw(login path password type format); + my @hidden = qw(type format); if (($form->{"type"} ne "stylesheet") && !$form->{"edit"}) { $options{"SHOW_EDIT_OPTIONS"} = 1; @@ -107,32 +142,35 @@ sub display_template_form { # Setup "formname" selection # + $form->get_lists("printers" => "ALL_PRINTERS", + "languages" => "ALL_LANGUAGES", + "dunning_configs" => "ALL_DUNNING_CONFIGS"); + my %formname_setup = ( - "balance_sheet" => { "translation" => $locale->text('Balance Sheet'), "html" => 1 }, - "bin_list" => $locale->text('Bin List'), - "bwa" => { "translation" => $locale->text('BWA'), "html" => 1 }, - "check" => { "translation" => $locale->text('Check'), "html" => 1 }, - "credit_note" => $locale->text('Credit Note'), - "income_statement" => { "translation" => $locale->text('Income Statement'), "html" => 1 }, - "invoice" => $locale->text('Invoice'), - "packing_list" => $locale->text('Packing List'), - "pick_list" => $locale->text('Pick List'), - "proforma" => $locale->text('Proforma Invoice'), - "purchase_order" => $locale->text('Purchase Order'), - "receipt" => { "translation" => $locale->text('Receipt'), "tex" => 1 }, - "request_quotation" => $locale->text('RFQ'), - "sales_order" => $locale->text('Confirmation'), - "sales_quotation" => $locale->text('Quotation'), - "statement" => $locale->text('Statement'), - "storno_invoice" => $locale->text('Storno Invoice'), - "storno_packing_list" => $locale->text('Storno Packing List'), - "ustva-2004" => { "translation" => $locale->text("USTVA 2004"), "tex" => 1 }, - "ustva-2005" => { "translation" => $locale->text("USTVA 2005"), "tex" => 1 }, - "ustva-2006" => { "translation" => $locale->text("USTVA 2006"), "tex" => 1 }, - "ustva-2007" => { "translation" => $locale->text("USTVA 2007"), "tex" => 1 }, - "ustva" => $locale->text("USTVA"), - "zahlungserinnerung" => $locale->text('Payment Reminder'), + # balance_sheet => { translation => $locale->text('Balance Sheet'), html => 1 }, + bin_list => $locale->text('Bin List'), + bwa => { translation => $locale->text('BWA'), html => 1 }, + check => { translation => $locale->text('Check'), html => 1 }, + credit_note => $locale->text('Credit Note'), + income_statement => { translation => $locale->text('Income Statement'), html => 1 }, + invoice => $locale->text('Invoice'), + pick_list => $locale->text('Pick List'), + proforma => $locale->text('Proforma Invoice'), + purchase_delivery_order => { translation => $::locale->text('Purchase delivery order'), tex => 1 }, + purchase_order => $locale->text('Purchase Order'), + receipt => { translation => $locale->text('Receipt'), tex => 1 }, + request_quotation => $locale->text('RFQ'), + sales_delivery_order => { translation => $::locale->text('Sales delivery order'), tex => 1 }, + sales_order => $locale->text('Confirmation'), + sales_quotation => $locale->text('Quotation'), + statement => $locale->text('Statement'), + storno_invoice => $locale->text('Storno Invoice'), + "ustva-2004" => { translation => $locale->text("USTVA 2004"), tex => 1 }, + "ustva-2005" => { translation => $locale->text("USTVA 2005"), tex => 1 }, + "ustva-2006" => { translation => $locale->text("USTVA 2006"), tex => 1 }, + "ustva-2007" => { translation => $locale->text("USTVA 2007"), tex => 1 }, + ustva => $locale->text("USTVA"), ); my (@values, $file, $setup); @@ -142,56 +180,87 @@ sub display_template_form { push(@values, { "value" => $file, - "label" => ref($setup) ? $setup->{"translation"} : $setup, - "default" => $file eq $form->{"formname"} }); + "label" => ref($setup) ? $setup->{"translation"} : $setup }); + } + + # "zahlungserinnerung" => $locale->text('Payment Reminder'), + + foreach my $ref (@{ $form->{"ALL_DUNNING_CONFIGS"} }) { + next if !$ref->{"template"}; + + push(@values, + { "value" => $ref->{"template"}, + "label" => $locale->text('Payment Reminder') . ": " . $ref->{"dunning_description"} }, + { "value" => $ref->{"template"} . "_invoice", + "label" => $locale->text('Payment Reminder') . ": " . $ref->{"dunning_description"} . ' (' . $locale->text("Invoice for fees") . ')' }); } @values = sort({ $a->{"label"} cmp $b->{"label"} } @values); - $options{"FORMNAME"} = [ @values ]; + # + # at the end: others/includes for tex + # + if ($format eq "tex") { + # search all .tex-files in template dir (recursively) + my $template_dir = $defaults->templates; + my @all_files; + find( + sub { + next if (-l $_ || -d $_); + next unless (-f $_ && $_ =~ m/.*?\.tex$/); + + my $fname = $File::Find::name; + # remove template dir from name + $fname =~ s|^\Q$template_dir\E/||; + # remove .tex from name + $fname =~ s|.tex$||; + + push(@all_files, $fname); + + }, $template_dir); + + # filter all files already set up (i.e. not already in @values) + my @other_files = grep { my $a=$_; not grep {$a eq $_->{value}} @values } @all_files; + + # add other tex files + foreach my $o (@other_files) { + push(@values, { "value" => $o, "label" => $locale->text("Others")." ($o)" }); + } + } + + $options{FORMNAME} = [ @values ]; # # Setup "language" selection # - $form->get_lists("printers" => "ALL_PRINTERS", - "languages" => "ALL_LANGUAGES"); - - @values = ( { "value" => "", "label" => "", "default" => 0 } ); + @values = (); foreach my $item (@{ $form->{"ALL_LANGUAGES"} }) { next unless ($item->{"template_code"}); - my $key = "$item->{id}--$item->{template_code}"; - push(@values, - { "value" => $key, - "label" => $item->{"description"}, - "default" => $key eq $form->{"language"} }); + { "value" => "$item->{id}--$item->{template_code}", + "label" => $item->{"description"} }); } - $options{"LANGUAGE"} = [ @values ]; - $options{"SHOW_LANGUAGE"} = scalar(@values) > 1; - - @values = ( { "value" => "", "label" => "", "default" => 0 } ); + $options{LANGUAGE} = [ @values ]; # # Setup "printer" selection # + @values = (); + foreach my $item (@{ $form->{"ALL_PRINTERS"} }) { next unless ($item->{"template_code"}); - my $key = "$item->{id}--$item->{template_code}"; - push(@values, - { "value" => $key, - "label" => $item->{"printer_description"}, - "default" => $key eq $form->{"printer"} }); + { "value" => "$item->{id}--$item->{template_code}", + "label" => $item->{"printer_description"} }); } - $options{"PRINTER"} = [ @values ]; - $options{"SHOW_PRINTER"} = scalar(@values) > 1; + $options{PRINTER} = [ @values ]; } else { push(@hidden, qw(formname language printer)); @@ -208,10 +277,7 @@ sub display_template_form { $options{"CAN_EDIT"} = $form->{"edit"}; - if ($form->{edit}) { - $form->{fokus} = "Form.content"; - - } else { + if (!$form->{edit}) { $options{"content"} = "\n\n" if (!$options{"content"}); $options{"SHOW_SECOND_EDIT_BUTTON"} = $options{"lines"} > 25; } @@ -222,7 +288,7 @@ sub display_template_form { $form->header; print($form->parse_html_template("am/edit_templates", \%options)); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } 1;