X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fdo.pl;h=b25cdadb496570f8473a996b3551b8b55ca1abff;hb=b8ee6b6ed46e55095b955ee1800b8a4b8d8ccc3f;hp=55e6cf2fab58edfea08bf998fda85c3c7db43700;hpb=d98812a8f430bfd298d01b8c47bcad2276e4f051;p=kivitendo-erp.git diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index 55e6cf2fa..b25cdadb4 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -580,6 +580,9 @@ sub orders { if ($form->{vendor}) { push @options, $locale->text('Vendor') . " : $form->{vendor}"; } + if ($form->{cp_name}) { + push @options, $locale->text('Contact Person') . " : $form->{cp_name}"; + } if ($form->{department}) { my ($department) = split /--/, $form->{department}; push @options, $locale->text('Department') . " : $department"; @@ -1592,15 +1595,22 @@ sub transfer_in_out_default { my $base_unit_factor = $units->{ $part_info_map{$form->{"id_$i"}}->{unit} }->{factor} || 1; my $qty = $form->parse_amount(\%myconfig, $form->{"qty_$i"}) * $units->{$form->{"unit_$i"}}->{factor} / $base_unit_factor; + $form->show_generic_error($locale->text("Cannot transfer negative entries." ), 'back_button' => 1) if ($qty < 0); # if we do not want to transfer services and this part is a service, set qty to zero + # ... and do not create a hash entry in %qty_parts below (will skip check for bins for the transfer == out case) + # ... and push only a empty (undef) element to @all_requests (will skip check for bin_id and warehouse_id and will not alter the row) + $qty = 0 if (!$::instance_conf->get_transfer_default_services && !defined($part_info_map{$form->{"id_$i"}}->{inventory_accno_id}) && !$part_info_map{$form->{"id_$i"}}->{assembly}); $qty_parts{$form->{"id_$i"}} += $qty; - + if ($qty == 0) { + delete $qty_parts{$form->{"id_$i"}} unless $qty_parts{$form->{"id_$i"}}; + undef $form->{"stock_in_$i"}; + } $part_info_map{$form->{"id_$i"}}{bin_id} ||= $default_bin_id; $part_info_map{$form->{"id_$i"}}{warehouse_id} ||= $default_warehouse_id; - push @all_requests, { + push @all_requests, ($qty == 0) ? { } : { 'chargenumber' => '', #?? die müsste entsprechend geholt werden #'bestbefore' => undef, # TODO wird nicht berücksichtigt 'bin_id' => $part_info_map{$form->{"id_$i"}}{bin_id}, @@ -1616,12 +1626,13 @@ sub transfer_in_out_default { } # jetzt wird erst überprüft, ob die Stückzahl entsprechend stimmt. - if ($params{direction} eq 'out') { # wird nur für ausgehende Mengen benötigit - foreach my $key (keys %qty_parts) { + # check if bin (transfer in and transfer out and qty (transfer out) is correct + foreach my $key (keys %qty_parts) { - $missing_default_bins{$key}{missing_bin} = 1 unless ($part_info_map{$key}{bin_id}); - next unless ($part_info_map{$key}{bin_id}); # abbruch + $missing_default_bins{$key}{missing_bin} = 1 unless ($part_info_map{$key}{bin_id}); + next unless ($part_info_map{$key}{bin_id}); # abbruch + if ($params{direction} eq 'out') { # wird nur für ausgehende Mengen benötigt my ($max_qty, $error) = WH->get_max_qty_parts_bin(parts_id => $key, bin_id => $part_info_map{$key}{bin_id}); if ($error == 1) { # wir können nicht entscheiden, welche charge oder mhd (bestbefore) ausgewählt sein soll @@ -1684,10 +1695,11 @@ sub transfer_in_out_default { # dieser array_ref ist für DO->save da: # einmal die all_requests in YAML verwandeln, damit delivery_order_items_stock # gefüllt werden kann. - my $i = 1; + my $i = 0; foreach (@all_requests){ - $form->{"stock_${prefix}_$i"} = YAML::Dump([$_]); $i++; + next unless scalar(%{ $_ }); + $form->{"stock_${prefix}_$i"} = YAML::Dump([$_]); } save(no_redirect => 1); # Wir können auslagern, deshalb beleg speichern