PriceSource: Rabattbehandlung
[kivitendo-erp.git] / SL / PriceSource / Price.pm
index 1e8f0a2..71bd1ff 100644 (file)
@@ -7,14 +7,14 @@ use Rose::Object::MakeMethods::Generic (
   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
   : '';
 }
 
@@ -31,11 +31,11 @@ sub source_description {
 
   $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;
@@ -53,35 +53,31 @@ SL::PriceSource::Price - contrainer to pass calculated prices around
   # 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.
@@ -97,7 +93,7 @@ implementations.
 
 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>
 
@@ -118,11 +114,15 @@ A ref to the creating algorithm.
 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