Здравствуйте, я хочу назначить несколько групп конкретному клиенту, например, «Rajat the customer», «Оптовая, розничная, электрическая». на самом деле я видел один и тот же поток в нескольких группах клиентов для каждого клиента, но это не помогает, есть ли какие-либо обновления, чтобы это произошло.
Я застрял, что мне делать, потому что нет расширения, имеющего такую же функциональность?
Я нашел решение,
Прежде всего, перейдите в базу данных и нажмите на eav_attribute
а затем найдите group_id
в поле кода атрибута и отредактируйте эту запись.
теперь Шаг 1: –
измените параметр frontend_input
с помощью select
to multiselect
.
шаг 2:-
измените backend_type
с static
на varchar
.
хотя это не стандартный способ, но это сработало для меня. 🙂
PS. Я использую версию сообщества magento 1.7.0.2.
Решение Раджата Моди работало довольно хорошо для меня, спасибо, но это нарушило отображение столбца групп в сетке клиентов, если выбрано более одного, плюс сломал способность фильтровать клиентов по группам.
Чтобы исправить это, создайте этот файл для использования в качестве рендерера для групп клиентов: /app/code/local/Mage/Adminhtml/Block/Customer/Renderer/Group.php
<?php class Mage_Adminhtml_Block_Customer_Renderer_Group extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract { public function render(Varien_Object $row) { $value = $row->getData($this->getColumn()->getIndex()); $groups = Mage::getModel('customer/group')->getCollection() ->addFieldToFilter('customer_group_id', array('in' => explode(',', $value))); $groupNames = array(); foreach ($groups as $group) { $groupNames[] = $group->getCustomerGroupCode(); } return implode(', ', $groupNames); } }
Затем переопределите /app/code/core/Mage/Adminhtml/Block/Customer/Grid.php enter code here
(скопируйте его в /app/code/local/Mage/Adminhtml/Block/Customer/Grid.php
)
В функции _prepareColumns()
измените это значение (вокруг строки 95):
$this->addColumn('group', array( 'header' => Mage::helper('customer')->__('Group'), 'width' => '100', 'index' => 'group_id', 'type' => 'options', 'options' => $groups, ));
к этому:
$this->addColumn('group_id', array( 'header' => Mage::helper('customer')->__('Group'), 'width' => '100', 'index' => 'group_id', 'type' => 'options', 'options' => $groups, 'renderer' => 'Mage_Adminhtml_Block_Customer_Renderer_Group', 'filter_condition_callback' => array($this, '_filterGroupCondition') ));
то он будет использовать этот класс для рендеринга групп в сетке.
Также в функции _prepareCollection()
вокруг строки 52 найдите ->addAttributeToSelect('group_id')
и добавьте после: ->addAttributeToSelect('customer_group_id')
Наличие нескольких групп на одного клиента также, по-видимому, мешает многоуровневому ценообразованию (когда продукт имеет разную цену в зависимости от группы клиентов). Чтобы исправить это на внешнем дисплее … Исправьте уровни ставок для продуктов на основе групп клиентов при расчете на интерфейсе:
В /app/code/core/Mage/Catalog/Model/Product/Type/Price.php Вокруг строки 138, FIND: $customerGroup = $this->_getCustomerGroupId($product);
ДОБАВИТЬ ПОСЛЕ: $customerGroups = explode(',',$customerGroup);
FIND: if ($groupPrice['cust_group'] == $customerGroup && $groupPrice['website_price'] < $matchedPrice) {
REPLACE WITH: if (in_array($groupPrice['cust_group'],$customerGroups) && $groupPrice['website_price'] < $matchedPrice) {
Сделайте то же самое в /app/code/core/Mage/Bundle/Model/Product/Price.php, если вы используете пакеты.
У меня еще нет исправления для отображения цены на уровне группы клиентов при создании заказа или переупорядочения с панели управления бэкэнд – они просто показывают стандартные цены на товары.
Наконец, когда мы все это mgnt_catalog_product_entity_group_price
, у нас были некоторые экземпляры, где mgnt_catalog_product_entity_group_price
и я до сих пор не знаю, почему это произошло, поэтому обязательно делайте резервные копии. Для этой таблицы я восстановил ее из резервной копии SQL, но повторное индексирование и, возможно, сброс кеша Magento также часто требуется при входе в этот материал.
Когда вы делаете такие вещи, как поиск клиентов по группам программно в своих собственных сценариях или модулях, вам, возможно, придется принять во внимание, что теперь это мультиселекция, например:
$allowedGroups = array( array( "finset" => array(10) ), array( "finset" => array(42) ) ); $collection = Mage::getModel('customer/customer') ->getCollection() ->addAttributeToSelect('*') ->addFieldToFilter('group_id', $allowedGroups);
Хотя я не уверен, что этот фрагмент кода будет работать до тех пор, пока у всех клиентов не будет строк в таблице mgnt_customer_entity_varchar
, где будет сохранено новое значение для групп клиентов, когда будет выбрано более одной группы. Только один идентификатор группы сохраняется в mgnt_customer_entity
поскольку это поле не является varchar.
По этой причине имейте в виду, что да, это может повлиять на модули, которые расширяют или используют функциональные возможности групп клиентов.