Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 54086731

Von Jan Büren vor mehr als 8 Jahren hinzugefügt

  • ID 540867317f60c7344f3e99bf77ea723d33e71dee
  • Vorgänger b74a00e5
  • Nachfolger fc762fdc

Implementiert FB0017 Position nach Art.Nummer in Lieferschein sortieren

Ab dem Status Verkaufs-Lieferschein können die Positionen nach Artikelnummern sortiert werden,
sodass diese Sortierreihenfolge in die Rechnung übernommen wird.
Implementierung mit Natural Sort, d.h. Buchstaben und Zahlen können gemischt sein.

Aktion kann entweder über einen Knopf ausgelöst werden oder wird standardmässig bei jedem Speichern ausgeführt.
Aktuell heißt der Knopf: Sortieren und Speichern und erscheint sobald, der Lieferschein persisitente
Positionen in der DB hat.

Unterschiede anzeigen:

bin/mozilla/do.pl
42 42
use SL::MoreCommon qw(ary_diff);
43 43
use SL::ReportGenerator;
44 44
use SL::WH;
45
use Sort::Naturally;
45 46
require "bin/mozilla/arap.pl";
46 47
require "bin/mozilla/common.pl";
47 48
require "bin/mozilla/invoice_io.pl";
......
1542 1543
  my $form     = $main::form;
1543 1544
  my $locale   = $main::locale;
1544 1545

  
1545
  foreach my $action (qw(update ship_to print e_mail save transfer_out transfer_out_default
1546
  foreach my $action (qw(update ship_to print e_mail save transfer_out transfer_out_default sort
1546 1547
                         transfer_in transfer_in_default mark_closed save_as_new invoice delete)) {
1547 1548
    if ($form->{"action_${action}"}) {
1548 1549
      call_sub($action);
......
1724 1725
  $form->redirect;
1725 1726

  
1726 1727
}
1728
sub sort {
1729
  $main::lxdebug->enter_sub();
1730

  
1731
  my $form     = $main::form;
1732
  my %temp_hash;
1733

  
1734
  croak ("Delivery Order needs to be saved") unless $form->{id};
1735

  
1736
  # hashify partnumbers, positions. key is delivery_order_items_id
1737
  for my $i (1 .. ($form->{rowcount}) ) {
1738
    $temp_hash{$form->{"delivery_order_items_id_$i"}} = { runningnumber => $form->{"runningnumber_$i"}, partnumber => $form->{"partnumber_$i"} };
1739
  }
1740
  # naturally sort partnumbers and get a sorted array of doi_ids
1741
  my @sorted_doi_ids =  sort { ncmp($temp_hash{$a}->{"partnumber"}, $temp_hash{$b}->{"partnumber"}) }  keys %temp_hash;
1742

  
1743
  #$main::lxdebug->message(0, 'sortiert, vorher :' . Dumper(%temp_hash));
1744
  #$main::lxdebug->message(0, 'sortiert, nachher:' . Dumper(@sorted_doi_ids));
1745

  
1746
  my $new_number = 1;
1747
  for (@sorted_doi_ids) {
1748
    # reposition old runningnumber with the new order 1 .. n
1749
    $form->{"runningnumber_$temp_hash{$_}->{runningnumber}"} = $new_number;
1750

  
1751
    #$main::lxdebug->message(0, 'hier jetzt:' . 'ferner' . $temp_hash{$_}->{runningnumber} .
1752
    # 'mit' . $form->{"runningnumber_{$temp_hash{$_}->{runningnumber}}"}); #" = $new_number;
1753

  
1754
    $new_number++;
1755
  }
1756
    # update or save directly
1757
    # update_delivery_order;
1758
    $main::lxdebug->leave_sub();
1759
    save();
1760
}
locale/de/all
2471 2471
  'Soldtotal does not make sense without any bsooqr options' => 'Option "Menge in gewählten Belegen" ohne gewählte Belege wird ignoriert.',
2472 2472
  'Solution'                    => 'Lösung',
2473 2473
  'Sort By'                     => 'Sortiert nach',
2474
  'Sort and Save'               => 'Sortieren und Speichern',
2474 2475
  'Source'                      => 'Beleg',
2475 2476
  'Source BIC'                  => 'Quell-BIC',
2476 2477
  'Source IBAN'                 => 'Quell-IBAN',
templates/webpages/do/form_footer.html
92 92
   [%- END %]
93 93
   [%- END %]
94 94
   [%- IF id %]
95
    <input class="submit" type="submit" name="action_sort" id="sort_button" value="[% 'Sort and Save' | $T8 %]">
95 96
     <input type="button" class="submit" onclick="follow_up_window()" value="[% 'Follow-Up' | $T8 %]">
96 97
   [%- UNLESS closed %]
97 98
   <input class="submit" type="submit" name="action_mark_closed" value="[% 'Mark closed' | $T8 %]" data-require-transaction-description="[% INSTANCE_CONF.get_require_transaction_description_ps %]">

Auch abrufbar als: Unified diff