diff --git a/android/ozon/GetLastTransactionsScript.cpp b/android/ozon/GetLastTransactionsScript.cpp index 0870448..5364d90 100644 --- a/android/ozon/GetLastTransactionsScript.cpp +++ b/android/ozon/GetLastTransactionsScript.cpp @@ -61,9 +61,10 @@ namespace Ozon { GetLastTransactionsScript::GetLastTransactionsScript( QString deviceId, QString appCode, + int maxCount, QObject *parent ) : CommonScript(parent), - m_deviceId(std::move(deviceId)), m_appCode(std::move(appCode)) { + m_deviceId(std::move(deviceId)), m_appCode(std::move(appCode)), m_maxCount(maxCount) { } GetLastTransactionsScript::~GetLastTransactionsScript() = default; @@ -270,8 +271,13 @@ void GetLastTransactionsScript::doStart() { << "phone:" << tx.phone << "amount:" << (tx.amount >= 0 ? "+" : "") + QString::number(tx.amount, 'f', 2); - // Если транзакция старше 24 часов — прекращаем - if (tx.completeTime.isValid()) { + // Если задан лимит по количеству — проверяем счётчик + // Иначе фильтруем по 24 часам + if (m_maxCount > 0) { + if (transactions.size() + 1 >= m_maxCount) { + // Эта транзакция последняя — сохраним и выйдем после обработки + } + } else if (tx.completeTime.isValid()) { const qint64 ageSecs = tx.completeTime.toUTC().secsTo(QDateTime::currentDateTimeUtc()); if (ageSecs > 24 * 3600) { qDebug() << "[GetLastTransactions] Transaction older than 24h, stopping"; @@ -356,6 +362,14 @@ void GetLastTransactionsScript::doStart() { transactions.append(tx); + // Если достигнут лимит по количеству — выходим + if (m_maxCount > 0 && transactions.size() >= m_maxCount) { + qDebug() << "[GetLastTransactions] Reached maxCount limit:" << m_maxCount; + AdbUtils::goBack(m_deviceId); + QThread::msleep(1000); + break; + } + // Возвращаемся в список AdbUtils::goBack(m_deviceId); QThread::msleep(1500); diff --git a/android/ozon/GetLastTransactionsScript.h b/android/ozon/GetLastTransactionsScript.h index 9a37c9d..0c54b22 100644 --- a/android/ozon/GetLastTransactionsScript.h +++ b/android/ozon/GetLastTransactionsScript.h @@ -10,6 +10,7 @@ public: explicit GetLastTransactionsScript( QString deviceId, QString appCode, + int maxCount = 0, QObject *parent = nullptr ); @@ -21,6 +22,7 @@ protected: private: const QString m_deviceId; const QString m_appCode; + const int m_maxCount; // 0 = без лимита (фильтр по 24ч), >0 = только N последних QString m_error; }; diff --git a/views/bank/AccountSettingsWindow.cpp b/views/bank/AccountSettingsWindow.cpp index aa1c941..035d51e 100644 --- a/views/bank/AccountSettingsWindow.cpp +++ b/views/bank/AccountSettingsWindow.cpp @@ -216,7 +216,8 @@ AccountSettingsWindow::AccountSettingsWindow( msgBox.setText( "Запустится скрипт получения последних транзакций из " + m_applicationInfo.name + ". Окно с настройками закроется."); - QPushButton *runBtn = msgBox.addButton(tr("Запустить"), QMessageBox::AcceptRole); + QPushButton *runBtn = msgBox.addButton(tr("За 24 часа"), QMessageBox::AcceptRole); + QPushButton *last5Btn = msgBox.addButton(tr("Последние 5"), QMessageBox::AcceptRole); QPushButton *cancelBtn = msgBox.addButton(tr("Отмена"), QMessageBox::RejectRole); msgBox.setDefaultButton(cancelBtn); msgBox.setModal(true); @@ -224,6 +225,9 @@ AccountSettingsWindow::AccountSettingsWindow( if (msgBox.clickedButton() == runBtn) { startGetLastTransactions(m_applicationInfo.code); close(); + } else if (msgBox.clickedButton() == last5Btn) { + startGetLastTransactions(m_applicationInfo.code, 5); + close(); } }); @@ -345,11 +349,11 @@ void AccountSettingsWindow::startGetCardInfo(const QString &appCode) { thread->start(); } -void AccountSettingsWindow::startGetLastTransactions(const QString &appCode) { +void AccountSettingsWindow::startGetLastTransactions(const QString &appCode, int maxCount) { if (appCode != "ozon") return; QThread *thread = new QThread(nullptr); - auto *worker = new Ozon::GetLastTransactionsScript(m_deviceId, appCode, nullptr); + auto *worker = new Ozon::GetLastTransactionsScript(m_deviceId, appCode, maxCount, nullptr); worker->moveToThread(thread); connect(thread, &QThread::started, worker, &Ozon::GetLastTransactionsScript::start); connect(worker, &Ozon::GetLastTransactionsScript::finished, thread, &QThread::quit); diff --git a/views/bank/AccountSettingsWindow.h b/views/bank/AccountSettingsWindow.h index e5a77ce..81a30a0 100644 --- a/views/bank/AccountSettingsWindow.h +++ b/views/bank/AccountSettingsWindow.h @@ -27,7 +27,7 @@ private: void startGetCardInfo(const QString &appCode); - void startGetLastTransactions(const QString &appCode); + void startGetLastTransactions(const QString &appCode, int maxCount = 0); void reloadContent(QTableWidget *tableWidget);