80 lines
3.1 KiB
Python
80 lines
3.1 KiB
Python
# backend/procurement/constants.py
|
||
"""
|
||
Константы для модуля закупок и инвентаря.
|
||
"""
|
||
|
||
from django.db import models
|
||
|
||
|
||
class ProcurementStatus(models.TextChoices):
|
||
"""Статусы заявки на закупку."""
|
||
DRAFT = 'draft', 'Черновик'
|
||
WAITING = 'waiting', 'Ожидает'
|
||
PENDING = 'pending', 'На согласовании'
|
||
APPROVED = 'approved', 'Одобрено'
|
||
REJECTED = 'rejected', 'Отклонено'
|
||
IN_PROGRESS = 'in_progress', 'В работе'
|
||
COMPLETED = 'completed', 'Завершено'
|
||
CANCELLED = 'cancelled', 'Отменено'
|
||
|
||
|
||
class UrgencyLevel(models.TextChoices):
|
||
"""Уровень срочности заявки."""
|
||
LOW = 'low', 'Низкая'
|
||
MEDIUM = 'medium', 'Средняя'
|
||
HIGH = 'high', 'Высокая'
|
||
CRITICAL = 'critical', 'Критическая'
|
||
|
||
|
||
class ProcurementFulfillmentStatus(models.TextChoices):
|
||
"""Рабочий статус исполнения заявки по позициям."""
|
||
PENDING = 'pending', 'Ожидает обработки'
|
||
PARTIALLY_ORDERED = 'partially_ordered', 'Заказано частично'
|
||
ORDERED = 'ordered', 'Заказано'
|
||
PARTIALLY_RECEIVED = 'partially_received', 'Прибыл частично'
|
||
COMPLETED = 'completed', 'Выполнено'
|
||
ISSUES = 'issues', 'Выполнено с проблемами'
|
||
|
||
|
||
class ProcurementItemExecutionStatus(models.TextChoices):
|
||
"""Рабочий статус отдельной позиции заявки."""
|
||
PENDING = 'pending', 'Не выполнено'
|
||
ORDERED = 'ordered', 'Заказано'
|
||
REJECTED = 'rejected', 'Отказано'
|
||
RECEIVED = 'received', 'Получено'
|
||
COMPLETED_WITH_ISSUE = 'completed_with_issue', 'Выполнено с замечанием'
|
||
EDITED = 'edited', 'Отредактировано'
|
||
|
||
|
||
def get_default_approval_step_name(priority: int,
|
||
resolver_type: str | None = None) -> str:
|
||
if resolver_type == 'department_head':
|
||
return 'Руководитель отдела'
|
||
return f'Этап {priority}'
|
||
|
||
|
||
class ApprovalStatus(models.TextChoices):
|
||
"""Статус согласования."""
|
||
PENDING = 'pending', 'Ожидает решения'
|
||
APPROVED = 'approved', 'Одобрено'
|
||
REJECTED = 'rejected', 'Отклонено'
|
||
|
||
|
||
class EquipmentStatus(models.TextChoices):
|
||
"""Статус оборудования."""
|
||
AVAILABLE = 'available', 'Доступно'
|
||
IN_USE = 'in_use', 'В использовании'
|
||
MAINTENANCE = 'maintenance', 'На обслуживании'
|
||
REPAIR = 'repair', 'В ремонте'
|
||
RETIRED = 'retired', 'Списано'
|
||
LOST = 'lost', 'Утеряно'
|
||
|
||
|
||
class MaintenanceType(models.TextChoices):
|
||
"""Тип технического обслуживания."""
|
||
INSPECTION = 'inspection', 'Осмотр/проверка'
|
||
MAINTENANCE = 'maintenance', 'Плановое ТО'
|
||
REPAIR = 'repair', 'Ремонт'
|
||
UPGRADE = 'upgrade', 'Модернизация'
|
||
CLEANING = 'cleaning', 'Чистка'
|