public function synchronizeVariationsDeliveries(ProductInterface $product, ArrayCollection $variations = null)
{
if (in_array('deliveries', $this->getVariationFields())) {
return;
}
if (!$variations) {
$variations = $product->getVariations();
}
$productDeliveries = $product->getDeliveries();
/** @var ProductInterface $variation */
foreach ($variations as $variation) {
$variationDeliveries = $variation->getDeliveries();
// browsing variation deliveries and remove excessing deliveries
foreach ($variationDeliveries as $productDelivery) {
if ($productDelivery && !$productDeliveries->contains($productDelivery)) {
$variation->removeDelivery($productDelivery);
}
}
// browsing Product deliveries and add missing deliveries
foreach ($productDeliveries as $productDelivery) {
if ($productDelivery && !$variationDeliveries->contains($productDelivery)) {
$delivery = clone $productDelivery;
$variation->addDelivery($delivery);
}
}
}
}