#pragma once #include "CommonScript.h" #include #include #include #include #include "db/DeviceInfo.h" #include "db/BankProfileInfo.h" namespace Ozon { class GetLastTransactionsScript final : public CommonScript { Q_OBJECT signals: // Испускается на КАЖДУЮ найденную транзакцию из списка целей. void transactionParsed(const QJsonObject &tx); public: explicit GetLastTransactionsScript( QString deviceId, QString appCode, int maxCount = 0, QList> targets = {}, QString materialId = {}, QObject *parent = nullptr ); ~GetLastTransactionsScript() override; protected: void doStart() override; private: // Навигация до экрана "Операции", возвращает true если успешно bool navigateToTransactionList(const DeviceInfo &device, const BankProfileInfo &app); // Сканирование последних транзакций (для UI: 24ч или maxCount) void scanRecentTransactions(const DeviceInfo &device, int accountId); // Поиск одной конкретной транзакции по сумме и времени (FETCH_TRANSACTIONS). // Возвращает true и эмитит transactionParsed, если нашли; false — если нет. bool searchOne(const DeviceInfo &device, int accountId, double searchAmount, const QDateTime &searchTime); // Быстрый возврат к началу списка операций (между поисками целей) void scrollListToTop(const DeviceInfo &device); QString m_deviceId; const QString m_appCode; const int m_maxCount; // 0 = фильтр по 24ч, >0 = N последних // Список целей поиска: пары (сумма в рублях со знаком, примерное время UTC). // Пустой список → режим сканирования последних (scanRecentTransactions). const QList> m_targets; const QString m_materialId; // UUID задачи (для сохранения дампов) QString m_error; }; } // namespace Ozon