Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Двухсторонняя синхронизация между Opencart и сервисом Мой склад


Recommended Posts

Необходимо настроить двухстороннюю синхронизацию между магазином diko-obraz.ru на Opencart (1.5.6.1) и сервисом Мой склад.
1. Передача информации по заказам (включая быстрые заказы): номер заказа, имя клиента, телефон, название товара (товары с модификациями), количество;
2. Привязка между товарами на сайте и товарами в Моем складе через внешний код (названия на сайте и на складе не совпадают);
3. Передача актуальных остатков товаров (учитывая модификации товаров) из Моего склада на сайт.

Для каждого товара только один тип модификаций: размер (либо детский размер, либо взрослый, либо размер обуви).

 

Знаю, что есть полуготовое решение данного вопроса, но не всё там реализовано, что требуется.

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

надо более подробное ТЗ.

особенно по первому пункту (вплоть до описания связей "эти данные из opencart должны заноситься в это поле/столбец в мой-склад" (и наоборот)).

Надіслати
Поділитися на інших сайтах

Необходимо настроить двухстороннюю синхронизацию между магазином diko-obraz.ru на Opencart (1.5.6.1) и сервисом Мой склад.

1. Передача информации по заказам (включая быстрые заказы): номер заказа, имя клиента, телефон, название товара (товары с модификациями), количество;

2. Привязка между товарами на сайте и товарами в Моем складе через внешний код (названия на сайте и на складе не совпадают);

3. Передача актуальных остатков товаров (учитывая модификации товаров) из Моего склада на сайт.

Для каждого товара только один тип модификаций: размер (либо детский размер, либо взрослый, либо размер обуви).

 

Знаю, что есть полуготовое решение данного вопроса, но не всё там реализовано, что требуется.

Задачу-то решили?

Надіслати
Поділитися на інших сайтах

  • 4 weeks later...

У них есть синхронизация через рест апи.

Здесь где-то был модуль синхронизации заказов.

Написал класс синхронизации остатков как по товарам так и по модификациям с модулем связанные опции через rest может кому пригодиться.

код прилагаю.

else if ($request->get['type'] == 'import') {
	$headerget = array(
	            'http'=>array( 'method'=>"GET",
	                           'header'=>"Accept-language: en\r\n" . "Authorization: Basic " . base64_encode("логинмойсклад:парольмойсклад") . "\r\n"
	                         )
	        );
	$context = stream_context_create($headerget);
	$allgood = file_get_contents('https://online.moysklad.ru/exchange/rest/stock/json', false, $context);
	$allgood = json_decode($allgood);
	foreach ($allgood as $good)
	    {
	        if($good->quantity > 0)
	        {
	            $goods[] = array(
	                            'quantity' => $good->quantity,
	                            'price' => ($good->salePrice/100),
	                            'code' => $good->externalCode,
	                            'name' => $good->consignmentName
	                            );
	        }
	    }
	$result = file_get_contents('https://online.moysklad.ru/exchange/rest/stock/json?showConsignments=true', false, $context);
	$result = json_decode($result);
	foreach ($result as $dataitems)
	    {
	        $dataitem[] = array(
	                            'quantity' => $dataitems->quantity,
	                            'price' => $dataitems->salePrice,
	                            'uuid' => $dataitems->consignmentUuid,
	                            'name' => $dataitems->consignmentName
	                           );
	    }
	$result = file_get_contents('https://online.moysklad.ru/exchange/rest/ms/xml/Consignment/list?start=0&count=1000', false, $context);
	$alloption = simplexml_load_string($result);
	$alloption = json_encode($alloption);
	$alloption = json_decode($alloption,TRUE);
	$alloption1 = $alloption;
	$getoption = array_shift($alloption1);
	$optiongood =array();
	foreach ($alloption as $options)
	    {
	    foreach ($options as $option)
	        {
	        foreach($dataitem as $gooddata)
	            {

	            if($gooddata['uuid'] == $option['uuid'] && $gooddata['quantity'] > 0)
	                {
	                    $optiongood[] = array(
	                                            'quantity' => $gooddata['quantity'],
	                                            'price' => ($gooddata['price']/100),
	                                            'code' => $option['feature']['externalcode'],
	                                            'name' => $gooddata['name']
	                                         );
	                }
	            }
	        }
	    }
	if($getoption['total'] > '1000')
	{
	    $i = ceil($getoption['total']/1000);
	    $d = 2;
	    do
	    {
	        $result = file_get_contents('https://online.moysklad.ru/exchange/rest/ms/xml/Consignment/list?start='.(($d-1) * 1000).'&count=1000', false, $context);
	        $alloption = simplexml_load_string($result);
	        $alloption = json_encode($alloption);
	        $alloption = json_decode($alloption,TRUE);
	        foreach ($alloption as $options)
	            {
	            foreach ($options as $option)
	                {
	                foreach($dataitem as $gooddata)
	                    {

	                    if($gooddata['uuid'] == $option['uuid'] && $gooddata['quantity'] > 0)
	                      {
	                        $optiongood[] = array(
	                                                'quantity' => $gooddata['quantity'],
	                                                'price' => ($gooddata['price']/100),
	                                                'code' => $option['feature']['externalcode'],
	                                                'name' => $gooddata['name']
	                                             );
	                      }
	                    }
	                }
	            }
	        $d++;
	    }while($i >= $d);
	}
	$query = $db->query("UPDATE " . DB_PREFIX . "product SET `quantity` = 0, `stock_status_id` = 5;");
	foreach ($goods as $updategood)
	{
		$query = $db->query("UPDATE " . DB_PREFIX . "product SET `quantity`='".$updategood['quantity']."',`price`='".$updategood['price']."',`stock_status_id`=7 WHERE `model`='".$updategood['code']."';");
	}
	$query = $db->query("UPDATE " . DB_PREFIX . "relatedoptions SET `quantity` = 0;");
	foreach ($optiongood as $updategood)
	{
		$query = $db->query("UPDATE " . DB_PREFIX . "relatedoptions SET `quantity`='".$updategood['quantity']."',`price`='".$updategood['price']."' WHERE `model`='".$updategood['code']."';");
		$query = $db->query("SELECT `relatedoptions_id` FROM " . DB_PREFIX . "relatedoptions WHERE `model`='".$updategood['code']."';");
		foreach ($query->rows as $resultdata)
		{

			$queryid = $db->query("SELECT `product_id`, `option_id`, `option_value_id` FROM " . DB_PREFIX . "relatedoptions_option WHERE `relatedoptions_id`='".$resultdata['relatedoptions_id']."';");
			foreach ($queryid->rows as $resultdataid)
			{
				$queryupdate = $db->query("UPDATE " . DB_PREFIX . "product_option_value SET `quantity`='".$updategood['quantity']."' WHERE `product_id`='".$resultdataid['product_id']."' AND `option_value_id`='".$resultdataid['option_value_id']."' AND `option_id`='".$resultdataid['option_id']."';");
			}
		}
	}
}
Змінено користувачем look2009
Надіслати
Поділитися на інших сайтах


Гість
Ця тема закрита для публікації повідомлень.
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.