Skip to content

Commit

Permalink
Merge pull request #32 from Luc45-Pereira/fix/multipleVariations
Browse files Browse the repository at this point in the history
fix - corrige atualizacao de anuncios com mutiplas variacoes
  • Loading branch information
alisonvalente authored Apr 5, 2024
2 parents 7b5b35e + 7872752 commit 3b39a2d
Showing 1 changed file with 27 additions and 14 deletions.
41 changes: 27 additions & 14 deletions src/Entity/Product/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -180,17 +180,23 @@ public function update(EntityInterface $entity, EntityInterface $existent = null

if ($hasVariation) {
unset($update['price'], $update['available_quantity'], $update['attributes'], $update['video_id']);
$variation = [ 'id' => $params['variationId'] ];

if (isset($entity['pictures'])) {
$variation['picture_ids'] = array_map(fn($img) => $img['source'], $entity['pictures']);
}
$variations = [];
foreach ($params['variationId'] as $variationId) {
$variation = [ 'id' => $variationId ];

if (isset($entity['pictures'])) {
$variation['picture_ids'] = array_map(fn($img) => $img['source'], $entity['pictures']);
}

if ((int) $entity['available_quantity'] !== (int) $item['available_quantity']) {
$variation['available_quantity'] = $entity['available_quantity'];
}

if ((int) $entity['available_quantity'] !== (int) $item['available_quantity']) {
$variation['available_quantity'] = $entity['available_quantity'];
$variations[] = $variation;
}

$update['variations'] = [$variation];
$update['variations'] = [$variations];
}

try {
Expand Down Expand Up @@ -282,16 +288,23 @@ public function updateVariation(EntityInterface $entity, EntityInterface $existe
throw new \Exception('Multiple variations not supported');
}

$variation = [];
$variation['price'] = $entity['price'];

if ((int) $item['available_quantity'] !== (int) $entity['available_quantity']) {
$variation['available_quantity'] = $entity['available_quantity'];
$updateVariations = [];
foreach ($variations as $variation) {
$updateVariation = [];
$updateVariation['id'] = $variation['id']
$updateVariation['price'] = $entity['price'];

if ((int) $item['available_quantity'] !== (int) $entity['available_quantity']) {
$updateVariation['available_quantity'] = $entity['available_quantity'];
}

$updateVariations[] = $updateVariation;
}

$params['variationId'] = current($variations)['id'];
$update = ['variations' => $updateVariations];
$params['variationId'] = array_map(fn($variation) => $variation['id'], $updateVariations);

$this->execute($this->factoryMap('updateVariation', $params), json_encode($variation));
$this->execute($this->factoryMap('update', $params), json_encode($update));

return $this->update($entity, $existent, $params, true);
}
Expand Down

0 comments on commit 3b39a2d

Please sign in to comment.