Diverse Filterkriterien beim Sortieren von Kunden-/Lieferantenlisten erhalten
[kivitendo-erp.git] / bin / mozilla / ic.pl
index b29daa6..d83d409 100644 (file)
@@ -78,7 +78,8 @@ sub add {
 
   $auth->assert('part_service_assembly_edit');
 
 
   $auth->assert('part_service_assembly_edit');
 
-  $form->{title}           = $locale->text('Add ' . ucfirst $form->{item});
+  my $title                = 'Add ' . ucfirst $form->{item};
+  $form->{title}           = $locale->text($title);
   $form->{callback}        = "$form->{script}?action=add&item=$form->{item}" unless $form->{callback};
   $form->{unit_changeable} = 1;
 
   $form->{callback}        = "$form->{script}?action=add&item=$form->{item}" unless $form->{callback};
   $form->{unit_changeable} = 1;
 
@@ -127,6 +128,8 @@ sub search_update_prices {
 
   my $pricegroups = IC->get_pricegroups(\%myconfig, \%$form);
 
 
   my $pricegroups = IC->get_pricegroups(\%myconfig, \%$form);
 
+  $form->{title} = $locale->text('Update Prices');
+
   $form->header;
 
   print $form->parse_html_template('ic/search_update_prices', { PRICE_ROWS => $pricegroups });
   $form->header;
 
   print $form->parse_html_template('ic/search_update_prices', { PRICE_ROWS => $pricegroups });
@@ -789,7 +792,7 @@ sub addtop100 {
 
     if ($form->{l_subtotal} eq 'Y' && !$ref->{assemblyitem}) {
       if ($sameitem ne $ref->{ $form->{sort} }) {
 
     if ($form->{l_subtotal} eq 'Y' && !$ref->{assemblyitem}) {
       if ($sameitem ne $ref->{ $form->{sort} }) {
-        &parts_subtotal;
+        parts_subtotal(\@column_index, \$subtotalonhand, \$subtotalsellprice, \$subtotallastcost, \$subtotallistprice);
         $sameitem = $ref->{ $form->{sort} };
       }
     }
         $sameitem = $ref->{ $form->{sort} };
       }
     }
@@ -912,7 +915,7 @@ sub addtop100 {
   }
 
   if ($form->{l_subtotal} eq 'Y') {
   }
 
   if ($form->{l_subtotal} eq 'Y') {
-    &parts_subtotal;
+    parts_subtotal(\@column_index, \$subtotalonhand, \$subtotalsellprice, \$subtotallastcost, \$subtotallistprice);
   }    #fi
 
   if ($form->{"l_linetotal"}) {
   }    #fi
 
   if ($form->{"l_linetotal"}) {
@@ -1023,6 +1026,35 @@ sub generate_report {
   $form->{title} =~ s/ys$/ies/;
   $form->{title} = $locale->text($form->{title});
 
   $form->{title} =~ s/ys$/ies/;
   $form->{title} = $locale->text($form->{title});
 
+  my %column_defs = (
+    'bin'                => { 'text' => $locale->text('Bin'), },
+    'deliverydate'       => { 'text' => $locale->text('deliverydate'), },
+    'description'        => { 'text' => $locale->text('Part Description'), },
+    'drawing'            => { 'text' => $locale->text('Drawing'), },
+    'image'              => { 'text' => $locale->text('Image'), },
+    'invnumber'          => { 'text' => $locale->text('Invoice Number'), },
+    'lastcost'           => { 'text' => $locale->text('Last Cost'), },
+    'linetotallastcost'  => { 'text' => $locale->text('Extended'), },
+    'linetotallistprice' => { 'text' => $locale->text('Extended'), },
+    'linetotalsellprice' => { 'text' => $locale->text('Extended'), },
+    'listprice'          => { 'text' => $locale->text('List Price'), },
+    'microfiche'         => { 'text' => $locale->text('Microfiche'), },
+    'name'               => { 'text' => $locale->text('Name'), },
+    'onhand'             => { 'text' => $locale->text('Qty'), },
+    'ordnumber'          => { 'text' => $locale->text('Order Number'), },
+    'partnumber'         => { 'text' => $locale->text('Part Number'), },
+    'partsgroup'         => { 'text' => $locale->text('Group'), },
+    'priceupdate'        => { 'text' => $locale->text('Updated'), },
+    'quonumber'          => { 'text' => $locale->text('Quotation'), },
+    'rop'                => { 'text' => $locale->text('ROP'), },
+    'sellprice'          => { 'text' => $locale->text('Sell Price'), },
+    'serialnumber'       => { 'text' => $locale->text('Serial Number'), },
+    'soldtotal'          => { 'text' => $locale->text('soldtotal'), },
+    'transdate'          => { 'text' => $locale->text('Transdate'), },
+    'unit'               => { 'text' => $locale->text('Unit'), },
+    'weight'             => { 'text' => $locale->text('Weight'), },
+  );
+
   $revers     = $form->{revers};
   $lastsort   = $form->{lastsort};
 
   $revers     = $form->{revers};
   $lastsort   = $form->{lastsort};
 
@@ -1094,6 +1126,7 @@ sub generate_report {
     drawing       => $locale->text('Drawing')          . ": '$form->{drawing}'",
     microfiche    => $locale->text('Microfiche')       . ": '$form->{microfiche}'",
     l_soldtotal   => $locale->text('soldtotal'),
     drawing       => $locale->text('Drawing')          . ": '$form->{drawing}'",
     microfiche    => $locale->text('Microfiche')       . ": '$form->{microfiche}'",
     l_soldtotal   => $locale->text('soldtotal'),
+    ean           => $locale->text('EAN')              . ": '$form->{ean}'",
   );
 
   my @itemstatus_keys = qw(active obsolete orphaned onhand short);
   );
 
   my @itemstatus_keys = qw(active obsolete orphaned onhand short);
@@ -1114,7 +1147,12 @@ sub generate_report {
   }
 
   # special case for lastcost
   }
 
   # special case for lastcost
-  $form->{l_lastcost} = "" if $form->{ledgerchecks};
+  if ($form->{ledgerchecks}){
+    # ledgerchecks don't know about sellprice or lastcost. they just return a
+    # price. so rename sellprice to price, and drop lastcost.
+    $column_defs{sellprice}{text} = $locale->text('Price');
+    $form->{l_lastcost} = ""
+  }
 
   if ($form->{description}) {
     $description = $form->{description};
 
   if ($form->{description}) {
     $description = $form->{description};
@@ -1155,7 +1193,7 @@ sub generate_report {
     partnumber description partsgroup bin onhand rop unit listprice
     linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost
     priceupdate weight image drawing microfiche invnumber ordnumber quonumber
     partnumber description partsgroup bin onhand rop unit listprice
     linetotallistprice sellprice linetotalsellprice lastcost linetotallastcost
     priceupdate weight image drawing microfiche invnumber ordnumber quonumber
-    transdate name serialnumber soldtotal deliverydate
+    transdate name serialnumber soldtotal deliverydate ean
   );
 
   my @includeable_custom_variables = grep { $_->{includeable} } @{ $cvar_configs };
   );
 
   my @includeable_custom_variables = grep { $_->{includeable} } @{ $cvar_configs };
@@ -1164,37 +1202,8 @@ sub generate_report {
 
   push @columns, map { "cvar_$_->{name}" } @includeable_custom_variables;
 
 
   push @columns, map { "cvar_$_->{name}" } @includeable_custom_variables;
 
-  my %column_defs = (
-    'bin'                => { 'text' => $locale->text('Bin'), },
-    'deliverydate'       => { 'text' => $locale->text('deliverydate'), },
-    'description'        => { 'text' => $locale->text('Part Description'), },
-    'drawing'            => { 'text' => $locale->text('Drawing'), },
-    'image'              => { 'text' => $locale->text('Image'), },
-    'invnumber'          => { 'text' => $locale->text('Invoice Number'), },
-    'lastcost'           => { 'text' => $locale->text('Last Cost'), },
-    'linetotallastcost'  => { 'text' => $locale->text('Extended'), },
-    'linetotallistprice' => { 'text' => $locale->text('Extended'), },
-    'linetotalsellprice' => { 'text' => $locale->text('Extended'), },
-    'listprice'          => { 'text' => $locale->text('List Price'), },
-    'microfiche'         => { 'text' => $locale->text('Microfiche'), },
-    'name'               => { 'text' => $locale->text('Name'), },
-    'onhand'             => { 'text' => $locale->text('Qty'), },
-    'ordnumber'          => { 'text' => $locale->text('Order Number'), },
-    'partnumber'         => { 'text' => $locale->text('Part Number'), },
-    'partsgroup'         => { 'text' => $locale->text('Group'), },
-    'priceupdate'        => { 'text' => $locale->text('Updated'), },
-    'quonumber'          => { 'text' => $locale->text('Quotation'), },
-    'rop'                => { 'text' => $locale->text('ROP'), },
-    'sellprice'          => { 'text' => $locale->text('Sell Price'), },
-    'serialnumber'       => { 'text' => $locale->text('Serial Number'), },
-    'soldtotal'          => { 'text' => $locale->text('soldtotal'), },
-    'transdate'          => { 'text' => $locale->text('Transdate'), },
-    'unit'               => { 'text' => $locale->text('Unit'), },
-    'weight'             => { 'text' => $locale->text('Weight'), },
-    %column_defs_cvars,
-  );
-
-  map { $column_defs{$_}->{visible} = $form->{"l_$_"} ? 1 : 0 } @columns;
+  %column_defs = (%column_defs,%column_defs_cvars); # nochmal die cvars als überschrift hinzufügen
+    map { $column_defs{$_}->{visible} = $form->{"l_$_"} ? 1 : 0 } @columns;
   map { $column_defs{$_}->{align}   = 'right' } qw(onhand sellprice listprice lastcost linetotalsellprice linetotallastcost linetotallistprice rop weight soldtotal);
 
   my @hidden_variables = (qw(l_subtotal l_linetotal searchitems itemstatus bom), @itemstatus_keys, @callback_keys, @searchable_custom_variables, map { "l_$_" } @columns);
   map { $column_defs{$_}->{align}   = 'right' } qw(onhand sellprice listprice lastcost linetotalsellprice linetotallastcost linetotallistprice rop weight soldtotal);
 
   my @hidden_variables = (qw(l_subtotal l_linetotal searchitems itemstatus bom), @itemstatus_keys, @callback_keys, @searchable_custom_variables, map { "l_$_" } @columns);
@@ -1226,6 +1235,7 @@ sub generate_report {
                        'attachment_basename'   => $attachment_basenames{$form->{searchitems}} . strftime('_%Y%m%d', localtime time),
   );
   $report->set_options_from_form();
                        'attachment_basename'   => $attachment_basenames{$form->{searchitems}} . strftime('_%Y%m%d', localtime time),
   );
   $report->set_options_from_form();
+  $locale->set_numberformat_wo_thousands_separator(\%myconfig) if lc($report->{options}->{output_format}) eq 'csv';
 
   $report->set_columns(%column_defs);
   $report->set_column_order(@columns);
 
   $report->set_columns(%column_defs);
   $report->set_column_order(@columns);
@@ -1359,39 +1369,38 @@ sub parts_subtotal {
 
   $auth->assert('part_service_assembly_edit');
 
 
   $auth->assert('part_service_assembly_edit');
 
-  # imports
-  our (%column_data, @column_index);
-  our ($subtotalonhand, $totalsellprice, $totallastcost, $totallistprice, $subtotalsellprice, $subtotallastcost, $subtotallistprice);
+  my (%column_data);
+  my ($column_index, $subtotalonhand, $subtotalsellprice, $subtotallastcost, $subtotallistprice) = @_;
 
 
-  map { $column_data{$_} = "<td>&nbsp;</td>" } @column_index;
-  $subtotalonhand = 0 if ($form->{searchitems} eq 'assembly' && $form->{bom});
+  map { $column_data{$_} = "<td>&nbsp;</td>" } @{ $column_index };
+  $$subtotalonhand = 0 if ($form->{searchitems} eq 'assembly' && $form->{bom});
 
   $column_data{onhand} =
       "<th class=listsubtotal align=right>"
 
   $column_data{onhand} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotalonhand)
+    . $form->format_amount(\%myconfig, $$subtotalonhand)
     . "</th>";
 
   $column_data{linetotalsellprice} =
       "<th class=listsubtotal align=right>"
     . "</th>";
 
   $column_data{linetotalsellprice} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotalsellprice, 2)
+    . $form->format_amount(\%myconfig, $$subtotalsellprice, 2)
     . "</th>";
   $column_data{linetotallistprice} =
       "<th class=listsubtotal align=right>"
     . "</th>";
   $column_data{linetotallistprice} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotallistprice, 2)
+    . $form->format_amount(\%myconfig, $$subtotallistprice, 2)
     . "</th>";
   $column_data{linetotallastcost} =
       "<th class=listsubtotal align=right>"
     . "</th>";
   $column_data{linetotallastcost} =
       "<th class=listsubtotal align=right>"
-    . $form->format_amount(\%myconfig, $subtotallastcost, 2)
+    . $form->format_amount(\%myconfig, $$subtotallastcost, 2)
     . "</th>";
 
     . "</th>";
 
-  $subtotalonhand    = 0;
-  $subtotalsellprice = 0;
-  $subtotallistprice = 0;
-  $subtotallastcost  = 0;
+  $$subtotalonhand    = 0;
+  $$subtotalsellprice = 0;
+  $$subtotallistprice = 0;
+  $$subtotallastcost  = 0;
 
   print "<tr class=listsubtotal>";
 
 
   print "<tr class=listsubtotal>";
 
-  map { print "\n$column_data{$_}" } @column_index;
+  map { print "\n$column_data{$_}" } @{ $column_index };
 
   print qq|
   </tr>
 
   print qq|
   </tr>
@@ -1412,7 +1421,8 @@ sub edit {
 
   $form->{"original_partnumber"} = $form->{"partnumber"};
 
 
   $form->{"original_partnumber"} = $form->{"partnumber"};
 
-  $form->{title} = $locale->text('Edit ' . ucfirst $form->{item});
+  my $title      = 'Edit ' . ucfirst $form->{item};
+  $form->{title} = $locale->text($title);
 
   &link_part;
   &display_form;
 
   &link_part;
   &display_form;
@@ -1570,8 +1580,8 @@ sub form_footer {
 sub makemodel_row {
   $lxdebug->enter_sub();
   my ($numrows) = @_;
 sub makemodel_row {
   $lxdebug->enter_sub();
   my ($numrows) = @_;
-
-  my @mm_data = grep { any { $_ ne '' } @$_{qw(make model)} } map +{ make => $form->{"make_$_"}, model => $form->{"model_$_"} }, 1 .. $numrows;
+  #hli
+  my @mm_data = grep { any { $_ ne '' } @$_{qw(make model)} } map +{ make => $form->{"make_$_"}, model => $form->{"model_$_"}, lastcost => $form->{"lastcost_$_"}, lastupdate => $form->{"lastupdate_$_"}, sortorder => $form->{"sortorder_$_"} }, 1 .. $numrows;
   delete @{$form}{grep { m/^make_\d+/ || m/^model_\d+/ } keys %{ $form }};
   print $form->parse_html_template('ic/makemodel', { MM_DATA => [ @mm_data, {} ], mm_rows => scalar @mm_data + 1 });
 
   delete @{$form}{grep { m/^make_\d+/ || m/^model_\d+/ } keys %{ $form }};
   print $form->parse_html_template('ic/makemodel', { MM_DATA => [ @mm_data, {} ], mm_rows => scalar @mm_data + 1 });
 
@@ -1584,8 +1594,6 @@ sub assembly_row {
   my (@column_index);
   my ($nochange, $callback, $previousform, $linetotal, $line_purchase_price, $href);
 
   my (@column_index);
   my ($nochange, $callback, $previousform, $linetotal, $line_purchase_price, $href);
 
-  our ($deliverydate); # ToDO: check if this indeed comes from global context
-
   @column_index = qw(runningnumber qty unit bom partnumber description partsgroup lastcost total);
 
   if ($form->{previousform}) {
   @column_index = qw(runningnumber qty unit bom partnumber description partsgroup lastcost total);
 
   if ($form->{previousform}) {
@@ -1673,7 +1681,6 @@ sub assembly_row {
 
     $row{lastcost}{data}      = $line_purchase_price;
     $row{total}{data}         = $linetotal;
 
     $row{lastcost}{data}      = $line_purchase_price;
     $row{total}{data}         = $linetotal;
-    $row{deliverydate}{data}  = $deliverydate;
     $row{lastcost}{align}     = 'right';
     $row{total}{align}        = 'right';
     $row{deliverydate}{align} = 'right';
     $row{lastcost}{align}     = 'right';
     $row{total}{align}        = 'right';
     $row{deliverydate}{align} = 'right';
@@ -1717,7 +1724,7 @@ sub update {
         if ($rows > 1) {
           $form->{makemodel_rows}--;
           &select_item;
         if ($rows > 1) {
           $form->{makemodel_rows}--;
           &select_item;
-          exit;
+          ::end_of_request();
         } else {
           map { $form->{item_list}[$i]{$_} =~ s/\"/&quot;/g }
             qw(partnumber description unit partsgroup);
         } else {
           map { $form->{item_list}[$i]{$_} =~ s/\"/&quot;/g }
             qw(partnumber description unit partsgroup);
@@ -1781,7 +1788,7 @@ sub save {
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
     $form->{addition} = "SAVED";
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
     $form->{addition} = "SAVED";
-    $form->save_history($form->dbconnect(\%myconfig));
+    $form->save_history;
   }
   # /saving the history
   $parts_id = $form->{id};
   }
   # /saving the history
   $parts_id = $form->{id};
@@ -1865,7 +1872,7 @@ sub save {
       $form->{creditremaining} -= $amount;
 
       # redo number formatting, because invoice parse them!
       $form->{creditremaining} -= $amount;
 
       # redo number formatting, because invoice parse them!
-      map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}) } qw(weight listprice sellprice rop);
+      map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}) } qw(weight listprice sellprice lastcost rop);
     }
 
     $form->{"id_$i"} = $parts_id;
     }
 
     $form->{"id_$i"} = $parts_id;
@@ -1914,7 +1921,7 @@ sub save_as_new {
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
     $form->{addition} = "SAVED AS NEW";
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
     $form->{addition} = "SAVED AS NEW";
-    $form->save_history($form->dbconnect(\%myconfig));
+    $form->save_history;
   }
   # /saving the history
   $form->{id} = 0;
   }
   # /saving the history
   $form->{id} = 0;
@@ -1935,7 +1942,7 @@ sub delete {
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
     $form->{addition} = "DELETED";
   if(!exists $form->{addition}) {
     $form->{snumbers} = qq|partnumber_| . $form->{partnumber};
     $form->{addition} = "DELETED";
-    $form->save_history($form->dbconnect(\%myconfig));
+    $form->save_history;
   }
   # /saving the history
   my $rc = IC->delete(\%myconfig, \%$form);
   }
   # /saving the history
   my $rc = IC->delete(\%myconfig, \%$form);
@@ -1970,8 +1977,6 @@ sub parts_language_selection {
 
   $auth->assert('part_service_assembly_edit');
 
 
   $auth->assert('part_service_assembly_edit');
 
-  our ($onload, $callback);
-
   my $languages = IC->retrieve_languages(\%myconfig, $form);
 
   if ($form->{language_values} ne "") {
   my $languages = IC->retrieve_languages(\%myconfig, $form);
 
   if ($form->{language_values} ne "") {
@@ -1996,15 +2001,13 @@ sub parts_language_selection {
   my @header =
     map(+{ "column_title" => $header_title{$_},
            "column" => $_,
   my @header =
     map(+{ "column_title" => $header_title{$_},
            "column" => $_,
-           "callback" => $callback,
          },
         @header_sort);
 
   $form->{"title"} = $locale->text("Language Values");
   $form->header();
   print $form->parse_html_template("ic/parts_language_selection", { "HEADER"    => \@header,
          },
         @header_sort);
 
   $form->{"title"} = $locale->text("Language Values");
   $form->header();
   print $form->parse_html_template("ic/parts_language_selection", { "HEADER"    => \@header,
-                                                                    "LANGUAGES" => $languages,
-                                                                    "onload"    => $onload });
+                                                                    "LANGUAGES" => $languages, });
 
   $lxdebug->leave_sub();
 }
 
   $lxdebug->leave_sub();
 }