Files
octopus/TESTING_REPORT.md
Andrey Smakotin 6c8af5ab2c fix: Улучшения системы ценообразования комплектов
Исправлены 4 проблемы:
1. Расчёт цены первого товара - улучшена валидация в getProductPrice и calculateFinalPrice
2. Отображение actual_price в Select2 вместо обычной цены
3. Количество по умолчанию = 1 для новых форм компонентов
4. Auto-select текста при клике на поле количества для удобства редактирования

Изменённые файлы:
- products/forms.py: добавлен __init__ в KitItemForm для quantity.initial = 1
- products/templates/includes/select2-product-init.html: обновлена formatSelectResult
- products/templates/productkit_create.html: добавлен focus handler для auto-select
- products/templates/productkit_edit.html: добавлен focus handler для auto-select

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 19:04:03 +03:00

105 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Тестирование системы инвентаризации
## Статус: ✅ ВСЕ ТЕСТЫ ПРОЙДЕНЫ
### 1. FIFO Логика ✅
**Тест:** Создание 3 приходов с разными ценами и списание через FIFO
**Результат:**
- ✅ StockBatches создаются автоматически при Incoming (сигнал)
- ✅ Продажа автоматически применяет FIFO (сигнал)
- ✅ Распределение по партиям корректно: старые партии списываются первыми
- ✅ SaleBatchAllocation корректно отслеживают распределение
**Примеры:**
```
Приход 1: 10 шт @ 100
Приход 2: 15 шт @ 120
Приход 3: 20 шт @ 150
Продажа 1: 18 шт @ 250
→ Allocation: 10 (от batch1) + 8 (от batch2)
Продажа 2: 20 шт @ 250
→ Allocation: 7 (от batch2) + 13 (от batch3)
```
### 2. Сигналы на заказы ✅
**Тест:** Создание заказа, изменение статуса на "in_delivery"
**Результат:**
- ✅ Заказ создан и содержит товар
- ✅ При смене статуса на "in_delivery" автоматически создается Sale
- ✅ Sale автоматически обрабатывается с FIFO
- ✅ SaleBatchAllocation создаются автоматически
### 3. Инвентаризация (Reconciliation) ✅
**Тест:** Физический подсчёт с дефицитом
**Результат:**
- ✅ Inventory создаётся и принимает InventoryLines
- ✅ При завершении Inventory (status='completed') автоматически обрабатывается (сигнал)
- ✅ Дефицит (разница < 0) автоматически создает WriteOff по FIFO
- ✅ Stock коррегируется для совпадения с физическим подсчётом
**Пример:**
```
Система имела: 7 шт
Физический подсчёт: 5 шт
Разница: -2 шт
Результат:
→ WriteOff создан на 2 шт
→ Stock уменьшен до 5 шт
```
### 4. Django Admin ✅
**Проверено:**
- ✅ StockBatchAdmin показывает quantity с цветовой кодировкой:
- Красный (≤0)
- Оранжевый (<10)
- Зелёный (≥10)
- ✅ SaleAdmin показывает inline SaleBatchAllocations
- ✅ Статус обработки Sale отображается с визуальным индикатором
- ✅ WriteOffAdmin показывает причины списания
## Архитектура
### Модели
- **StockBatch**: Партия товара с FIFO датой создания
- **Incoming**: Приход → автоматически создает StockBatch (сигнал)
- **Sale**: Продажа → автоматически применяет FIFO (сигнал)
- **SaleBatchAllocation**: Отслеживание какие батчи использованы в продаже
- **Inventory/InventoryLine**: Физический подсчёт
- **WriteOff**: Списание при дефиците (автоматическое по FIFO)
- **Reservation**: Резервирование при создании заказа
### Сигналы (Автоматизация)
1. **create_stock_batch_on_incoming**: Создает StockBatch при Incoming
2. **process_sale_fifo**: Применяет FIFO при создании Sale
3. **create_sale_on_order_shipment**: Создает Sale при смене статуса заказа на "in_delivery"
4. **reserve_stock_on_order_create**: Резервирует товар при создании заказа
5. **process_inventory_reconciliation**: Обрабатывает инвентаризацию при завершении
## Исправленные ошибки
1. **Двойной вызов сигнала на Sale**: Использован `update()` вместо `save()` чтобы избежать повторного срабатывания
2. **WriteOff не создавался при инвентаризации**: Добавлен сигнал на Inventory
3. **StockBatch не создавались при Incoming**: Добавлен сигнал на Incoming
## Готовность к продакшену
✅ FIFO логика работает корректно
Все основные операции автоматизированы через сигналы
✅ Admin интерфейс полностью функционален
✅ Данные консистентны между таблицами
✅ Система многотенантная (работает в рамках каждого тенанта)
---
Дата тестирования: 2025-10-27