1 #=====================================================================
4 # Based on SQL-Ledger Version 2.1.9
5 # Web http://www.lx-office.org
6 ######################################################################
8 # Stuff that can be used from other modules
10 ######################################################################
12 use List::Util qw(max);
16 use SL::MoreCommon qw(restore_form save_form);
17 use SL::ReportGenerator;
21 sub report_generator_set_default_sort {
22 $main::lxdebug->enter_sub();
24 my $form = $main::form;
26 my $default_sortorder = shift;
27 my $default_sortdir = shift;
29 $form->{sort} ||= $default_sortorder;
30 $form->{sortdir} = $default_sortdir unless (defined $form->{sortdir});
31 $form->{sortdir} = $form->{sortdir} ? 1 : 0;
33 $main::lxdebug->leave_sub();
37 sub report_generator_export_as_pdf {
38 $main::lxdebug->enter_sub();
40 my $form = $main::form;
41 my %myconfig = %main::myconfig;
42 my $locale = $main::locale;
44 if ($form->{report_generator_pdf_options_set}) {
45 my $saved_form = save_form();
47 report_generator_do('PDF');
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');
55 $main::lxdebug->leave_sub();
59 my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
61 $form->get_lists('printers' => 'ALL_PRINTERS');
62 map { $_->{selected} = $myconfig{default_printer_id} == $_->{id} } @{ $form->{ALL_PRINTERS} };
64 $form->{copies} = max $myconfig{copies} * 1, 1;
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};
72 $form->{title} = $locale->text('PDF export -- options');
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, });
78 $main::lxdebug->leave_sub();
81 sub report_generator_export_as_csv {
82 $main::lxdebug->enter_sub();
84 my $form = $main::form;
85 my $locale = $main::locale;
87 if ($form->{report_generator_csv_options_set}) {
88 report_generator_do('CSV');
89 $main::lxdebug->leave_sub();
93 my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
95 $form->{title} = $locale->text('CSV export -- options');
97 print $form->parse_html_template('report_generator/csv_export_options', { 'HIDDEN' => \@form_values });
99 $main::lxdebug->leave_sub();
102 sub report_generator_back {
103 $main::lxdebug->enter_sub();
105 report_generator_do('HTML');
107 $main::lxdebug->leave_sub();
110 sub report_generator_do {
111 $main::lxdebug->enter_sub();
115 my $form = $main::form;
116 my $locale = $main::locale;
118 my $nextsub = $form->{report_generator_nextsub};
120 $form->error($locale->text('report_generator_nextsub is not defined.'));
123 foreach my $key (split m/ +/, $form->{report_generator_variable_list}) {
124 $form->{$key} = $form->{"report_generator_hidden_${key}"};
127 $form->{report_generator_output_format} = $format;
129 delete @{$form}{map { "report_generator_$_" } qw(nextsub variable_list)};
133 $main::lxdebug->leave_sub();
136 sub report_generator_dispatcher {
137 $main::lxdebug->enter_sub();
139 my $form = $main::form;
140 my $locale = $main::locale;
142 my $nextsub = $form->{report_generator_dispatch_to};
144 $form->error($locale->text('report_generator_dispatch_to is not defined.'));
147 delete $form->{report_generator_dispatch_to};
151 $main::lxdebug->leave_sub();