This commit is contained in:
2017-02-17 15:21:57 +01:00
19 changed files with 781 additions and 48 deletions
+11
View File
@@ -28,6 +28,7 @@ ReceiptLoadForm::ReceiptLoadForm(QWidget *parent) :
ui->tabVouchers->setColumnWidth(2, 200);
m_itemModel = new AutoTableModel<VoucherItem>(this);
m_itemModel->setCheckboxSelect(true);
ui->tabItems->setModel(m_itemModel);
connect(ui->tabVouchers->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](const QModelIndex &current, QModelIndex){
@@ -43,6 +44,16 @@ ReceiptLoadForm::~ReceiptLoadForm()
delete ui;
}
QList<VoucherItemPtr> ReceiptLoadForm::selectedItems()
{
return m_itemModel->selectedItems();
}
VoucherPtr ReceiptLoadForm::selectedVoucher()
{
return m_voucherModel->itemFromIndex(ui->tabVouchers->currentIndex());
}
void ReceiptLoadForm::on_lineEdit_textChanged(const QString &text)
{
QSortFilterProxyModel proxy;
+2
View File
@@ -16,6 +16,8 @@ class ReceiptLoadForm : public QDialog
public:
explicit ReceiptLoadForm(QWidget *parent = 0);
~ReceiptLoadForm();
QList<VoucherItemPtr> selectedItems();
VoucherPtr selectedVoucher();
private slots:
void on_lineEdit_textChanged(const QString &text);
+1
View File
@@ -57,6 +57,7 @@ CREATE TABLE \"Voucher\" (
"translations" : {
"CZ" : {
"name" : "Název",
"code" : "Kod",
"count" : "Počet",
"unitPrice" : "Jednotková cena",
"vatRate" : "Procento DPH",
+22 -2
View File
@@ -62,6 +62,7 @@ void ShopForm::loadLast()
if (m_commodityModel == NULL)
{
m_commodityModel = new AutoTableModel<ShopItem>(this);
m_commodityModel->setTranslations(Context::instance().plugin("SHOP")->translations());
ui->commodityTable->setModel(m_commodityModel);
connect(ui->commodityTable->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](const QModelIndex &current, const QModelIndex &){
@@ -70,6 +71,8 @@ void ShopForm::loadLast()
}
m_commodityModel->setData(srv.allSellableItems());
ui->commodityTable->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
ui->commodityTable->setColumnHidden(3, true);
}
void ShopForm::fillRaceiptCombo()
@@ -132,10 +135,27 @@ void ShopForm::on_loadButton_clicked()
{
ReceiptLoadForm *form = new ReceiptLoadForm(this);
form->setAttribute(Qt::WA_DeleteOnClose);
connect(form, &QDialog::accepted, [this, form](){
ShopService srv;
if (m_voucher.isNull())
{
m_voucher = srv.createVoucher();
}
srv.moveItems(form->selectedItems(), form->selectedVoucher(), this->m_voucher);
m_itemsModel->setData(m_voucher->items());
connectItemSignals();
onCountChanged();
});
form->show();
}
void ShopForm::onCountChanged(int oldCount)
void ShopForm::onCountChanged(int oldCount/* = 0*/)
{
VoucherItem *item = qobject_cast<VoucherItem*>(sender());
if (item != NULL && item->count() == 0)
@@ -253,7 +273,7 @@ void ShopForm::addItem(QSharedPointer<IShopItem> item, int count)
srv.addShopItem(m_voucher, item, count);
this->m_itemsModel->addRow(m_voucher->items()[m_voucher->items().count() - 1]);
connect(m_voucher->items()[m_voucher->items().count() - 1].data(), SIGNAL(countChanged(int)), this, SLOT(onCountChanged(int)));
onCountChanged(0);
onCountChanged();
}
void ShopForm::on_receiptCombo_currentIndexChanged(int)
+1 -1
View File
@@ -32,7 +32,7 @@ private slots:
void on_loadButton_clicked();
void onCountChanged(int oldCount);
void onCountChanged(int oldCount = 0);
void on_receiptCombo_currentIndexChanged(int index);
+38 -12
View File
@@ -7,14 +7,14 @@ ShopService::ShopService()
{
}
QSharedPointer<Voucher> ShopService::createVoucher()
VoucherPtr ShopService::createVoucher()
{
QSharedPointer<Voucher> voucher(new Voucher);
voucher->setStatus(Voucher::NEW);
return voucher;
}
void ShopService::addShopItem(QSharedPointer<Voucher> voucher, QSharedPointer<IShopItem> item, int count)
void ShopService::addShopItem(VoucherPtr voucher, QSharedPointer<IShopItem> item, int count)
{
QSharedPointer<VoucherItem> vItem(new VoucherItem);
vItem->setName(item->name());
@@ -29,7 +29,7 @@ void ShopService::addShopItem(QSharedPointer<Voucher> voucher, QSharedPointer<IS
updateRelatedItem(vItem.data(), count);
}
void ShopService::calculate(QSharedPointer<Voucher> voucher)
void ShopService::calculate(VoucherPtr voucher)
{
QDecDouble total;
@@ -68,7 +68,7 @@ void ShopService::calculate(QSharedPointer<Voucher> voucher)
voucher->setTotalPrice(total);
}
void ShopService::calculateItem(QSharedPointer<VoucherItem> item)
void ShopService::calculateItem(VoucherItemPtr item)
{
loadSettings();
if (m_gs->vatPayer())
@@ -84,13 +84,13 @@ void ShopService::calculateItem(QSharedPointer<VoucherItem> item)
}
}
void ShopService::loadItems(QSharedPointer<Voucher> voucher)
void ShopService::loadItems(VoucherPtr voucher)
{
Service<VoucherItem> srv;
voucher->setItems(srv.all(QString("voucher = %1").arg(voucher->id())));
}
void ShopService::pay(QSharedPointer<Voucher> voucher)
void ShopService::pay(VoucherPtr voucher)
{
Transaction tx;
NumberSeriesService srvNs;
@@ -119,23 +119,49 @@ void ShopService::updateRelatedItem(VoucherItem* item, int countAdded)
selSrv->addedToVoucher(item->refId(), countAdded);
}
}
void ShopService::moveItems(QList<VoucherItemPtr> items, VoucherPtr source, VoucherPtr target)
{
Transaction tx;
QList<QSharedPointer<Voucher> > ShopService::savedVouchers()
if (target->status() == Voucher::NEW && target->id() == 0)
{
this->saveVoucher(target);
}
odb::database *db = Context::instance().db();
foreach (VoucherItemPtr item, items) {
QString sql = QString("update VoucherItem set voucher = %1 where id = %2").arg(QString::number(target->id()), QString::number(item->id()));
db->execute(sql.toStdString());
}
loadItems(source);
loadItems(target);
if (source->items().isEmpty())
{
erase(source);
}
tx.commit();
}
QList<VoucherPtr> ShopService::savedVouchers()
{
return all(QString("status = %1").arg(QString::number(Voucher::NOT_PAID)));
}
QList<QSharedPointer<Voucher> > ShopService::tempVouchers()
QList<VoucherPtr> ShopService::tempVouchers()
{
return all(QString("status = %1").arg(QString::number(Voucher::TEMPORARY)));
}
QList<QSharedPointer<Voucher> > ShopService::paiedVouchers()
QList<VoucherPtr> ShopService::paiedVouchers()
{
return all(QString("status = %1").arg(QString::number(Voucher::PAID)));
}
QList<QSharedPointer<ShopItem> > ShopService::allSellableItems()
QList<ShopItemPtr> ShopService::allSellableItems()
{
QList<QSharedPointer<ShopItem> > items;
foreach (IPlugin *plugin, Context::instance().plugins()) {
@@ -190,7 +216,7 @@ QDecDouble ShopService::vatRate(Enums::VatType vatType)
return vatRate;
}
void ShopService::saveVoucher(QSharedPointer<Voucher> entity)
void ShopService::saveVoucher(VoucherPtr entity)
{
Transaction tr;
odb::database *db = Context::instance().db();
@@ -205,7 +231,7 @@ void ShopService::saveVoucher(QSharedPointer<Voucher> entity)
tr.commit();
}
void ShopService::updateVoucher(QSharedPointer<Voucher> entity)
void ShopService::updateVoucher(VoucherPtr entity)
{
Transaction tr;
odb::database *db = Context::instance().db();
+13 -12
View File
@@ -13,17 +13,18 @@ class ShopService : public Service<Voucher>
{
public:
ShopService();
QSharedPointer<Voucher> createVoucher();
void addShopItem(QSharedPointer<Voucher> voucher, QSharedPointer<IShopItem> item, int count);
void calculate(QSharedPointer<Voucher> voucher);
void calculateItem(QSharedPointer<VoucherItem> item);
void loadItems(QSharedPointer<Voucher> voucher);
void pay(QSharedPointer<Voucher> voucher);
VoucherPtr createVoucher();
void addShopItem(VoucherPtr voucher, QSharedPointer<IShopItem> item, int count);
void calculate(VoucherPtr voucher);
void calculateItem(VoucherItemPtr item);
void loadItems(VoucherPtr voucher);
void pay(VoucherPtr voucher);
void moveItems(QList<VoucherItemPtr> items, VoucherPtr source, VoucherPtr target);
void updateRelatedItem(VoucherItem* item, int countAdded);
QList<QSharedPointer<Voucher> > savedVouchers();
QList<QSharedPointer<Voucher> > tempVouchers();
QList<QSharedPointer<Voucher> > paiedVouchers();
QList<QSharedPointer<ShopItem> > allSellableItems();
QList<VoucherPtr> savedVouchers();
QList<VoucherPtr> tempVouchers();
QList<VoucherPtr> paiedVouchers();
QList<ShopItemPtr> allSellableItems();
private:
QDecDouble includeVat(QDecDouble price, Enums::VatType vatType);
@@ -33,8 +34,8 @@ private:
QDecDouble vatRate(Enums::VatType vatType);
public:
void saveVoucher(QSharedPointer<Voucher> entity);
void updateVoucher(QSharedPointer<Voucher> entity);
void saveVoucher(VoucherPtr entity);
void updateVoucher(VoucherPtr entity);
};
#endif // SHOPSERVICE_H
+319
View File
@@ -0,0 +1,319 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs_CZ">
<context>
<name>DirectSaleForm</name>
<message>
<location filename="../directsaleform.ui" line="14"/>
<source>Form</source>
<translation>Zboží</translation>
</message>
<message>
<location filename="../directsaleform.ui" line="20"/>
<source>Commodity Name</source>
<translation>Název</translation>
</message>
<message>
<location filename="../directsaleform.ui" line="30"/>
<source>Price</source>
<translation>Cena</translation>
</message>
<message>
<location filename="../directsaleform.ui" line="44"/>
<source>Count</source>
<translation>Počet</translation>
</message>
<message>
<location filename="../directsaleform.ui" line="58"/>
<source>VAT rate</source>
<translation>Sazba DPH</translation>
</message>
<message>
<location filename="../directsaleform.cpp" line="17"/>
<source>None</source>
<translation>Žádná</translation>
</message>
<message>
<location filename="../directsaleform.cpp" line="18"/>
<source>High</source>
<translation>Vysoká</translation>
</message>
<message>
<location filename="../directsaleform.cpp" line="19"/>
<source>First Lower</source>
<translation>První snížená</translation>
</message>
<message>
<location filename="../directsaleform.cpp" line="20"/>
<source>Second Lower</source>
<translation>Druhá snížená</translation>
</message>
</context>
<context>
<name>PayDialog</name>
<message>
<location filename="../paydialog.ui" line="14"/>
<source>Recieve money</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydialog.ui" line="30"/>
<source>Total:</source>
<translation type="unfinished">Celkem:</translation>
</message>
<message>
<location filename="../paydialog.ui" line="44"/>
<location filename="../paydialog.ui" line="101"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydialog.ui" line="59"/>
<source>Recieved</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydialog.ui" line="89"/>
<source>Return</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PaydVouchersDialog</name>
<message>
<location filename="../paydvouchersdialog.ui" line="14"/>
<source>Paied vouchers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydvouchersdialog.ui" line="29"/>
<source>Print receipt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydvouchersdialog.ui" line="55"/>
<location filename="../paydvouchersdialog.cpp" line="51"/>
<source>Save receipt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydvouchersdialog.ui" line="58"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydvouchersdialog.ui" line="104"/>
<source>Items</source>
<translation type="unfinished">Položky</translation>
</message>
<message>
<location filename="../paydvouchersdialog.ui" line="137"/>
<source>Total:</source>
<translation type="unfinished">Celkem:</translation>
</message>
<message>
<location filename="../paydvouchersdialog.ui" line="157"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../paydvouchersdialog.cpp" line="51"/>
<source>Text files (*.txt)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ReceiptLoadForm</name>
<message>
<location filename="../receiptloadform.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../receiptloadform.ui" line="20"/>
<source>Receipts</source>
<translation>Účtenky</translation>
</message>
<message>
<location filename="../receiptloadform.ui" line="29"/>
<source>Search</source>
<translation>Hledat</translation>
</message>
<message>
<location filename="../receiptloadform.ui" line="42"/>
<source>Items</source>
<translation>Položky</translation>
</message>
</context>
<context>
<name>ReceiptSaveForm</name>
<message>
<location filename="../receiptsaveform.ui" line="33"/>
<source>Existing Receipts</source>
<translation>Přidat k již uložené</translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="39"/>
<source>Search</source>
<translation>Hledat</translation>
</message>
<message>
<source>GroupBox</source>
<translation type="vanished">Uložit novou</translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="14"/>
<source>Save receipt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="23"/>
<source>Add to existing</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="62"/>
<source>Save as new</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="69"/>
<source>New receipt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="78"/>
<source>Name</source>
<translation>Název</translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="88"/>
<source>Description</source>
<translation>Popis</translation>
</message>
<message>
<location filename="../receiptsaveform.ui" line="98"/>
<source>Search Contacts</source>
<translation>Vyhledat kontakt</translation>
</message>
</context>
<context>
<name>ShopForm</name>
<message>
<location filename="../shopform.ui" line="14"/>
<source>Form</source>
<translation></translation>
</message>
<message>
<location filename="../shopform.ui" line="50"/>
<source>Commodity</source>
<translation>Zboží</translation>
</message>
<message>
<location filename="../shopform.ui" line="73"/>
<source>Count</source>
<translation>Počet</translation>
</message>
<message>
<location filename="../shopform.ui" line="99"/>
<source>Add Item</source>
<translation>Přidat položku</translation>
</message>
<message>
<location filename="../shopform.ui" line="135"/>
<source>Direct Sale</source>
<translation>Přímý prodej</translation>
</message>
<message>
<location filename="../shopform.ui" line="148"/>
<source>Ctrl+D</source>
<translation></translation>
</message>
<message>
<location filename="../shopform.ui" line="221"/>
<source>Receipt</source>
<translation>Účtenka</translation>
</message>
<message>
<location filename="../shopform.ui" line="257"/>
<source>Total:</source>
<translation>Celkem:</translation>
</message>
<message>
<location filename="../shopform.ui" line="274"/>
<source>0</source>
<translation></translation>
</message>
<message>
<location filename="../shopform.ui" line="295"/>
<source>Temporary Save</source>
<translation>Dočasné uložení</translation>
</message>
<message>
<location filename="../shopform.ui" line="317"/>
<source>Save</source>
<translation>Uložení</translation>
</message>
<message>
<location filename="../shopform.ui" line="339"/>
<source>Load</source>
<translation>Načíst</translation>
</message>
<message>
<location filename="../shopform.ui" line="361"/>
<source>Show paied</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../shopform.ui" line="383"/>
<source>Pay</source>
<translation>Zaplatit</translation>
</message>
<message>
<location filename="../shopform.cpp" line="84"/>
<source>&lt;&lt; empty &gt;&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShopSettingsForm</name>
<message>
<location filename="../settings/shopsettingsform.ui" line="14"/>
<source>Form</source>
<translation type="unfinished">Zboží</translation>
</message>
<message>
<location filename="../settings/shopsettingsform.ui" line="20"/>
<source>Printer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings/shopsettingsform.ui" line="26"/>
<source>Output device</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings/shopsettingsform.ui" line="36"/>
<source>Letters per line</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settings/shopsettingsform.ui" line="46"/>
<source>Footer text</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TemporaryReceiptSaveForm</name>
<message>
<location filename="../temporaryreceiptsaveform.ui" line="14"/>
<source>Dialog</source>
<translation>Dočasné uložení</translation>
</message>
<message>
<location filename="../temporaryreceiptsaveform.ui" line="20"/>
<source>Temporary Receipt Name</source>
<translation>Název dočasně uložené účtenky</translation>
</message>
</context>
</TS>