X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fdo.pl;h=ac71eca9a49d08810703ec1b30589e588a282946;hb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44;hp=4b8ead658f18ad22392c7295889421b1065fa3cb;hpb=540867317f60c7344f3e99bf77ea723d33e71dee;p=kivitendo-erp.git diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index 4b8ead658..ac71eca9a 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); @@ -42,7 +43,7 @@ use SL::IS; use SL::MoreCommon qw(ary_diff); use SL::ReportGenerator; use SL::WH; -use Sort::Naturally; +use Sort::Naturally (); require "bin/mozilla/arap.pl"; require "bin/mozilla/common.pl"; require "bin/mozilla/invoice_io.pl"; @@ -708,6 +709,8 @@ sub save { my %myconfig = %main::myconfig; my $locale = $main::locale; + $form->mtime_ischanged('delivery_orders'); + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); $form->isblank("transdate", $locale->text('Delivery Order Date missing!')); @@ -785,6 +788,8 @@ sub invoice { my $locale = $main::locale; check_do_access(); + $form->mtime_ischanged('delivery_orders'); + $main::auth->assert($form->{type} eq 'purchase_delivery_order' ? 'vendor_invoice_edit' : 'invoice_edit'); $form->{convert_from_do_ids} = $form->{id}; @@ -837,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); @@ -1010,9 +1024,9 @@ sub e_mail { check_do_access(); - my $form = $main::form; + $::form->mtime_ischanged('delivery_orders','mail'); - $form->{print_and_save} = 1; + $::form->{print_and_save} = 1; my $saved_form = save_form(); @@ -1725,9 +1739,12 @@ sub transfer_in_out_default { $form->redirect; } + sub sort { $main::lxdebug->enter_sub(); + check_do_access(); + my $form = $main::form; my %temp_hash; @@ -1738,23 +1755,43 @@ sub sort { $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; + my @sorted_doi_ids = sort { Sort::Naturally::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(); } + +__END__ + +=pod + +=encoding utf8 + +=head1 NAME + +do.pl - Script for all calls to delivery order + + +=head1 FUNCTIONS + +=over 2 + +=item C + +Sorts all position with Natural Sort. Can be activated in form_footer.html like this +Cinput class="submit" type="submit" name="action_sort" id="sort_button" value="[% 'Sort and Save' | $T8 %]"E> + +=back + +=head1 TODO + +Sort and Save can be implemented as an optional button if configuration ca be set by client config. +Example coding for database scripts and templates in (git show af2f24b8), check also +autogeneration for rose (scripts/rose_auto_create_model.pl --h)