// Calculate price details $logger->LogInfo("Calculating price ..."); $bookingDetails->calculatePriceDetails($language_selected); // Get entered promo code and client info $promoErrorMessage = null; $clientEmailAddress = null; $client = new Client(); if (isset($_POST['promo_code'])) { $logger->LogInfo("Promo code was entered: " . $_POST['promo_code']); $client = Client::fetchFromParameters($_POST); $bookingDetails->promoCode = null; if (isset($_POST['email'])) { $logger->LogInfo("Email was entered: " . $_POST['email']); $clientsEmailAddress = $_POST['email']; } $promoCode = PromoCode::fetchFromDBForCode($_POST['promo_code']); if ($promoCode == null) { $logger->LogWarn("Promo could not be found in the database!"); $logger->LogWarn("Errors:"); $logger->LogWarn(PromoCode::$staticErrors); $promoErrorMessage = PromoCode::$staticErrors[0]; } else { if ($promoCode->isApplicable($bookingDetails->priceDetails->grandTotal, $clientsEmailAddress, $bookingDetails->searchCriteria->getNightCount(), $promoErrorMessage)) { $logger->LogInfo("Promo is applicable!"); $bookingDetails->promoCode = $promoCode; $logger->LogInfo("Recalculating price ..."); $bookingDetails->calculatePriceDetails($language_selected); } else { $logger->LogWarn("Promo is not applicable!"); $logger->LogWarn($promoErrorMessage); }