X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPriceSource%2FMasterData.pm;h=bf22c99eac07dda0fce3952a11d65d9b08a32f4a;hb=cbbe00ccddaac72d03a759996e7d55315aff9a5e;hp=c639ccb49425f8341a18445baac89a039e41579c;hpb=0409db7c50da81e1eb613bd33663fb5b07935a01;p=kivitendo-erp.git diff --git a/SL/PriceSource/MasterData.pm b/SL/PriceSource/MasterData.pm index c639ccb49..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, + 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;