Заказ-наряды (autodealer.services)¶
Высокоуровневые функции для работы с заказ-нарядами. Каждая функция выполняет несколько INSERT-ов в одной транзакции — при ошибке полный rollback.
—
Создание заказ-наряда¶
- autodealer.services.create_service_order(*, client_id, items, document_out_tree_id, organization_id, client_car=None, date_start, date_finish, created_by_user_id=1, notes=None, service_order_suffix=None)¶
Создать заказ-наряд с услугами для клиента.
Цепочка записей в БД:
document_out ↓ document_registry ↓ document_out_header (prefix="АВТ", state=2 «Черновик») ↓ document_service_detail — только если передан client_car ↓ service_work × N — по одной записи на каждый ServiceOrderItem- Параметры:
client_id (int) – PK клиента (
client.client_id).items (list) – Список
ServiceOrderItem. Не может быть пустым.document_out_tree_id (int) – FK папки документов (
document_out_tree).organization_id (int) – FK организации-исполнителя.
client_car (int) –
model_link.model_link_id— привязка авто (опционально).date_start (datetime) – Дата/время начала (
document_registry).date_finish (datetime) – Дата/время окончания (
document_out.date_accept,document_out_header.date_create).created_by_user_id (int) –
users.user_idисполнителя. По умолчанию1.notes (str) – Примечание к заказ-наряду.
service_order_suffix (str) – Суффикс номера (напр.
"К"). Префикс всегда"АВТ".
- Результат:
document_out_idсозданного заказ-наряда.- Тип результата:
int
- Исключение:
ValueError – Если
itemsпустой.sqlalchemy.exc.DatabaseError – При FK-нарушении.
from datetime import datetime, timedelta from autodealer.services import create_service_order, ServiceOrderItem now = datetime.now() doc_id = create_service_order( client_id=920, organization_id=1, document_out_tree_id=3, date_start=now, date_finish=now + timedelta(hours=1), client_car=959, notes="Комплексная мойка", service_order_suffix="К", items=[ ServiceOrderItem("Комплекс", price=2300.0, time_value=90, external_id="821460"), ServiceOrderItem("Вторая Фаза", price=800.0, time_value=20, external_id="821462"), ], ) print(doc_id) # → document_out_id
- class autodealer.services.ServiceOrderItem¶
Строка услуги в заказ-наряде.
- name: str
Название работы (макс. 255 символов).
- price: float
Цена за единицу.
- time_value: float
Длительность в минутах.
- quantity: int
Количество. По умолчанию
1.
- external_id: str | None
Внешний ID (напр.
"821460"из RocketWash).
—
Чтение заказ-наряда¶
- autodealer.services.get_service_order(document_out_id)¶
Загрузить заказ-наряд со всеми строками услуг.
- Параметры:
document_out_id (int) – PK документа.
- Результат:
ServiceOrderилиNoneесли не найден.
from autodealer.services import get_service_order order = get_service_order(42) print(order.summa, order.date_accept) for item in order.items: print(item.name, item.price)
- class autodealer.services.ServiceOrder¶
Агрегат заказ-наряда.
- document_out_id: int
- client_id: int | None
- summa: float
- date_accept: datetime | None
- date_payment: datetime | None
- document_number: int | None
- date_create: datetime | None
- client_car: int | None
model_link_idпривязанного авто.
- items: list[ServiceOrderItem]
—
Создание из RocketWash¶
См. страницу Интеграция с RocketWash.
—
Константы¶
Константа |
Значение |
Описание |
|---|---|---|
|
|
Тип документа «Заказ-наряд» |
|
|
Префикс номера документа |
|
|
Статус при создании |
|
|
|