Projekt

Allgemein

Profil

Herunterladen (1,5 KB) Statistiken
| Zweig: | Markierung: | Revision:
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;