Added possibility for creating vouchers from other module.

master
Josef Rokos 8 years ago
parent 35696fbfea
commit d163a92293

@ -12,8 +12,16 @@
#include "voucheritem.h" #include "voucheritem.h"
#include <QtCore/qglobal.h>
#if defined(SHOP_LIBRARY)
# define SHOPSHARED_EXPORT Q_DECL_EXPORT
#else
# define SHOPSHARED_EXPORT Q_DECL_IMPORT
#endif
#pragma db object #pragma db object
class Voucher : public QObject class SHOPSHARED_EXPORT Voucher : public QObject
{ {
Q_OBJECT Q_OBJECT

@ -10,10 +10,18 @@
#include <enums.h> #include <enums.h>
#include <QtCore/qglobal.h>
#if defined(SHOP_LIBRARY)
# define SHOPSHARED_EXPORT Q_DECL_EXPORT
#else
# define SHOPSHARED_EXPORT Q_DECL_IMPORT
#endif
class Voucher; class Voucher;
#pragma db object #pragma db object
class VoucherItem : public QObject class SHOPSHARED_EXPORT VoucherItem : public QObject
{ {
Q_OBJECT Q_OBJECT

@ -4,11 +4,13 @@
#include <QDialog> #include <QDialog>
#include <QDecDouble.hh> #include <QDecDouble.hh>
#include "shop_global.h"
namespace Ui { namespace Ui {
class PayDialog; class PayDialog;
} }
class PayDialog : public QDialog class SHOPSHARED_EXPORT PayDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT

@ -4,9 +4,9 @@
#include "temporaryreceiptsaveform.h" #include "temporaryreceiptsaveform.h"
#include "receiptsaveform.h" #include "receiptsaveform.h"
#include "receiptloadform.h" #include "receiptloadform.h"
#include "paydialog.h"
#include "shopservice.h" #include "shopservice.h"
#include "receiptgenerator.h" #include "receiptgenerator.h"
#include "paydialog.h"
#include "paydvouchersdialog.h" #include "paydvouchersdialog.h"
#include "isellableservice.h" #include "isellableservice.h"
#include <QList> #include <QList>
@ -18,6 +18,46 @@
#include "shop-odb.hxx" #include "shop-odb.hxx"
void payVoucherFromUI(VoucherPtr voucher, PayDialog *dialog, ShopForm *form)
{
ShopService srv;
srv.pay(voucher);
voucher->setEetStatus(dialog->sendToEet() ? Voucher::EET_FOR_SEND : Voucher::EET_NOT_ENTERING);
srv.update(voucher);
QString eetMsg;
if (srv.isEetEnabled() && dialog->sendToEet())
{
bool eetRet = srv.processEet(voucher, eetMsg);
if (!eetRet)
{
QString errMsg = QObject::tr("EET communication error.\n");
if (!eetMsg.isEmpty())
{
errMsg += QObject::tr("Message from portal: ") + eetMsg + "\n";
}
errMsg += QObject::tr("Switch to offline?");
if (srv.isEetOnline() && QMessageBox::question(NULL, QObject::tr("EET error"), errMsg) == QMessageBox::Yes)
{
srv.setEetOnline(false);
if (form != NULL)
{
form->setEetStatusText(srv.isEetOnline() ? QObject::tr("<a href=\"#eet\">Online</a>") : QObject::tr("<a href=\"#eet\">Offline</a>"));
}
}
}
}
ReceiptGenerator generator;
generator.setVoucher(voucher);
generator.print();
}
ShopForm::ShopForm(QWidget *parent) : ShopForm::ShopForm(QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::ShopForm) ui(new Ui::ShopForm)
@ -172,6 +212,11 @@ void ShopForm::fillRaceiptCombo()
ui->receiptCombo->blockSignals(oldState); ui->receiptCombo->blockSignals(oldState);
} }
void ShopForm::setEetStatusText(const QString &statusText)
{
ui->lblEetState->setText(statusText);
}
void ShopForm::on_directSale_clicked() void ShopForm::on_directSale_clicked()
{ {
DirectSaleForm *form = new DirectSaleForm(this); DirectSaleForm *form = new DirectSaleForm(this);
@ -429,38 +474,7 @@ void ShopForm::on_payButton_clicked()
dialog->show(); dialog->show();
connect(dialog, &QDialog::accepted, [this, dialog](){ connect(dialog, &QDialog::accepted, [this, dialog](){
ShopService srv; payVoucherFromUI(m_voucher, dialog, this);
srv.pay(m_voucher);
m_voucher->setEetStatus(dialog->sendToEet() ? Voucher::EET_FOR_SEND : Voucher::EET_NOT_ENTERING);
srv.update(m_voucher);
QString eetMsg;
if (srv.isEetEnabled() && dialog->sendToEet())
{
bool eetRet = srv.processEet(m_voucher, eetMsg);
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);
ui->lblEetState->setText(srv.isEetOnline() ? tr("<a href=\"#eet\">Online</a>") : tr("<a href=\"#eet\">Offline</a>"));
}
}
}
ReceiptGenerator generator;
generator.setVoucher(m_voucher);
generator.print();
createEmptyVoucher(); createEmptyVoucher();
m_itemsModel->setData(m_voucher->items()); m_itemsModel->setData(m_voucher->items());

@ -23,6 +23,7 @@ public:
void loadLast(); void loadLast();
void loadButtons(); void loadButtons();
void fillRaceiptCombo(); void fillRaceiptCombo();
void setEetStatusText(const QString &statusText);
private slots: private slots:
void on_directSale_clicked(); void on_directSale_clicked();

@ -375,3 +375,14 @@ void ShopService::updateVoucher(VoucherPtr entity)
tr.commit(); tr.commit();
} }
void ShopService::eraseVoucher(VoucherPtr entity)
{
Transaction tr;
odb::database *db = Context::instance().db();
db->execute(QString("DELETE FROM VoucherItem WHERE voucher = %1").arg(entity->id()).toStdString());
db->erase(entity);
tr.commit();
}

@ -9,6 +9,11 @@
#include "data/shop-data.h" #include "data/shop-data.h"
#include "shopitem.h" #include "shopitem.h"
class PayDialog;
class ShopForm;
void payVoucherFromUI(VoucherPtr voucher, PayDialog *dialog, ShopForm *form = NULL);
class ShopService : public Service<Voucher> class ShopService : public Service<Voucher>
{ {
public: public:
@ -41,6 +46,7 @@ private:
public: public:
void saveVoucher(VoucherPtr entity); void saveVoucher(VoucherPtr entity);
void updateVoucher(VoucherPtr entity); void updateVoucher(VoucherPtr entity);
void eraseVoucher(VoucherPtr entity);
}; };
#endif // SHOPSERVICE_H #endif // SHOPSERVICE_H

Loading…
Cancel
Save