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
5 package SL::DBUpgrade2::orderitems_delivery_order_items_positions;
10 use parent qw(SL::DBUpgrade2::Base);
16 orderitems => 'trans_id',
17 delivery_order_items => 'delivery_order_id',
20 foreach my $table ( keys %order_id_cols ) {
22 my $query = qq|ALTER TABLE $table ADD position INTEGER|;
23 $self->db_query($query);
26 my $order_id_col = $order_id_cols{ $table };
27 $query = qq|SELECT * FROM $table ORDER BY $order_id_col, id|;
29 my $sth = $self->dbh->prepare($query);
30 $sth->execute || $::form->dberror($query);
32 # set new postition field in order of ids, starting by one for each order
35 while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
36 if ($ref->{ $order_id_col } != $last_order_id) {
41 $last_order_id = $ref->{ $order_id_col };
43 $query = qq|UPDATE $table SET position = ? WHERE id = ?|;
44 $self->db_query($query, bind => [ $position, $ref->{id} ]);
49 $query = qq|ALTER TABLE $table ALTER COLUMN position SET NOT NULL|;
50 $self->db_query($query);