Revision 89b26688
Von Sven Schöling vor mehr als 9 Jahren hinzugefügt
SL/PriceSource.pm | ||
---|---|---|
6 | 6 |
scalar => [ qw(record_item record) ], |
7 | 7 |
); |
8 | 8 |
|
9 |
use List::UtilsBy qw(min_by); |
|
9 |
use List::UtilsBy qw(min_by max_by);
|
|
10 | 10 |
use SL::PriceSource::ALL; |
11 | 11 |
use SL::PriceSource::Price; |
12 | 12 |
use SL::Locale::String; |
... | ... | |
14 | 14 |
sub all_price_sources { |
15 | 15 |
my ($self) = @_; |
16 | 16 |
|
17 |
return map {
|
|
17 |
map { |
|
18 | 18 |
$_->new(record_item => $self->record_item, record => $self->record) |
19 | 19 |
} SL::PriceSource::ALL->all_enabled_price_sources |
20 | 20 |
} |
... | ... | |
26 | 26 |
my $class = SL::PriceSource::ALL->price_source_class_by_name($source_name); |
27 | 27 |
|
28 | 28 |
return $class |
29 |
? $class->new(record_item => $self->record_item)->price_from_source($source, $spec) |
|
29 |
? $class->new(record_item => $self->record_item, record => $self->record)->price_from_source($source, $spec)
|
|
30 | 30 |
: empty_price(); |
31 | 31 |
} |
32 | 32 |
|
... | ... | |
34 | 34 |
map { $_->available_prices } $_[0]->all_price_sources; |
35 | 35 |
} |
36 | 36 |
|
37 |
sub available_discounts { |
|
38 |
map { $_->available_discounts } $_[0]->all_price_sources; |
|
39 |
} |
|
40 |
|
|
37 | 41 |
sub best_price { |
38 |
min_by { $_->price } grep { $_->price > 0 } map { $_->best_price } $_[0]->all_price_sources; |
|
42 |
min_by { $_->price } grep { $_->price > 0 } grep { $_ } map { $_->best_price } $_[0]->all_price_sources; |
|
43 |
} |
|
44 |
|
|
45 |
sub best_discount { |
|
46 |
max_by { $_->discount } grep { $_->discount } grep { $_ } map { $_->best_discount } $_[0]->all_price_sources; |
|
39 | 47 |
} |
40 | 48 |
|
41 | 49 |
sub empty_price { |
Auch abrufbar als: Unified diff
PriceSource: Rabattbehandlung