Перейти к содержанию
Esox

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

Рекомендуемые сообщения

Добрый день.

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

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

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

В которых на настройку уходит времени столько же как ручками поправить цены в 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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.