5f5d4079bd27feb58b2e6e60797c34b1426162af
[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_set_default_sort {
20   $lxdebug->enter_sub();
21
22   my $default_sortorder   = shift;
23   my $default_sortdir     = shift;
24
25   $form->{sort}         ||= $default_sortorder;
26   $form->{sortdir}        = $default_sortdir unless (defined $form->{sortdir});
27   $form->{sortdir}        = $form->{sortdir} ? 1 : 0;
28
29   $lxdebug->leave_sub();
30 }
31
32
33 sub report_generator_export_as_pdf {
34   $lxdebug->enter_sub();
35
36   if ($form->{report_generator_pdf_options_set}) {
37     my $saved_form = save_form();
38
39     report_generator_do('PDF');
40
41     if ($form->{report_generator_printed}) {
42       restore_form($saved_form);
43       $form->{MESSAGE} = $locale->text('The list has been printed.');
44       report_generator_do('HTML');
45     }
46
47     $lxdebug->leave_sub();
48     return;
49   }
50
51   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
52
53   $form->get_lists('printers' => 'ALL_PRINTERS');
54   map { $_->{selected} = $myconfig{default_printer_id} == $_->{id} } @{ $form->{ALL_PRINTERS} };
55
56   $form->{copies} = max $myconfig{copies} * 1, 1;
57
58   my $allow_font_selection = 1;
59   eval { require PDF::API2; };
60   $allow_font_selection = 0 if ($@);
61
62   $form->{title} = $locale->text('PDF export -- options');
63   $form->header();
64   print $form->parse_html_template('report_generator/pdf_export_options', { 'HIDDEN'               => \@form_values,
65                                                                             'ALLOW_FONT_SELECTION' => $allow_font_selection, });
66
67   $lxdebug->leave_sub();
68 }
69
70 sub report_generator_export_as_csv {
71   $lxdebug->enter_sub();
72
73   if ($form->{report_generator_csv_options_set}) {
74     report_generator_do('CSV');
75     $lxdebug->leave_sub();
76     return;
77   }
78
79   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
80
81   $form->{title} = $locale->text('CSV export -- options');
82   $form->header();
83   print $form->parse_html_template('report_generator/csv_export_options', { 'HIDDEN' => \@form_values });
84
85   $lxdebug->leave_sub();
86 }
87
88 sub report_generator_back {
89   $lxdebug->enter_sub();
90
91   report_generator_do('HTML');
92
93   $lxdebug->leave_sub();
94 }
95
96 sub report_generator_do {
97   $lxdebug->enter_sub();
98
99   my $format  = shift;
100
101   my $nextsub = $form->{report_generator_nextsub};
102   if (!$nextsub) {
103     $form->error($locale->text('report_generator_nextsub is not defined.'));
104   }
105
106   foreach my $key (split m/ +/, $form->{report_generator_variable_list}) {
107     $form->{$key} = $form->{"report_generator_hidden_${key}"};
108   }
109
110   $form->{report_generator_output_format} = $format;
111
112   delete @{$form}{map { "report_generator_$_" } qw(nextsub variable_list)};
113
114   call_sub($nextsub);
115
116   $lxdebug->leave_sub();
117 }
118
119 sub report_generator_dispatcher {
120   $lxdebug->enter_sub();
121
122   my $nextsub = $form->{report_generator_dispatch_to};
123   if (!$nextsub) {
124     $form->error($locale->text('report_generator_dispatch_to is not defined.'));
125   }
126
127   delete $form->{report_generator_dispatch_to};
128
129   call_sub($nextsub);
130
131   $lxdebug->leave_sub();
132 }
133
134 1;