X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/2f6636f68edda5b8a47afd16fda868033a7076ec..540867317f60c7344f3e99bf77ea723d33e71dee:/bin/mozilla/do.pl diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index 764a84d71..4b8ead658 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -42,6 +42,7 @@ use SL::IS; use SL::MoreCommon qw(ary_diff); use SL::ReportGenerator; use SL::WH; +use Sort::Naturally; require "bin/mozilla/arap.pl"; require "bin/mozilla/common.pl"; require "bin/mozilla/invoice_io.pl"; @@ -828,7 +829,7 @@ sub invoice { $form->{type} = "invoice"; # locale messages - $main::locale = new Locale "$myconfig{countrycode}", "$script"; + $main::locale = Locale->new("$myconfig{countrycode}", "$script"); $locale = $main::locale; require "bin/mozilla/$form->{script}"; @@ -836,15 +837,6 @@ 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); @@ -975,7 +967,7 @@ sub invoice_multi { } delete $form->{form_details}; - $locale = new Locale "$myconfig{countrycode}", "$script"; + $locale = Locale->new("$myconfig{countrycode}", "$script"); require "bin/mozilla/$form->{script}"; @@ -1551,7 +1543,7 @@ sub dispatcher { my $form = $main::form; my $locale = $main::locale; - foreach my $action (qw(update ship_to print e_mail save transfer_out transfer_out_default + foreach my $action (qw(update ship_to print e_mail save transfer_out transfer_out_default sort transfer_in transfer_in_default mark_closed save_as_new invoice delete)) { if ($form->{"action_${action}"}) { call_sub($action); @@ -1733,3 +1725,36 @@ sub transfer_in_out_default { $form->redirect; } +sub sort { + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %temp_hash; + + croak ("Delivery Order needs to be saved") unless $form->{id}; + + # hashify partnumbers, positions. key is delivery_order_items_id + for my $i (1 .. ($form->{rowcount}) ) { + $temp_hash{$form->{"delivery_order_items_id_$i"}} = { runningnumber => $form->{"runningnumber_$i"}, partnumber => $form->{"partnumber_$i"} }; + } + # naturally sort partnumbers and get a sorted array of doi_ids + my @sorted_doi_ids = sort { ncmp($temp_hash{$a}->{"partnumber"}, $temp_hash{$b}->{"partnumber"}) } keys %temp_hash; + + #$main::lxdebug->message(0, 'sortiert, vorher :' . Dumper(%temp_hash)); + #$main::lxdebug->message(0, 'sortiert, nachher:' . Dumper(@sorted_doi_ids)); + + my $new_number = 1; + for (@sorted_doi_ids) { + # reposition old runningnumber with the new order 1 .. n + $form->{"runningnumber_$temp_hash{$_}->{runningnumber}"} = $new_number; + + #$main::lxdebug->message(0, 'hier jetzt:' . 'ferner' . $temp_hash{$_}->{runningnumber} . + # 'mit' . $form->{"runningnumber_{$temp_hash{$_}->{runningnumber}}"}); #" = $new_number; + + $new_number++; + } + # update or save directly + # update_delivery_order; + $main::lxdebug->leave_sub(); + save(); +}