scalar => [ qw(price description spec price_source invalid missing) ],
);
-use SL::DB::Helper::Attr;
+require SL::DB::Helper::Attr;
SL::DB::Helper::Attr::make(__PACKAGE__,
price => 'numeric(15,5)',
);
sub source {
$_[0]->price_source
- ? $_[0]->price_source->name . '/' . $_[0]->spec
+ ? $_[0]->price_source->name . '/' . $_[0]->spec
: '';
}
$self->price_source
? $self->price_source->description
- : $self->description
+ : $self->description
}
sub to_str {
- "source: @{[ $_[0]->source ]}, price: @{[ $_[0]->price]}, description: @{[ $_[0]->description ]}"
+ "source: @{[ $_[0]->source ]}, price: @{[ $_[0]->price ]}, description: @{[ $_[0]->description ]}"
}
1;
# in PriceSource::Base implementation
$price = SL::PriceSource::Price->new(
price => 10.3,
- spec => '10.3', # something you can easily parse later
- description => t8('Fix price 10.3'),
+ spec => '3', # something you can easily parse later
+ description => t8('Fix price 10.3 for customer 3'),
price_source => $self,
)
- # special empty price in SL::PriceSource
+ # special empty price in SL::PriceSource, for internal use.
SL::PriceSource::Price->new(
description => t8('None (PriceSource)'),
);
- # invalid price
+ # price can't be restored
SL::PriceSource::Price->new(
- price => $original_price,
- spec => $original_spec,
- description => $original_description,
- invalid => t8('Offer expired #1 weeks ago', $dt->delta_weeks),
+ missing => t8('Um, sorry, cannot find that one'),
price_source => $self,
);
- # missing price
+ # invalid price
SL::PriceSource::Price->new(
- price => $original_price, # will keep last entered price
+ price => $original_price,
spec => $original_spec,
- description => '',
- missing => t8('Um, sorry, cannot find that one'),
+ description => $original_description,
+ invalid => t8('Offer expired #1 weeks ago', $dt->delta_weeks),
price_source => $self,
);
-
=head1 DESCRIPTION
See L<SL::PriceSource> for information about the mechanism.
The price. A price of 0 is special and is considered undesirable. If passed as
part of C<available_prices> it will be filtered out. If returned as
-C<best_price> or C<price_from_source> it will be warned about.
+C<best_price> or C<price_from_source> it will trigger a warning.
=item C<spec>
OPTIONAL. Both indicator and localized message that the price with this spec
could not be reproduced and should be changed.
+If price is missing, you do not need to supply anything except C<source>.
+
=item C<invalid>
OPTIONAL. Both indicator and localized message that the conditions for this
price are no longer valid, and that the price should be changed.
+If price is missing, you do not need to supply anything except C<source>.
+
=back
=head1 SEE ALSO