<?php
namespace CioFormBuilder\Subscriber;
use Psr\Log\LoggerInterface;
use Shopware\Core\Checkout\Cart\Event\CartProcessedEvent;
use Shopware\Core\Checkout\Cart\LineItem\LineItem;
use Shopware\Core\Framework\Event\FlowEventAware;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CartDebugSubscriber implements EventSubscriberInterface
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public static function getSubscribedEvents(): array
{
return [
CartProcessedEvent::class => 'onCartProcessed',
];
}
public function onCartProcessed(CartProcessedEvent $event): void
{
$cart = $event->getCart();
foreach ($cart->getLineItems() as $item) {
if (!$item instanceof LineItem) {
continue;
}
$payload = $item->getPayload() ?? [];
$cf = $payload['customFields'] ?? [];
$isPod = $cf['custom_pod_products_isPodProduct'] ?? null;
$hasSurcharges = !empty($cf['cioFormSurcharges']);
$price = $item->getPrice();
$priceDef = $item->getPriceDefinition();
$this->logger->info('[CIO-AI-Driven] CartProcessed.debug', [
'lineItemId' => $item->getId(),
'referencedId' => $item->getReferencedId(),
'isPod' => $isPod,
'hasSurcharges' => $hasSurcharges,
'priceDefinitionClass' => $priceDef ? get_class($priceDef) : null,
'priceDefinition' => $priceDef ? [
'price' => method_exists($priceDef, 'getPrice') ? $priceDef->getPrice() : null,
'qty' => method_exists($priceDef, 'getQuantity') ? $priceDef->getQuantity() : null,
] : null,
'calculatedPrice' => $price ? [
'unitPrice' => $price->getUnitPrice(),
'totalPrice' => $price->getTotalPrice(),
'taxes' => $price->getCalculatedTaxes(),
'taxRules' => $price->getTaxRules(),
'quantity' => $price->getQuantity(),
] : null,
]);
}
}
}