Projekt

Allgemein

Profil

Herunterladen (1,09 KB) Statistiken
| Zweig: | Markierung: | Revision:
942291e4 Bernd Bleßmann
# @tag: invoice_positions
# @description: Spalte für Positionen der Einträge in Rechnungen
# @depends: release_3_1_0
package SL::DBUpgrade2::invoice_positions;

use strict;
use utf8;

use parent qw(SL::DBUpgrade2::Base);

sub run {
my ($self) = @_;

my $query = qq|ALTER TABLE invoice ADD position INTEGER|;
$self->db_query($query);


$query = qq|SELECT * FROM invoice ORDER BY trans_id, id|;
0630567f Sven Schöling
my $query2 = qq|UPDATE invoice SET position = ? WHERE id = ?|;
942291e4 Bernd Bleßmann
my $sth = $self->dbh->prepare($query);
0630567f Sven Schöling
my $sth2 = $self->dbh->prepare($query2);
942291e4 Bernd Bleßmann
$sth->execute || $::form->dberror($query);

77b037dd Bernd Bleßmann
# set new position field in order of ids, starting by one for each invoice
942291e4 Bernd Bleßmann
my $last_invoice_id;
my $position;
while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
if ($ref->{trans_id} != $last_invoice_id) {
$position = 1;
} else {
$position++;
}
$last_invoice_id = $ref->{trans_id};

0630567f Sven Schöling
$sth2->execute($position, $ref->{id});
942291e4 Bernd Bleßmann
}
$sth->finish;
0630567f Sven Schöling
$sth2->finish;
942291e4 Bernd Bleßmann
$query = qq|ALTER TABLE invoice ALTER COLUMN position SET NOT NULL|;
$self->db_query($query);

return 1;
}

1;