protected function updateProductFromPayload($product, $payload)
 {
     $product->sku = $payload->sku;
     $product->barcode = $payload->barcode;
     $product->brand_id = $payload->brand;
     // We use the actual brand id as is
     $product->discontinued = $payload->discontinued;
     $product->visible = $payload->enabled;
     // Pay attention: small name change here
     $product->taxable = $payload->taxable;
     $product->price = $payload->price;
     $product->weight = $payload->weight;
     $product->parent_product_id = $payload->parent_product_id;
     $product->save();
     // We insert the images before the localization so we can save the localizations with an image for quick elasticsearch reference
     // Clean up all previous images
     foreach ($product->productImages as $image) {
         $image->delete();
     }
     foreach ($payload->images as $image) {
         $productimg = new ProductImage();
         $productimg->product_id = $product->id;
         $productimg->extension = $image->extension;
         $productimg->identifier = $image->id;
         $productimg->position = $image->position;
         $productimg->locale_id = Locale::localeIdFromLongCode($image->locale);
         $productimg->save();
     }
     // Clean up all previous localizations
     foreach ($product->productLocalizations as $localization) {
         $localization->delete();
     }
     foreach ($payload->localizations as $localization) {
         $productLocalization = new ProductLocalization();
         $productLocalization->product_id = $product->id;
         $productLocalization->locale_id = Locale::localeIdFromLongCode($localization->locale);
         $productLocalization->name = $localization->name;
         $productLocalization->short_description = $localization->short_description;
         $productLocalization->long_description = $localization->long_description;
         $productLocalization->visible = $localization->enabled;
         $productLocalization->save();
     }
     $previousRelationships = ProductHasCategory::model()->findAll("product_id=:product_id", array(':product_id' => $product->id));
     foreach ($previousRelationships as $relat) {
         $relat->delete();
     }
     foreach ($payload->categories as $category) {
         // Check for existing relationships... we encounter some duplicates sometimes
         $existingRelationship = ProductHasCategory::model()->find("product_id=:product_id AND category_id=:category_id", array(':product_id' => $product->id, ':category_id' => $category));
         if ($existingRelationship === null) {
             $catrel = new ProductHasCategory();
             $catrel->product_id = $product->id;
             $catrel->category_id = $category;
             $catrel->save();
         }
     }
     return $product;
 }