# 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", "Отредактировано" DEFECTIVE = "defective", "Брак / перезаказ" 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", "Чистка"