Поле "закупочная цена" в админке

Автор baton94, 21 августа 2014, 22:22:06

« назад - далее »

baton94

Добрый день. Подскажите, пожалуйста, необходимо в 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"
Кто знает как исправить? Заранее спасибо!

Adik

$this->fields_list['wholesale_price'] = array(
'title' => $this->l('Wholesale price'),
'type' => 'price',
'align' => 'text-right',
'havingFilter' => true,
'orderby' => false,
'search' => false
);

Adik

Если не работает в
/override/controllers/admin/AdminProductsController.php
попробуйте добавить в
/controllers/admin/AdminProductsController.php

baton94

Все работает, огромное спасибо!

vit2010

Здравствуйте. Подскажите, как такое же изменение проделать в PS 1.7.8.
Не смог найти подобное в AdminProductsController.php.
Спасибо.

tigran

В PrestaShop 1.7.x.x система изменилась, теперь можно изменять существующие формы Symfony без переопределения шаблона.
Для этого нужно испольщовать хук action{controller_name}ListingFieldsModifier.
Для добавления поля в листинге товаров в админке hookActionAdminProductsListingFieldsModifier.

Adik

Цитата: vit2010 от 16 августа 2022, 13:00:03
Здравствуйте. Подскажите, как такое же изменение проделать в PS 1.7.8.
Не смог найти подобное в AdminProductsController.php.
Спасибо.
https://webkul.com/blog/modify-field-list-of-symfony-admin-controller-page-in-prestashop-1-7/
Вот тут написанно как добавить поле в админке.

vit2010

Добавление хука делается в базу через phpmyadmin?

vit2010

Цитата: Adik от 17 августа 2022, 10:43:55
Цитата: vit2010 от 16 августа 2022, 13:00:03
Здравствуйте. Подскажите, как такое же изменение проделать в 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)


tigran

Цитата: vit2010 от 17 августа 2022, 12:43:57
Добавление хука делается в базу через phpmyadmin?
Нет. Через модуль, можно через контроллер, можно класс переопределить.
Лучший вариант это в модуле.

Adik

Цитата: vit2010 от 17 августа 2022, 13:43:15
Цитата: Adik от 17 августа 2022, 10:43:55
Цитата: vit2010 от 16 августа 2022, 13:00:03
Здравствуйте. Подскажите, как такое же изменение проделать в 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 модули ДА
Отключить все переопределения ДА
Режим отладки ДА

vit2010

#11
Цитата: tigran от 17 августа 2022, 14:07:31
Цитата: vit2010 от 17 августа 2022, 12:43:57
Добавление хука делается в базу через phpmyadmin?
Нет. Через модуль, можно через контроллер, можно класс переопределить.
Лучший вариант это в модуле.
Извиняюсь, я абсолютный чайник видимо в этом направлении, ни один из вариантов мне не известен. Буду благодарен, если опишите хотя бы один из них, желательно самый простой или по подробнее.
Спасибо.

vit2010

Цитата: Adik от 17 августа 2022, 14:19:31
Цитата: vit2010 от 17 августа 2022, 13:43:15
Цитата: Adik от 17 августа 2022, 10:43:55
Цитата: vit2010 от 16 августа 2022, 13:00:03
Здравствуйте. Подскажите, как такое же изменение проделать в 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 модули ДА
Отключить все переопределения ДА
Режим отладки ДА
Ошибка не устранялась (конечно были вариации в тексте).
Снес все "левое", оставил только стандартный шаблон.
удалось получить первый скрин из этой инструкции, но дальше не продвинулся. Ну не понял совсем...

DarinSr

Для 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>
.......

vit2010

Добрый день.
Спасибо за вариант решения, отпишусь о проведении.