Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

Добрый день.

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

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

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

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

Спасибо.

 

 

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites
42 минуты назад, Esox сказал:

Добрый день.

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

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

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

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

Спасибо.

 

 

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

Link to post
Share on other sites

@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'));
        }
    }

 

Edited by niger
Link to post
Share on other sites

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

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

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

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

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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'));
        }
    }

 

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

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

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

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

 

какова цена?

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.