Dateimanagement: PDF Buchungsjournal mit Anhängen der Buchungen
[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 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_export_as_pdf {
38   $main::lxdebug->enter_sub();
39
40   my $form     = $main::form;
41   my %myconfig = %main::myconfig;
42   my $locale   = $main::locale;
43
44   if ($form->{report_generator_pdf_options_set}) {
45     my $saved_form = save_form();
46
47     report_generator_do('PDF');
48
49     if ($form->{report_generator_printed}) {
50       restore_form($saved_form);
51       $form->{MESSAGE} = $locale->text('The list has been printed.');
52       report_generator_do('HTML');
53     }
54
55     $main::lxdebug->leave_sub();
56     return;
57   }
58
59   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
60
61   $form->get_lists('printers' => 'ALL_PRINTERS');
62   map { $_->{selected} = $myconfig{default_printer_id} == $_->{id} } @{ $form->{ALL_PRINTERS} };
63
64   $form->{copies} = max $myconfig{copies} * 1, 1;
65
66   my $allow_font_selection = 1;
67   my $allow_attachments    = 0;
68   eval { require PDF::API2; };
69   $allow_font_selection = 0 if ($@);
70   $allow_attachments    = 1 if $form->{report_generator_hidden_l_attachments};
71
72   $form->{title} = $locale->text('PDF export -- options');
73   $form->header();
74   print $form->parse_html_template('report_generator/pdf_export_options', { 'HIDDEN'               => \@form_values,
75                                                                             'ALLOW_ATTACHMENTS'    => $allow_attachments,
76                                                                             'ALLOW_FONT_SELECTION' => $allow_font_selection, });
77
78   $main::lxdebug->leave_sub();
79 }
80
81 sub report_generator_export_as_csv {
82   $main::lxdebug->enter_sub();
83
84   my $form     = $main::form;
85   my $locale   = $main::locale;
86
87   if ($form->{report_generator_csv_options_set}) {
88     report_generator_do('CSV');
89     $main::lxdebug->leave_sub();
90     return;
91   }
92
93   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
94
95   $form->{title} = $locale->text('CSV export -- options');
96   $form->header();
97   print $form->parse_html_template('report_generator/csv_export_options', { 'HIDDEN' => \@form_values });
98
99   $main::lxdebug->leave_sub();
100 }
101
102 sub report_generator_back {
103   $main::lxdebug->enter_sub();
104
105   report_generator_do('HTML');
106
107   $main::lxdebug->leave_sub();
108 }
109
110 sub report_generator_do {
111   $main::lxdebug->enter_sub();
112
113   my $format  = shift;
114
115   my $form     = $main::form;
116   my $locale   = $main::locale;
117
118   my $nextsub = $form->{report_generator_nextsub};
119   if (!$nextsub) {
120     $form->error($locale->text('report_generator_nextsub is not defined.'));
121   }
122
123   foreach my $key (split m/ +/, $form->{report_generator_variable_list}) {
124     $form->{$key} = $form->{"report_generator_hidden_${key}"};
125   }
126
127   $form->{report_generator_output_format} = $format;
128
129   delete @{$form}{map { "report_generator_$_" } qw(nextsub variable_list)};
130
131   call_sub($nextsub);
132
133   $main::lxdebug->leave_sub();
134 }
135
136 sub report_generator_dispatcher {
137   $main::lxdebug->enter_sub();
138
139   my $form     = $main::form;
140   my $locale   = $main::locale;
141
142   my $nextsub = $form->{report_generator_dispatch_to};
143   if (!$nextsub) {
144     $form->error($locale->text('report_generator_dispatch_to is not defined.'));
145   }
146
147   delete $form->{report_generator_dispatch_to};
148
149   call_sub($nextsub);
150
151   $main::lxdebug->leave_sub();
152 }
153
154 1;