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