Merge branch 'master' into bug1640
[kivitendo-erp.git] / bin / mozilla / bp.pl
index 654a267..9ce4915 100644 (file)
@@ -39,9 +39,13 @@ use List::Util qw(first);
 
 require "bin/mozilla/common.pl";
 
+use strict;
+
 # end of main
 
 sub assert_bp_access {
+  my $form     = $main::form;
+
   my %access_map = (
     'invoice'           => 'invoice_edit',
     'sales_order'       => 'sales_order_edit',
@@ -53,28 +57,25 @@ sub assert_bp_access {
   );
 
   if ($form->{type} && $access_map{$form->{type}}) {
-    $auth->assert($access_map{$form->{type}});
-
-  } elsif ($form->{type} eq 'packing_list') {
-    $lxdebug->message(0, "1");
-    if (!$auth->assert('sales_order_edit', 1)) {
-    $lxdebug->message(0, "2");
-      $auth->assert('invoice_edit') ;
-    }
-    $lxdebug->message(0, "3");
+    $main::auth->assert($access_map{$form->{type}});
 
   } else {
-    $auth->assert('DOES_NOT_EXIST');
+    $main::auth->assert('DOES_NOT_EXIST');
   }
 }
 
 sub search {
-  $lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
+  my %myconfig = %main::myconfig;
+  my $locale   = $main::locale;
+
+  my ($name, $account, $onload);
 
   assert_bp_access();
 
   # $locale->text('Sales Invoices')
-  # $locale->text('Packing Lists')
   # $locale->text('Sales Orders')
   # $locale->text('Purchase Orders')
   # $locale->text('Quotations')
@@ -85,7 +86,7 @@ sub search {
   # setup customer/vendor selection
   BP->get_vc(\%myconfig, \%$form);
 
-  if (@{ $form->{"all_$form->{vc}"} }) {
+  if (@{ $form->{"all_$form->{vc}"} || [] }) {
     map { $name .= "<option>$_->{name}--$_->{id}\n" }
       @{ $form->{"all_$form->{vc}"} };
     $name = qq|<select name=$form->{vc}><option>\n$name</select>|;
@@ -96,11 +97,9 @@ sub search {
   # $locale->text('Customer')
   # $locale->text('Vendor')
 
-  %label = (
+  my %label = (
        invoice =>
          { title => 'Sales Invoices', name => 'Customer', l_invnumber => 'Y' },
-       packing_list =>
-         { title => 'Packing Lists', name => 'Customer', l_invnumber => 'Y' },
        sales_order =>
          { title => 'Sales Orders', name => 'Customer', l_ordnumber => 'Y' },
        purchase_order =>
@@ -113,33 +112,31 @@ sub search {
        receipt => { title => 'Receipts', name => 'Customer' });
 
   $label{invoice}{invnumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
-         <td colspan=3><input name=invnumber size=20></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Invoice Number') . qq|</th>
+          <td colspan=3><input name=invnumber size=20></td>
+        </tr>
 |;
   $label{invoice}{ordnumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
-         <td colspan=3><input name=ordnumber size=20></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
+          <td colspan=3><input name=ordnumber size=20></td>
+        </tr>
 |;
   $label{sales_quotation}{quonumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Quotation Number') . qq|</th>
-         <td colspan=3><input name=quonumber size=20></td>
-       </tr>
+        <tr>
+          <th align=right nowrap>| . $locale->text('Quotation Number') . qq|</th>
+          <td colspan=3><input name=quonumber size=20></td>
+        </tr>
 |;
 
   $label{check}{chknumber} = qq|
-       <tr>
-         <th align=right nowrap>| . $locale->text('Reference') . qq|</th>
-         <td colspan=3><input name=chknumber size=20></td>
-       </tr>
+          <tr>
+          <th align=right nowrap>| . $locale->text('Reference') . qq|</th>
+          <td colspan=3><input name=chknumber size=20></td>
+        </tr>
 |;
 
-  $label{packing_list}{invnumber}      = $label{invoice}{invnumber};
-  $label{packing_list}{ordnumber}      = $label{invoice}{ordnumber};
   $label{sales_order}{ordnumber}       = $label{invoice}{ordnumber};
   $label{purchase_order}{ordnumber}    = $label{invoice}{ordnumber};
   $label{request_quotation}{quonumber} = $label{sales_quotation}{quonumber};
@@ -154,14 +151,14 @@ sub search {
     if (BP->payment_accounts(\%myconfig, \%$form)) {
       $account = qq|
         <tr>
-         <th align=right>| . $locale->text('Account') . qq|</th>
+          <th align=right>| . $locale->text('Account') . qq|</th>
 |;
 
       if ($form->{accounts}) {
         $account .= qq|
-         <td colspan=3><select name=account>
+          <td colspan=3><select name=account>
 |;
-        foreach $ref (@{ $form->{accounts} }) {
+        foreach my $ref (@{ $form->{accounts} }) {
           $account .= qq|
           <option>$ref->{accno}--$ref->{description}
 |;
@@ -172,13 +169,13 @@ sub search {
 |;
       } else {
         $account .= qq|
-         <td colspan=3><input name=account></td>
+          <td colspan=3><input name=account></td>
 |;
 
       }
 
       $account .= qq|
-       </tr>
+         </tr>
 |;
 
     }
@@ -186,7 +183,8 @@ sub search {
 
   # use JavaScript Calendar or not
   $form->{jsscript} = 1;
-  $jsscript = "";
+  my $jsscript = "";
+  my ($button1, $button2);
   if ($form->{jsscript}) {
 
     # with JavaScript Calendar
@@ -232,23 +230,23 @@ sub search {
   <tr>
     <td>
       <table>
-       <tr>
-         <th align=right>Kunde</th>
-         <td colspan=3>$name</td>
-       </tr>
-       $account
-       $label{$form->{type}}{invnumber}
-       $label{$form->{type}}{ordnumber}
-       $label{$form->{type}}{quonumber}
-       $label{$form->{type}}{chknumber}
-       $label{$form->{type}}{rctnumber}
-       <tr>
-         <th align=right nowrap>| . $locale->text('From') . qq|</th>
+        <tr>
+          <th align=right>Kunde</th>
+          <td colspan=3>$name</td>
+        </tr>
+        $account
+        $label{$form->{type}}{invnumber}
+        $label{$form->{type}}{ordnumber}
+        $label{$form->{type}}{quonumber}
+        $label{$form->{type}}{chknumber}
+        $label{$form->{type}}{rctnumber}
+        <tr>
+          <th align=right nowrap>| . $locale->text('From') . qq|</th>
           $button1
-         <th align=right>| . $locale->text('Bis') . qq|</th>
+          <th align=right>| . $locale->text('Bis') . qq|</th>
           $button2
-       </tr>
-       <input type=hidden name=sort value=transdate>
+        </tr>
+        <input type=hidden name=sort value=transdate>
       </table>
     </td>
   </tr>
@@ -272,17 +270,20 @@ $jsscript
 </html>
 |;
 
-  $lxdebug->leave_sub();
+  $main::lxdebug->leave_sub();
 }
 
 sub remove {
-  $lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
+  my $locale   = $main::locale;
 
   assert_bp_access();
 
-  $selected = 0;
+  my $selected = 0;
 
-  for $i (1 .. $form->{rowcount}) {
+  for my $i (1 .. $form->{rowcount}) {
     if ($form->{"checked_$i"}) {
       $selected = 1;
       last;
@@ -303,7 +304,7 @@ sub remove {
 
   map { delete $form->{$_} } qw(action header);
 
-  foreach $key (keys %$form) {
+  foreach my $key (keys %$form) {
     next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
     print qq|<input type=hidden name=$key value="$form->{$key}">\n|;
   }
@@ -324,11 +325,15 @@ sub remove {
 </html>
 |;
 
-  $lxdebug->leave_sub();
+  $main::lxdebug->leave_sub();
 }
 
 sub yes {
-  $lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
+  my %myconfig = %main::myconfig;
+  my $locale   = $main::locale;
 
   assert_bp_access();
 
@@ -336,14 +341,18 @@ sub yes {
   $form->{callback} .= "&header=1" if $form->{callback};
 
   $form->redirect($locale->text('Removed spoolfiles!'))
-    if (BP->delete_spool(\%myconfig, \%$form, $spool));
+    if (BP->delete_spool(\%myconfig, \%$form));
   $form->error($locale->text('Cannot remove files!'));
 
-  $lxdebug->leave_sub();
+  $main::lxdebug->leave_sub();
 }
 
 sub print {
-  $lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
+  my %myconfig = %main::myconfig;
+  my $locale   = $main::locale;
 
   assert_bp_access();
 
@@ -360,25 +369,29 @@ sub print {
     $form->{callback} .= "&header=1";
   }
 
-  for $i (1 .. $form->{rowcount}) {
+  for my $i (1 .. $form->{rowcount}) {
     if ($form->{"checked_$i"}) {
       $form->info($locale->text('Printing ... '));
 
-      if (BP->print_spool(\%myconfig, \%$form, $spool, "| $selected_printer")) {
+      if (BP->print_spool(\%myconfig, \%$form, "| $selected_printer")) {
         print $locale->text('done');
         $form->redirect($locale->text('Marked entries printed!'));
       }
-      exit;
+      ::end_of_request();
     }
   }
 
   $form->error('Nothing selected!');
 
-  $lxdebug->leave_sub();
+  $main::lxdebug->leave_sub();
 }
 
 sub list_spool {
-  $lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
+  my %myconfig = %main::myconfig;
+  my $locale   = $main::locale;
 
   assert_bp_access();
 
@@ -388,12 +401,13 @@ sub list_spool {
 
   BP->get_spoolfiles(\%myconfig, \%$form);
 
-  $title = $form->escape($form->{title});
-  $href  = "bp.pl?action=list_spool&vc=$form->{vc}&type=$form->{type}&title=$title";
+  my $title = $form->escape($form->{title});
+  my $href  = "bp.pl?action=list_spool&vc=$form->{vc}&type=$form->{type}&title=$title";
 
   $title = $form->escape($form->{title}, 1);
-  $callback =
+  my $callback =
     "bp.pl?action=list_spool&vc=$form->{vc}&type=$form->{type}&title=$title";
+  my $option;
 
   if ($form->{ $form->{vc} }) {
     $callback .= "&$form->{vc}=" . $form->escape($form->{ $form->{vc} }, 1);
@@ -446,12 +460,9 @@ sub list_spool {
       . $locale->date(\%myconfig, $form->{transdateto}, 1);
   }
 
-  $name = ucfirst $form->{vc};
+  my $name = ucfirst $form->{vc};
 
-  @columns = (transdate);
-  if ($form->{type} =~ /(invoice|packing_list|check|receipt)/) {
-    push @columns, "invnumber";
-  }
+  my @columns = qw(transdate);
   if ($form->{type} =~ /_order$/) {
     push @columns, "ordnumber";
   }
@@ -459,10 +470,13 @@ sub list_spool {
     push @columns, "quonumber";
   }
 
-  push @columns, (name, spoolfile);
-  @column_index = $form->sort_columns(@columns);
+  push @columns, qw(name spoolfile);
+  my @column_index = $form->sort_columns(@columns);
   unshift @column_index, "checked";
 
+  my %column_header;
+  my %column_data;
+
   $column_header{checked}   = "<th class=listheading>&nbsp;</th>";
   $column_header{transdate} =
       "<th><a class=listheading href=$href&sort=transdate>"
@@ -505,13 +519,13 @@ sub list_spool {
   <tr>
     <td>
       <table width=100%>
-       <tr class=listheading>
+        <tr class=listheading>
 |;
 
   map { print "\n$column_header{$_}" } @column_index;
 
   print qq|
-       </tr>
+        </tr>
 |;
 
   # add sort and escape callback, this one we use for the add sub
@@ -520,9 +534,12 @@ sub list_spool {
   # escape callback for href
   $callback = $form->escape($callback);
 
-  $i = 0;
+  my $i = 0;
+  my $j = 0;
+  my $spoolfile;
+  my $spool = $::lx_office_conf{paths}->{spool};
 
-  foreach $ref (@{ $form->{SPOOL} }) {
+  foreach my $ref (@{ $form->{SPOOL} }) {
 
     $i++;
 
@@ -531,7 +548,7 @@ sub list_spool {
     if ($ref->{invoice}) {
       $ref->{module} = ($ref->{module} eq 'ar') ? "is" : "ir";
     }
-    $module = "$ref->{module}.pl";
+    my $module = "$ref->{module}.pl";
 
     $column_data{transdate} = "<td>$ref->{transdate}&nbsp;</td>";
 
@@ -628,15 +645,17 @@ print qq|</select>|;
 }
 
 sub select_all {
-  $lxdebug->enter_sub();
+  $main::lxdebug->enter_sub();
+
+  my $form     = $main::form;
 
   assert_bp_access();
 
   map { $form->{"checked_$_"} = 1 } (1 .. $form->{rowcount});
   &list_spool;
 
-  $lxdebug->leave_sub();
+  $main::lxdebug->leave_sub();
 }
 
-sub continue { call_sub($form->{"nextsub"}); }
+sub continue { call_sub($main::form->{"nextsub"}); }