diff --git a/src/EventTrackerService.php b/src/EventTrackerService.php index a0bd5c4..eadecc9 100644 --- a/src/EventTrackerService.php +++ b/src/EventTrackerService.php @@ -272,21 +272,24 @@ private function buildProductFromOrderItem(OrderItemInterface $orderItem) { /** * Build the Enhanced Ecommerce product from a given commerce product variation. * - * @param \Drupal\commerce_product\Entity\ProductVariationInterface $productVariation + * @param \Drupal\commerce_product\Entity\ProductVariationInterface|null $productVariation * A commerce product variation. * @return \Drupal\commerce_google_tag_manager\Product * The Enhanced Ecommerce product. */ - private function buildProductFromProductVariation(ProductVariationInterface $productVariation) { + private function buildProductFromProductVariation($productVariation) { $product = new Product(); - $product - ->setName($productVariation->getProduct()->getTitle()) - ->setId($productVariation->getProduct()->id()) - ->setVariant($productVariation->getTitle()) - ->setPrice($this->formatPrice((float) $productVariation->getPrice()->getNumber())); - - $event = new AlterProductEvent($product, $productVariation); - $this->eventDispatcher->dispatch(EnhancedEcommerceEvents::ALTER_PRODUCT, $event); + + if ($productVariation) { + $product + ->setName($productVariation->getProduct()->getTitle()) + ->setId($productVariation->getProduct()->id()) + ->setVariant($productVariation->getTitle()) + ->setPrice($this->formatPrice((float) $productVariation->getPrice()->getNumber())); + + $event = new AlterProductEvent($product, $productVariation); + $this->eventDispatcher->dispatch(EnhancedEcommerceEvents::ALTER_PRODUCT, $event); + } return $product; }