Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e4070a74

Von Sven Schöling vor fast 11 Jahren hinzugefügt

  • ID e4070a746ddfeb7e08868759ce4100af7a198560
  • Vorgänger b021f0f5
  • Nachfolger 15cfd696

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.

Unterschiede anzeigen:

bin/mozilla/do.pl
38 38
use SL::DO;
39 39
use SL::IR;
40 40
use SL::IS;
41
use SL::MoreCommon qw(ary_diff);
41 42
use SL::ReportGenerator;
42 43
use SL::WH;
43 44
require "bin/mozilla/arap.pl";
......
415 416
        $form->{"sellprice_$i"}          = $form->format_amount(\%myconfig, $form->{"sellprice_$i"} * (1 - $form->{tradediscount}));
416 417
        $form->{"lastcost_$i"}          = $form->format_amount(\%myconfig, $form->{"lastcost_$i"});
417 418
        $form->{"qty_$i"}                = $form->format_amount(\%myconfig, $form->{"qty_$i"});
419

  
420
        # get pricegroups for parts
421
        IS->get_pricegroups_for_parts(\%myconfig, \%$form);
422

  
423
        # build up html code for prices_$i
424
        &set_pricegroup($i);
418 425
      }
419 426

  
420 427
      display_form();
......
687 694

  
688 695
  $form->{simple_save} = 1;
689 696
  if (!$params{no_redirect} && !$form->{print_and_save}) {
690
    set_headings("edit");
691
    update();
697
    delete @{$form}{ary_diff([keys %{ $form }], [qw(login id script type cursor_fokus)])};
698
    edit();
692 699
    ::end_of_request();
693 700
  }
694 701
  $main::lxdebug->leave_sub();
......
829 836
    $form->{"sellprice_pg_$i"} = join '--', $form->{"sellprice_$i"}, $form->{"pricegroup_id_$i"};
830 837
  }
831 838
  IS->get_pricegroups_for_parts(\%myconfig, \%$form);
832
  set_pricegroup($_) for 1 .. $form->{rowcount};
839
  set_pricegroup($form->{rowcount});
833 840

  
834 841
  display_form();
835 842

  
bin/mozilla/io.pl
421 421

  
422 422
    if ($is_delivery_order) {
423 423
      map { $form->{"${_}_${i}"} = $form->format_amount(\%myconfig, $form->{"${_}_${i}"}) } qw(sellprice discount lastcost);
424
      push @hidden_vars, qw(sellprice discount not_discountable price_factor_id lastcost pricegroup_id);
424
      $form->{"pricegroup_id_$i"} = $form->{"pricegroup_old_$i"} if $form->{"pricegroup_old_$i"};
425
      $form->{"sellprice_pg_$i"}  = $form->{"hidden_prices_$i"}  if $form->{"hidden_prices_$i"};
426
      push @hidden_vars, grep { defined $form->{"${_}_${i}"} } qw(sellprice discount not_discountable price_factor_id lastcost pricegroup_id sellprice_pg);
425 427
      push @hidden_vars, "stock_${stock_in_out}_sum_qty", "stock_${stock_in_out}";
426 428
    }
427 429

  
......
483 485
      $form->{"sellprice_$j"}      = $item->{price}           if $item->{selected} &&  $item->{pricegroup_id};
484 486
      $form->{"price_new_$j"}      = $form->{"sellprice_$j"}  if $item->{selected} || !$item->{pricegroup_id};
485 487
    }
488

  
489
    # save hidden pricegroups for delivery_orders
490
    next unless my @selected_prices = grep { $_->{selected} } @{ $form->{PRICES}{$j} };
491
    $form->{"hidden_prices_$j"} = $selected_prices[-1]{price} . "--" . $selected_prices[-1]{pricegroup_id};
486 492
  }
487 493
  $main::lxdebug->leave_sub();
488 494
}

Auch abrufbar als: Unified diff