Files
prodejna/shop/receiptsaveform.cpp
T

135 lines
4.0 KiB
C++
Raw Normal View History

2016-04-07 22:22:53 +02:00
#include "receiptsaveform.h"
#include "ui_receiptsaveform.h"
2016-06-03 15:55:21 +02:00
#include <QList>
#include <QCompleter>
#include <QSortFilterProxyModel>
#include <QPushButton>
2016-06-03 15:55:21 +02:00
#include <service.h>
#include <iplugin.h>
#include <addressbookservice.h>
#include <addressbookdata.h>
#include "data/voucher.h"
2016-07-06 21:37:46 +02:00
#include "shopservice.h"
2016-06-03 15:55:21 +02:00
#include "shop-odb.hxx"
2016-07-06 21:37:46 +02:00
ReceiptSaveForm::ReceiptSaveForm(QSharedPointer<Voucher> voucher, QWidget *parent) :
2016-04-07 22:22:53 +02:00
QDialog(parent),
ui(new Ui::ReceiptSaveForm)
{
ui->setupUi(this);
2016-06-03 15:55:21 +02:00
m_voucherModel = new AutoTableModel<Voucher>(this);
Service<Voucher> srv;
2016-07-06 21:37:46 +02:00
m_voucherModel->setData(srv.all(QString("status = %1").arg(QString::number(Voucher::NOT_PAID))));
2016-06-03 15:55:21 +02:00
m_voucherModel->setTranslations(Context::instance().plugin("SHOP")->translations());
ui->tabVouchers->setModel(m_voucherModel);
2016-07-25 22:41:39 +02:00
ui->tabVouchers->hideColumn(0);
ui->tabVouchers->hideColumn(1);
2016-06-03 15:55:21 +02:00
ui->tabVouchers->hideColumn(5);
ui->tabVouchers->hideColumn(6);
ui->tabVouchers->hideColumn(7);
ui->tabVouchers->hideColumn(8);
2016-07-25 22:41:39 +02:00
ui->tabVouchers->hideColumn(9);
2016-06-03 15:55:21 +02:00
ui->tabVouchers->hideColumn(10);
2016-07-25 22:41:39 +02:00
ui->tabVouchers->hideColumn(12);
ui->tabVouchers->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
ui->tabVouchers->setColumnWidth(3, 200);
ui->tabVouchers->setColumnWidth(4, 200);
2016-06-03 15:55:21 +02:00
connect(ui->tabVouchers->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](QModelIndex, QModelIndex){
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
});
connect(ui->name, &QLineEdit::textChanged, [this](QString text){
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!text.isEmpty());
});
2016-06-03 15:55:21 +02:00
AddressBookService srvAdb;
2016-07-25 22:41:39 +02:00
QList<ComboData> comboData;
foreach (QSharedPointer<AddressbookData> adb, srvAdb.all()) {
comboData << ComboData(adb);
}
m_voucher = voucher;
m_binder.setData(m_voucher.data());
m_binder.registerBinding(ui->contact, comboData);
2016-07-06 21:37:46 +02:00
m_binder.registerBinding(ui->name);
m_binder.registerBinding(ui->description);
2016-06-03 15:55:21 +02:00
m_binder.bindToUi();
ui->contact->completer()->setCompletionMode(QCompleter::PopupCompletion);
ui->contact->setCurrentIndex(-1);
m_saveAsNew = false;
ui->groupBox_2->setEnabled(false);
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
2016-04-07 22:22:53 +02:00
}
ReceiptSaveForm::~ReceiptSaveForm()
{
delete ui;
}
2016-06-03 15:55:21 +02:00
void ReceiptSaveForm::on_lineEdit_textChanged(const QString &text)
{
QSortFilterProxyModel proxy;
proxy.setSourceModel(m_voucherModel);
2016-07-25 22:41:39 +02:00
proxy.setFilterKeyColumn(2);
2016-06-03 15:55:21 +02:00
proxy.setFilterFixedString(text);
QModelIndex matchingIndex = proxy.mapToSource(proxy.index(0,0));
if(matchingIndex.isValid()){
ui->tabVouchers->scrollTo(matchingIndex,QAbstractItemView::EnsureVisible);
ui->tabVouchers->setCurrentIndex(matchingIndex);
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
2016-06-03 15:55:21 +02:00
}
}
void ReceiptSaveForm::on_radioAdd_toggled(bool checked)
{
if (checked)
{
m_saveAsNew = false;
ui->groupBox_2->setEnabled(false);
ui->groupBox->setEnabled(true);
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ui->tabVouchers->currentIndex().isValid());
2016-06-03 15:55:21 +02:00
}
else
{
m_saveAsNew = true;
ui->groupBox_2->setEnabled(true);
ui->groupBox->setEnabled(false);
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!ui->name->text().isEmpty());
2016-06-03 15:55:21 +02:00
}
}
2016-07-06 22:52:34 +02:00
void ReceiptSaveForm::accept()
{
2016-07-25 22:41:39 +02:00
ShopService srv;
2016-07-06 22:52:34 +02:00
m_binder.bindToData();
2016-07-25 22:41:39 +02:00
if (m_saveAsNew)
{
m_voucher->setStatus(Voucher::NOT_PAID);
srv.updateVoucher(m_voucher);
}
else
{
QSharedPointer<Voucher> voucher = m_voucherModel->itemFromIndex(ui->tabVouchers->currentIndex());
foreach (QSharedPointer<VoucherItem> item, m_voucher->items()) {
voucher->addItem(item);
}
srv.calculate(voucher);
srv.updateVoucher(voucher);
srv.erase(m_voucher);
}
2016-07-06 22:52:34 +02:00
QDialog::accept();
}