Features: - Created OrderStatus model for managing statuses per tenant - Added system-level statuses: draft, new, confirmed, in_assembly, in_delivery, completed, return, cancelled - Implemented CRUD views for managing order statuses - Created OrderStatusService with status transitions and business logic hooks - Updated Order model to use ForeignKey to OrderStatus - Added is_returned flag for tracking returned orders - Updated filters to work with new OrderStatus model - Created management command for status initialization - Added HTML templates for status list, form, and confirmation - Fixed views.py to use OrderStatus instead of removed STATUS_CHOICES 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
130 lines
5.9 KiB
HTML
130 lines
5.9 KiB
HTML
{% extends "base.html" %}
|
||
{% load static %}
|
||
|
||
{% block title %}Удалить статус{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="container-fluid mt-4">
|
||
<div class="row mb-4">
|
||
<div class="col-md-8">
|
||
<h1>Удалить статус</h1>
|
||
</div>
|
||
<div class="col-md-4 text-end">
|
||
<a href="{% url 'orders:status_list' %}" class="btn btn-secondary">
|
||
<i class="fas fa-arrow-left"></i> Вернуться к статусам
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<div class="card border-danger">
|
||
<div class="card-header bg-danger text-white">
|
||
<h5 class="mb-0">
|
||
<i class="fas fa-exclamation-triangle"></i> Подтвердите удаление
|
||
</h5>
|
||
</div>
|
||
<div class="card-body">
|
||
<div class="alert alert-warning mb-4">
|
||
<i class="fas fa-exclamation-circle"></i>
|
||
<strong>Внимание!</strong> Это действие необратимо.
|
||
</div>
|
||
|
||
<p>Вы собираетесь удалить статус:</p>
|
||
<div class="mb-3">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<h5>
|
||
<span style="display: inline-block; width: 20px; height: 20px; background-color: {{ object.color }}; border-radius: 3px; margin-right: 10px; vertical-align: middle;"></span>
|
||
{{ object.name }}
|
||
</h5>
|
||
<p class="text-muted mb-2">
|
||
<strong>Код:</strong> <code>{{ object.code }}</code>
|
||
</p>
|
||
{% if object.description %}
|
||
<p class="mb-0">
|
||
<strong>Описание:</strong><br>
|
||
{{ object.description }}
|
||
</p>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{% if orders_count > 0 %}
|
||
<div class="alert alert-danger">
|
||
<i class="fas fa-ban"></i>
|
||
<strong>Невозможно удалить!</strong>
|
||
В этом статусе находится {{ orders_count }} заказ(ов).
|
||
Пожалуйста, измените статус этих заказов перед удалением.
|
||
</div>
|
||
|
||
<a href="{% url 'orders:status_list' %}" class="btn btn-secondary">
|
||
<i class="fas fa-arrow-left"></i> Вернуться к статусам
|
||
</a>
|
||
{% else %}
|
||
<form method="post" class="mt-4">
|
||
{% csrf_token %}
|
||
<div class="d-flex gap-2">
|
||
<button type="submit" class="btn btn-danger">
|
||
<i class="fas fa-trash"></i> Да, удалить статус
|
||
</button>
|
||
<a href="{% url 'orders:status_list' %}" class="btn btn-secondary">
|
||
<i class="fas fa-times"></i> Отменить
|
||
</a>
|
||
</div>
|
||
</form>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-4">
|
||
<div class="card">
|
||
<div class="card-header bg-light">
|
||
<h6 class="mb-0">Информация о статусе</h6>
|
||
</div>
|
||
<div class="card-body">
|
||
<dl class="row mb-0">
|
||
<dt class="col-sm-5">Название:</dt>
|
||
<dd class="col-sm-7">{{ object.name }}</dd>
|
||
|
||
<dt class="col-sm-5">Код:</dt>
|
||
<dd class="col-sm-7"><code>{{ object.code }}</code></dd>
|
||
|
||
<dt class="col-sm-5">Тип:</dt>
|
||
<dd class="col-sm-7">
|
||
{% if object.is_system %}
|
||
<span class="badge bg-info">Системный</span>
|
||
{% else %}
|
||
<span class="badge bg-success">Пользовательский</span>
|
||
{% endif %}
|
||
</dd>
|
||
|
||
<dt class="col-sm-5">Статус:</dt>
|
||
<dd class="col-sm-7">
|
||
{% if object.is_positive_end %}
|
||
<span class="badge bg-success">✓ Успешный</span>
|
||
{% elif object.is_negative_end %}
|
||
<span class="badge bg-danger">✗ Отрицательный</span>
|
||
{% else %}
|
||
<span class="badge bg-secondary">Промежуточный</span>
|
||
{% endif %}
|
||
</dd>
|
||
|
||
<dt class="col-sm-5">Заказов:</dt>
|
||
<dd class="col-sm-7"><span class="badge bg-light text-dark">{{ orders_count }}</span></dd>
|
||
|
||
<dt class="col-sm-5">Создано:</dt>
|
||
<dd class="col-sm-7"><small>{{ object.created_at|date:"d.m.Y H:i" }}</small></dd>
|
||
|
||
<dt class="col-sm-5">Изменено:</dt>
|
||
<dd class="col-sm-7"><small>{{ object.updated_at|date:"d.m.Y H:i" }}</small></dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endblock %}
|