#pragma once #include "CommonScript.h" #include #include #include #include #include "db/DeviceInfo.h" #include "db/BankProfileInfo.h" namespace Dushanbe { class GetLastTransactionsScript final : public CommonScript { Q_OBJECT public: explicit GetLastTransactionsScript( QString deviceId, QString appCode, QList> targets = {}, QString materialId = {}, QObject *parent = nullptr ); ~GetLastTransactionsScript() override; signals: // Испускается на КАЖДУЮ найденную транзакцию из списка целей. // EventHandler использует эти данные напрямую для task_result вместо // повторного чтения из БД. void transactionParsed(const QJsonObject &tx); protected: void doStart() override; private: enum class SearchResult { Found, NotFound, PastWindow }; // Поиск одной цели по сумме и времени на экране "Выписка". // Found — нашли, transactionParsed эмитирован. // NotFound — не нашли, список прокручен до maxScrolls. // PastWindow — список старше окна today+yesterday, retry бессмысленен. // Прерывание выставляет m_error="Interrupted" и возвращает NotFound. SearchResult searchOne(const DeviceInfo &device, int accountId, double searchAmount, const QDateTime &searchTime); // Возврат к началу списка "Выписка" между поисками целей. void scrollHistoryToTop(const DeviceInfo &device); QString m_deviceId; const QString m_appCode; // Список целей: пары (сумма в сомони со знаком, примерное время UTC). const QList> m_targets; const QString m_materialId; // UUID задачи (для сохранения дампов) QString m_error; }; } // namespace Dushanbe