1 # @tag: orderitems_delivery_order_items_positions
 
   2 # @description: Spalte für Positionen der Einträge in Angeboten/Auftträgen und Lieferscheinen.
 
   3 # @depends: release_3_1_0
 
   4 package SL::DBUpgrade2::orderitems_delivery_order_items_positions;
 
   9 use parent qw(SL::DBUpgrade2::Base);
 
  15     orderitems           => 'trans_id',
 
  16     delivery_order_items => 'delivery_order_id',
 
  19   foreach my $table ( keys %order_id_cols ) {
 
  21     my $query = qq|ALTER TABLE $table ADD position INTEGER|;
 
  22     $self->db_query($query);
 
  25     my $order_id_col = $order_id_cols{ $table };
 
  26     $query = qq|SELECT * FROM $table ORDER BY $order_id_col, id|;
 
  27     my $query2 = qq|UPDATE $table SET position = ? WHERE id = ?|;
 
  29     my $sth = $self->dbh->prepare($query);
 
  30     my $sth2 = $self->dbh->prepare($query2);
 
  31     $sth->execute || $::form->dberror($query);
 
  33     # set new position field in order of ids, starting by one for each order
 
  36     while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
 
  37       if ($ref->{ $order_id_col } != $last_order_id) {
 
  42       $last_order_id = $ref->{ $order_id_col };
 
  44       $sth2->execute($position, $ref->{id});
 
  50     $query = qq|ALTER TABLE $table ALTER COLUMN position SET NOT NULL|;
 
  51     $self->db_query($query);