diff --git a/.gitignore b/.gitignore index 1b97c30..f40995f 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,5 @@ Makefile /.ninja_log /ARCDesktopProject_autogen/ /ARCDesktopProject +/Contents/ +/application.log diff --git a/android/rshb/GetLastDaysHistoryScript.cpp b/android/rshb/GetLastDaysHistoryScript.cpp index 1580baf..6272d11 100644 --- a/android/rshb/GetLastDaysHistoryScript.cpp +++ b/android/rshb/GetLastDaysHistoryScript.cpp @@ -86,7 +86,8 @@ QString formatPrice(const double value) { bool GetLastDaysHistoryScript::saveAndPostNewTransactionData( const AccountInfo &account, - const TransactionInfo &transaction + const TransactionInfo &transaction, + const TransactionStatus &status ) { TransactionInfo tr; tr.accountId = account.id; @@ -99,7 +100,7 @@ bool GetLastDaysHistoryScript::saveAndPostNewTransactionData( tr.fee = transaction.fee; tr.name = transaction.name; tr.bankTrExternalId = transaction.bankTrExternalId; - tr.status = TransactionStatus::Complete; + tr.status = status; tr.type = transaction.description.startsWith("Перевод") ? TransactionType::Phone : TransactionType::Card; tr.completeTime = DateUtils::getUtcNow(); tr.id = TransactionDAO::insertTransaction(tr); @@ -338,7 +339,7 @@ void GetLastDaysHistoryScript::doStart() { } } if (!updated) { - if (!saveAndPostNewTransactionData(m_account, transaction)) { + if (!saveAndPostNewTransactionData(m_account, transaction, TransactionStatus::Complete)) { qDebug() << "--- saveAndPostNewTransactionData failed"; } } @@ -348,11 +349,47 @@ void GetLastDaysHistoryScript::doStart() { // Если по карте, мы знаем ток дату + сумма } + Node waitTab = xmlScreenParser.findButtonNode("Ожидающие обработки", true); + if (!waitTab.isEmpty()) { + AdbUtils::makeTap(m_account.deviceId, waitTab.x(), waitTab.y()); + QThread::msleep(1000); + + QList parsedWaitTransactions = xmlScreenParser.parseTodayAndYesterdayReportHistory(); + for (const TransactionInfo &transaction: parsedWaitTransactions) { + QList localActualTransactions = TransactionDAO::getTransactionsWithinHours( + m_account.id, 48 + ); + for (const TransactionInfo &saved: localActualTransactions) { + if (saved.status != TransactionStatus::Wait) { + continue; + } + + QDate sDate = QDateTime::fromString(saved.bankTime, "dd.MM.yyyy HH:mm:ss").date(); + if (!sDate.isValid()) { + sDate = QDateTime::fromString(saved.bankTime, "dd.MM.yyyy").date(); + } + QDate pDate = QDateTime::fromString(transaction.bankTime, "dd.MM.yyyy HH:mm:ss").date(); + if (!pDate.isValid()) { + pDate = QDateTime::fromString(transaction.bankTime, "dd.MM.yyyy").date(); + } + if (saved.amount == transaction.amount && sDate == pDate) { + // одно и тоже + } else { + if (!saveAndPostNewTransactionData(m_account, transaction, TransactionStatus::Wait)) { + qDebug() << "--- saveAndPostNewTransactionData - Wait failed"; + } + } + } + } + } } } else { m_error = "GetLastDaysHistoryScript - home screen not found"; qWarning() << m_error; emit finishedWithResult(m_error); } + AdbUtils::goBack(m_account.deviceId); + AdbUtils::goBack(m_account.deviceId); + AdbUtils::goBack(m_account.deviceId); emit finishedWithResult(m_error); } diff --git a/android/rshb/GetLastDaysHistoryScript.h b/android/rshb/GetLastDaysHistoryScript.h index f298c66..12cc673 100644 --- a/android/rshb/GetLastDaysHistoryScript.h +++ b/android/rshb/GetLastDaysHistoryScript.h @@ -19,7 +19,11 @@ private: const AccountInfo m_account; QString m_error; - bool saveAndPostNewTransactionData(const AccountInfo &account, const TransactionInfo &transaction); + bool saveAndPostNewTransactionData( + const AccountInfo &account, + const TransactionInfo &transaction, + const TransactionStatus &status + ); bool updateAndPostTransactionData( const AccountInfo &account, diff --git a/android/rshb/HomeScreenScript.cpp b/android/rshb/HomeScreenScript.cpp index ff000b3..59e9113 100644 --- a/android/rshb/HomeScreenScript.cpp +++ b/android/rshb/HomeScreenScript.cpp @@ -9,8 +9,8 @@ #include "adb/AdbUtils.h" -HomeScreenScript::HomeScreenScript(const int transactionId, QObject *parent) - : QObject(parent), transactionId(transactionId) { +HomeScreenScript::HomeScreenScript(QObject *parent) + : QObject(parent) { } HomeScreenScript::~HomeScreenScript() = default; @@ -500,7 +500,6 @@ void HomeScreenScript::start() { // 2. Идем дальше - emit finished(); } diff --git a/android/rshb/HomeScreenScript.h b/android/rshb/HomeScreenScript.h index b0c8a51..5e06d42 100644 --- a/android/rshb/HomeScreenScript.h +++ b/android/rshb/HomeScreenScript.h @@ -9,7 +9,7 @@ class HomeScreenScript final : public QObject { Q_OBJECT public: - explicit HomeScreenScript(int transactionId, QObject *parent = nullptr); + explicit HomeScreenScript(QObject *parent = nullptr); ~HomeScreenScript() override; @@ -23,7 +23,6 @@ signals: private: bool m_running = true; - int transactionId; ScreenXmlParser xmlScreenParser; bool goToHomeScreen( diff --git a/assets/rshb/history_wait_complite.png b/assets/rshb/history_wait_complite.png new file mode 100644 index 0000000..1985154 Binary files /dev/null and b/assets/rshb/history_wait_complite.png differ diff --git a/assets/rshb/history_wait_complite.xml b/assets/rshb/history_wait_complite.xml new file mode 100644 index 0000000..481efae --- /dev/null +++ b/assets/rshb/history_wait_complite.xml @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/database/app_data.db b/database/app_data.db index 642bcc2..79ac493 100644 Binary files a/database/app_data.db and b/database/app_data.db differ