[Помогите] Себестоимость с возможность экспорта/импорта

Тема в разделе "OpenCart", создана пользователем rusalka_tany, 5 апр 2014.

  1. rusalka_tany

    rusalka_tany

    Регистрация:
    27 мар 2014
    Сообщения:
    71
    Симпатии:
    28
    Добрый день.
    Подскажи, может кто-то уже реализовывал на opencart себестоимость товара с возможностью импорта/экспорта в excel?
     
  2. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    Себестоимость это цена закупки? я так понимаю что нужна только для отображения в админке для личных целей. Что ж, просто "клонировать" обычную цену в модуле импорта/экспорта и в движке. или вовсе использовать какое-либо из имеющихся но не используемых полей.
     
  3. rusalka_tany

    rusalka_tany

    Регистрация:
    27 мар 2014
    Сообщения:
    71
    Симпатии:
    28
    Подскажите, как клонировать, ну или хотя бы, с каких фалов начинать копать по части самой себестоимости, и по части модуля экспорт/импорт?
     
  4. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    rusalka_tany,
    файлы админки которые придется затронуть: 1)админ/вайв/темплейт/каталог/продукт_форм 2)админ/контроллер/каталог/продукт 3)админ/модель/каталог/продукт и языковой файл админ/language/ваш_язык/каталог/продукт. Я тут прикинул, для прайса (цены) слишком много дополнительных плюх связанных с ценой опций и проч, можно запутаться, возьмем для копирования модель Ну еще придется в б.д. копировать поле модели (это понятно как сделать?).
    Итак, начинаем, открываем первый из перечисленных файлов - за вывод модели отвечает переменная model, ее и будем искать. Придумаем как назвать нашу новую переменную, допустим назовем ее cost_price.
    в файле который мы открыли ищем вхождение model.... видим фрагмент кода
    Код:
    <tr>
                  <td><span class="required">*</span> <?php echo $entry_model; ?></td>
                  <td><input type="text" name="model" value="<?php echo $model; ?>" />
                    <?php if ($error_model) { ?>
                    <span class="error"><?php echo $error_model; ?></span>
                    <?php } ?></td>
                </tr>
    
    Его можно было бы просто копировать, но как мы помним поле "модель" является обязательным, а наше новое поле нет, поэтому после него просто вставим
    Код:
    <tr>
                  <td><span class="required"></span> <?php echo $entry_cost_prisce; ?></td>
                  <td><input type="text" name="cost_price" value="<?php echo $cost_price; ?>" />
                  </td>
                </tr>
    
    т.е. по сути мы копировали этот фрагмент и заменили model на cost_prisce. - и убрали вывод ошибок при незаполненном поле.. Тут все, идем в контроллер...
    В контроллере опять ищем вхождение model - там полно всякой фигни связанной с сортировками и фильтрами (то что позволяет сортировать товары в админке по полю модель) - если нам это не нужно то пропускаем... после $this->data['entry_model'] = $this->language->get('entry_model'); добавим $this->data['entry_cost_price'] = $this->language->get('entry_cost_price'); а тк же после
    Код:
    if (isset($this->request->post['model'])) {
                  $this->data['model'] = $this->request->post['model'];
            } elseif (!empty($product_info)) {
                $this->data['model'] = $product_info['model'];
            } else {
                  $this->data['model'] = '';
            }
    добавим
    Код:
    if (isset($this->request->post['cost_price'])) {
                  $this->data['cost_price'] = $this->request->post['cost_price'];
            } elseif (!empty($product_info)) {
                $this->data['cost_price'] = $product_info['cost_price'];
            } else {
                  $this->data['cost_price'] = '';
            }
    после 'model' => $result['model'], добавим 'cost_prisce' => $result['cost_prisce'], (обязательно в массиве продукта, но можно и 2 раза, т.к. таких вхождений в файле 2).
    ну а в админ/модель/каталог/продукт запутаться проще всего после
    Код:
    "product SET model = '" . $this->db->escape($data['model']) . "',
    вставить
    Код:
    cost_price = '" . $this->db->escape($data['cost_price]) . "',
    (это делается 2 раза в указанном файле) Ну а в языковом файле запутаться трудно. Это пример для opencart 1.5.5.1 обязательно смотреть чтобы не пропустить точки и запятые, ну и вообще за мной проверять, я могу опечататься так как не внимателен. Обязательно копировать столбик model в б.д. не забыть, после того как все сделано - проверять работоспособность созданием нового товара (не редактированием старого) и не забывать про бекапы и все такое... С модулем Импорта изменения по аналогии, какие именно не знаю, модулей много.

    А вообще, там полно всяких не используемых полей - вот например: [​IMG]
    Самое простое их задействовать, только настроить импорт цены закупки в них, но не зная что за модуль используется не могу показать примера, конечно же.
     
    Последнее редактирование: 5 апр 2014
    rusalka_tany нравится это.
  5. rusalka_tany

    rusalka_tany

    Регистрация:
    27 мар 2014
    Сообщения:
    71
    Симпатии:
    28
    Модуль для экспорта используется Export/Import Tool for OpenCart 1.5.5.x, если есть возможность, можно и по нему подсказулек?
     
  6. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    rusalka_tany, предлагаю задействовать Европейский артикул "ean" - на скрине выше видно это поле, для начала надо переименовать его, с этим проблем я думаю не возникнет. Я посмотрел этот модуль, этот артикул и так импортируется [​IMG]
    т.е. тут и делать-то ничего не надо, переименовать поле и все это строка
    $_['entry_ean'] = 'EAN:<br/><span class="help">European Article Number</span>';
    в файле /admin/language/russian/catalog/product.php
    Да, можно конечно и переменную переименовать, превратить ean например в тот же cost_price, но при обновлении файлов модуля слетать же будет, а так все работает без танцев с бубном.
     
    Последнее редактирование: 6 апр 2014
  7. rusalka_tany

    rusalka_tany

    Регистрация:
    27 мар 2014
    Сообщения:
    71
    Симпатии:
    28
    Сделала со своими доработками в product_list, себестоимость частично взяла по примеру цены, вместо модели (как предлагалось), результат:
    [​IMG]
    и
    [​IMG]
    Буду пытаться править модуль выгрузки.
     
    Последнее редактирование: 28 апр 2014
  8. rusalka_tany

    rusalka_tany

    Регистрация:
    27 мар 2014
    Сообщения:
    71
    Симпатии:
    28
    С экспортом/импортом себестоимости все получилось, кому надо будет пишите, помогу!
     
    cereberlum нравится это.
  9. R4an_93

    R4an_93

    Регистрация:
    14 янв 2013
    Сообщения:
    265
    Симпатии:
    30
    А можно подробней о том, как вывести поле "Себестоимость" в список товаров? (он же product_list).
    Я добавил подобное поле, только с помощью готового модуля, но хотел бы его вынести также в product_list
     
  10. rusalka_tany

    rusalka_tany

    Регистрация:
    27 мар 2014
    Сообщения:
    71
    Симпатии:
    28
    Работать будет при условии, если в вашей БД индекс себестоимости таблицы product называется cost_price и переменные в модуле - тоже cost_price.
    В admin/view/template/catalog/product_list.tpl
    Перед тем как пробовать, обязательно бэкап.