diff --git a/android/ozon/GetLastTransactionsScript.cpp b/android/ozon/GetLastTransactionsScript.cpp index 01a0670..4a87e6f 100644 --- a/android/ozon/GetLastTransactionsScript.cpp +++ b/android/ozon/GetLastTransactionsScript.cpp @@ -1,5 +1,7 @@ #include "GetLastTransactionsScript.h" +#include +#include #include #include #include @@ -466,6 +468,32 @@ void GetLastTransactionsScript::searchTransaction(const DeviceInfo &device, int TransactionDAO::insertTransactionIfNotExists(tx); } + // Отдаём результат в EventHandler через сигнал (как Dushanbe) + { + const QString finalExternalId = externalId.isEmpty() + ? QString("ozon_") + QString(dtStr).remove(',').trimmed().replace(' ', '_') + : externalId; + + QJsonObject txJson; + txJson["bank_transaction_id"] = finalExternalId; + txJson["amount"] = static_cast(parsed.amount * 100); + txJson["currency"] = 643; // RUB + txJson["transaction_type"] = "bank"; + QString participator = detail.phone; + if (participator.isEmpty()) participator = detail.name; + txJson["bank_participator_id"] = participator; + txJson["status"] = "completed"; + QJsonObject extraObj; + extraObj["fee"] = 0; + txJson["extra"] = extraObj; + txJson["created_at"] = txTime.isValid() + ? txTime.toUTC().toString(Qt::ISODate) : QJsonValue(QJsonValue::Null); + + qDebug() << "[FetchTransactions] Emitting parsed tx:" + << QJsonDocument(txJson).toJson(QJsonDocument::Compact); + emit transactionParsed(txJson); + } + if (!m_resultScreenshot.isEmpty()) emit screenshotReady(m_resultScreenshot); diff --git a/android/ozon/GetLastTransactionsScript.h b/android/ozon/GetLastTransactionsScript.h index 686889d..345dc86 100644 --- a/android/ozon/GetLastTransactionsScript.h +++ b/android/ozon/GetLastTransactionsScript.h @@ -1,6 +1,7 @@ #pragma once #include "CommonScript.h" #include +#include #include "db/DeviceInfo.h" #include "db/BankProfileInfo.h" @@ -9,6 +10,9 @@ namespace Ozon { class GetLastTransactionsScript final : public CommonScript { Q_OBJECT +signals: + void transactionParsed(const QJsonObject &tx); + public: explicit GetLastTransactionsScript( QString deviceId, diff --git a/services/EventHandler.cpp b/services/EventHandler.cpp index 835b778..8e84d52 100644 --- a/services/EventHandler.cpp +++ b/services/EventHandler.cpp @@ -454,6 +454,9 @@ void EventHandler::startThreadForTask(const MaterialInfo &account, const EventIn if (appCode == "ozon") { auto *w = new Ozon::GetLastTransactionsScript(adbSerial, appCode, 0, searchAmount, searchTime); setup(w); connectScreenshot(w); + connect(w, &Ozon::GetLastTransactionsScript::transactionParsed, this, + [this, key](const QJsonObject &tx) { m_parsedTxs[key] = tx; }, + Qt::DirectConnection); } else if (appCode == "black") setup(new Black::GetLastTransactionsScript(adbSerial, appCode));