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,