Проблема: - calculate_total() пытался автоматически обрабатывать переплату - Это приводило к дублированию логики и сложной отладке - Нарушался принцип единственной ответственности Решение: - Удалена автоматическая обработка переплаты из Order.calculate_total() - Теперь calculate_total() ТОЛЬКО считает сумму - всё - Переплата обрабатывается ТОЛЬКО в TransactionService при создании платежей/возвратов - Добавлено предупреждение в UI о переплате с инструкцией Как работает теперь: 1. При оплате - TransactionService автоматически вызывает add_overpayment() 2. При изменении товаров - calculate_total() только пересчитывает сумму 3. Если появилась переплата - оператор видит предупреждение 4. Оператор вручную создаёт возврат в кошелёк через форму Преимущества: - Одно место ответственности за переплаты - Прозрачность для оператора - Нет скрытых автоматизмов - Легко обслуживать и отлаживать - Стандартный подход для e-commerce
16 KiB
16 KiB