В процессе работы над интернет-магазином Prestashop возникла необходимость указывать данные для юридических лиц (ИНН, номер счета и т.д.). В стандартной поставке этого нет, есть платные модули.
Я опишу модификацию, при которой данные будут выводиться непосредственно на странице клиента в админке, насколько мне известно, сторонним модулем этого не обеспечить.
Чтобы свести к минимуму вмешательство в движок, используем для регистрации модуль быстрой регистрации expressorder.
Для примера, нужно добавить в регистрацию поле с ИНН.
Админка модуля.
expressorder.php — находим последнее поле '.$this->l('Mobile phone').', строка 132 делаем его копию и вставляем ниже, переименовываем eo_mobilephone_show, eo_mobilephone_required в eo_inn_required, eo_inn_show соответственно.
expressorder.tpl – не трогаем.
В админке появляются дополнительные поля.
Фронт модуля.
authentication.tpl – примерно строка 200 – {if $conf.eo_mobilephone_show} – копируем весь блок и вставляем ниже, переименовываем в {if $conf.eo_inn_show}.
authentication.php – строка после 132 примерно –
$customer->firstname = $addrFirstName;
$customer->lastname = $addrLastName;
$customer->birthday = date("Y-m-d", strtotime("-18 years"));
$customer->passwd = $passwd;
Добавляем что-то вроде
$customer->inn = $inn;
Не забываем в phpmyadmin в таблице customer создать поле inn.
classes/Address.php
После стр 96 добавить:
/** ИНН */
public $inn;
protected $fieldsSize – после 'dni' => 16 вставить 'inn' => 64
protected $fieldsValidate – в конец вставить что-то типа 'inn' => 'isGenericName'
public function getFields()
Копируем $fields['date_upd'] = pSQL($this->date_upd); и вставляем в конец, меняем на $fields['inn'] = pSQL($this->inn);
После этого в БД у меня добавляется значение ИНН.
Осталось его показать в админке.
AdminCustomers.php
Затем находим...
стр. 260
public function viewcustomer()
после 295-й строки
ИНН: '.$customer->inn.'
Правим classes/Customer.php
public static function getCustomers()
вставить в запрос после 'lastname' 'inn' .
SELECT 'id_customer', 'email', 'firstname', 'lastname', 'inn'
FROM ''._DB_PREFIX_.'customer'
ORDER BY 'id_customer' ASC');
Стр. 142 — вставить после $fields['deleted'] = (int)($this->deleted);
следующее:
$fields['inn'] = pSQL($this->i);
В функцию $fieldsValidate добавить в конец , 'inn' => 'isGenericName'
$fieldsSize — добавить в конец 'inn' => 64
Вот и все.
У кого получилось - хорошо, а у кого не получилось - за небольшое вознаграждение с удовольствием помогу.