feat: упростить создание заказов и рефакторинг единиц измерения
- Добавить inline-редактирование цен в списке товаров - Оптимизировать карточки товаров в POS-терминале - Рефакторинг моделей единиц измерения - Миграция unit -> base_unit в SalesUnit - Улучшить UI форм создания/редактирования товаров Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -333,10 +333,20 @@ class ProductImporter:
|
||||
if not unit:
|
||||
unit = 'шт'
|
||||
|
||||
# Валидация единицы измерения
|
||||
valid_units = [choice[0] for choice in Product.UNIT_CHOICES]
|
||||
if unit not in valid_units:
|
||||
unit = 'шт' # fallback
|
||||
# Находим единицу измерения в справочнике
|
||||
from products.models import UnitOfMeasure
|
||||
base_unit = UnitOfMeasure.objects.filter(code=unit, is_active=True).first()
|
||||
if not base_unit:
|
||||
# Пробуем найти по названию или короткому имени
|
||||
base_unit = UnitOfMeasure.objects.filter(
|
||||
Q(name__iexact=unit) | Q(short_name__iexact=unit),
|
||||
is_active=True
|
||||
).first()
|
||||
if not base_unit:
|
||||
# Fallback на штуку
|
||||
base_unit = UnitOfMeasure.objects.filter(code='шт').first()
|
||||
if not base_unit:
|
||||
base_unit = UnitOfMeasure.objects.first()
|
||||
|
||||
# Пытаемся найти существующего товара
|
||||
existing = None
|
||||
@@ -366,7 +376,7 @@ class ProductImporter:
|
||||
if short_description:
|
||||
existing.short_description = short_description
|
||||
if unit:
|
||||
existing.unit = unit
|
||||
existing.base_unit = base_unit
|
||||
|
||||
existing.price = price
|
||||
if cost_price is not None:
|
||||
@@ -406,7 +416,7 @@ class ProductImporter:
|
||||
sku=sku or None,
|
||||
description=description or "",
|
||||
short_description=short_description or "",
|
||||
unit=unit,
|
||||
base_unit=base_unit,
|
||||
price=price,
|
||||
cost_price=cost_price or 0, # Устанавливаем 0 вместо None (для CostPriceHistory)
|
||||
sale_price=sale_price,
|
||||
|
||||
Reference in New Issue
Block a user