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>