kivitendo/SL/PriceSource/MasterData.pm @ 79b7fc43
eebe8e90 | Sven Schöling | package SL::PriceSource::MasterData;
|
||
use strict;
|
||||
use parent qw(SL::PriceSource::Base);
|
||||
use SL::PriceSource::Price;
|
||||
use SL::Locale::String;
|
||||
sub name { 'master_data' }
|
||||
sub description { t8('Master Data') }
|
||||
sub available_prices {
|
||||
my ($self, %params) = @_;
|
||||
df1b03d5 | Sven Schöling | return () unless $self->part;
|
||
eebe8e90 | Sven Schöling | |||
df1b03d5 | Sven Schöling | grep { $_->price > 0 } $self->record->is_sales
|
||
? ($self->make_sellprice, $self->make_listprice)
|
||||
: ($self->make_lastcost, $self->make_listprice);
|
||||
eebe8e90 | Sven Schöling | }
|
||
89b26688 | Sven Schöling | sub available_discounts { }
|
||
eebe8e90 | Sven Schöling | sub price_from_source {
|
||
my ($self, $source, $spec) = @_;
|
||||
df1b03d5 | Sven Schöling | $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
|
||||
eebe8e90 | Sven Schöling | }
|
||
89b26688 | Sven Schöling | sub best_discount { }
|
||
eebe8e90 | Sven Schöling | sub make_sellprice {
|
||
df1b03d5 | Sven Schöling | my ($self) = @_;
|
||
eebe8e90 | Sven Schöling | |||
return SL::PriceSource::Price->new(
|
||||
df1b03d5 | Sven Schöling | price => $self->part->sellprice,
|
||
0409db7c | Sven Schöling | spec => 'sellprice',
|
||
eebe8e90 | Sven Schöling | description => t8('Sellprice'),
|
||
price_source => $self,
|
||||
);
|
||||
}
|
||||
df1b03d5 | Sven Schöling | 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,
|
||||
);
|
||||
}
|
||||
eebe8e90 | Sven Schöling | 1;
|