Auftrags-Controller: Einheiten per Select ändern können und sellprice anpassen.
[kivitendo-erp.git] / bin / mozilla / wh.pl
index f497107..fbc645e 100644 (file)
@@ -44,6 +44,8 @@ use SL::WH;
 use SL::OE;
 use SL::ReportGenerator;
 
+use SL::DB::Part;
+
 use Data::Dumper;
 
 require "bin/mozilla/common.pl";
@@ -85,8 +87,16 @@ sub transfer_warehouse_selection {
   show_no_warehouses_error() if (!scalar @{ $form->{WAREHOUSES} });
 
   my $units      = AM->retrieve_units(\%myconfig, $form);
+
+  my $part = 0;
+  if ( $form->{parts_id} ) {
+    $part = SL::DB::Part->new();
+    $part->id($form->{parts_id});
+    $part->load();
+  }
+
   # der zweite Parameter von unit_select_data gibt den default-Namen (selected) vor
-  $form->{UNITS} = AM->unit_select_data($units, $form->{partunit}, 0, $form->{partunit});
+  $form->{UNITS} = AM->unit_select_data($units, $form->{unit}, 0, $part ? $part->unit : 0);
 
   if (scalar @{ $form->{WAREHOUSES} }) {
     $form->{warehouse_id} ||= $form->{WAREHOUSES}->[0]->{id};
@@ -95,8 +105,6 @@ sub transfer_warehouse_selection {
 
   my $content;
 
-  $form->{jsscript} = 1;
-
   if ($form->{trans_type} eq 'removal') {
     $form->{nextsub} = "removal_parts_selection";
     $form->{title}   = $locale->text('Removal from Warehouse');
@@ -272,6 +280,7 @@ sub transfer_parts {
     }
 
     $transfer->{comment} = $form->{comment};
+    $transfer->{change_default_bin} = $form->{change_default_bin};
 
     push @transfers, $transfer;
 
@@ -321,7 +330,7 @@ sub transfer_stock_update_part {
     if (!scalar @{ $parts }) {
       new_item(action => "transfer_stock_update_part");
     } elsif (scalar @{ $parts } == 1) {
-      @{$form}{qw(parts_id partnumber description ean)} = @{$parts->[0]}{qw(id partnumber description ean)};
+      @{$form}{qw(parts_id partnumber description ean warehouse_id bin_id)} = @{$parts->[0]}{qw(id partnumber description ean warehouse_id bin_id)};
       transfer_stock_get_partunit();
       transfer_warehouse_selection();
 
@@ -388,7 +397,7 @@ sub transfer_stock_part_selected {
 
   my $form     = $main::form;
 
-  @{$form}{qw(parts_id partnumber description ean)} = @{$part}{qw(id partnumber description ean)};
+  @{$form}{qw(parts_id partnumber description ean warehouse_id bin_id)} = @{$part}{qw(id partnumber description ean warehouse_id bin_id)};
 
   transfer_stock_get_partunit();
   transfer_warehouse_selection();
@@ -438,7 +447,7 @@ sub create_assembly {
     $form->error($locale->text('The warehouse or the bin is missing.'));
   }
 
-  if (!$::lx_office_conf{system}->{show_best_before}) {
+  if (!$::instance_conf->get_show_bestbefore) {
       $form->{bestbefore} = '';
   }
 
@@ -446,7 +455,7 @@ sub create_assembly {
   # Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen
   my %TRANSFER = (
     'transfer_type'    => 'assembly',
-    'login'            => $form->{login},
+    'login'            => $::myconfig{login},
     'dst_warehouse_id' => $form->{warehouse_id},
     'dst_bin_id'       => $form->{bin_id},
     'chargenumber'     => $form->{chargenumber},
@@ -646,8 +655,6 @@ sub journal {
 
   show_no_warehouses_error() if (!scalar @{ $form->{WAREHOUSES} });
 
-  $form->{jsscript} = 1;
-
   $form->header();
   print $form->parse_html_template("wh/journal_filter", { "UNITS" => AM->unit_select_data(AM->retrieve_units(\%myconfig, $form)) });
 
@@ -792,10 +799,6 @@ sub report {
 
   show_no_warehouses_error() if (!scalar @{ $form->{WAREHOUSES} });
 
-  $form->{jsscript} = 1;
-
-#  $form->{fokus}   = "partnumber";
-#  $form->{onload} .= "focus();";
   $form->{title}   = $locale->text("Report about warehouse contents");
 
   $form->header();
@@ -824,7 +827,27 @@ sub generate_report {
   my @columns = qw(warehousedescription bindescription partnumber partdescription chargenumber bestbefore qty stock_value);
 
   # filter stuff
-  map { $filter{$_} = $form->{$_} if ($form->{$_}) } qw(warehouse_id bin_id partnumber description chargenumber bestbefore);
+  map { $filter{$_} = $form->{$_} if ($form->{$_}) } qw(warehouse_id bin_id partnumber description chargenumber bestbefore date include_invalid_warehouses);
+
+  # show filter stuff also in report
+  my @options;
+  # dispatch all options
+  my $dispatch_options = {
+   warehouse_id   => sub { push @options, $locale->text('Warehouse') . " : " .
+                                            SL::DB::Manager::Warehouse->find_by(id => $form->{warehouse_id})->description},
+   bin_id         => sub { push @options, $locale->text('Bin') . " : " .
+                                            SL::DB::Manager::Bin->find_by(id => $form->{bin_id})->description},
+   partnumber     => sub { push @options, $locale->text('Partnumber')     . " : $form->{partnumber}"},
+   description    => sub { push @options, $locale->text('Description')    . " : $form->{description}"},
+   chargenumber   => sub { push @options, $locale->text('Charge Number')  . " : $form->{chargenumber}"},
+   bestbefore     => sub { push @options, $locale->text('Best Before')    . " : $form->{bestbefore}"},
+   date           => sub { push @options, $locale->text('Date')           . " : $form->{date}"},
+   include_invalid_warehouses    => sub { push @options, $locale->text('Include invalid warehouses ')},
+  };
+  foreach (keys %filter) {
+   $dispatch_options->{$_}->() if $dispatch_options->{$_};
+  }
+  # / end show filter stuff also in report
 
   $filter{qty_op} = WH->convert_qty_op($form->{qty_op});
   if ($filter{qty_op}) {
@@ -842,7 +865,7 @@ sub generate_report {
 
   my @hidden_variables = map { "l_${_}" } @columns;
   push @hidden_variables, qw(warehouse_id bin_id partnumber description chargenumber bestbefore qty_op qty qty_unit l_warehousedescription l_bindescription);
-  push @hidden_variables, qw(include_empty_bins subtotal);
+  push @hidden_variables, qw(include_empty_bins subtotal include_invalid_warehouses date);
 
   my %column_defs = (
     'warehousedescription' => { 'text' => $locale->text('Warehouse'), },
@@ -869,7 +892,8 @@ sub generate_report {
 
   $report->set_sort_indicator($sort_col, $form->{order});
 
-  $report->set_options('output_format'        => 'HTML',
+  $report->set_options('top_info_text'        => join("\n", @options),
+                       'output_format'        => 'HTML',
                        'title'                => $form->{title},
                        'attachment_basename'  => strftime($locale->text('warehouse_report_list') . '_%Y%m%d', localtime time));
   $report->set_options_from_form();
@@ -896,7 +920,7 @@ sub generate_report {
 
     my $row_set = [ { map { $_ => { 'data' => $entry->{$_}, 'align' => $column_alignment{$_} } } @columns } ];
 
-    if (($form->{subtotal} eq 'Y')
+    if ( ($form->{subtotal} eq 'Y' && !$form->{report_generator_csv_options_for_import} )
         && (($idx == (scalar @contents - 1))
             || ($entry->{$sort_col} ne $contents[$idx + 1]->{$sort_col}))) {
 
@@ -916,7 +940,7 @@ sub generate_report {
     $idx++;
   }
 
-  if ($column_defs{stock_value}->{visible}) {
+  if ( $column_defs{stock_value}->{visible} && !$form->{report_generator_csv_options_for_import} ) {
     $report->add_separator();
 
     my $row                      = { map { $_ => { 'data' => '', 'class' => 'listsubtotal', } } @columns };
@@ -948,7 +972,7 @@ sub show_no_warehouses_error {
 
   my $msg = $locale->text('No warehouse has been created yet or the quantity of the bins is not configured yet.') . ' ';
 
-  if ($main::auth->check_right($form->{login}, 'config')) {
+  if ($main::auth->check_right($::myconfig{login}, 'config')) {
     $msg .= $locale->text('You can create warehouses and bins via the menu "System -> Warehouses".');
   } else {
     $msg .= $locale->text('Please ask your administrator to create warehouses and bins.');