Бортовой журнал Ктулху

Дополнительные поля регистрации Prestashop

В процессе работы над интернет-магазином 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

 

Вот и все.

У кого получилось - хорошо, а у кого не получилось - за небольшое вознаграждение с удовольствием помогу.

Как меня найти