+ my @rules = $self->available_price_rules;
+
+ return unless @rules;
+
+ my @max_prio = max_by { $_->priority } @rules;
+ my $min_price = min_by { $self->price_for_rule($_) } @max_prio;
+
+ $self->make_price_from_rule($min_price);
+}
+
+sub best_discount {
+ my ($self) = @_;
+
+ my @rules = $self->available_discount_rules;
+
+ return unless @rules;
+
+ my @max_prio = max_by { $_->priority } @rules;
+ my $max_discount = max_by { $_->discount } @max_prio;
+
+ $self->make_discount_from_rule($max_discount);