]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Versteckte Felder in Lieferscheinen besser beibehalten
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 8 Jan 2014 10:37:54 +0000 (11:37 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 8 Jan 2014 10:37:54 +0000 (11:37 +0100)
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.

bin/mozilla/do.pl
bin/mozilla/io.pl

index a196eb563ebd76fcab26908021e1323eb191dd45..b0b9f62d853cf9dcafeda9b19f0ba378015e3638 100644 (file)
@@ -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();
 
index 0ba19916fdec50418feb273a504ef207ace9fc09..480de97663b418aede6d88d8ecc27f58e985bf47 100644 (file)
@@ -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();
 }