X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fwh.pl;h=c3932ac86e5318564b158907622471a5458456da;hb=588772c3c02c44d67cb8672749bac5f2689c2c3c;hp=4c969a20ec5cdfa9a18dbeb287f05060cbec7637;hpb=4f63ea874f629459e1a73643595ab5e23e38e7f0;p=kivitendo-erp.git diff --git a/bin/mozilla/wh.pl b/bin/mozilla/wh.pl index 4c969a20e..c3932ac86 100644 --- a/bin/mozilla/wh.pl +++ b/bin/mozilla/wh.pl @@ -105,7 +105,7 @@ sub transfer_warehouse_selection { $content = $form->parse_html_template('wh/warehouse_selection'); } elsif ($form->{trans_type} eq 'assembly') { - $form->{title} = $locale->text('Assembly'); + $form->{title} = $locale->text('Produce Assembly'); $content = $form->parse_html_template('wh/warehouse_selection_assembly'); } @@ -150,13 +150,14 @@ sub transfer_or_removal_prepare_contents { $form->show_generic_error($locale->text("The source warehouse does not contain any bins.")) if (0 == scalar @{ $warehouse->{BINS} }); - map { $form->{"l_$_"} = 'Y' } qw(parts_id qty warehouseid binid partnumber partdescription bindescription chargenumber partunit); + map { $form->{"l_$_"} = 'Y' } qw(parts_id qty warehouseid binid partnumber partdescription bindescription chargenumber partunit ean); $form->{sort} = 'bindescription'; my @contents = WH->get_warehouse_report("warehouse_id" => $form->{warehouse_id}, "bin_id" => $form->{bin_id}, "chargenumber" => $form->{chargenumber}, - "partnumber" => $form->{partnumber}, + "partnumber" => $form->{partnumber}, + "ean" => $form->{ean}, "description" => $form->{description}); $form->show_generic_error($locale->text("The selected warehouse is empty.")) if (0 == scalar(@contents)); @@ -280,19 +281,21 @@ sub transfer_stock_update_part { $form->{trans_type} = 'stock'; $form->{qty} = $form->parse_amount(\%myconfig, $form->{qty}); - if (!$form->{partnumber} && !$form->{description}) { - delete @{$form}{qw(parts_id partunit)}; + if (!$form->{partnumber} && !$form->{description} && !$form->{ean}) { + delete @{$form}{qw(parts_id partunit ean)}; transfer_warehouse_selection(); - } elsif (($form->{partnumber} && ($form->{partnumber} ne $form->{old_partnumber})) || $form->{description}) { + } elsif (($form->{partnumber} && ($form->{partnumber} ne $form->{old_partnumber})) || $form->{description} || $form->{ean}) { $form->{no_services} = 1; - $form->{no_assemblies} = 1; + $form->{no_assemblies} = 0; # assemblies duerfen eingelagert werden (z.B. bei retouren) my $parts = Common->retrieve_parts(\%myconfig, $form, 'description', 1); - if (scalar @{ $parts } == 1) { - @{$form}{qw(parts_id partnumber description)} = @{$parts->[0]}{qw(id partnumber description)}; + 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)}; transfer_stock_get_partunit(); transfer_warehouse_selection(); @@ -310,7 +313,7 @@ sub transfer_stock_update_part { # -------------------------------------------------------------------- # Transfer: assemblies -# Dies ist die Auswahlmaske für ein assembly. +# Dies ist die Auswahlmaske für ein assembly. # Die ist einfach von transfer_assembly_update_part kopiert und nur um den trans_type (assembly) korrigiert worden # Es wäre schön, hier nochmal check_assembly_max_create auf, um die max. Fertigungszahl herauszufinden. # Ich lass das mal als auskommentierte Idee bestehen jb 18.3.09 @@ -344,7 +347,7 @@ sub transfer_assembly_update_part { } # hier die oben benannte idee -# my $maxcreate = Common->check_assembly_max_create(assembly_id => $form->{parts_id}, dbh => $my_dbh); +# my $maxcreate = Common->check_assembly_max_create(assembly_id => $form->{parts_id}, dbh => $my_dbh); $lxdebug->leave_sub(); } sub transfer_stock_part_selected { @@ -352,7 +355,7 @@ sub transfer_stock_part_selected { my $part = shift; - @{$form}{qw(parts_id partnumber description)} = @{$part}{qw(id partnumber description)}; + @{$form}{qw(parts_id partnumber description ean)} = @{$part}{qw(id partnumber description ean)}; transfer_stock_get_partunit(); transfer_warehouse_selection(); @@ -377,25 +380,26 @@ sub transfer_stock_get_partunit { # wir brauchen eine hilfsfunktion, die nee. brauchen wir nicht. der algorithmus läuft genau wie bei check max_create, nur dass hier auch eine lagerbewegung (verbraucht) stattfindet # Manko ist derzeit noch, dass unterschiedliche Lagerplätze, bzw. das Quelllager an sich nicht ausgewählt werden können. # Laut Absprache in KW11 09 übernimmt mb hier den rest im April ... jb 18.3.09 + sub create_assembly { -# my $maxcreate=shift; # oben begonnene auskommentierte idee, hier als motiv weiterverfolgen (umkehrungen und sequenzierungen als stilmittel nicht vergessen) $lxdebug->enter_sub(); $form->{qty} = $form->parse_amount(\%myconfig, $form->{qty}); -# my $maxcreate = WH->check_assembly_max_create(assembly_id => $form->{parts_id}); if ($form->{qty} <= 0) { $form->show_generic_error($locale->text('Invalid quantity.'), 'back_button' => 1); - } #else { if ($form->{qty} > $maxcreate) { #s.o. -# $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1); -# $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1); -# } -# } + } + # TODO Es wäre schön, hier schon die maximale Anzahl der zu fertigenden Erzeugnisse zu haben + #else { if ($form->{qty} > $maxcreate) { #s.o. + # $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1); + # $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1); + # } + # } if (!$form->{warehouse_id} || !$form->{bin_id}) { $form->error($locale->text('The warehouse or the bin is missing.')); } -# WIESO war das nicht vorher schon ein %HASH?? ein hash ist ein hash! das hat mich mehr als eine Stunde gekostet herauszufinden. grr. jb 3.3.2009 -# Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen + # WIESO war das nicht vorher schon ein %HASH?? ein hash ist ein hash! das hat mich mehr als eine Stunde gekostet herauszufinden. grr. jb 3.3.2009 + # Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen my %TRANSFER = ( 'transfer_type' => 'assembly', 'login' => $form->{login}, @@ -405,14 +409,15 @@ sub create_assembly { 'assembly_id' => $form->{parts_id}, 'qty' => $form->{qty}, 'unit' => $form->{unit}, - 'comment' => $form->{comment}, + 'comment' => $form->{comment} ); my $ret = WH->transfer_assembly (%TRANSFER); -# Frage: Ich pack in den return-wert auch gleich die Fehlermeldung. Irgendwelche Nummern als Fehlerkonstanten definieren find ich auch nicht besonders schick... -# Ideen? jb 18.3.09 + # Frage: Ich pack in den return-wert auch gleich die Fehlermeldung. Irgendwelche Nummern als Fehlerkonstanten definieren find ich auch nicht besonders schick... + # Ideen? jb 18.3.09 if ($ret ne "1"){ - $form->show_generic_error($locale->text($ret), 'back_button' => 1); + # Die locale-Funktion kann keine Double-Quotes escapen, deswegen hier erstmal so (ein wahrscheinlich immerwährender Hotfix) s.a. Frage davor jb 25.4.09 + $form->show_generic_error($ret, 'back_button' => 1); } delete @{$form}{qw(parts_id partnumber description qty unit chargenumber comment)}; @@ -642,13 +647,13 @@ sub generate_journal { $report->set_columns(%column_defs); $report->set_column_order(@columns); - $report->set_export_options('generate_journal', @hidden_variables); + $report->set_export_options('generate_journal', @hidden_variables, qw(sort order)); $report->set_sort_indicator($form->{sort}, $form->{order}); $report->set_options('output_format' => 'HTML', 'title' => $form->{title}, - 'attachment_basename' => strftime('warehouse_journal_%Y%m%d', localtime time)); + 'attachment_basename' => strftime($locale->text('warehouse_journal_list') . '_%Y%m%d', localtime time)); $report->set_options_from_form(); my $all_units = AM->retrieve_units(\%myconfig, $form); @@ -691,7 +696,7 @@ sub generate_journal { sub report { $lxdebug->enter_sub(); - $auth->assert('warehouse_content | warehouse_management'); + $auth->assert('warehouse_contents | warehouse_management'); $form->get_lists('warehouses' => { 'key' => 'WAREHOUSES', 'bins' => 'BINS', }); @@ -714,7 +719,7 @@ sub report { sub generate_report { $lxdebug->enter_sub(); - $auth->assert('warehouse_content | warehouse_management'); + $auth->assert('warehouse_contents | warehouse_management'); $form->{title} = $locale->text("Report about wareouse contents"); $form->{sort} ||= 'partnumber'; @@ -764,13 +769,13 @@ sub generate_report { $report->set_columns(%column_defs); $report->set_column_order(@columns); - $report->set_export_options('generate_report', @hidden_variables); + $report->set_export_options('generate_report', @hidden_variables, qw(sort order)); $report->set_sort_indicator($sort_col, $form->{order}); $report->set_options('output_format' => 'HTML', 'title' => $form->{title}, - 'attachment_basename' => strftime('warehouse_report_%Y%m%d', localtime time)); + 'attachment_basename' => strftime($locale->text('warehouse_report_list') . '_%Y%m%d', localtime time)); $report->set_options_from_form(); my $all_units = AM->retrieve_units(\%myconfig, $form); @@ -840,7 +845,7 @@ sub generate_report { sub show_no_warehouses_error { $lxdebug->enter_sub(); - my $msg = $locale->text('No warehouse has been created yet.') . ' '; + my $msg = $locale->text('No warehouse has been created yet or the quantity of the bins is not configured yet.') . ' '; if ($auth->check_right($form->{login}, 'config')) { $msg .= $locale->text('You can create warehouses and bins via the menu "System -> Warehouses".'); @@ -877,6 +882,36 @@ sub get_bin_idx { return -1; } +=item new_item + +call new item dialogue from warehouse masks. + +PARAMS: + action => name of sub to be called when new item is done + +=cut +sub new_item { + $main::lxdebug->enter_sub(); + my %params = @_; + + # change callback + $form->{old_callback} = $form->escape($form->{callback}, 1); + $form->{callback} = $form->escape("$form->{script}?action=$params{action}", 1); + + # save all form variables except action in a previousform variable + my $previousform = join '&', map { my $value = $form->{$_}; $value =~ s/&/%26/; "$_=$value" } grep { !/action/ } keys %$form; + +# push @HIDDENS, { 'name' => 'previousform', 'value' => $form->escape($previousform, 1) }; + push @HIDDENS, map +{ 'name' => $_, 'value' => $form->{$_} }, qw(partnumber description unit vc sellprice ean); + push @HIDDENS, { 'name' => 'taxaccount2', 'value' => $form->{taxaccounts} }; + push @HIDDENS, { 'name' => 'notes', 'value' => $form->{longdescription} }; + + $form->header(); + print $form->parse_html_template("generic/new_item", { HIDDENS => [ sort { $a->{name} cmp $b->{name} } @HIDDENS ] } ); + + $main::lxdebug->leave_sub(); +} + sub update { call_sub($form->{update_nextsub} || $form->{nextsub}); }