1 package SL::PriceSource::Price;
5 use parent 'SL::DB::Object';
6 use Rose::Object::MakeMethods::Generic (
7 scalar => [ qw(price description spec price_source invalid missing) ],
10 use SL::DB::Helper::Attr;
11 SL::DB::Helper::Attr::make(__PACKAGE__,
12 price => 'numeric(15,5)',
17 ? $_[0]->price_source->name . '/' . $_[0]->spec
21 sub full_description {
25 ? $self->price_source->description . ': ' . $self->description
30 "source: @{[ $_[0]->source ]}, price: @{[ $_[0]->price]}, description: @{[ $_[0]->description ]}"
41 SL::PriceSource::Price - contrainer to pass calculated prices around
45 # in PriceSource::Base implementation
46 $price = SL::PriceSource::Price->new(
48 spec => '10.3', # something you can easily parse later
49 description => t8('Fix price 10.3'),
50 price_source => $self,
53 # special empty price in SL::PriceSource
54 SL::PriceSource::Price->new(
55 description => t8('None (PriceSource)'),
59 SL::PriceSource::Price->new(
60 price => $original_price,
61 spec => $original_spec,
62 description => $original_description,
63 invalid => t8('Offer expired #1 weeks ago', $dt->delta_weeks),
64 price_source => $self,
68 SL::PriceSource::Price->new(
69 price => $original_price, # will keep last entered price
70 spec => $original_spec,
72 missing => t8('Um, sorry, cannot find that one'),
73 price_source => $self,
79 See L<SL::PriceSource> for information about the mechanism.
81 This is a container for prices that are generated by L<SL::PriceSource::Base>
84 =head1 CONSTRUCTOR FIELDS
90 The price. A price of 0 is special and is considered undesirable. If passed as
91 part of C<available_prices> it will be filtered out. If returned as
92 C<best_price> or C<price_from_source> it will be warned about.
96 A unique string that can later be understood by the creating implementation.
97 Can be empty if the implementation only supports one price for a given
102 A localized short description of the origins of this price.
104 =item C<price_source>
106 A ref to the creating algorithm.
110 OPTIONAL. Both indicator and localized message that the price with this spec
111 could not be reproduced and should be changed.
115 OPTIONAL. Both indicator and localized message that the conditions for this
116 price are no longer valid, and that the price should be changed.
123 L<SL::PriceSource::Base>,
124 L<SL::PriceSource::ALL>
132 Sven Schoeling E<lt>s.schoeling@linet-services.deE<gt>