ndnn

[HowTo] Добавление данных в инфо о заказе и при печати счета SKU, UPC и т.д. для тех кому нужно!

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

ndnn    9

Добавление данных в инфо о заказе и при печати счета SKU, UPC и т.д. для тех кому нужно!

Так по выше указанному примеру у меня так и не получилось довести все до ума. Но нашел еще один вариант только не UPC a SKU по тому же принципу:

Затронутые файлы:

   /admin/view/templates/sale/order_invoice.tpl
   /admin/view/templates/sale/order_form.tpl - по тому же принципу как order_invoice.tpl
   /admin/view/templates/sale/order_info.tpl - по тому же принципу как order_invoice.tpl
   /admin/language/english/sale/order.php
   /admin/model/sale/order.php
   /admin/controller/sale/order.php
   /catalog/model/checkout/order.php

-----------------------------------------------------------------------------------------------------------------------------

Первое:

В базе данных открываем раздел order_product и добавляем в нем поле sku (VARCHAR 60)

 
Или так:
    ALTER TABLE order_product ADD sku VARCHAR(60);
-----------------------------------------------------------------------------------------------------------------------------

Начнем с

admin/view/templates/sale/order_invoice.tpl

 

1. Находим примерно 67 строка:

        <td><b><?php echo $column_model; ?></b></td>

Дописываем над ней

        <td><b><?php echo $column_sku; ?></b></td>

 

2. Находим примерно 79 строка:

              <td><?php echo $product['model']; ?></td>

Дописываем над ней

        <td align="right"><?php echo $product['sku']; ?></td>

 

3. Находим примерно 95 строка:

              <td align="right" colspan="4"><b><?php echo $total['title']; ?>:</b></td>

 

Меняем количество столбцов на 5
-----------------------------------------------------------------------------------------------------------------------------
Далее переходим к файлу
admin/language/english/sale/order.php
               $_['column_sku']                              = 'SKU';
В место SKU указываем нужную информацию к примеру: Артикул или Поставщик
-----------------------------------------------------------------------------------------------------------------------------
Далее переходим к файлу
admin/model/sale/order.php
 
