Добрый день. Подскажи, может кто-то уже реализовывал на opencart себестоимость товара с возможностью импорта/экспорта в excel?
Себестоимость это цена закупки? я так понимаю что нужна только для отображения в админке для личных целей. Что ж, просто "клонировать" обычную цену в модуле импорта/экспорта и в движке. или вовсе использовать какое-либо из имеющихся но не используемых полей.
Подскажите, как клонировать, ну или хотя бы, с каких фалов начинать копать по части самой себестоимости, и по части модуля экспорт/импорт?
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 в б.д. не забыть, после того как все сделано - проверять работоспособность созданием нового товара (не редактированием старого) и не забывать про бекапы и все такое... С модулем Импорта изменения по аналогии, какие именно не знаю, модулей много. А вообще, там полно всяких не используемых полей - вот например: Самое простое их задействовать, только настроить импорт цены закупки в них, но не зная что за модуль используется не могу показать примера, конечно же.
Модуль для экспорта используется Export/Import Tool for OpenCart 1.5.5.x, если есть возможность, можно и по нему подсказулек?
rusalka_tany, предлагаю задействовать Европейский артикул "ean" - на скрине выше видно это поле, для начала надо переименовать его, с этим проблем я думаю не возникнет. Я посмотрел этот модуль, этот артикул и так импортируется т.е. тут и делать-то ничего не надо, переименовать поле и все это строка $_['entry_ean'] = 'EAN:<br/><span class="help">European Article Number</span>'; в файле /admin/language/russian/catalog/product.php Да, можно конечно и переменную переименовать, превратить ean например в тот же cost_price, но при обновлении файлов модуля слетать же будет, а так все работает без танцев с бубном.
Сделала со своими доработками в product_list, себестоимость частично взяла по примеру цены, вместо модели (как предлагалось), результат: и Буду пытаться править модуль выгрузки.
А можно подробней о том, как вывести поле "Себестоимость" в список товаров? (он же product_list). Я добавил подобное поле, только с помощью готового модуля, но хотел бы его вынести также в product_list
Работать будет при условии, если в вашей БД индекс себестоимости таблицы product называется cost_price и переменные в модуле - тоже cost_price. В admin/view/template/catalog/product_list.tpl Перед тем как пробовать, обязательно бэкап.