diff --git a/frontend/src/ASNsNewManager.jsx b/frontend/src/ASNsNewManager.jsx
index 421d3f2..b6ea9e7 100644
--- a/frontend/src/ASNsNewManager.jsx
+++ b/frontend/src/ASNsNewManager.jsx
@@ -217,7 +217,7 @@ function ASNsNewManager() {
{error}
- setError('')}>
+
)}
@@ -231,7 +231,7 @@ function ASNsNewManager() {
{success}
- setSuccess('')}>
+
)}
diff --git a/frontend/src/BillingManager.jsx b/frontend/src/BillingManager.jsx
index 89581d2..8dade77 100644
--- a/frontend/src/BillingManager.jsx
+++ b/frontend/src/BillingManager.jsx
@@ -55,6 +55,8 @@ function BillingManager() {
note: ''
});
const [editingPayment, setEditingPayment] = useState(null); // { serverId, index }
+ const [showDeletePaymentModal, setShowDeletePaymentModal] = useState(false);
+ const [paymentToDelete, setPaymentToDelete] = useState(null); // { serverId, index, data }
// Состояние для курсов валют
const [exchangeRates, setExchangeRates] = useState({
@@ -349,6 +351,36 @@ function BillingManager() {
}
}
+ // Удаление платежа из истории
+ const handleDeletePayment = () => {
+ if (!paymentToDelete || !paymentToDelete.serverId || paymentToDelete.index == null) {
+ setShowDeletePaymentModal(false);
+ return;
+ }
+ const { serverId, index } = paymentToDelete;
+ setBillingData(prev => prev.map(s => {
+ if (s.id !== serverId) return s;
+ const payments = Array.isArray(s.payments) ? [...s.payments] : [];
+ if (index >= 0 && index < payments.length) {
+ payments.splice(index, 1);
+ }
+ const last = payments
+ .slice()
+ .sort((a,b) => new Date(b.date) - new Date(a.date))[0];
+ return {
+ ...s,
+ payments,
+ lastPaymentDate: last?.date || '',
+ lastPaymentAmount: last?.amount || 0,
+ lastPaymentCurrency: last?.currency || s.monthlyCostCurrency || 'USD'
+ };
+ }));
+ setShowDeletePaymentModal(false);
+ setPaymentToDelete(null);
+ setSuccess('Платеж удалён');
+ setTimeout(() => setSuccess(''), 3000);
+ };
+
function getCountryFlag(countryRaw) {
if (!countryRaw) return '';
const value = String(countryRaw).trim();
@@ -893,7 +925,7 @@ function BillingManager() {
-
+
| Имя хостера |
@@ -954,6 +986,16 @@ function BillingManager() {
>
+
@@ -1086,6 +1128,41 @@ function BillingManager() {
}}
/>
)}
+
+ {/* Модалка удаления платежа */}
+ {showDeletePaymentModal && (
+
+
+
+
+
Удалить платеж
+
+
+
+
Вы уверены, что хотите удалить выбранный платеж?
+ {paymentToDelete && (
+
+
Сервер: {paymentToDelete.data?.server?.hostName}
+
Дата: {formatDate(paymentToDelete.data?.date)}
+
Сумма: {formatCurrency(paymentToDelete.data?.amount, paymentToDelete.data?.currency)}
+ {paymentToDelete.data?.note && (
+
Комментарий: {paymentToDelete.data?.note}
+ )}
+
+ )}
+
+
+
+
+
+
+
+
+ )}
);
}
diff --git a/frontend/src/DataManager.jsx b/frontend/src/DataManager.jsx
index d233f9d..206122c 100644
--- a/frontend/src/DataManager.jsx
+++ b/frontend/src/DataManager.jsx
@@ -190,7 +190,7 @@ function DataManager({ entityName, entityKey, placeholder }) {
{error}
- setError('')}>
+
)}
@@ -204,7 +204,7 @@ function DataManager({ entityName, entityKey, placeholder }) {
{success}
- setSuccess('')}>
+
)}
diff --git a/frontend/src/DomainsNewManager.jsx b/frontend/src/DomainsNewManager.jsx
index 3988aea..696a949 100644
--- a/frontend/src/DomainsNewManager.jsx
+++ b/frontend/src/DomainsNewManager.jsx
@@ -222,7 +222,7 @@ function DomainsNewManager() {
{error}
- setError('')}>
+
)}
@@ -236,7 +236,7 @@ function DomainsNewManager() {
{success}
- setSuccess('')}>
+
)}
diff --git a/frontend/src/IPRangesManager.jsx b/frontend/src/IPRangesManager.jsx
index 0716c11..1270fc0 100644
--- a/frontend/src/IPRangesManager.jsx
+++ b/frontend/src/IPRangesManager.jsx
@@ -232,7 +232,7 @@ function IPRangesManager() {
{error}
- setError('')}>
+
)}
@@ -246,7 +246,7 @@ function IPRangesManager() {
{success}
- setSuccess('')}>
+
)}
diff --git a/frontend/src/ServerManager.jsx b/frontend/src/ServerManager.jsx
index 4f7b7e5..d8338c5 100644
--- a/frontend/src/ServerManager.jsx
+++ b/frontend/src/ServerManager.jsx
@@ -428,7 +428,7 @@ function ServerManager() {
{error}
- setError('')}>
+
)}
@@ -442,7 +442,7 @@ function ServerManager() {
{success}
- setSuccess('')}>
+
)}
@@ -760,9 +760,9 @@ function ServerManager() {
Существующие связи ({connections.length})
-