1 package SL::PriceSource::Vendor;
4 use parent qw(SL::PriceSource::Base);
7 use SL::PriceSource::Discount;
8 use SL::Locale::String;
10 sub name { 'vendor_discount' }
12 sub description { t8('Vendor Discount') }
14 sub available_prices { }
16 sub available_discounts {
17 my ($self, %params) = @_;
19 return if $self->record->is_sales;
20 return unless $self->record->vendor;
21 return unless $self->record->vendor->discount != 0;
23 SL::PriceSource::Discount->new(
24 discount => $self->record->vendor->discount,
25 spec => $self->record->vendor->id,
26 description => t8('Vendor Discount'),
27 price_source => $self,
31 sub price_from_source { }
33 sub discount_from_source {
34 my ($self, $source, $spec) = @_;
36 my $vendor = SL::DB::Vendor->load_cached($spec);
39 return SL::PriceSource::Discount->new(
40 missing => t8('Could not load this vendor'),
41 price_source => $self,
45 if (!$self->record->vendor) {
46 return SL::PriceSource::Discount->new(
47 discount => $vendor->discount,
49 description => t8('Vendor Discount'),
50 price_source => $self,
51 invalid => t8('This discount is only valid in purchase documents'),
55 if ($vendor->id != $self->record->vendor->id) {
56 return SL::PriceSource::Discount->new(
57 discount => $vendor->discount,
59 description => t8('Vendor Discount'),
60 price_source => $self,
61 invalid => t8('This discount is only valid for vendor #1', $vendor->displayable_name),
65 return SL::PriceSource::Discount->new(
66 discount => $vendor->discount,
68 description => t8('Vendor Discount'),
69 price_source => $self,