Jump to content

Обновить через импорт артикулы


Recommended Posts

Есть импорт в csv , изначально не было артикулов, далее проставил артикулы нужные через файл, а потом попытался обновить их по названию. Как итог - почему то добавляются товары как новые. Хотел что товар обновлялся по уникальному названию продукта, и добавлял артикул, также и с вариантами. Уже оставил 3 поля 

Имя товара, артикул, вариант.

имя товара совпадает с названиями на сайте и по логике должно обновить артикул, но добавляются как новые товары. Как победить недуг?

Link to post
Share on other sites
4 minutes ago, shooroop said:

откройте import.php и посмотрите его логику сразу станет все понятно

К примеру есть товар "Товар 1" без артикула.

Я создаю в csv файл "Товар 1" c артикулом "123" и пробую импортировать. Появляется новый товар , а хотел чтоб артикул просто обновлялся в товаре.

по логике я нашел только 

// Если задан артикул варианта, найдем этот вариант и соответствующий товар
		if(!empty($variant['sku']))
		{ 
			$this->db->query('SELECT v.id as variant_id, v.product_id FROM __variants v, __products p WHERE v.sku=? AND v.product_id = p.id LIMIT 1', $variant['sku']);
			$result = $this->db->result();
			if($result)
			{
				// и обновим товар
				if(!empty($product))
					$this->products->update_product($result->product_id, $product);
				// и вариант
				if(!empty($variant))
					$this->variants->update_variant($result->variant_id, $variant);
				
				$product_id = $result->product_id;
				$variant_id = $result->variant_id;
				// Обновлен
				$imported_item->status = 'updated';
			}
		}

Думаю это нужно убрать полностью.

Ну и самое сложное это наверное SQL запрос, логику которого не совсем понимаю

if(!empty($variant['sku']) && empty($variant['name']))
				$this->db->query('SELECT v.id as variant_id, p.id as product_id FROM __products p LEFT JOIN __variants v ON v.product_id=p.id WHERE v.sku=? LIMIT 1', $variant['sku']);	

 

Link to post
Share on other sites

это означает что есть название артикула но нет название варианта

if(!empty($variant['sku']) && empty($variant['name']))

 

в первом куске кода вам надо  только заменить строчку с sql запросом на такой который вы хотите добиться  и все а не удалять его полностью. или написать новый if под себя

Link to post
Share on other sites
9 hours ago, shooroop said:

это означает что есть название артикула но нет название варианта


if(!empty($variant['sku']) && empty($variant['name']))

 

в первом куске кода вам надо  только заменить строчку с sql запросом на такой который вы хотите добиться  и все а не удалять его полностью. или написать новый if под себя

 

получается 2 кусок кода трогать не надо, надо только sql запрос поменять тут?

$this->db->query('SELECT v.id as variant_id, v.product_id FROM __variants v, __products p WHERE v.sku=? AND v.product_id = p.id LIMIT 1', $variant['sku']);

 

Link to post
Share on other sites

if(!empty($variant['sku']) && empty($variant['name']))
                $this->db->query('SELECT v.id as variant_id, p.id as product_id FROM __products p LEFT JOIN __variants v ON v.product_id=p.id WHERE p.name=? LIMIT 1', $product['name']);

Link to post
Share on other sites
В 27.09.2020 в 01:01, shooroop сказал:

это означает что есть название артикула но нет название варианта


if(!empty($variant['sku']) && empty($variant['name']))

 

в первом куске кода вам надо  только заменить строчку с sql запросом на такой который вы хотите добиться  и все а не удалять его полностью. или написать новый if под себя

Благодарствую за толчек в нужное направление, теперь работает как надо.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...