Correction du bogue sur stockage du mauvais areaId dans order_delivery_schedule (delivery_address_id qui doit contenir l'Id de l'area)

This commit is contained in:
2021-04-22 16:56:25 +02:00
parent 8240901761
commit d9c4fcec83
2 changed files with 25 additions and 12 deletions

View File

@@ -5,6 +5,7 @@ namespace PlanificationLivraison\EventListeners;
use ClickAndCollect\ClickAndCollect; use ClickAndCollect\ClickAndCollect;
use DateTime; use DateTime;
use LivraisonParSecteurs\LivraisonParSecteurs; use LivraisonParSecteurs\LivraisonParSecteurs;
use LivraisonParSecteurs\Model\LpsAreaCityQuery;
use LivraisonParSecteurs\Model\LpsAreaScheduleQuery; use LivraisonParSecteurs\Model\LpsAreaScheduleQuery;
use PlanificationLivraison\Model\OrderDeliverySchedule; use PlanificationLivraison\Model\OrderDeliverySchedule;
use PlanificationLivraison\PlanificationLivraison; use PlanificationLivraison\PlanificationLivraison;
@@ -20,6 +21,7 @@ use Thelia\Core\Event\TheliaEvents;
use Thelia\Core\HttpFoundation\Request; use Thelia\Core\HttpFoundation\Request;
use Thelia\Core\HttpFoundation\Session\Session; use Thelia\Core\HttpFoundation\Session\Session;
use Thelia\Exception\TheliaProcessException; use Thelia\Exception\TheliaProcessException;
use Thelia\Model\AddressQuery;
use Thelia\Model\ModuleQuery; use Thelia\Model\ModuleQuery;
use PlanificationLivraison\Model\SessionData; use PlanificationLivraison\Model\SessionData;
@@ -59,20 +61,31 @@ class DeliveryListener extends BaseAction implements EventSubscriberInterface
if (null !== $scheduleId = $request->get('lps-choosen-day', null)) { if (null !== $scheduleId = $request->get('lps-choosen-day', null)) {
$sessionData = new SessionData(); $sessionData = new SessionData();
$sessionData->setDeliveryAddressId($session->getOrder()->getChoosenDeliveryAddress()); $con = Propel::getConnection();
$sessionData->setScheduleId($scheduleId);
// On sauvegarde la date de livraison choisie avec les heures, pour affichage ultérieur. $choosenAddressId = $session->getOrder()->getChoosenDeliveryAddress();
$schedule = LpsAreaScheduleQuery::create()->findOneById($scheduleId); $zipcode = AddressQuery::create()->filterById($choosenAddressId)->findOne($con)->getZipcode();
$chosenDate = PlanificationLivraison::calculateRelativeDate($schedule->getDay()); $areaFromZipcode = LpsAreaCityQuery::create()->filterByZipcode($zipcode)->findOne($con);
$completeDay = PlanificationLivraison::getDayLabel($schedule->getDay()); if (null !== $areaFromZipcode) {
$completeDay .= " " . $chosenDate->format(PlanificationLivraison::FORMAT_DATES); $sessionData->setDeliveryAddressId($areaFromZipcode->getIdArea());
$sessionData->setScheduleId($scheduleId);
$sessionData->setDeliveryDate($completeDay); // On sauvegarde la date de livraison choisie avec les heures, pour affichage ultérieur.
$sessionData->setDeliveryStartTime($schedule->getBeginTime()); $schedule = LpsAreaScheduleQuery::create()->findOneById($scheduleId);
$sessionData->setDeliveryEndTime($schedule->getEndTime()); $chosenDate = PlanificationLivraison::calculateRelativeDate($schedule->getDay());
$completeDay = PlanificationLivraison::getDayLabel($schedule->getDay());
$completeDay .= " " . $chosenDate->format(PlanificationLivraison::FORMAT_DATES);
$session->set('lpsData', $sessionData); $sessionData->setDeliveryDate($completeDay);
$sessionData->setDeliveryStartTime($schedule->getBeginTime());
$sessionData->setDeliveryEndTime($schedule->getEndTime());
$session->set('lpsData', $sessionData);
}
else {
// Pas de Area trouvée à partir du ZipCode
$session->set('lspData', null);
}
} }
} }

View File

@@ -56,7 +56,7 @@ class ScheduledDeliveriesLoop extends BaseLoop implements PropelSearchLoopInterf
if (null != $deliveries->getDeliveryAddressId()) { if (null != $deliveries->getDeliveryAddressId()) {
$city = OrderAddressQuery::create()->findOneById($order->getDeliveryOrderAddressId())->getCity(); $city = OrderAddressQuery::create()->findOneById($order->getDeliveryOrderAddressId())->getCity();
$area = LpsAreaQuery::create()->findOneById(LpsAreaCityQuery::create()->findOneById($deliveries->getDeliveryAddressId())->getIdArea())->getTitle(); $area = LpsAreaQuery::create()->findOneById($deliveries->getDeliveryAddressId())->getTitle();
} }
if (null != $deliveries->getDeliveryPlaceId()) if (null != $deliveries->getDeliveryPlaceId())