Структура БД

Обновлено: 12.08.2026

CRM "Леотехно" — это система управления заказами, клиентами и товарами.

База данных содержит 15 основных таблиц, которые охватывают:

  • Пользователей и роли — авторизация и разграничение прав
  • Клиентов — контрагенты, адреса, телефоны, скидки
  • Товары — ассортимент, цены, остатки
  • Заказы — счета, позиции, статусы, история
  • Логи и уведомления — аудит, почта, уведомления
  • Настройки — конфигурация системы

Ниже представлено подробное описание каждой таблицы.


 

🔗 Связи между таблицами

users (1) ─────┐
               ├── clients (manager_id)
               ├── orders (created_by)
               ├── discount_history (changed_by)
               ├── order_status_history (changed_by)
               └── activity_logs (user_id)

clients (1) ───┬── client_phones
               ├── delivery_addresses
               ├── discount_history
               ├── notification_emails
               ├── carts
               └── orders

orders (1) ────┬── order_items
               ├── order_status_history
               ├── notification_log
               └── clients

products (1) ──┴── order_items
    

 

📄 Пользователи системы (users)

Таблица: users

Описание

Хранит данные о пользователях системы — администраторах, менеджерах и просмотрщиках.

Назначение

  • Аутентификация и авторизация
  • Разграничение прав доступа
  • Аудит действий

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
username varchar(50) Логин пользователя (уникальный)
email varchar(255) Email (уникальный)
password_hash varchar(255) Хеш пароля (bcrypt)
full_name varchar(255) Полное имя пользователя
role enum Роль: admin, manager, viewer
is_active tinyint(1) Активен (1) / Неактивен (0)
status enum active, inactive, deleted
last_login timestamp Время последнего входа
deleted_at timestamp Время удаления
deactivated_at timestamp Время деактивации
deactivated_by int(11) ID пользователя, кто деактивировал
deleted_by int(11) ID пользователя, кто удалил
created_at timestamp Дата создания
updated_at timestamp Дата обновления

Роли пользователей

Роль Права
admin Полный доступ ко всему
manager Управление клиентами, заказами, товарами
viewer Только просмотр

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
username username UNIQUE
email email UNIQUE
idx_username username INDEX
idx_email email INDEX
idx_role role INDEX
idx_status status INDEX
idx_is_active is_active INDEX
idx_deleted_at deleted_at INDEX

Связи

  • clients — закрепленные менеджеры (manager_id)
  • orders — созданные заказы (created_by)
  • discount_history — изменения скидок (changed_by)
  • order_status_history — изменения статусов (changed_by)
  • activity_logs — логи действий (user_id)

Пример запроса

-- Получить всех активных менеджеров
SELECT * FROM users 
WHERE role = 'manager' 
  AND status = 'active' 
  AND is_active = 1;
-- Последние 10 входов в систему
SELECT full_name, email, last_login 
FROM users 
WHERE last_login IS NOT NULL 
ORDER BY last_login DESC 
LIMIT 10;

Примечания

  • Пароли хешируются с помощью password_hash() (bcrypt)
  • Удаление — мягкое (status = 'deleted')
  • Деактивация — мягкая (status = 'inactive')
📄 Клиенты (clients)

2. clients — Клиенты


Таблица: clients

Описание

Хранит информацию о клиентах/контрагентах компании.

Назначение

  • Управление клиентской базой
  • Индивидуальные условия (скидки, отсрочка)
  • Авторизация клиентов в личном кабинете

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
company_name varchar(255) Название компании
tax_id varchar(50) УНП (ИНН)
legal_address text Юридический адрес
email varchar(255) Email (используется как логин)
contact_person varchar(255) Контактное лицо (ФИО)
contact_phone varchar(50) Контактный телефон
comment text Комментарий менеджера
manager_id int(11) Закрепленный менеджер (users.id)
password_hash varchar(255) Хеш пароля для входа
is_active tinyint(1) Активен (1) / Неактивен (0)
discount_percent decimal(5,2) Индивидуальная скидка (%)
payment_delay int(11) Индивидуальная отсрочка (дней)
created_by int(11) ID пользователя, создавшего клиента
created_at timestamp Дата создания
updated_at timestamp Дата обновления

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
email email UNIQUE
idx_company_name company_name INDEX
idx_email email INDEX
idx_tax_id tax_id INDEX
idx_discount discount_percent INDEX
idx_payment_delay payment_delay INDEX
idx_manager_id manager_id INDEX

