Есть метод калькуляции заказа. Метод нужен во многих местах.в этом и ошибка - все в кучу. Надо сделать, что бы калькуляция была не черным ящиком, а настраиваемым удобным интерфейсом:
$discountCalculator = new discountCalculator(\ListItems $items);
$discountCalculator->addCondition(new SimpleDiscount());
$discountCalculator->addCondition(new BlackFridayDiscount());
$discountCalculator->addCondition(new ByDateDiscount('last day of this month'));
$discountCalculator->addCondition(new ApiDiscount());
$discountCalculator->calculate();