+ $main::lxdebug->leave_sub();
+}
+
+# vorüberlegung jb 22.2.2009
+# wir benötigen für diese funktion, die anzahl die vom erzeugnis hergestellt werden soll. vielleicht direkt per js fehleingaben verhindern?
+# ferner dann nochmal mit check_asssembly_max_create gegenprüfen und dann transaktionssicher wegbuchen.
+# 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 {
+ $main::lxdebug->enter_sub();
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
+
+ $form->{qty} = $form->parse_amount(\%myconfig, $form->{qty});
+ if ($form->{qty} <= 0) {
+ $form->show_generic_error($locale->text('Invalid quantity.'), '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.'));
+ }
+
+ if (!$::instance_conf->get_show_bestbefore) {
+ $form->{bestbefore} = '';
+ }
+
+ # 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},
+ 'dst_warehouse_id' => $form->{warehouse_id},
+ 'dst_bin_id' => $form->{bin_id},
+ 'chargenumber' => $form->{chargenumber},
+ 'bestbefore' => $form->{bestbefore},
+ 'assembly_id' => $form->{parts_id},
+ 'qty' => $form->{qty},
+ 'unit' => $form->{unit},
+ '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
+ if ($ret ne "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 bestbefore comment)};
+
+ $form->{saved_message} = $locale->text('The assembly has been created.');
+ $form->{trans_type} = 'assembly';
+
+ transfer_warehouse_selection();
+
+ $main::lxdebug->leave_sub();