Связи

  • users — закрепленный менеджер (многие к одному)
  • client_phones — телефоны (один ко многим)
  • delivery_addresses — адреса доставки (один ко многим)
  • orders — заказы (один ко многим)
  • discount_history — история скидок (один ко многим)
  • notification_emails — уведомления (один ко многим)
  • carts — корзины (один ко многим)

Пример запроса

-- Получить клиентов с наибольшей суммой заказов
SELECT 
    c.company_name,
    COUNT(o.id) as orders_count,
    SUM(o.total_amount) as total_spent
FROM clients c
LEFT JOIN orders o ON c.id = o.client_id
WHERE o.status != 'cancelled' AND o.status != 'sent'
GROUP BY c.id
ORDER BY total_spent DESC
LIMIT 10;

Примечания

  • Клиенты могут входить в личный кабинет через email + password_hash
  • Скидка применяется автоматически при создании заказа
  • Если payment_delay не указан — используется значение из настроек
📄 Телефоны клиентов (client_phones)

3. client_phones — Телефоны клиентов


Таблица: client_phones

Описание

Хранит телефоны клиентов. Поддерживает несколько номеров на одного клиента.

Назначение

  • Хранение всех контактов клиента
  • Выбор основного номера
  • Типизация телефонов (рабочий, мобильный, домашний)

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
client_id int(11) ID клиента
phone varchar(20) Номер телефона
type enum Тип: work, mobile, home
is_primary tinyint(1) Основной телефон (1 — да)
created_at timestamp Дата создания

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_client client_id INDEX
idx_phone phone INDEX

Связи

  • clients — клиент (многие к одному)

Пример запроса

-- Получить все телефоны клиента
SELECT phone, type, is_primary 
FROM client_phones 
WHERE client_id = 2 
ORDER BY is_primary DESC, type;

Примечания

  • Если у клиента один телефон, он автоматически становится основным
  • При добавлении нового телефона можно указать is_primary = 1
📄 Адреса доставки (delivery_addresses)

4. delivery_addresses — Адреса доставки


Таблица: delivery_addresses

Описание

Хранит адреса доставки клиентов. Один клиент может иметь несколько адресов.

Назначение

  • Хранение всех адресов клиента
  • Выбор адреса при создании заказа
  • Активность/неактивность адресов

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
client_id int(11) ID клиента
address text Адрес доставки
contact_person varchar(255) Контактное лицо для адреса
contact_phone varchar(20) Телефон для адреса
is_primary tinyint(1) Основной адрес (1 — да)
is_active tinyint(1) Активен (1 — да)
created_at timestamp Дата создания

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_client client_id INDEX
idx_active is_active INDEX

Связи

  • clients — клиент (многие к одному)
  • orders — заказы (один ко многим) через delivery_address_id

Пример запроса

-- Получить все активные адреса клиента
SELECT address, contact_person, contact_phone 
FROM delivery_addresses 
WHERE client_id = 2 AND is_active = 1 
ORDER BY is_primary DESC;

Примечания

  • Адреса можно деактивировать (is_active = 0), чтобы не показывать в выборе
  • Основной адрес используется по умолчанию в заказах
📄 Товары (products)

5. products — Товары


Таблица: products

Описание

Хранит товары/продукцию компании (герметики, клеи и т.д.).

