Автор Тема: Поле "закупочная цена" в админке  (Прочитано 1634 раз)

21 Август 2014, 22:22:06
  • Пользователь
  • **
  • Сообщений: 64
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день. Подскажите, пожалуйста, необходимо в prestashop 1.6 в разделе товары в админке сделать колонку "закупочная цена". На ps 1.5 прокатывал такой способ:

В файле override/controllers/admin/AdminProductsController.php:

<?php
class AdminProductsController extends AdminProductsControllerCore
{
public function 
__construct()
{
  
parent::__construct();
  
$this->fields_list['wholesale_price'] = array(
   
'title' => $this->l('Wholesale price'),
   
'width' => 90,
   
'type' => 'price',
   
'align' => 'right',
  );
  
}
}

Но в ps 1.6 выдает ошибку "Неверный SQL запрос Column 'wholesale_price' in field list is ambiguous"
Кто знает как исправить? Заранее спасибо!
22 Август 2014, 10:34:33
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
$this->fields_list['wholesale_price'] = array(
'title' => $this->l('Wholesale price'),
'type' => 'price',
'align' => 'text-right',
'havingFilter' => true,
'orderby' => false,
'search' => false
);
22 Август 2014, 10:35:53
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Если не работает в
/override/controllers/admin/AdminProductsController.php
попробуйте добавить в
/controllers/admin/AdminProductsController.php
25 Август 2014, 16:25:51
Ответ #3
  • Пользователь
  • **
  • Сообщений: 64
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все работает, огромное спасибо!
16 Август 2022, 13:00:03
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте. Подскажите, как такое же изменение проделать в PS 1.7.8.
Не смог найти подобное в AdminProductsController.php.
Спасибо.
17 Август 2022, 10:42:19
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В PrestaShop 1.7.x.x система изменилась, теперь можно изменять существующие формы Symfony без переопределения шаблона.
Для этого нужно испольщовать хук action{controller_name}ListingFieldsModifier.
Для добавления поля в листинге товаров в админке hookActionAdminProductsListingFieldsModifier.
17 Август 2022, 10:43:55
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте. Подскажите, как такое же изменение проделать в PS 1.7.8.
Не смог найти подобное в AdminProductsController.php.
Спасибо.
https://webkul.com/blog/modify-field-list-of-symfony-admin-controller-page-in-prestashop-1-7/
Вот тут написанно как добавить поле в админке.
17 Август 2022, 12:43:57
Ответ #7
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавление хука делается в базу через phpmyadmin?
17 Август 2022, 13:43:15
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте. Подскажите, как такое же изменение проделать в PS 1.7.8.
Не смог найти подобное в AdminProductsController.php.
Спасибо.
https://webkul.com/blog/modify-field-list-of-symfony-admin-controller-page-in-prestashop-1-7/
Вот тут написанно как добавить поле в админке.
Благодарю за ответ, но при включении режима отладки, при переходе в раздел списка товаров, выходит ошибка, возможно какой то установленный модуль связанный с корзиной выдает:
Symfony Exception

HTTP 500 Internal Server Error

Warning: Declaration of CartRule::checkValidity(Context $context, $alreadyInCart = false, $display_error = true, $check_carrier = true) should be compatible with CartRuleCore::checkValidity(Context $context, $alreadyInCart = false, $display_error = true, $check_carrier = true, $useOrderPrices = false)

17 Август 2022, 14:07:31
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Добавление хука делается в базу через phpmyadmin?
Нет. Через модуль, можно через контроллер, можно класс переопределить.
Лучший вариант это в модуле.
17 Август 2022, 14:19:31
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте. Подскажите, как такое же изменение проделать в PS 1.7.8.
Не смог найти подобное в AdminProductsController.php.
Спасибо.
https://webkul.com/blog/modify-field-list-of-symfony-admin-controller-page-in-prestashop-1-7/
Вот тут написанно как добавить поле в админке.
Благодарю за ответ, но при включении режима отладки, при переходе в раздел списка товаров, выходит ошибка, возможно какой то установленный модуль связанный с корзиной выдает:
Symfony Exception

HTTP 500 Internal Server Error

