+sub discount_from_source {
+ my ($self, $source) = @_;
+ my ($source_name, $spec) = split m{/}, $source, 2;
+
+ my $class = SL::PriceSource::ALL->price_source_class_by_name($source_name);
+
+ return $class
+ ? $class->new(record_item => $self->record_item, record => $self->record)->discount_from_source($source, $spec)
+ : empty_discount();
+}
+