Назначение

  • Управление ассортиментом
  • Ценообразование
  • Учет остатков
  • Группировка товаров

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
product_group varchar(100) Группа товара
name varchar(255) Наименование
gtin varchar(20) Штрихкод (уникальный)
volume int(11) Объем (в мл или граммах)
unit varchar(50) Единица: мл, г, кг
per_box int(11) Количество в коробке
color varchar(50) Цвет (HEX или название)
price decimal(10,2) Цена с НДС
description_url varchar(500) Ссылка на описание товара
stock_quantity int(11) Остаток на складе
is_active tinyint(1) Активен (1 — да)
created_at timestamp Дата создания
updated_at timestamp Дата обновления

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
gtin gtin UNIQUE
idx_group product_group INDEX
idx_gtin gtin INDEX
idx_active is_active INDEX
idx_unit unit INDEX

Связи

  • order_items — позиции заказов (один ко многим)

Пример запроса

-- Товары с низким остатком (< 10)
SELECT 
    product_group,
    name,
    stock_quantity,
    price
FROM products
WHERE stock_quantity < 10 
  AND is_active = 1
ORDER BY stock_quantity ASC;
-- Топ-10 самых продаваемых товаров
SELECT 
    p.name,
    p.product_group,
    SUM(oi.quantity) as total_sold,
    p.price
FROM products p
JOIN order_items oi ON p.id = oi.product_id
JOIN orders o ON oi.order_id = o.id
WHERE o.status != 'cancelled'
GROUP BY p.id
ORDER BY total_sold DESC
LIMIT 10;

Примечания

  • Группы товаров: Полиуретаны, Гибридные (MS полимер), Силиконы, GOM Клея
  • Цена всегда указывается с НДС
  • stock_quantity обновляется автоматически при создании заказов
📄 Заказы/счета (orders)

6. orders — Заказы/счета


Таблица: orders

Описание

Хранит заказы/счета клиентов.

Назначение

  • Управление заказами
  • Формирование счетов
  • Отслеживание статусов
  • Расчет сумм со скидками

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
invoice_number varchar(50) Номер счета (уникальный)
client_id int(11) ID клиента
delivery_address_id int(11) Адрес доставки
order_date date Дата заказа
desired_delivery_date date Желаемая дата доставки
desired_delivery_time varchar(50) Желаемое время доставки
planned_delivery_date date Планируемая дата доставки
payment_delay int(11) Отсрочка платежа (дней)
status enum Статус заказа
subtotal decimal(12,2) Сумма до скидки
subtotal_original decimal(12,2) Исходная сумма без скидки
discount_percent decimal(5,2) Скидка (%)
discount_amount decimal(12,2) Сумма скидки
total_amount decimal(12,2) Итоговая сумма
vat_amount decimal(10,2) Сумма НДС
comment text Комментарий к заказу
manager_comment text Комментарий менеджера
created_by int(11) ID создателя заказа
created_at timestamp Дата создания
updated_at timestamp Дата обновления

Статусы заказов

Статус Описание
sent Счет отправлен клиенту
accepted Счет принят клиентом
planned Запланирована отгрузка
shipped Отгружен
cancelled Отменен

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
invoice_number invoice_number UNIQUE
idx_client client_id INDEX
idx_invoice invoice_number INDEX
idx_status status INDEX
idx_order_date order_date INDEX

Связи

  • clients — клиент (многие к одному)
  • delivery_addresses — адрес доставки (многие к одному)
  • order_items — позиции заказа (один ко многим)
  • order_status_history — история статусов (один ко многим)
  • notification_log — уведомления (один ко многим)

Пример запроса

-- Заказы за последние 30 дней
SELECT 
    invoice_number,
    order_date,
    status,
    total_amount
FROM orders
WHERE order_date >= CURDATE() - INTERVAL 30 DAY
ORDER BY order_date DESC;
-- Сумма заказов по статусам
SELECT 
    status,
    COUNT(*) as count,
    SUM(total_amount) as total
FROM orders
GROUP BY status;

Примечания

  • invoice_number генерируется автоматически: ORD-YYYYMM-XXXX
  • subtotal_original — сумма без скидки (для истории)
  • При обновлении скидки пересчитываются автоматически
📄 Позиции заказа (order_items)

7. order_items — Позиции заказа


Таблица: order_items

Описание

