Revision e48eb4dc
Von Kivitendo Admin vor etwa 8 Jahren hinzugefügt
SL/DB/Pricegroup.pm | ||
---|---|---|
4 | 4 |
|
5 | 5 |
use SL::DB::MetaSetup::Pricegroup; |
6 | 6 |
use SL::DB::Manager::Pricegroup; |
7 |
use SL::DB::Helper::ActsAsList; |
|
8 |
use SL::DB::Customer; |
|
7 | 9 |
|
8 | 10 |
__PACKAGE__->meta->initialize; |
9 | 11 |
|
... | ... | |
13 | 15 |
return join ' ', grep $_, $self->id, $self->pricegroup; |
14 | 16 |
} |
15 | 17 |
|
18 |
sub validate { |
|
19 |
my ($self) = @_; |
|
20 |
|
|
21 |
my @errors; |
|
22 |
|
|
23 |
if ( $self->obsolete && SL::DB::Manager::Customer->get_all_count(query => [ pricegroup_id => $self->id ]) ) { |
|
24 |
push @errors, $::locale->text('The pricegroup is being used by customers.'); |
|
25 |
} |
|
26 |
|
|
27 |
return @errors; |
|
28 |
} |
|
29 |
|
|
30 |
sub orphaned { |
|
31 |
my ($self) = @_; |
|
32 |
die 'not an accessor' if @_ > 1; |
|
33 |
|
|
34 |
return 1 unless $self->id; |
|
35 |
|
|
36 |
my @relations = qw( |
|
37 |
SL::DB::Customer |
|
38 |
SL::DB::Price |
|
39 |
); |
|
40 |
|
|
41 |
# check if pricegroup is the default pricegroup for any customers and has any |
|
42 |
# prices assigned. |
|
43 |
|
|
44 |
for my $class (@relations) { |
|
45 |
eval "require $class"; |
|
46 |
return 0 if $class->_get_manager_class->get_all_count(query => [ pricegroup_id => $self->id ]); |
|
47 |
} |
|
48 |
|
|
49 |
# check if pricegroup was used in any pricesource |
|
50 |
my @item_relations = qw( |
|
51 |
SL::DB::OrderItem |
|
52 |
SL::DB::DeliveryOrderItem |
|
53 |
SL::DB::InvoiceItem |
|
54 |
); |
|
55 |
|
|
56 |
for my $class (@item_relations) { |
|
57 |
eval "require $class"; |
|
58 |
return 0 if $class->_get_manager_class->get_all_count(query => [ active_price_source => 'pricegroup/' . $self->id ]); |
|
59 |
} |
|
60 |
|
|
61 |
return 1; |
|
62 |
} |
|
16 | 63 |
|
17 | 64 |
1; |
Auch abrufbar als: Unified diff
Preisgruppen - Umstellung auf Controller, sortkey, obsolete
Neuer CRUD-Controller nur für Preisgruppen.
Die Reihenfolge der Preisgruppen kann nun eingestellt werden, und man
kann Preisgruppen auf ungültig setzen, sofern sie nicht mehr aktiv bei
Kunden in Verwendung sind, so daß sie bei Kunden oder neuen Belegen
nicht mehr ausgewählt werden können.