X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPriceSource%2FMasterData.pm;h=bf22c99eac07dda0fce3952a11d65d9b08a32f4a;hb=43816cb7289ee9225c3bb229d077bd87a75562cc;hp=56b0265ad70814fff4b3abc8f39482802129c575;hpb=eebe8e90991eacadb6fbd20a648c152017a620c7;p=kivitendo-erp.git diff --git a/SL/PriceSource/MasterData.pm b/SL/PriceSource/MasterData.pm index 56b0265ad..bf22c99ea 100644 --- a/SL/PriceSource/MasterData.pm +++ b/SL/PriceSource/MasterData.pm @@ -13,31 +13,70 @@ 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 discount_from_source { } + +sub best_price { + $_[0]->record->is_sales + ? $_[0]->make_sellprice + : $_[0]->make_lastcost +} + +sub best_discount { } + +sub unit_mul { + $_[0]->record_item ? $_[0]->record_item->unit_multiplier : 1 } sub make_sellprice { - my ($self, $part) = @_; + my ($self) = @_; return SL::PriceSource::Price->new( - price => $part->sellprice, - source => 'master_data/sellprice', + price => $self->part->sellprice * $self->unit_mul, + spec => 'sellprice', description => t8('Sellprice'), price_source => $self, ); } +sub make_listprice { + my ($self) = @_; + + return SL::PriceSource::Price->new( + price => $self->part->listprice * $self->unit_mul, + spec => 'listprice', + description => t8('List Price'), + price_source => $self, + ); +} + +sub make_lastcost { + my ($self) = @_; + + return SL::PriceSource::Price->new( + price => $self->part->lastcost * $self->unit_mul, + spec => 'lastcost', + description => t8('Lastcost'), + price_source => $self, + priority => 2, + ); +} + 1;