Хранит позиции заказа (товары, количество, цены).

Назначение

  • Детализация заказа
  • Фиксация цен на момент заказа
  • Расчет НДС по каждой позиции

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
order_id int(11) ID заказа
product_id int(11) ID товара
quantity int(11) Количество (> 0)
unit varchar(10) Единица измерения
price_at_time decimal(10,2) Цена с НДС на момент заказа
price_without_vat decimal(10,2) Цена без НДС
vat_amount decimal(10,2) НДС на единицу
total decimal(12,2) Сумма с НДС
total_without_vat decimal(10,2) Сумма без НДС
total_vat decimal(10,2) Сумма НДС
created_at timestamp Дата создания

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_order order_id INDEX
idx_product product_id INDEX

Связи

  • orders — заказ (многие к одному)
  • products — товар (многие к одному)

Пример запроса

-- Детали заказа с товарами
SELECT 
    o.invoice_number,
    p.name as product_name,
    oi.quantity,
    oi.price_at_time,
    oi.total
FROM orders o
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id
WHERE o.id = 1;

Примечания

  • Цены фиксируются на момент создания заказа
  • При изменении цены товара — старые заказы не пересчитываются
  • quantity проверяется на > 0 (CHECK constraint)
📄 История статусов (order_status_history)

8. order_status_history — История статусов


Таблица: order_status_history

Описание

Хранит историю изменения статусов заказов.

Назначение

  • Аудит изменений статусов
  • Отслеживание времени каждого статуса
  • Анализ цикла заказа

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
order_id int(11) ID заказа
old_status varchar(50) Старый статус
new_status varchar(50) Новый статус
changed_by int(11) ID пользователя, изменившего статус
comment text Комментарий к изменению
created_at timestamp Время изменения

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_order order_id INDEX
idx_created created_at INDEX

Связи

  • orders — заказ (многие к одному)
  • users — пользователь (многие к одному)

Пример запроса

-- Весь жизненный цикл заказа
SELECT 
    new_status,
    comment,
    created_at
FROM order_status_history
WHERE order_id = 1
ORDER BY created_at ASC;

Примечания

  • При создании заказа добавляется запись с new_status = 'sent'
  • Каждое изменение статуса логируется
  • old_status может быть NULL для первого статуса
📄 Корзины (carts)

9. carts — Корзины


Таблица: carts

Описание

Хранит корзины клиентов (временные данные).

Назначение

  • Сохранение товаров до оформления заказа
  • Поддержка сессий для неавторизованных пользователей
  • Восстановление корзины при возврате

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
session_id varchar(64) ID сессии (уникальный)
client_id int(11) ID клиента (если авторизован)
items longtext JSON Товары в корзине (JSON)
total decimal(12,2) Общая сумма
expires_at timestamp Время истечения
created_at timestamp Дата создания
updated_at timestamp Дата обновления

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
session_id session_id UNIQUE
idx_session session_id INDEX
idx_expires expires_at INDEX

Связи

  • clients — клиент (многие к одному)

Пример запроса

-- Очистить просроченные корзины
DELETE FROM carts WHERE expires_at < NOW();

Примечания

  • items — JSON-массив с товарами: [{"product_id": 1, "quantity": 2}]
  • expires_at — корзины автоматически удаляются через 7 дней
  • Для авторизованных клиентов корзина восстанавливается после входа
📄 История скидок (discount_history)

10. discount_history — История скидок


Таблица: discount_history

Описание

Хранит историю изменений скидок клиентов.

Назначение

  • Аудит изменений скидок
  • Отслеживание кто и когда менял скидку
  • Анализ динамики скидок

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
client_id int(11) ID клиента
old_discount decimal(5,2) Старая скидка (%)
new_discount decimal(5,2) Новая скидка (%)
changed_by int(11) ID пользователя, изменившего скидку
reason text Причина изменения
created_at timestamp Время изменения

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_client client_id INDEX
idx_created created_at INDEX

Связи

  • clients — клиент (многие к одному)
  • users — пользователь (многие к одному)

