Revision 70ae535d
Von Jan Büren vor mehr als 2 Jahren hinzugefügt
SL/DB/Order.pm | ||
---|---|---|
8 | 8 |
use List::Util qw(max); |
9 | 9 |
use List::MoreUtils qw(any); |
10 | 10 |
|
11 |
use SL::DBUtils (); |
|
11 | 12 |
use SL::DB::MetaSetup::Order; |
12 | 13 |
use SL::DB::Manager::Order; |
13 | 14 |
use SL::DB::Helper::Attr; |
... | ... | |
57 | 58 |
sort_by => 'notes.itime', |
58 | 59 |
} |
59 | 60 |
}, |
61 |
order_version => { |
|
62 |
type => 'one to many', |
|
63 |
class => 'SL::DB::OrderVersion', |
|
64 |
column_map => { id => 'oe_id' }, |
|
65 |
}, |
|
60 | 66 |
); |
61 | 67 |
|
62 | 68 |
SL::DB::Helper::Attr::make(__PACKAGE__, daily_exchangerate => 'numeric'); |
... | ... | |
547 | 553 |
$self->date->to_kivitendo; |
548 | 554 |
} |
549 | 555 |
|
556 |
sub current_version_number { |
|
557 |
my ($self) = @_; |
|
558 |
|
|
559 |
my $query = <<EOSQL; |
|
560 |
SELECT max(version) |
|
561 |
FROM oe_version |
|
562 |
WHERE (oe_id = ?) |
|
563 |
EOSQL |
|
564 |
|
|
565 |
my ($current_version_number) = SL::DBUtils::selectfirst_array_query($::form, $self->db->dbh, $query, ($self->id)); |
|
566 |
die "Invalid State. No version linked" unless $current_version_number; |
|
567 |
|
|
568 |
return $current_version_number; |
|
569 |
} |
|
570 |
|
|
571 |
sub is_final_version { |
|
572 |
my ($self) = @_; |
|
573 |
|
|
574 |
my $order_versions = SL::DB::Manager::OrderVersion->get_all(where => [ oe_id => $self->id, final_version => 0 ]); |
|
575 |
die "Invalid version state" unless scalar @{ $order_versions } < 2; |
|
576 |
my $final_version = scalar @{ $order_versions } == 1 ? 0 : 1; |
|
577 |
|
|
578 |
return $final_version; |
|
579 |
} |
|
580 |
|
|
550 | 581 |
1; |
551 | 582 |
|
552 | 583 |
__END__ |
Auch abrufbar als: Unified diff
Unterversionen für Angebote/Aufträge
Versionen werden finalisiert sobald sie per E-Mail rausgeschickt wurden
Danach ist die Bearbeitung gesperrt, aber es ist möglich eine neue
Unterversion des Belegs zu erstellen.
Unterversionen bekommen den Postfix -x, wobei x:= 2 .. n
Die Unterversion wird dann in die Belegnummer übernommen, es wird aber
kein neuer Beleg erstellt. Die alte Version ist über DMS/E-Mail-Journal
noch als PDF erkennbar.