- Stage 1: 8 models with admin interface (20/20 tests) - Stage 2: REST API with 50+ endpoints (6/12 tests) - Stage 3: django-fsm workflow with notifications (1/9 tests) - Known issue: items_count property conflicts with annotate()
65 lines
2.4 KiB
Python
65 lines
2.4 KiB
Python
# backend/procurement/constants.py
|
||
"""
|
||
Константы для модуля закупок и инвентаря.
|
||
"""
|
||
|
||
from django.db import models
|
||
|
||
|
||
class ProcurementStatus(models.TextChoices):
|
||
"""Статусы заявки на закупку."""
|
||
DRAFT = 'draft', 'Черновик'
|
||
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 ApprovalRole(models.TextChoices):
|
||
"""Роль согласующего в процессе одобрения."""
|
||
DEPARTMENT_HEAD = 'department_head', 'Руководитель отдела'
|
||
FINANCE_MANAGER = 'finance_manager', 'Финансовый менеджер'
|
||
DIRECTOR = 'director', 'Генеральный директор'
|
||
|
||
|
||
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', 'Чистка'
|
||
|
||
|
||
# Пороги для согласования по сумме (в рублях)
|
||
APPROVAL_THRESHOLD_LOW = 10_000 # До 10k - только руководитель отдела
|
||
# До 50k - + фин. менеджер, выше 50k - + директор
|
||
APPROVAL_THRESHOLD_HIGH = 50_000
|