fix: respect booking stop flag in price tables

This commit is contained in:
Björn Fromme
2026-01-08 17:47:05 +01:00
parent 623518d08a
commit c768e1ec3d
2 changed files with 20 additions and 2 deletions
@@ -5,6 +5,7 @@ namespace EP\EpProducts\Domain\Repository;
use EP\EpProducts\Domain\Model\Date; use EP\EpProducts\Domain\Model\Date;
use EP\EpProducts\Domain\Model\Hotel; use EP\EpProducts\Domain\Model\Hotel;
use EP\EpProducts\Domain\Model\Product; use EP\EpProducts\Domain\Model\Product;
use EP\EpProducts\Domain\Model\Room;
use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\Connection;
class ProductRepository extends AbstractRepository class ProductRepository extends AbstractRepository
@@ -203,7 +204,8 @@ class ProductRepository extends AbstractRepository
'date.season as season', 'date.product_detail_page as productDetailPage', 'date.season as season', 'date.product_detail_page as productDetailPage',
'room.uid as roomUid', 'room.bus_pro_id as roomBusProId', 'room.name as roomName', 'room.uid as roomUid', 'room.bus_pro_id as roomBusProId', 'room.name as roomName',
'room.price as roomPrice', 'date.discount as roomDiscount', 'date.bus_price as busPrice', 'room.price as roomPrice', 'date.discount as roomDiscount', 'date.bus_price as busPrice',
'room.services as roomOptionalServices', 'room.nights as roomNights', 'room.available as roomAvailable' 'room.services as roomOptionalServices', 'room.nights as roomNights', 'room.available as roomAvailable',
'room.status as roomStatus'
) )
->from('tx_epproducts_domain_model_date', 'date') ->from('tx_epproducts_domain_model_date', 'date')
->innerJoin('date', 'tx_epproducts_domain_model_room', 'room', 'date.uid = room.date') ->innerJoin('date', 'tx_epproducts_domain_model_room', 'room', 'date.uid = room.date')
@@ -222,6 +224,10 @@ class ProductRepository extends AbstractRepository
'date.hotel', 'date.hotel',
$qb->createNamedParameter($hotel->getUid(), Connection::PARAM_INT)) $qb->createNamedParameter($hotel->getUid(), Connection::PARAM_INT))
) )
->andWhere($qb->expr()->neq(
'room.status',
$qb->createNamedParameter(Room::ROOM_STATUS_FULLY_BOOKED, Connection::PARAM_INT))
)
; ;
if ($filterSettings['productsPid']) { if ($filterSettings['productsPid']) {
@@ -274,6 +280,10 @@ class ProductRepository extends AbstractRepository
'date.hotel', 'date.hotel',
$qb->createNamedParameter($hotel->getUid(), Connection::PARAM_INT)) $qb->createNamedParameter($hotel->getUid(), Connection::PARAM_INT))
) )
->andWhere($qb->expr()->neq(
'room.status',
$qb->createNamedParameter(Room::ROOM_STATUS_FULLY_BOOKED, Connection::PARAM_INT))
)
->groupBy('date.date_start') ->groupBy('date.date_start')
; ;
@@ -341,6 +351,10 @@ class ProductRepository extends AbstractRepository
'date.hotel', 'date.hotel',
$qb->createNamedParameter($hotel->getUid(), Connection::PARAM_INT)) $qb->createNamedParameter($hotel->getUid(), Connection::PARAM_INT))
) )
->andWhere($qb->expr()->neq(
'room.status',
$qb->createNamedParameter(Room::ROOM_STATUS_FULLY_BOOKED, Connection::PARAM_INT))
)
; ;
return $qb return $qb
@@ -372,6 +386,10 @@ class ProductRepository extends AbstractRepository
'date.product', 'date.product',
$qb->createNamedParameter($product->getUid(), Connection::PARAM_INT)) $qb->createNamedParameter($product->getUid(), Connection::PARAM_INT))
) )
->andWhere($qb->expr()->neq(
'room.status',
$qb->createNamedParameter(Room::ROOM_STATUS_FULLY_BOOKED, Connection::PARAM_INT))
)
->orderBy('room.available', 'DESC') ->orderBy('room.available', 'DESC')
->addOrderBy('room.name', 'ASC') ->addOrderBy('room.name', 'ASC')
; ;
@@ -634,7 +634,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
$minPriceOverall = $price; $minPriceOverall = $price;
} }
if ($roomXml->attributes()['status'] === static::STATUS_STOP && $price && !$available) { if ($roomXml->attributes()['status'] === static::STATUS_STOP && $price) {
$status = Room::ROOM_STATUS_FULLY_BOOKED; $status = Room::ROOM_STATUS_FULLY_BOOKED;
} elseif ($roomXml->attributes()['status'] === static::STATUS_ON_REQUEST) { } elseif ($roomXml->attributes()['status'] === static::STATUS_ON_REQUEST) {
$status = Room::ROOM_STATUS_ON_REQUEST; $status = Room::ROOM_STATUS_ON_REQUEST;