Пример запроса

-- История скидок клиента
SELECT 
    c.company_name,
    dh.old_discount,
    dh.new_discount,
    u.full_name as changed_by,
    dh.reason,
    dh.created_at
FROM discount_history dh
JOIN clients c ON dh.client_id = c.id
LEFT JOIN users u ON dh.changed_by = u.id
WHERE dh.client_id = 2
ORDER BY dh.created_at DESC;

Примечания

  • Записывается каждое изменение скидки
  • reason — свободное поле для комментария менеджера
📄 Лог активности (activity_logs)

11. activity_logs — Лог активности


Таблица: activity_logs

Описание

Хранит логи действий пользователей в системе.

Назначение

  • Аудит системы
  • Отслеживание изменений
  • Безопасность

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
user_id int(11) ID пользователя
action varchar(100) Действие
entity_type varchar(50) Тип сущности
entity_id int(11) ID сущности
old_values JSON Старые значения (JSON)
new_values JSON Новые значения (JSON)
ip_address varchar(45) IP-адрес
user_agent text User Agent
created_at timestamp Время действия

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_user user_id INDEX
idx_action action INDEX
idx_entity entity_type, entity_id INDEX
idx_created created_at INDEX

Связи

  • users — пользователь (многие к одному)

Пример запроса

-- Последние 20 действий в системе
SELECT 
    u.full_name,
    action,
    entity_type,
    entity_id,
    created_at
FROM activity_logs al
LEFT JOIN users u ON al.user_id = u.id
ORDER BY created_at DESC
LIMIT 20;

Примечания

  • Логируются все CRUD-операции
  • old_values и new_values — JSON для сравнения

IP и User Agent помогают в расследованиях инцидентов

📄 Email-уведомления (notification_emails)

12. notification_emails — Email-уведомления


Таблица: notification_emails

Описание

Хранит email-адреса для уведомлений.

Назначение

  • Рассылка уведомлений клиентам
  • Дополнительные email для копий
  • Управление подписками

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
client_id int(11) ID клиента (если привязан)
email varchar(255) Email-адрес
receive_notifications tinyint(1) Получать уведомления (1 — да)
is_primary tinyint(1) Основной email (1 — да)
is_active tinyint(1) Активен (1 — да)
created_at timestamp Дата создания
updated_at timestamp Дата обновления

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_client_email client_id, email UNIQUE
idx_client client_id INDEX
idx_email email INDEX

Связи

  • clients — клиент (многие к одному)

Пример запроса

-- Получить все активные email для уведомлений
SELECT email, is_primary 
FROM notification_emails 
WHERE receive_notifications = 1 
  AND is_active = 1
  AND (client_id = 2 OR client_id IS NULL);

Примечания

  • client_id = NULL — системные email (например, [email protected])
  • is_primary — основной email для связи
  • При отписке можно установить receive_notifications = 0
📄 Лог уведомлений (notification_log)

13. notification_log — Лог уведомлений


Таблица: notification_log

Описание

Хранит историю отправленных уведомлений (email, Telegram, системные).

Назначение

  • Отслеживание доставки уведомлений
  • Диагностика проблем с отправкой
  • Аудит коммуникаций с клиентами

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
order_id int(11) ID заказа
type varchar(50) Тип уведомления
status varchar(20) Статус отправки: success, failed, pending
created_at timestamp Время отправки

Типы уведомлений

Тип Описание
order_created Создан новый заказ
order_status_changed Изменен статус заказа
payment_reminder Напоминание об оплате
delivery_confirmation Подтверждение доставки

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
idx_order order_id INDEX

Связи

  • orders — заказ (многие к одному)

Пример запроса

-- Получить все уведомления по заказу
SELECT * FROM notification_log 
WHERE order_id = 1 
ORDER BY created_at DESC;

Примечания

  • status = 'success' — уведомление отправлено успешно
  • status = 'failed' — ошибка при отправке (лог для отладки)
  • status = 'pending' — в очереди на отправку
  • Лог хранится для аудита и диагностики проблем с почтой
