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  может что-то еще надо изменить?

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От 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)
      Установка:
      Загрузить файл в установках расширений, перейти в модификаторы и обновить.
    • От MaxD


      Просмотреть файл ParseMX
      ParseMX - движок (парсер) для автоматического импорта и синхронизации с сайтами
      Модуль не работает с OpenCart 2.0. Используйте новую разработку - LiveImport.
      Внимание! При большом количестве товаров обычно магазин начинает тормозить. Попробуйте модуль OpenCart Lightning для мгновенного показа страниц.
      ParseMX используют для:
      cинхронизации с сайтами поставщиков (если у них нет адекватного API) локальных представительств крупных торговых площадок переноса магазина со старой платформы на OpenCart мониторинга цен конкурентов разныx витиеватых сценариев (ParseMX очень гибкий) Что умеет интересного:
      создавать инструкции в полу-автоматическом режиме тянуть данные в несколько потоков копировать структуру категорий замывать водяные знаки переводить тексты с помощью Google Инструменты Переводчика или Яндекса поддерживает все поля продукта (включая h1, title и SEO URL) обрабатывает опции и атрибуты умеет вводить логин и пароль где необходимо искать и использовать прокси автоматически распределять товары по категориям по ключевым словам Ну и самое главное - короткие и доступные пониманию инструкции для разбора сайтов
       
      Что с ним делать? Сначала установить:
      Разархивировать в папку магазина (что бы parsemx оказалась в корне). Установить права для папки parsemx и всех её файлов на запись (chmod 777) Если у вас установлен vQmod, то ParseMX появится в меню Каталог.
      Если нет, то для управления парсером заходите на http://ваш_магазин.ru/parsemx (предварительно залогинившись в админку).
      Что дальше?
      Что же, заходим в парсер и видим там в качестве донора магазин books.devs.mx. На нём можно потестировать, как работает автоматический парсинг. Также можно пробовать менять его инструкцию и смотреть на результат.
      Наигравшись, приступаем к тому, ради вы его скачали - к "щупанью" своего донора. Создаем нового донора - и вводим там интересующий сайт.
       
      Одна лицензия включает право парсить одного донора в ваш магазин. Для каждого донора нужна отдельная лицензия. После покупки напишите на max@bukrek.net адрес вашего магазина и донора.
      Внимание! В связи с очень большой загрузкой, техническая и информационная поддержка осуществляется только для клиентов с активной лицензией. Для остальных могу предложить только консультации вида это можно сделать после покупки лицензии / это нельзя сделать / это можно сделать только в рамках настройки "под ключ".
      Автор MaxD Добавлен 26.11.2012 Категория Прочее Работает на OpenCart Системные требования Работает на ocStore Сайт разработчика Работает на OpenCart.Pro, ocShop Старая цена Метод активации Ioncube Loader  
  • Последние посетители   0 пользователей онлайн

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