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

Обновление цен из прайса поставщика.


Esox

Recommended Posts

Добрый день.

Существует ли решение для оперативного обновления цен в магазине. Из прайс листа поставщика.

Например на основе артикула или модели.

Интересует именно только обновление, а не загрузка из прайса товаров в магазин и прочие комплексные решения делающие все и вся.

В которых на настройку уходит времени столько же как ручками поправить цены в 100-200 товаров.

Спасибо.

 

 

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


в своё время для этих целей делал https://opencartforum.com/files/file/511-eksport-import-tovarov-v-formate-csv/

но там версия 1.5 и только csv формат

цена разработки под ваш прайс ~3тр

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

42 минуты назад, Esox сказал:

Добрый день.

Существует ли решение для оперативного обновления цен в магазине. Из прайс листа поставщика.

Например на основе артикула или модели.

Интересует именно только обновление, а не загрузка из прайса товаров в магазин и прочие комплексные решения делающие все и вся.

В которых на настройку уходит времени столько же как ручками поправить цены в 100-200 товаров.

Спасибо.

 

 

Рассмотрите АОП. После установки модуля одним действием сделаете смену модели на код товара в магазине, и модуль будет обновлять их из прайса. Но в прайсе обязательно должны быть такие же артикулы как в магазине. Это важно.

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


@Esox Лучше сделать импорт через csv. Проще и быстрее. Скопировали два столбика - модель и цена(модель первый столбик, цена второй столбик), закинули в пустой эксель и сохранили как csv с разделителем - точка с запятой.

А там 20 строк кода, так как не нужно подключать библиотеку и делать разбора эксель файла с кучей настроек и мегакомбайнов типа АОП.

Вот вам функция, можете допилить под свои нужды и требования и чтобы красиво было. 

 

public function price() {
        if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) {
            if(is_uploaded_file($this->request->files['price']['tmp_name'])) {
                if (is_file($this->request->files['price']['tmp_name'])){ 
                    $csv = file( $this->request->files['price']['tmp_name'] ); 
                    $ok  = 0;
                    $errCount = 0;
                    foreach ( $csv as $prod ) {
                        $str = explode(';',$prod); 
                        $model  = $str[0];
                        if($str[1]<= 0){$price= 0;} else {$price = $str[1];}
                        if(isset($model) && $model > 0){
                            $isset = $this->db->query( "SELECT COUNT(product_id) as find FROM " . DB_PREFIX . "product WHERE model = '$model'" );
                            if ( ! empty( $isset->row['find'] ) && $isset->row['find'] > 0 ) {
                                $updateProd = $this->db->query( "UPDATE " . DB_PREFIX . "product SET price = '$price', date_modified = '" . date( 'Y-m-d H:i:s' ) . "' WHERE model = '$model'" );
                                if ( ! empty( $updateProd ) ) {
                                    $ok ++;
                                } else {
                                    $errCount ++;
                                }
                            } else {
                                $errCount ++;
                            }
                        }
                    }
                    $this->session->data['success'] = "Обновлено товаров: $ok<br/>Нет в базе: $errCount";
                }else{
                    echo 'not file';
                }
            }
            $this->redirect($this->url->link('module/updatecsv', 'token=' . $this->session->data['token'], 'SSL'));
        }
    }

 

Змінено користувачем niger
Надіслати
Поділитися на інших сайтах


20 часов назад, freelancer сказал:

в своё время для этих целей делал https://opencartforum.com/files/file/511-eksport-import-tovarov-v-formate-csv/

но там версия 1.5 и только csv формат

цена разработки под ваш прайс ~3тр

В текущей ситуации разумнее купить АОП.

Спасибо за помощь

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


20 часов назад, Atlet сказал:

Рассмотрите АОП. После установки модуля одним действием сделаете смену модели на код товара в магазине, и модуль будет обновлять их из прайса. Но в прайсе обязательно должны быть такие же артикулы как в магазине. Это важно.

Слишком громоздкое решение.

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


19 часов назад, niger сказал:

@Esox Лучше сделать импорт через csv. Проще и быстрее. Скопировали два столбика - модель и цена(модель первый столбик, цена второй столбик), закинули в пустой эксель и сохранили как csv с разделителем - точка с запятой.

А там 20 строк кода, так как не нужно подключать библиотеку и делать разбора эксель файла с кучей настроек и мегакомбайнов типа АОП.

Вот вам функция, можете допилить под свои нужды и требования и чтобы красиво было. 

 


public function price() {
        if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) {
            if(is_uploaded_file($this->request->files['price']['tmp_name'])) {
                if (is_file($this->request->files['price']['tmp_name'])){ 
                    $csv = file( $this->request->files['price']['tmp_name'] ); 
                    $ok  = 0;
                    $errCount = 0;
                    foreach ( $csv as $prod ) {
                        $str = explode(';',$prod); 
                        $model  = $str[0];
                        if($str[1]<= 0){$price= 0;} else {$price = $str[1];}
                        if(isset($model) && $model > 0){
                            $isset = $this->db->query( "SELECT COUNT(product_id) as find FROM " . DB_PREFIX . "product WHERE model = '$model'" );
                            if ( ! empty( $isset->row['find'] ) && $isset->row['find'] > 0 ) {
                                $updateProd = $this->db->query( "UPDATE " . DB_PREFIX . "product SET price = '$price', date_modified = '" . date( 'Y-m-d H:i:s' ) . "' WHERE model = '$model'" );
                                if ( ! empty( $updateProd ) ) {
                                    $ok ++;
                                } else {
                                    $errCount ++;
                                }
                            } else {
                                $errCount ++;
                            }
                        }
                    }
                    $this->session->data['success'] = "Обновлено товаров: $ok<br/>Нет в базе: $errCount";
                }else{
                    echo 'not file';
                }
            }
            $this->redirect($this->url->link('module/updatecsv', 'token=' . $this->session->data['token'], 'SSL'));
        }
    }

 

Я не программист.

Решение не понятно. Куда это вставлять?!

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


В 18.08.2018 в 11:37, Esox сказал:

Я не программист.

Решение не понятно. Куда это вставлять?!

В контроллер. Но раз вы не программист - тогда вам это не поможет. Так как это практически готовое решение, но не оформленное как модуль. Осталось только вьюху запилить и немного в контроллер строк добавить.

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


2 часа назад, niger сказал:

В контроллер. Но раз вы не программист - тогда вам это не поможет. Так как это практически готовое решение, но не оформленное как модуль. Осталось только вьюху запилить и немного в контроллер строк добавить.

 

какова цена?

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


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

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