X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPriceSource%2FMasterData.pm;h=e7ca2a3cc9f65025fa51d1c1c83600cde0152f9d;hb=c2f401aae1c01aa1a85c4d3f59a4eb02803b6093;hp=56b0265ad70814fff4b3abc8f39482802129c575;hpb=eebe8e90991eacadb6fbd20a648c152017a620c7;p=kivitendo-erp.git diff --git a/SL/PriceSource/MasterData.pm b/SL/PriceSource/MasterData.pm index 56b0265ad..e7ca2a3cc 100644 --- a/SL/PriceSource/MasterData.pm +++ b/SL/PriceSource/MasterData.pm @@ -13,31 +13,63 @@ sub description { t8('Master Data') } sub available_prices { my ($self, %params) = @_; - my $part = $self->part; + return () unless $self->part; - return () unless $part; - - # TODO: sellprice only in sales, lastcost in purchase - return $self->make_sellprice($part); + grep { $_->price > 0 } $self->record->is_sales + ? ($self->make_sellprice, $self->make_listprice) + : ($self->make_lastcost, $self->make_listprice); } +sub available_discounts { } + sub price_from_source { my ($self, $source, $spec) = @_; - if ($spec eq 'sellprice') { - return $self->make_sellprice($self->part); - } + $spec eq 'sellprice' ? $self->make_sellprice + : $spec eq 'lastcost' ? $self->make_lastcost + : $spec eq 'listprice' ? $self->make_listprice + : do { die "unknown spec '$spec'" }; } +sub best_price { + $_[0]->record->is_sales + ? $_[0]->make_sellprice + : $_[0]->make_lastcost +} + +sub best_discount { } + sub make_sellprice { - my ($self, $part) = @_; + my ($self) = @_; return SL::PriceSource::Price->new( - price => $part->sellprice, - source => 'master_data/sellprice', + price => $self->part->sellprice, + spec => 'sellprice', description => t8('Sellprice'), price_source => $self, ); } +sub make_listprice { + my ($self) = @_; + + return SL::PriceSource::Price->new( + price => $self->part->listprice, + spec => 'listprice', + description => t8('List Price'), + price_source => $self, + ); +} + +sub make_lastcost { + my ($self) = @_; + + return SL::PriceSource::Price->new( + price => $self->part->lastcost, + spec => 'lastcost', + description => t8('Lastcost'), + price_source => $self, + ); +} + 1;