X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/d735aab3fc2987d555c63ce0dc8e24626ca30654..e26049cadd957ea0baffd783a87e7051cc45d269:/bin/mozilla/do.pl diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index cf210ce51..c54940826 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -30,6 +30,7 @@ # Delivery orders #====================================================================== +use Carp; use List::MoreUtils qw(uniq); use List::Util qw(max sum); use POSIX qw(strftime); @@ -841,6 +842,15 @@ sub invoice { my $currency = $form->{currency}; invoice_links(); + if ($form->{ordnumber}) { + require SL::DB::Order; + if (my $order = SL::DB::Manager::Order->find_by(ordnumber => $form->{ordnumber})) { + $order->load; + $form->{orddate} = $order->transdate_as_date; + $form->{$_} = $order->$_ for qw(payment_id salesman_id taxzone_id quonumber); + } + } + $form->{currency} = $currency; $form->{exchangerate} = ""; $form->{forex} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{invdate}, $buysell); @@ -1710,6 +1720,9 @@ 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. + # could be dumped to the form in the first loop, + # but maybe bin_id and warehouse_id has changed to the "korrekturlager" with + # allowed negative qty ($::instance_conf->get_warehouse_id_ignore_onhand) ... my $i = 0; foreach (@all_requests){ $i++; @@ -1719,6 +1732,13 @@ sub transfer_in_out_default { save(no_redirect => 1); # Wir können auslagern, deshalb beleg speichern # und in delivery_order_items_stock speichern + + # ... and fill back the persistent dois_id for inventory fk + undef (@all_requests); + foreach my $i (1 .. $form->{rowcount}) { + next unless ($form->{"id_$i"} && $form->{"stock_${prefix}_$i"}); + push @all_requests, @{ DO->unpack_stock_information('packed' => $form->{"stock_${prefix}_$i"}) }; + } DO->transfer_in_out('direction' => $prefix, 'requests' => \@all_requests);