Feature: справочник Статусы заказов, поле Статус в заказе клиента, оформление в списке (зелёный/песочный)

Made-with: Cursor
This commit is contained in:
2026-02-26 16:44:39 +00:00
parent 9d1bfadb96
commit 29cf44e278
15 changed files with 151 additions and 4 deletions

View File

@@ -8,6 +8,7 @@ from .models import (
Employee,
CashAccount,
Product,
OrderStatus,
)
admin.site.register(Currency)
@@ -18,3 +19,4 @@ admin.site.register(Supplier)
admin.site.register(Employee)
admin.site.register(CashAccount)
admin.site.register(Product)
admin.site.register(OrderStatus)

View File

@@ -0,0 +1,24 @@
# Generated by Django 5.2.11 on 2026-02-26 16:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('references', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='OrderStatus',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Название')),
],
options={
'verbose_name': 'Статус заказа',
'verbose_name_plural': 'Статусы заказов',
},
),
]

View File

@@ -0,0 +1,24 @@
# Data migration: начальные статусы заказов
from django.db import migrations
def create_default_statuses(apps, schema_editor):
OrderStatus = apps.get_model("references", "OrderStatus")
for name in ["В работе", "Выполнено"]:
OrderStatus.objects.get_or_create(name=name)
def noop(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
("references", "0002_order_status"),
]
operations = [
migrations.RunPython(create_default_statuses, noop),
]

View File

@@ -99,3 +99,15 @@ class Product(models.Model):
def __str__(self):
return self.name
class OrderStatus(models.Model):
"""Статусы заказов."""
name = models.CharField("Название", max_length=100)
class Meta:
verbose_name = "Статус заказа"
verbose_name_plural = "Статусы заказов"
def __str__(self):
return self.name

View File

@@ -36,4 +36,8 @@ urlpatterns = [
path("products/create/", views.ProductCreate.as_view(), name="product_create"),
path("products/<int:pk>/edit/", views.ProductUpdate.as_view(), name="product_update"),
path("products/<int:pk>/delete/", views.ProductDelete.as_view(), name="product_delete"),
path("order-statuses/", views.OrderStatusList.as_view(), name="orderstatus_list"),
path("order-statuses/create/", views.OrderStatusCreate.as_view(), name="orderstatus_create"),
path("order-statuses/<int:pk>/edit/", views.OrderStatusUpdate.as_view(), name="orderstatus_update"),
path("order-statuses/<int:pk>/delete/", views.OrderStatusDelete.as_view(), name="orderstatus_delete"),
]

View File

@@ -17,6 +17,7 @@ from .models import (
Employee,
CashAccount,
Product,
OrderStatus,
)
logger = logging.getLogger(__name__)
@@ -129,3 +130,10 @@ ProductList, ProductCreate, ProductUpdate, ProductDelete = _ref_view(
"references:product_update", "references:product_delete",
"Товары", "Товар",
)
# Статусы заказов
OrderStatusList, OrderStatusCreate, OrderStatusUpdate, OrderStatusDelete = _ref_view(
OrderStatus, "references:orderstatus_list", "references:orderstatus_create",
"references:orderstatus_update", "references:orderstatus_delete",
"Статусы заказов", "Статус заказа",
)