📄 Права доступа для ролей пользователей (permissions)

14. permissions — Права доступа


Таблица: permissions

Описание

Хранит права доступа для ролей пользователей.

Назначение

  • Разграничение доступа к функционалу
  • Гибкая настройка прав для ролей
  • Аудит доступов

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
role varchar(50) Роль: admin, manager, viewer
permission varchar(100) Право (например, manage_users)
created_at timestamp Дата создания

Права доступа

Роль Права
admin Полный доступ: manage_users, manage_roles, manage_clients, manage_products, manage_orders, manage_settings, manage_discounts, view_reports
manager Ограниченный доступ: manage_clients, manage_products, manage_orders, manage_discounts, view_reports
viewer Только просмотр: view_orders

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
unique_permission role, permission UNIQUE
idx_role role INDEX

Связи

  • users — через поле role (логическая связь)

Пример запроса

-- Получить все права для роли admin
SELECT * FROM permissions WHERE role = 'admin';
-- Проверить, есть ли у менеджера право на управление клиентами
SELECT * FROM permissions 
WHERE role = 'manager' AND permission = 'manage_clients';

Примечания

  • Права назначаются через админку
  • При добавлении новой роли нужно явно указать права
  • Удаление права автоматически отключает функционал у всех пользователей этой роли
📄 Настройки системы (settings)

15. settings — Настройки системы


Таблица: settings

Описание

Хранит настройки системы в формате ключ-значение.

Назначение

  • Централизованное хранение конфигурации
  • Гибкое управление через админку
  • Поддержка разных типов данных

Структура

Поле Тип Обязательное Описание
id int(11) Первичный ключ
setting_key varchar(50) Ключ настройки (уникальный)
setting_value text Значение настройки
setting_type enum Тип: string, int, boolean, json
created_at timestamp Дата создания
updated_at timestamp Дата обновления

Основные настройки

Ключ Значение Тип Описание
theme light string Тема оформления
currency BYN string Валюта системы
vat_rate 20 int Ставка НДС (%)
vat_enabled 1 boolean Включен ли НДС
payment_delay 30 int Отсрочка по умолчанию (дней)
delivery_day Четверг string День доставки
main_email [email protected] string Основной email
extra_emails ["[email protected]"] json Дополнительные email
company_name ООО "ЛЕОТЕХНО" string Название компании
company_address 223021, РБ... string Адрес компании
company_phone +375 (44) 757-10-07 string Телефон компании
company_unp 692072247 string УНП компании
company_bank ЗАО "Статусбанк" string Банк
company_account BY05IRJS3012... string Расчетный счет
timezone Europe/Minsk string Часовой пояс
telegram_enabled 0 string Включен ли Telegram
order_conditions Условия заказа... string Условия заказа

Индексы

Имя Поля Тип
PRIMARY id PRIMARY
setting_key setting_key UNIQUE
idx_key setting_key INDEX

Пример запроса

-- Получить все настройки
SELECT * FROM settings;
-- Получить конкретную настройку
SELECT setting_value FROM settings WHERE setting_key = 'vat_rate';
-- Обновить настройку
UPDATE settings 
SET setting_value = '25', updated_at = NOW() 
WHERE setting_key = 'vat_rate';

Примечания

  • Добавление новых настроек происходит через админку
  • Тип json используется для хранения массивов
  • При изменении настройки обновляется updated_at
  • Настройки кешируются для быстрого доступа
📄 Полный список таблиц

🚀 Теперь полный список — 15 таблиц!

# Таблица Назначение
1 users Пользователи системы
2 clients Клиенты/контрагенты
3 client_phones Телефоны клиентов
4 delivery_addresses Адреса доставки
5 products Товары
6 orders Заказы/счета
7 order_items Позиции заказов
8 order_status_history История статусов
9 carts Корзины
10 discount_history История скидок
11 activity_logs Лог активности
12 notification_emails Email-уведомления
13 notification_log Лог уведомлений
14 permissions Права доступа
15 settings Настройки системы

Теперь полный комплект! 🎉