Enhance account synchronization with optional tariff syncing

- Updated `syncAccount` function to accept options for selective synchronization.
- Modified `syncFromBillmanager` to handle new options for skipping tariff syncs.
- Adjusted `TariffsPage` to utilize the new option for syncing only tariffs.
- Removed unused tariff tracking from `VpsPage` and updated sync message logic accordingly.
This commit is contained in:
Denozordec
2026-03-17 23:52:25 +07:00
parent 0dd2f0d7fa
commit 9717b0156c
4 changed files with 11 additions and 9 deletions
+5 -2
View File
@@ -135,8 +135,11 @@ export async function bulkUpdateVps(ids, action, value) {
})
}
export async function syncAccount(accountId) {
return fetchApi(`/api/sync/${encodeURIComponent(accountId)}`, { method: 'POST' })
export async function syncAccount(accountId, opts = {}) {
return fetchApi(`/api/sync/${encodeURIComponent(accountId)}`, {
method: 'POST',
body: JSON.stringify(opts),
})
}
export async function fetchAccountBalance(accountId) {
+1 -1
View File
@@ -147,7 +147,7 @@ export function TariffsPage({ db, actions, settings, ratesData }) {
let lastError = null
for (const account of billmanagerAccounts) {
try {
const result = await syncAccount(account.id)
const result = await syncAccount(account.id, { onlyTariffs: true })
if (result.ok) {
totalTariffs += result.synced?.tariffsCount ?? 0
} else {
+2 -5
View File
@@ -328,7 +328,6 @@ export function VpsPage({ db, actions, settings, ratesData }) {
setSyncMessage(null)
let totalVps = 0
let totalPayments = 0
let totalTariffs = 0
let lastError = null
for (const account of billmanagerAccounts) {
try {
@@ -336,7 +335,6 @@ export function VpsPage({ db, actions, settings, ratesData }) {
if (result.ok) {
totalVps += result.synced?.vpsCount ?? 0
totalPayments += result.synced?.paymentsCount ?? 0
totalTariffs += result.synced?.tariffsCount ?? 0
} else {
lastError = result.error
}
@@ -344,16 +342,15 @@ export function VpsPage({ db, actions, settings, ratesData }) {
lastError = err.message
}
}
if (lastError && totalVps === 0 && totalPayments === 0 && totalTariffs === 0) {
if (lastError && totalVps === 0 && totalPayments === 0) {
setSyncMessage(lastError)
} else {
const parts = []
if (totalVps > 0) parts.push(`${totalVps} VPS`)
if (totalPayments > 0) parts.push(`${totalPayments} платежей`)
if (totalTariffs > 0) parts.push(`${totalTariffs} тарифов`)
setSyncMessage(`Синхронизировано: ${parts.join(', ')}${lastError ? `. Ошибки: ${lastError}` : ''}`)
}
if (totalVps > 0 || totalPayments > 0 || totalTariffs > 0) await actions.refreshData()
if (totalVps > 0 || totalPayments > 0) await actions.refreshData()
setSyncLoading(false)
}