Домен: Клиенты

Всё, что связано с клиентами: профили, контакты, карты лояльности.

ORM-модели

Client

Таблица client — основная запись о клиенте.

Поле

Тип

Описание

client_id

int PK

Первичный ключ

directory_registry_id

int FK

Ссылка на directory_registry (аудит)

client_tree_id

int FK

Папка клиентов (1=Физлица, 2=Юрлица, 3=VIP)

fullname

str(255)

Полное имя

shortname

str(30)

Краткое имя (первые 30 символов fullname)

birth

date

Дата рождения

sex

int

1=муж, 2=жен, 0=не указан

face

int

0=юрлицо, 1=физлицо/ИП

discount

float

Скидка на товары %

discount_work

float

Скидка на работы %

hidden

int

0=активен, 1=скрыт

notes

text

Произвольное примечание

from autodealer.domain.client import Client

client = Client.objects.get(client_id=920)
print(client.fullname, client.discount_work)

# Поиск по имени
results = Client.objects.filter(fullname__icontains="Иванов").all()

Contact

Таблица contact — телефоны и email клиентов/организаций.

Поле

Тип

Описание

contact_id

int PK

Первичный ключ

directory_registry_link_id

int FK

Ссылка на directory_registry владельца

mobile

str

Мобильный телефон

email

str

Email

default_contact

int

1=основной контакт

hidden

int

0=активен

ClientTree

Таблица client_tree — иерархия папок клиентов (Физлица / Юрлица / VIP).

from autodealer.domain.client_tree import ClientTree

folders = ClientTree.objects.filter(hidden=0).all()

CardInfo

Таблица card_info — дисконтные/бонусные карты клиентов.

Поле

Тип

Описание

card_info_id

int PK

Первичный ключ

directory_registry_link_id

int FK

Владелец карты (клиент)

number

str

Номер карты

hidden

int

0=активна

Высокоуровневые действия (actions.client)

create_client

autodealer.actions.client.create_client(fullname, *, phone=None, email=None, birth=None, sex=None, discount=0.0, discount_work=0.0, client_tree_id=1, created_by_user_id=1)

Создать клиента атомарно: DirectoryRegistryClientContact.

Параметры:
  • fullname (str) – Полное имя (обязательно).

  • phone (str) – Мобильный телефон.

  • email (str) – Email.

  • birth (date) – Дата рождения.

  • sex (int) – 1=муж, 2=жен.

  • discount (float) – Скидка на товары %.

  • discount_work (float) – Скидка на работы %.

  • client_tree_id (int) – Папка (1=Физлица, 2=Юрлица, 3=VIP).

Результат:

client_id.

Тип результата:

int

from autodealer.actions.client import create_client
from datetime import date

client_id = create_client(
    "Иванов Иван Иванович",
    phone="79991234567",
    birth=date(1990, 5, 15),
    discount_work=5.0,
)