diff --git a/frontend/src/BillingManager.jsx b/frontend/src/BillingManager.jsx index 4f8d075..08e7219 100644 --- a/frontend/src/BillingManager.jsx +++ b/frontend/src/BillingManager.jsx @@ -675,12 +675,38 @@ function BillingManager() { + @@ -738,6 +764,32 @@ function BillingManager() { История платежей +
+ +
@@ -749,6 +801,7 @@ function BillingManager() { Сумма Валюта Статус + Действия @@ -781,12 +834,53 @@ function BillingManager() { Оплачен + +
+ +
+ ))} {billingData.filter(item => item.lastPaymentDate && item.lastPaymentAmount).length === 0 && ( - - История платежей пуста + +
+ +
История платежей пуста
+
+ Добавьте первый платеж, чтобы начать отслеживание +
+ +
)} @@ -827,16 +921,30 @@ function BillingManager() { function AddBillingModal({ show, item, onItemChange, onSubmit, onClose }) { if (!show) return null; + const isHistoricalPayment = item.hostName && !item.lastPaymentDate; + const modalTitle = isHistoricalPayment ? 'Добавить исторический платеж' : 'Добавить новый элемент'; + return (
-
Добавить новый элемент
+
{modalTitle}
+ {isHistoricalPayment && ( +
+ + Исторический платеж: Вы добавляете платеж для существующего хоста "{item.hostName}". + Заполните информацию о платеже ниже. +
+ )}
+ {/* Основная информация */} +
+
Основная информация
+
+
+ + +
+ + {/* Текущие платежи */} +
+
Текущие платежи
+
onItemChange({ ...item, monthlyCost: parseFloat(e.target.value) || 0 })} />
+
+ + +
onItemChange({ ...item, nextPaymentDate: e.target.value })} />
+ + {/* Исторические платежи */} +
+
Исторические платежи
+
- + + onItemChange({ ...item, lastPaymentDate: e.target.value })} + /> +
+
+ + onItemChange({ ...item, lastPaymentAmount: parseFloat(e.target.value) || 0 })} + /> +
+
+
+
+ + onItemChange({ ...item, notes: e.target.value })} + placeholder="Дополнительная информация" + /> +
@@ -953,6 +1124,10 @@ function EditBillingModal({ show, item, onItemChange, onSubmit, onClose }) {
+ {/* Основная информация */} +
+
Основная информация
+
+
+ + +
+ + {/* Текущие платежи */} +
+
Текущие платежи
+
onItemChange({ ...item, monthlyCost: parseFloat(e.target.value) || 0 })} />
+
+ + +
onItemChange({ ...item, nextPaymentDate: e.target.value })} />
+ + {/* Исторические платежи */} +
+
Исторические платежи
+
- + + onItemChange({ ...item, lastPaymentDate: e.target.value })} + /> +
+
+ + onItemChange({ ...item, lastPaymentAmount: parseFloat(e.target.value) || 0 })} + /> +
+
+
+
+ + onItemChange({ ...item, notes: e.target.value })} + placeholder="Дополнительная информация" + /> +