From: Sven Schöling Date: Wed, 8 Jan 2014 10:37:54 +0000 (+0100) Subject: Versteckte Felder in Lieferscheinen besser beibehalten X-Git-Tag: release-3.1.0beta1~22^2~22^2~20 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=e4070a746ddfeb7e08868759ce4100af7a198560;p=kivitendo-erp.git Versteckte Felder in Lieferscheinen besser beibehalten behebt #2131. Im Bug gemeldet wurden Preisgruppen und das taxincluded Flag, die bei einem frisch erstellten Lieferschein entweder garnicht gesetzt wurden, oder beim übertragen in Rechnungen verloren gingen. Dabei sind eine ganze Reihe von Bugs eingeschlagen. 1. Hat Speichern bei lieferscheinen noch kein redirect auf edit gemacht, sondern hat noch direkt display_form aufgerufen. Ich habe das wie in oe geändert. 2. wurden Preisgruppen garnicht gesetzt 3. ...und gehen dann trotzdem kaputt, weil der Algorithmus sich die Infos aus dem Dropdown holt, das bei Lieferscheinen nicht vorhanden ist. 4. ...aber selbst das reicht nicht aus, weil die hiddens Variablen autovivifien, die hinterher benutzt werden, um rauszukriegen ob die preisgruppen automatisch gesetzt werden müssen oder schonmal angefasst wurden. Ich habe es so geändert, dass nicht definierte Variablen nicht mehr in den hiddens landen. Die gleichen Änderungen beheben das auch für taxincluded, und (zu hoffen) alle anderen Felder. --- diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index a196eb563..b0b9f62d8 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -38,6 +38,7 @@ use SL::DB::DeliveryOrder; use SL::DO; use SL::IR; use SL::IS; +use SL::MoreCommon qw(ary_diff); use SL::ReportGenerator; use SL::WH; require "bin/mozilla/arap.pl"; @@ -415,6 +416,12 @@ sub update_delivery_order { $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"} * (1 - $form->{tradediscount})); $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}); + + # get pricegroups for parts + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + + # build up html code for prices_$i + &set_pricegroup($i); } display_form(); @@ -687,8 +694,8 @@ sub save { $form->{simple_save} = 1; if (!$params{no_redirect} && !$form->{print_and_save}) { - set_headings("edit"); - update(); + delete @{$form}{ary_diff([keys %{ $form }], [qw(login id script type cursor_fokus)])}; + edit(); ::end_of_request(); } $main::lxdebug->leave_sub(); @@ -829,7 +836,7 @@ sub invoice { $form->{"sellprice_pg_$i"} = join '--', $form->{"sellprice_$i"}, $form->{"pricegroup_id_$i"}; } IS->get_pricegroups_for_parts(\%myconfig, \%$form); - set_pricegroup($_) for 1 .. $form->{rowcount}; + set_pricegroup($form->{rowcount}); display_form(); diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 0ba19916f..480de9766 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -421,7 +421,9 @@ sub display_row { if ($is_delivery_order) { map { $form->{"${_}_${i}"} = $form->format_amount(\%myconfig, $form->{"${_}_${i}"}) } qw(sellprice discount lastcost); - push @hidden_vars, qw(sellprice discount not_discountable price_factor_id lastcost pricegroup_id); + $form->{"pricegroup_id_$i"} = $form->{"pricegroup_old_$i"} if $form->{"pricegroup_old_$i"}; + $form->{"sellprice_pg_$i"} = $form->{"hidden_prices_$i"} if $form->{"hidden_prices_$i"}; + push @hidden_vars, grep { defined $form->{"${_}_${i}"} } qw(sellprice discount not_discountable price_factor_id lastcost pricegroup_id sellprice_pg); push @hidden_vars, "stock_${stock_in_out}_sum_qty", "stock_${stock_in_out}"; } @@ -483,6 +485,10 @@ sub set_pricegroup { $form->{"sellprice_$j"} = $item->{price} if $item->{selected} && $item->{pricegroup_id}; $form->{"price_new_$j"} = $form->{"sellprice_$j"} if $item->{selected} || !$item->{pricegroup_id}; } + + # save hidden pricegroups for delivery_orders + next unless my @selected_prices = grep { $_->{selected} } @{ $form->{PRICES}{$j} }; + $form->{"hidden_prices_$j"} = $selected_prices[-1]{price} . "--" . $selected_prices[-1]{pricegroup_id}; } $main::lxdebug->leave_sub(); }