report_generator.pl in reportgenerator.pl umbenannt.
[kivitendo-erp.git] / bin / mozilla / reportgenerator.pl
1 #=====================================================================
2 # LX-Office ERP
3 # Copyright (C) 2004
4 # Based on SQL-Ledger Version 2.1.9
5 # Web http://www.lx-office.org
6 ######################################################################
7 #
8 # Stuff that can be used from other modules
9 #
10 ######################################################################
11
12 use List::Util qw(max);
13
14 use SL::Form;
15 use SL::Common;
16 use SL::MoreCommon;
17 use SL::ReportGenerator;
18
19 sub report_generator_export_as_pdf {
20   $lxdebug->enter_sub();
21
22   if ($form->{report_generator_pdf_options_set}) {
23     my $saved_form = save_form();
24
25     report_generator_do('PDF');
26
27     if ($form->{report_generator_printed}) {
28       restore_form($saved_form);
29       $form->{MESSAGE} = $locale->text('The list has been printed.');
30       report_generator_do('HTML');
31     }
32
33     $lxdebug->leave_sub();
34     return;
35   }
36
37   my @form_values;
38   map { push @form_values, { 'key' => $_, 'value' => $form->{$_} } } keys %{ $form };
39
40   $form->get_lists('printers' => 'ALL_PRINTERS');
41   map { $_->{selected} = $myconfig{default_printer_id} == $_->{id} } @{ $form->{ALL_PRINTERS} };
42
43   $form->{copies} = max $myconfig{copies} * 1, 1;
44
45   $form->{title} = $locale->text('PDF export -- options');
46   $form->header();
47   print $form->parse_html_template('report_generator/pdf_export_options',
48                                    { 'HIDDEN'         => \@form_values,
49                                      'default_margin' => $form->format_amount(\%myconfig, 1.5),
50                                      'SHOW_PRINTERS'  => scalar @{ $form->{ALL_PRINTERS} },
51                                    });
52
53   $lxdebug->leave_sub();
54 }
55
56 sub report_generator_export_as_csv {
57   $lxdebug->enter_sub();
58
59   if ($form->{report_generator_csv_options_set}) {
60     report_generator_do('CSV');
61     $lxdebug->leave_sub();
62     return;
63   }
64
65   my @form_values;
66   map { push @form_values, { 'key' => $_, 'value' => $form->{$_} } } keys %{ $form };
67
68   $form->{title} = $locale->text('CSV export -- options');
69   $form->header();
70   print $form->parse_html_template('report_generator/csv_export_options', { 'HIDDEN' => \@form_values });
71
72   $lxdebug->leave_sub();
73 }
74
75 sub report_generator_back {
76   $lxdebug->enter_sub();
77
78   report_generator_do('HTML');
79
80   $lxdebug->leave_sub();
81 }
82
83 sub report_generator_do {
84   $lxdebug->enter_sub();
85
86   my $format  = shift;
87
88   my $nextsub = $form->{report_generator_nextsub};
89   if (!$nextsub) {
90     $form->error($locale->text('report_generator_nextsub is not defined.'));
91   }
92
93   foreach my $key (split m/ +/, $form->{report_generator_variable_list}) {
94     $form->{$key} = $form->{"report_generator_hidden_${key}"};
95   }
96
97   $form->{report_generator_output_format} = $format;
98
99   delete @{$form}{map { "report_generator_$_" } qw(nextsub variable_list)};
100
101   call_sub($nextsub);
102
103   $lxdebug->leave_sub();
104 }
105
106 sub report_generator_dispatcher {
107   $lxdebug->enter_sub();
108
109   my $nextsub = $form->{report_generator_dispatch_to};
110   if (!$nextsub) {
111     $form->error($locale->text('report_generator_dispatch_to is not defined.'));
112   }
113
114   delete $form->{report_generator_dispatch_to};
115
116   call_sub($nextsub);
117
118   $lxdebug->leave_sub();
119 }
120
121 1;