1. Находим примерно 84 строка
if (isset($data['order_product'])) {      
            foreach ($data['order_product'] as $order_product) {   
               $this->db->query("INSERT INTO " . DB_PREFIX . "order_product SET order_id = '" . (int)$order_id . "', product_id = '" . (int)$order_product['product_id'] . "', name = '" . $this->db->escape($order_product['name']) . "', model = '" . $this->db->escape($order_product['model']) . "', quantity = '" . (int)$order_product['quantity'] . "', price = '" . (float)$order_product['price'] . "', total = '" . (float)$order_product['total'] . "', tax = '" . (float)$order_product['tax'] . "', reward = '" . (int)$order_product['reward'] . "'");
 
Меняем на
if (isset($data['order_product'])) {      
            foreach ($data['order_product'] as $order_product) {   
               $this->db->query("INSERT INTO " . DB_PREFIX . "order_product SET order_id = '" . (int)$order_id . "', product_id = '" . (int)$order_product['product_id'] . "', name = '" . $this->db->escape($order_product['name']) . "', model = '" . $this->db->escape($order_product['model']) . "', quantity = '" . (int)$order_product['quantity'] . "', price = '" . (float)$order_product['price'] . "', total = '" . (float)$order_product['total'] . "', tax = '" . (float)$order_product['tax'] . "', reward = '" . (int)$order_product['reward'] . "', sku = '" . (float)$product['sku'] . "'");
 
2. Находим примерно 175 строка
foreach ($data['order_product'] as $order_product) {   
               $this->db->query("INSERT INTO " . DB_PREFIX . "order_product SET order_product_id = '" . (int)$order_product['order_product_id'] . "', order_id = '" . (int)$order_id . "', product_id = '" . (int)$order_product['product_id'] . "', name = '" . $this->db->escape($order_product['name']) . "', model = '" . $this->db->escape($order_product['model']) . "', quantity = '" . (int)$order_product['quantity'] . "', price = '" . (float)$order_product['price'] . "', total = '" . (float)$order_product['total'] . "', tax = '" . (float)$order_product['tax'] . "', reward = '" . (int)$order_product['reward'] . "'");
 
Меняем на
foreach ($data['order_product'] as $order_product) {   
               $this->db->query("INSERT INTO " . DB_PREFIX . "order_product SET order_product_id = '" . (int)$order_product['order_product_id'] . "', order_id = '" . (int)$order_id . "', product_id = '" . (int)$order_product['product_id'] . "', name = '" . $this->db->escape($order_product['name']) . "', model = '" . $this->db->escape($order_product['model']) . "', quantity = '" . (int)$order_product['quantity'] . "', price = '" . (float)$order_product['price'] . "', total = '" . (float)$order_product['total'] . "', tax = '" . (float)$order_product['tax'] . "', reward = '" . (int)$order_product['reward'] . "' , sku = '" . (float)$product['sku'] . "'");
 
3. Находим примерно 480 строка
 public function getOrderProducts($order_id) {
      $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
      
      return $query->rows;
   }
 
Меняем на
public function getOrderProducts($order_id) {
      $query = $this->db->query("SELECT a.*, b.sku FROM " . DB_PREFIX . "order_product a LEFT JOIN " . DB_PREFIX . "product b ON a.product_id = b.product_id WHERE order_id = '" . (int)$order_id . "'");
     
      return $query->rows;
   }
-----------------------------------------------------------------------------------------------------------------------------
Далее переходим к файлу
admin/controller/sale/order.php
 
1. Находим примерно 1090 строка
         'reward'           => $order_product['reward'],
 
Дописываем над ней
         'sku'              => $order_product['sku']
 
2. Находим примерно 2285 строка
         $this->data['column_model'] = $this->language->get('column_model');
 
Дописываем над ней
         $this->data['column_sku'] = $this->language->get('column_sku');
 
3. Находим примерно 2425 строка
         'option'   => $option_data,
 
Дописываем под ней
         'sku'      => $product['sku'],
-----------------------------------------------------------------------------------------------------------------------------
Далее переходим к файлу
catalog/model/checkout/order.php
 
1. Находим примерно 480 строка
foreach ($data['products'] as $product) { 
         $this->db->query("INSERT INTO " . DB_PREFIX . "order_product SET order_id = '" . (int)$order_id . "', product_id = '" . (int)$product['product_id'] . "', name = '" . $this->db->escape($product['name']) . "', model = '" . $this->db->escape($product['model']) . "', quantity = '" . (int)$product['quantity'] . "', price = '" . (float)$product['price'] . "', total = '" . (float)$product['total'] . "', tax = '" . (float)$product['tax'] . "', reward = '" . (int)$product['reward'] . "''");
 
Меняем на
foreach ($data['products'] as $product) { 
         $this->db->query("INSERT INTO " . DB_PREFIX . "order_product SET order_id = '" . (int)$order_id . "', product_id = '" . (int)$product['product_id'] . "', name = '" . $this->db->escape($product['name']) . "', model = '" . $this->db->escape($product['model']) . "', quantity = '" . (int)$product['quantity'] . "', price = '" . (float)$product['price'] . "', total = '" . (float)$product['total'] . "', tax = '" . (float)$product['tax'] . "', reward = '" . (int)$product['reward'] . "', sku = '" . (float)$product['sku'] . "'");
 
ВСЕ, естественно все тронутые файлы сохраняем, не забываем про UTF8, проверяем работоспособность!
-----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------
Пример то что получилось
zakaz-sku.jpg
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
order-sku.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
unkind    10

ТС молодец, что хочет помочь людям, НО! Зачем менять БД? Зачем добавлять поле в таблицу??? Все можно сделать в файлах контроллера, модели и шаблона. Я все это у себя вывел без изменения БД. В админке без проблем выводится и SKU и UPC...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ndnn    9

Я просто другого способа не нашел. Вы бы могли вылить свой способ вывода данных в админке?

 

ТС молодец, что хочет помочь людям, НО! Зачем менять БД? Зачем добавлять поле в таблицу??? Все можно сделать в файлах контроллера, модели и шаблона. Я все это у себя вывел без изменения БД. В админке без проблем выводится и SKU и UPC...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
unkind    10

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
arvaal    11

Помогите пожалуйста решить проблему. Недавно добавил в админку отображение sku и запись ее в базу. Но получился косяк с добавление товара к заказу. До нажатия на кнопку "добавить товар" все отображается хорошо, после нажатия в области где должен отображается sku появляется "undefined". На сколько я понял это скрипт не может заменить данные в полях для артикула. Ниже размещаю картинки и исходные коды view/sale/order_form.tpl, controller/sale/order.php, model/sale/order.php
Картинка-1
Картинка-2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ndnn    9

Этот метод оказался намного сложнее и не практичным, Вам можно обратится за помощью к zubovd, если у него будет время он поможет!

 

Помогите пожалуйста решить проблему. Недавно добавил в админку отображение sku и запись ее в базу. Но получился косяк с добавление товара к заказу. До нажатия на кнопку "добавить товар" все отображается хорошо, после нажатия в области где должен отображается sku появляется "undefined". На сколько я понял это скрипт не может заменить данные в полях для артикула. Ниже размещаю картинки и исходные коды view/sale/order_form.tpl, controller/sale/order.php, model/sale/order.php
Картинка-1
Картинка-2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Focto    2

Проделал все как указано выше, столбец отображается, но пустой и в таблице БД в столбце sku нет данных.

В чем может быть причина?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
esperant    0

а зачем так сложно, я делал так:
файл admin/controller/sale/order.php 

public function invoice() {
// находим эту строчку и тут вставляем этот код 
//SKU invoice FIX
                $this->load->model('catalog/product');
                $this->data['column_sku'] = $this->language->get('column_sku'); 

дальше в этой же функции invoice ищем строку приблезительно 2500 в ней находим 

foreach ($products as $product) {
//тут же вставляем этот код
//SKU invoice fix
$db_product = $this->model_catalog_product->getProduct($product['product_id']);


// находим $product_data[] = array(

$product_data[] = array(
     'sku'      => $db_product['sku'],/*SKU invoice fix вставляем эту строку*/
     'name'     => $product['name'],
                                                

дальше идем в файлы которые относятся к language
файл admin/language/russian/sale/order.php

$_['column_sku']            = 'Артикул';

идем в темплейт:

/admin/view/template/sale/order_invoice.tpl

<table class="product">
    <tr class="heading">
      <td><b><?php echo $column_product; ?></b></td>
      <td><b><?php echo $column_model; ?></b></td>
      <td><b><?php echo $column_sku; ?></b></td><!-- добавляем эту строку -->

чуть ниже нужно добавить колонку уже с нашим артикулом для каждого товара. 
 

<?php foreach ($order['product'] as $product) { ?>
    <tr>
      <td><?php echo $product['name']; ?>
        <?php foreach ($product['option'] as $option) { ?>
        <br />
         <small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?></small>
        <?php } ?></td>
      <td><?php echo $product['model']; ?></td>
      <td><?php echo $product['sku']; ?></td><!-- добавляем эту строку -->

Вроде бы ничего не забыл. Проверяем что получилось. 

 

 

Если вам нужны и другие поля типа UPD Делаем их по такому же принципу, лучше всего добавлять эти поля рядышком с sku

 

Пользуйтесь наздоровье, если вам не лень можно такую версию под vqMod запилить, это не сложно, одна из самых легких задач будет .

p.s. на OC 1.5.6 полет отличный 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimansh    3

а зачем так сложно, я делал так:

файл admin/controller/sale/order.php 

public function invoice() {
// находим эту строчку и тут вставляем этот код 
//SKU invoice FIX
                $this->load->model('catalog/product');
                $this->data['column_sku'] = $this->language->get('column_sku'); 

дальше в этой же функции invoice ищем строку приблезительно 2500 в ней находим 

foreach ($products as $product) {
//тут же вставляем этот код
//SKU invoice fix
$db_product = $this->model_catalog_product->getProduct($product['product_id']);


// находим $product_data[] = array(

$product_data[] = array(
     'sku'      => $db_product['sku'],/*SKU invoice fix вставляем эту строку*/
     'name'     => $product['name'],
                                                

дальше идем в файлы которые относятся к language

файл admin/language/russian/sale/order.php

$_['column_sku']            = 'Артикул';

идем в темплейт:

/admin/view/template/sale/order_invoice.tpl

<table class="product">
    <tr class="heading">
      <td><b><?php echo $column_product; ?></b></td>
      <td><b><?php echo $column_model; ?></b></td>
      <td><b><?php echo $column_sku; ?></b></td><!-- добавляем эту строку -->

чуть ниже нужно добавить колонку уже с нашим артикулом для каждого товара. 

 

<?php foreach ($order['product'] as $product) { ?>
    <tr>
      <td><?php echo $product['name']; ?>
        <?php foreach ($product['option'] as $option) { ?>
        <br />
         <small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?></small>
        <?php } ?></td>
      <td><?php echo $product['model']; ?></td>
      <td><?php echo $product['sku']; ?></td><!-- добавляем эту строку -->

Вроде бы ничего не забыл. Проверяем что получилось. 

 

 

Пользуйтесь наздоровье, если вам не лень можно такую версию под vqMod запилить, это не сложно, одна из самых легких задач будет .

p.s. на OC 1.5.6 полет отличный 

Все сделал - ничего не появилось. вообще никаких изменений.  версия 2.1.0.1  может что-то еще надо изменить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Seovadim
      Всем привет. Ищу модуль для автоматический генерации Title и Description для товаров, категорий, производителей, статей. Нужен такой модуль, чтобы он сгенерировал по шаблону данные метатеги таким образом, чтобы и в админке все прописалось. А потом в админке можно было бы выборочно что-то менять. На подобие того, что в Batch Editor для версии 1.5. Мне нужен к  ocStore 2.1.0.2.1. Может в Batch Editor для версии 2 есть такая штука, я просто не в курсе. Помогите с выбором кто-нибудь. Спасибо.
    • От louise170


      Просмотр файла SKU генератор артикулов
      Модуль позволяет автоматически генерировать уникальные коды - артикулы для каждого товара в поле SKU. Длина кода задается в настройках модуля. Генерация кодов происходит при сохранении товара. Т.е. вы можете сохранить любой товар и
      в этот момент всем товарам, у которых SKU был пустой, будет присвоено сгенерированное значение.
      Никакие системные файлы не затираются, модуль использует vqmod.
      Внимание! После установки модуля все, что было раньше в поле SKU у товаров, будет удалено и редактировать автоматически сгенерированные коды будет нельзя.
      Модуль тестировался на Opencart 1.5.4.1, 2.0.0.0, 2.0.1.1, 2.0.3.1 и MaxyStore 1.5.5.1.1
      Поддерживаемые языки:
      русский
      Пример работы модуля:
      http://ocstore1541.hypnoguru.ru/
      Демо админки:
      http://ocstore1541.hypnoguru.ru/admin/
      доступ
      demo / demo
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
      Обновление модуля
      Закачать все файлы из архива модуля на сайт. Зайти в админку модуля и нажать кнопку "Сохранить". Прописать настройки, которые появились в новой версии (если они вам нужны). Инструкция по установке VQMOD (если vqmod уже установлен выполняем сразу 5 пункт):
      Скачиваем последнюю версию vqmod для Opencart https://github.com/vqmod/vqmod/releases Загружаем по FTP папку "vqmod" в корневую директорию вашего сайта. Устанавливаем права 777 на папки /vqmod и /vqmod/vqcache В адресной строке браузера вводим http://имя-вашего-сайта/vqmod/install/, после чего должна появиться надпись об успешной установке VQMOD-а. Закачиваем из архива модуля файлы с расширением xml в папку /vqmod/xml Ручная установка: если по каким-то причинам вы не используете у себя на сайте vqmod, вы можете
      внести необходимы изменения в файлы вручную. Для этого откройте в папке vqmod/xml файлы относящиеся к модулю и
      смотрите там нужные вам изменения. Там, в принципе, понятно, где что на что менять.
      Но если вы не знакомы с синтаксисом файлов vqmod и вам не очень понятно что к чему, то предварительно
      можете почитать об этом тут:
      https://github.com/vqmod/vqmod/wiki/Examples
      https://github.com/vqmod/vqmod/wiki/Scripting
      Добавил louise170 Добавлено 27.12.2014 Категория Модули Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1 ocStore 1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От louise170
      Модуль позволяет автоматически генерировать уникальные коды - артикулы для каждого товара в поле SKU. Длина кода задается в настройках модуля. Генерация кодов происходит при сохранении товара. Т.е. вы можете сохранить любой товар и
      в этот момент всем товарам, у которых SKU был пустой, будет присвоено сгенерированное значение.
      Никакие системные файлы не затираются, модуль использует vqmod.
      Внимание! После установки модуля все, что было раньше в поле SKU у товаров, будет удалено и редактировать автоматически сгенерированные коды будет нельзя.
      Модуль тестировался на Opencart 1.5.4.1, 2.0.0.0, 2.0.1.1, 2.0.3.1 и MaxyStore 1.5.5.1.1
      Поддерживаемые языки:
      русский
      Пример работы модуля:
      http://ocstore1541.hypnoguru.ru/
      Демо админки:
      http://ocstore1541.hypnoguru.ru/admin/
      доступ
      demo / demo
      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.
      Обновление модуля
      Закачать все файлы из архива модуля на сайт. Зайти в админку модуля и нажать кнопку "Сохранить". Прописать настройки, которые появились в новой версии (если они вам нужны). Инструкция по установке VQMOD (если vqmod уже установлен выполняем сразу 5 пункт):
      Скачиваем последнюю версию vqmod для Opencart https://github.com/vqmod/vqmod/releases Загружаем по FTP папку "vqmod" в корневую директорию вашего сайта. Устанавливаем права 777 на папки /vqmod и /vqmod/vqcache В адресной строке браузера вводим http://имя-вашего-сайта/vqmod/install/, после чего должна появиться надпись об успешной установке VQMOD-а. Закачиваем из архива модуля файлы с расширением xml в папку /vqmod/xml Ручная установка: если по каким-то причинам вы не используете у себя на сайте vqmod, вы можете
      внести необходимы изменения в файлы вручную. Для этого откройте в папке vqmod/xml файлы относящиеся к модулю и
      смотрите там нужные вам изменения. Там, в принципе, понятно, где что на что менять.
      Но если вы не знакомы с синтаксисом файлов vqmod и вам не очень понятно что к чему, то предварительно
      можете почитать об этом тут:
      https://github.com/vqmod/vqmod/wiki/Examples
      https://github.com/vqmod/vqmod/wiki/Scripting
    • От ibond


      Просмотр файла Фильтр товаров в админке по производителям, артикулу и категориям
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, артикулу (Sku) и категориям (только для русской сборки и оригинальной версии). Также добавляет колонку Категории в списке товара (только для русской сборки и оригинальной версии).
      Работает (тестировался):
      OcStore 2.1.0.1, 2.1.0.2.1, 2.3.0.2, 2.3.0.2.1
      OpenCart 2.1.0.2, 2.3.0.2, 2.3.0.2 (rs.5)
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
      Добавил ibond Добавлено 20.11.2016 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось  
    • От ibond
      Дополнение добавляет возможность фильтровать товары в административной панели Opencart по производителям, артикулу (Sku) и категориям (только для русской сборки и оригинальной версии). Также добавляет колонку Категории в списке товара (только для русской сборки и оригинальной версии).
      Работает (тестировался):
      OcStore 2.1.0.1, 2.1.0.2.1, 2.3.0.2, 2.3.0.2.1
      OpenCart 2.1.0.2, 2.3.0.2, 2.3.0.2 (rs.5)
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
  • Последние посетители   0 пользователей онлайн

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