Implemented "EET switch to offline" feature.

print
Josef Rokos 8 years ago
parent ec16d90fa4
commit 954f655363

@ -12,6 +12,7 @@
#include <QList> #include <QList>
#include <QSharedPointer> #include <QSharedPointer>
#include <QSortFilterProxyModel> #include <QSortFilterProxyModel>
#include <QMessageBox>
#include "shop-odb.hxx" #include "shop-odb.hxx"
@ -327,7 +328,19 @@ void ShopForm::on_payButton_clicked()
if (!eetRet) if (!eetRet)
{ {
QString errMsg = tr("EET communication error.\n");
if (!eetMsg.isEmpty())
{
errMsg += tr("Message from portal: ") + eetMsg + "\n";
}
errMsg += tr("Switch to offline?");
if (srv.isEetOnline() && QMessageBox::question(this, tr("EET error"), errMsg) == QMessageBox::Yes)
{
srv.setEetOnline(false);
}
} }
ReceiptGenerator generator; ReceiptGenerator generator;

@ -126,7 +126,7 @@ void ShopService::updateRelatedItem(VoucherItem* item, int countAdded)
} }
} }
bool ShopService::processEet(VoucherPtr voucher, QString message) bool ShopService::processEet(VoucherPtr voucher, QString &message)
{ {
if (voucher->eetStatus() == Voucher::EET_NOT_ENTERING) if (voucher->eetStatus() == Voucher::EET_NOT_ENTERING)
{ {
@ -153,8 +153,9 @@ bool ShopService::processEet(VoucherPtr voucher, QString message)
sender->setPlayground(settings->eetPlayground()); sender->setPlayground(settings->eetPlayground());
QEventLoop loop; QEventLoop loop;
bool replyFinished = false;
connect(sender, &EetSender::sendFinished, [this, voucher, sender, &loop](){ connect(sender, &EetSender::sendFinished, [this, voucher, sender, &loop, &replyFinished](){
Transaction tx; Transaction tx;
voucher->setEetBkp(sender->resut()->bkp()); voucher->setEetBkp(sender->resut()->bkp());
@ -176,10 +177,15 @@ bool ShopService::processEet(VoucherPtr voucher, QString message)
sender->deleteLater(); sender->deleteLater();
loop.quit(); loop.quit();
replyFinished = true;
}); });
sender->sendRequest(&request); sender->sendRequest(&request);
if (!replyFinished)
{
loop.exec(); loop.exec();
}
auto addMessage = [&message](EetMessage *msg, const QString &label){ auto addMessage = [&message](EetMessage *msg, const QString &label){
if (message.isEmpty()) if (message.isEmpty())
@ -206,6 +212,11 @@ void ShopService::setEetOnline(bool online)
EetSender::m_online = online; EetSender::m_online = online;
} }
bool ShopService::isEetOnline()
{
return EetSender::m_online;
}
void ShopService::moveItems(QList<VoucherItemPtr> items, VoucherPtr source, VoucherPtr target) void ShopService::moveItems(QList<VoucherItemPtr> items, VoucherPtr source, VoucherPtr target)
{ {
Transaction tx; Transaction tx;

@ -21,8 +21,9 @@ public:
void pay(VoucherPtr voucher); void pay(VoucherPtr voucher);
void moveItems(QList<VoucherItemPtr> items, VoucherPtr source, VoucherPtr target); void moveItems(QList<VoucherItemPtr> items, VoucherPtr source, VoucherPtr target);
void updateRelatedItem(VoucherItem* item, int countAdded); void updateRelatedItem(VoucherItem* item, int countAdded);
bool processEet(VoucherPtr voucher, QString message); bool processEet(VoucherPtr voucher, QString &message);
void setEetOnline(bool online); void setEetOnline(bool online);
bool isEetOnline();
QList<VoucherPtr> savedVouchers(); QList<VoucherPtr> savedVouchers();
QList<VoucherPtr> tempVouchers(); QList<VoucherPtr> tempVouchers();
QList<VoucherPtr> paiedVouchers(); QList<VoucherPtr> paiedVouchers();

Loading…
Cancel
Save