]> wagnertech.de Git - mfinanz.git/blob - bin/mozilla/reportgenerator.pl
restart apache2 in postinst
[mfinanz.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 qw(restore_form save_form);
17 use SL::ReportGenerator;
18
19 use strict;
20
21 sub report_generator_set_default_sort {
22   $main::lxdebug->enter_sub();
23
24   my $form     = $main::form;
25
26   my $default_sortorder   = shift;
27   my $default_sortdir     = shift;
28
29   $form->{sort}         ||= $default_sortorder;
30   $form->{sortdir}        = $default_sortdir unless (defined $form->{sortdir});
31   $form->{sortdir}        = $form->{sortdir} ? 1 : 0;
32
33   $main::lxdebug->leave_sub();
34 }
35
36
37 sub report_generator_setup_action_bar {
38   my ($type, %params) = @_;
39
40   for my $bar ($::request->layout->get('actionbar')) {
41     $bar->add(
42       combobox => [
43         action => [
44           $type eq 'pdf' ? $::locale->text('PDF export') : $type eq 'csv' ? $::locale->text('CSV export') : $::locale->text('Chart export'),
45           submit => [ '#report_generator_form', { 'report_generator_dispatch_to' => "report_generator_export_as_${type}" } ],
46         ],
47         action => [
48           $::locale->text('PDF export with attachments'),
49           submit  => [ '#report_generator_form', { report_generator_dispatch_to => "report_generator_export_as_pdf", report_generator_addattachments => 1 } ],
50           only_if => $params{allow_attachments},
51         ],
52       ],
53       action => [
54         $::locale->text('Back'),
55         submit => [ '#report_generator_form', { 'report_generator_dispatch_to' => "report_generator_back" } ],
56       ],
57     );
58   }
59 }
60
61 sub report_generator_export_as_pdf {
62   $main::lxdebug->enter_sub();
63
64   my $form     = $main::form;
65   my %myconfig = %main::myconfig;
66   my $locale   = $main::locale;
67
68   if ($form->{report_generator_pdf_options_set}) {
69     my $saved_form = save_form();
70
71     report_generator_do('PDF');
72
73     if ($form->{report_generator_printed}) {
74       restore_form($saved_form);
75       $form->{MESSAGE} = $locale->text('The list has been printed.');
76       report_generator_do('HTML');
77     }
78
79     $main::lxdebug->leave_sub();
80     return;
81   }
82
83   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
84
85   $form->get_lists('printers' => 'ALL_PRINTERS');
86   map { $_->{selected} = $myconfig{default_printer_id} == $_->{id} } @{ $form->{ALL_PRINTERS} };
87
88   $form->{copies} = max $myconfig{copies} * 1, 1;
89
90   my $allow_font_selection = 1;
91   eval { require PDF::API2; };
92   $allow_font_selection = 0 if ($@);
93
94   $form->{title} = $locale->text('PDF export -- options');
95
96   report_generator_setup_action_bar('pdf', allow_attachments => !!$form->{report_generator_hidden_l_attachments});
97
98   $form->header();
99   print $form->parse_html_template('report_generator/pdf_export_options', { 'HIDDEN'               => \@form_values,
100                                                                             'ALLOW_FONT_SELECTION' => $allow_font_selection, });
101
102   $main::lxdebug->leave_sub();
103 }
104
105 sub report_generator_export_as_csv {
106   $main::lxdebug->enter_sub();
107
108   my $form     = $main::form;
109   my $locale   = $main::locale;
110
111   if ($form->{report_generator_csv_options_set}) {
112     report_generator_do('CSV');
113     $main::lxdebug->leave_sub();
114     return;
115   }
116
117   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
118
119   $form->{title} = $locale->text('CSV export -- options');
120
121   report_generator_setup_action_bar('csv');
122
123   $form->header();
124   print $form->parse_html_template('report_generator/csv_export_options', { 'HIDDEN' => \@form_values });
125
126   $main::lxdebug->leave_sub();
127 }
128
129 sub report_generator_export_as_chart {
130   $main::lxdebug->enter_sub();
131
132   my $form     = $main::form;
133   my $locale   = $main::locale;
134
135   if ($form->{report_generator_chart_options_set}) {
136     report_generator_do('Chart');
137     $main::lxdebug->leave_sub();
138     return;
139   }
140
141   my $fields      = delete $form->{report_generator_chart_fields};
142   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
143
144   $form->{title} = $locale->text('Chart export -- options');
145
146   report_generator_setup_action_bar('chart');
147
148   $form->header();
149   print $form->parse_html_template('report_generator/chart_export_options', { 'HIDDEN' => \@form_values, fields => $fields });
150
151   $main::lxdebug->leave_sub();
152 }
153
154 sub report_generator_back {
155   $main::lxdebug->enter_sub();
156
157   report_generator_do('HTML');
158
159   $main::lxdebug->leave_sub();
160 }
161
162 sub report_generator_do {
163   $main::lxdebug->enter_sub();
164
165   my $format  = shift;
166
167   my $form     = $main::form;
168   my $locale   = $main::locale;
169
170   my $nextsub = $form->{report_generator_nextsub};
171   if (!$nextsub) {
172     $form->error($locale->text('report_generator_nextsub is not defined.'));
173   }
174
175   foreach my $key (split m/ +/, $form->{report_generator_variable_list}) {
176     $form->{$key} = $form->{"report_generator_hidden_${key}"};
177   }
178
179   $form->{report_generator_output_format} = $format;
180
181   delete @{$form}{map { "report_generator_$_" } qw(nextsub variable_list)};
182
183   call_sub($nextsub);
184
185   $main::lxdebug->leave_sub();
186 }
187
188 sub report_generator_dispatcher {
189   $main::lxdebug->enter_sub();
190
191   my $form     = $main::form;
192   my $locale   = $main::locale;
193
194   my $nextsub = $form->{report_generator_dispatch_to};
195   if (!$nextsub) {
196     $form->error($locale->text('report_generator_dispatch_to is not defined.'));
197   }
198
199   delete $form->{report_generator_dispatch_to};
200
201   call_sub($nextsub);
202
203   $main::lxdebug->leave_sub();
204 }
205
206 1;