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_setup_action_bar {
 
  38   my ($type, %params) = @_;
 
  40   $::request->layout->get('actionbar')->add(
 
  43         $type eq 'pdf' ? $::locale->text('PDF export') : $::locale->text('CSV export'),
 
  44         submit => [ '#report_generator_form', { 'report_generator_dispatch_to' => "report_generator_export_as_${type}" } ],
 
  47         $::locale->text('PDF export with attachments'),
 
  48         submit  => [ '#report_generator_form', { report_generator_dispatch_to => "report_generator_export_as_pdf", report_generator_addattachments => 1 } ],
 
  49         only_if => $params{allow_attachments},
 
  53       $::locale->text('Back'),
 
  54       submit => [ '#report_generator_form', { 'report_generator_dispatch_to' => "report_generator_back" } ],
 
  59 sub report_generator_export_as_pdf {
 
  60   $main::lxdebug->enter_sub();
 
  62   my $form     = $main::form;
 
  63   my %myconfig = %main::myconfig;
 
  64   my $locale   = $main::locale;
 
  66   if ($form->{report_generator_pdf_options_set}) {
 
  67     my $saved_form = save_form();
 
  69     report_generator_do('PDF');
 
  71     if ($form->{report_generator_printed}) {
 
  72       restore_form($saved_form);
 
  73       $form->{MESSAGE} = $locale->text('The list has been printed.');
 
  74       report_generator_do('HTML');
 
  77     $main::lxdebug->leave_sub();
 
  81   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
 
  83   $form->get_lists('printers' => 'ALL_PRINTERS');
 
  84   map { $_->{selected} = $myconfig{default_printer_id} == $_->{id} } @{ $form->{ALL_PRINTERS} };
 
  86   $form->{copies} = max $myconfig{copies} * 1, 1;
 
  88   my $allow_font_selection = 1;
 
  89   eval { require PDF::API2; };
 
  90   $allow_font_selection = 0 if ($@);
 
  92   $form->{title} = $locale->text('PDF export -- options');
 
  94   report_generator_setup_action_bar('pdf', allow_attachments => !!$form->{report_generator_hidden_l_attachments});
 
  97   print $form->parse_html_template('report_generator/pdf_export_options', { 'HIDDEN'               => \@form_values,
 
  98                                                                             'ALLOW_FONT_SELECTION' => $allow_font_selection, });
 
 100   $main::lxdebug->leave_sub();
 
 103 sub report_generator_export_as_csv {
 
 104   $main::lxdebug->enter_sub();
 
 106   my $form     = $main::form;
 
 107   my $locale   = $main::locale;
 
 109   if ($form->{report_generator_csv_options_set}) {
 
 110     report_generator_do('CSV');
 
 111     $main::lxdebug->leave_sub();
 
 115   my @form_values = $form->flatten_variables(grep { ($_ ne 'login') && ($_ ne 'password') } keys %{ $form });
 
 117   $form->{title} = $locale->text('CSV export -- options');
 
 119   report_generator_setup_action_bar('csv');
 
 122   print $form->parse_html_template('report_generator/csv_export_options', { 'HIDDEN' => \@form_values });
 
 124   $main::lxdebug->leave_sub();
 
 127 sub report_generator_back {
 
 128   $main::lxdebug->enter_sub();
 
 130   report_generator_do('HTML');
 
 132   $main::lxdebug->leave_sub();
 
 135 sub report_generator_do {
 
 136   $main::lxdebug->enter_sub();
 
 140   my $form     = $main::form;
 
 141   my $locale   = $main::locale;
 
 143   my $nextsub = $form->{report_generator_nextsub};
 
 145     $form->error($locale->text('report_generator_nextsub is not defined.'));
 
 148   foreach my $key (split m/ +/, $form->{report_generator_variable_list}) {
 
 149     $form->{$key} = $form->{"report_generator_hidden_${key}"};
 
 152   $form->{report_generator_output_format} = $format;
 
 154   delete @{$form}{map { "report_generator_$_" } qw(nextsub variable_list)};
 
 158   $main::lxdebug->leave_sub();
 
 161 sub report_generator_dispatcher {
 
 162   $main::lxdebug->enter_sub();
 
 164   my $form     = $main::form;
 
 165   my $locale   = $main::locale;
 
 167   my $nextsub = $form->{report_generator_dispatch_to};
 
 169     $form->error($locale->text('report_generator_dispatch_to is not defined.'));
 
 172   delete $form->{report_generator_dispatch_to};
 
 176   $main::lxdebug->leave_sub();