Warning: Declaration of CartRule::checkValidity(Context $context, $alreadyInCart = false, $display_error = true, $check_carrier = true) should be compatible with CartRuleCore::checkValidity(Context $context, $alreadyInCart = false, $display_error = true, $check_carrier = true, $useOrderPrices = false)
Можно времено отключить все переопределения. В адмике
Отключить не PrestaShop модули ДА
Отключить все переопределения ДА
Режим отладки ДА
17 Август 2022, 14:55:31
Ответ #11
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавление хука делается в базу через phpmyadmin?
Нет. Через модуль, можно через контроллер, можно класс переопределить.
Лучший вариант это в модуле.
Извиняюсь, я абсолютный чайник видимо в этом направлении, ни один из вариантов мне не известен. Буду благодарен, если опишите хотя бы один из них, желательно самый простой или по подробнее.
Спасибо.
17 Август 2022, 15:01:19
Ответ #12
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте. Подскажите, как такое же изменение проделать в PS 1.7.8.
Не смог найти подобное в AdminProductsController.php.
Спасибо.
https://webkul.com/blog/modify-field-list-of-symfony-admin-controller-page-in-prestashop-1-7/
Вот тут написанно как добавить поле в админке.
Благодарю за ответ, но при включении режима отладки, при переходе в раздел списка товаров, выходит ошибка, возможно какой то установленный модуль связанный с корзиной выдает:
Symfony Exception

HTTP 500 Internal Server Error

Warning: Declaration of CartRule::checkValidity(Context $context, $alreadyInCart = false, $display_error = true, $check_carrier = true) should be compatible with CartRuleCore::checkValidity(Context $context, $alreadyInCart = false, $display_error = true, $check_carrier = true, $useOrderPrices = false)
Можно времено отключить все переопределения. В адмике
Отключить не PrestaShop модули ДА
Отключить все переопределения ДА
Режим отладки ДА
Выполняю этот процесс не тестовой версии, выполнял все эти варианты:
Можно времено отключить все переопределения. В адмике
Отключить не PrestaShop модули ДА
Отключить все переопределения ДА
Режим отладки ДА
Ошибка не устранялась (конечно были вариации в тексте).
Снес все "левое", оставил только стандартный шаблон.
удалось получить первый скрин из этой инструкции, но дальше не продвинулся. Ну не понял совсем...
18 Август 2022, 11:36:16
Ответ #13
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для Prestashop 1.7.8 если не хотите переопределять классы и шаблоны в модуле, можете добавить показ поля в админке изменив файлы

/src/Adapter/Product/AdminProductDataProvider.php
public function getCatalogProductList(
...
$sqlSelect = [
            'id_product' => ['table' => 'p', 'field' => 'id_product', 'filtering' => ' %s '],
            'reference' => ['table' => 'p', 'field' => 'reference', 'filtering' => self::FILTERING_LIKE_BOTH],
            'price' => ['table' => 'sa', 'field' => 'price', 'filtering' => ' %s '],
/* Добавляем */
'wholesale_price' => ['table' => 'sa', 'field' => 'wholesale_price', 'filtering' => ' %s '],
/************/

/src/PrestaShopBundle/Resources/views/Admin/Product/CatalogPage/Lists/products_table.html.twig
............
          <th scope="col">
            {{ ps.sortable_column_header("Category"|trans({}, 'Admin.Catalog.Feature'), 'name_category', orderBy, sortOrder) }}
          </th>
{{* Добавляем*}}         
<th scope="col" class="text-center" style="width: 9%">
            {{ ps.sortable_column_header("Wholesale price"|trans({}, 'Admin.Catalog.Feature'), 'price', orderBy, sortOrder) }}
/th>
{{*******}}
          <th scope="col" class="text-center" style="width: 9%">
            {{ ps.sortable_column_header("Price (tax excl.)"|trans({}, 'Admin.Catalog.Feature'), 'price', orderBy, sortOrder) }}
          </th>
.........

/src/PrestaShopBundle/Resources/views/Admin/Product/CatalogPage/Lists/list.html.twig
.......
{{* Добавляем*}}
<td class="text-center">
            <a href="{{ product.url|default('') }}#tab-step2">{{ product.wholesale_price|default('N/A'|trans({}, 'Admin.Global')) }}</a>
</td>
{{*********}}
        <td class="text-center">
           <a href="{{ product.url|default('') }}#tab-step2">{{ product.price|default('N/A'|trans({}, 'Admin.Global')) }}</a>
        </td>
        <td class="text-center">
            <a href="{{ product.url|default('') }}#tab-step2">{{ product.price_final|default('N/A'|trans({}, 'Admin.Global')) }}</a>
        </td>
.......
18 Август 2022, 13:05:56
Ответ #14
  • Фрилансер
  • *
  • Сообщений: 112
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день.
Спасибо за вариант решения, отпишусь о проведении.