From f15a361b507dbcf3d0e61fdad245034eba0ac861 Mon Sep 17 00:00:00 2001 From: Josef Rokos Date: Fri, 22 Jul 2016 13:18:31 +0200 Subject: [PATCH 1/7] Added support for checkbox select in AutoTableModel. --- core/autotablemodel.h | 46 +++++++++++++++++++++++++++++++++++++++++-- core/itablemodel.cpp | 15 ++++++++++++++ core/itablemodel.h | 4 ++++ 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/core/autotablemodel.h b/core/autotablemodel.h index 6f45b0f..2b12a38 100644 --- a/core/autotablemodel.h +++ b/core/autotablemodel.h @@ -24,6 +24,7 @@ public: :ITableModel(parent) { filtered = false; + m_checkboxSelect = false; } virtual ~AutoTableModel() {} @@ -50,6 +51,21 @@ public: QVariant data(const QModelIndex &index, int role) const { + if (index.column() == 0 && m_checkboxSelect) + { + if (role == Qt::CheckStateRole) + { + if (m_selectedRows.contains(index.row())) + { + return Qt::Checked; + } + else + { + return Qt::Unchecked; + } + } + } + QSharedPointer entity = m_list.at(index.row()); QObject *rawEntity = (QObject*)entity.data(); @@ -189,6 +205,21 @@ public: m_translations = translations; } + QList selectedRows() const + { + return m_selectedRows; + } + + QList > selectedItems() + { + QList > ret; + foreach (int row, m_selectedRows) { + ret.append(m_list[row]); + } + + return ret; + } + protected: void handleFilter(const QString &filter) override { @@ -220,10 +251,10 @@ protected: private: QList > m_list; QList > m_fullList; + QList m_selectedRows; QMap m_translations; bool filtered; - // QAbstractItemModel interface public: virtual bool setData(const QModelIndex &index, const QVariant &value, int role) override @@ -236,10 +267,21 @@ public: rawEntity->setProperty(rawEntity->metaObject()->property(index.column() + 1).name(), value); } + if (role == Qt::CheckStateRole) + { + if (m_selectedRows.contains(index.row())) + { + m_selectedRows.removeOne(index.row()); + } + else + { + m_selectedRows.append(index.row()); + } + } + emit editCompleted(); return true; } }; #endif // ODBTABLEMODEL_H - diff --git a/core/itablemodel.cpp b/core/itablemodel.cpp index dfde394..7933a8c 100644 --- a/core/itablemodel.cpp +++ b/core/itablemodel.cpp @@ -3,7 +3,17 @@ ITableModel::ITableModel(QObject *parent) :QAbstractTableModel(parent) { + m_checkboxSelect = false; +} + +bool ITableModel::checkboxSelect() const +{ + return m_checkboxSelect; +} +void ITableModel::setCheckboxSelect(bool checkboxSelect) +{ + m_checkboxSelect = checkboxSelect; } void ITableModel::filter(const QString &filter) @@ -18,6 +28,11 @@ void ITableModel::restore() Qt::ItemFlags ITableModel::flags(const QModelIndex &index) const { + if (index.column() == 0 && m_checkboxSelect) + { + return Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled; + } + if (m_editableCols.contains(index.column())) { return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled; diff --git a/core/itablemodel.h b/core/itablemodel.h index e30780f..b337c16 100644 --- a/core/itablemodel.h +++ b/core/itablemodel.h @@ -16,6 +16,7 @@ public: protected: virtual void handleFilter(const QString &filter) = 0; virtual void handleRestore() = 0; + bool m_checkboxSelect; public slots: void filter(const QString &filter); @@ -29,6 +30,9 @@ public: virtual Qt::ItemFlags flags(const QModelIndex &index) const override; void setEditableCols(const QList cols); + bool checkboxSelect() const; + void setCheckboxSelect(bool checkboxSelect); + private: QList m_editableCols; }; From 0f397c430803886d0c39b265d01823bc6bcae961 Mon Sep 17 00:00:00 2001 From: Josef Rokos Date: Fri, 22 Jul 2016 13:21:39 +0200 Subject: [PATCH 2/7] Transation fix. --- application/translations/prodejna_cs_CZ.qm | Bin 560 -> 558 bytes application/translations/prodejna_cz.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/application/translations/prodejna_cs_CZ.qm b/application/translations/prodejna_cs_CZ.qm index ff3af12a1711b42ac8ffc3bef8e6739b11f5ffc3..f569e5d5e8489a9b868d359be2df9e341a614048 100644 GIT binary patch delta 47 zcmdnMvW{hf51%#9ZpLB;2F3}QK;q=aC^kkx0fqpEB8Gg16oyoWEQUOW#L2~sdjT6< B3$*|M delta 35 qcmZ3-vVmoS51%d1ZpLB;2F6L5K;rbqC^p8)?-+#`Gba}^?gap}MG9j8 diff --git a/application/translations/prodejna_cz.ts b/application/translations/prodejna_cz.ts index cc1072e..8d1a56b 100644 --- a/application/translations/prodejna_cz.ts +++ b/application/translations/prodejna_cz.ts @@ -20,7 +20,7 @@ MainWindow - Nastaveni + Prodejna From 707e2dbc0b47d7685913755e35b4b77280c1f4c5 Mon Sep 17 00:00:00 2001 From: Josef Rokos Date: Fri, 22 Jul 2016 13:22:51 +0200 Subject: [PATCH 3/7] Added typedefs for QSharedPointer types --- shop/isellableservice.h | 3 ++- shop/shopitem.h | 2 ++ shop/shopservice.cpp | 24 ++++++++++++------------ shop/shopservice.h | 24 ++++++++++++------------ 4 files changed, 28 insertions(+), 25 deletions(-) diff --git a/shop/isellableservice.h b/shop/isellableservice.h index 8ce1372..41ba709 100644 --- a/shop/isellableservice.h +++ b/shop/isellableservice.h @@ -11,7 +11,8 @@ class SHOPSHARED_EXPORT ISellableService public: ISellableService(); - virtual QList > shopItems() = 0; + virtual QList shopItems() = 0; + //virtual void addToReceipt() }; #endif // ISELLABLESERVICE_H diff --git a/shop/shopitem.h b/shop/shopitem.h index d23eac1..e9c9f26 100644 --- a/shop/shopitem.h +++ b/shop/shopitem.h @@ -30,4 +30,6 @@ public: virtual QString pluginId() override { return ""; } }; +typedef QSharedPointer ShopItemPtr; + #endif // SHOPITEM_H diff --git a/shop/shopservice.cpp b/shop/shopservice.cpp index 6220085..23833d7 100644 --- a/shop/shopservice.cpp +++ b/shop/shopservice.cpp @@ -7,14 +7,14 @@ ShopService::ShopService() { } -QSharedPointer ShopService::createVoucher() +VoucherPtr ShopService::createVoucher() { QSharedPointer voucher(new Voucher); voucher->setStatus(Voucher::NEW); return voucher; } -void ShopService::addShopItem(QSharedPointer voucher, QSharedPointer item, int count) +void ShopService::addShopItem(VoucherPtr voucher, QSharedPointer item, int count) { QSharedPointer vItem(new VoucherItem); vItem->setName(item->name()); @@ -27,7 +27,7 @@ void ShopService::addShopItem(QSharedPointer voucher, QSharedPointeraddItem(vItem); } -void ShopService::calculate(QSharedPointer voucher) +void ShopService::calculate(VoucherPtr voucher) { QDecDouble total; @@ -66,7 +66,7 @@ void ShopService::calculate(QSharedPointer voucher) voucher->setTotalPrice(total); } -void ShopService::calculateItem(QSharedPointer item) +void ShopService::calculateItem(VoucherItemPtr item) { loadSettings(); if (m_gs->vatPayer()) @@ -82,13 +82,13 @@ void ShopService::calculateItem(QSharedPointer item) } } -void ShopService::loadItems(QSharedPointer voucher) +void ShopService::loadItems(VoucherPtr voucher) { Service srv; voucher->setItems(srv.all(QString("voucher = %1").arg(voucher->id()))); } -void ShopService::pay(QSharedPointer voucher) +void ShopService::pay(VoucherPtr voucher) { Transaction tx; NumberSeriesService srvNs; @@ -106,22 +106,22 @@ void ShopService::pay(QSharedPointer voucher) tx.commit(); } -QList > ShopService::savedVouchers() +QList ShopService::savedVouchers() { return all(QString("status = %1").arg(QString::number(Voucher::NOT_PAID))); } -QList > ShopService::tempVouchers() +QList ShopService::tempVouchers() { return all(QString("status = %1").arg(QString::number(Voucher::TEMPORARY))); } -QList > ShopService::paiedVouchers() +QList ShopService::paiedVouchers() { return all(QString("status = %1").arg(QString::number(Voucher::PAID))); } -QList > ShopService::allSellableItems() +QList ShopService::allSellableItems() { QList > items; foreach (IPlugin *plugin, Context::instance().plugins()) { @@ -176,7 +176,7 @@ QDecDouble ShopService::vatRate(Enums::VatType vatType) return vatRate; } -void ShopService::saveVoucher(QSharedPointer entity) +void ShopService::saveVoucher(VoucherPtr entity) { Transaction tr; odb::database *db = Context::instance().db(); @@ -191,7 +191,7 @@ void ShopService::saveVoucher(QSharedPointer entity) tr.commit(); } -void ShopService::updateVoucher(QSharedPointer entity) +void ShopService::updateVoucher(VoucherPtr entity) { Transaction tr; odb::database *db = Context::instance().db(); diff --git a/shop/shopservice.h b/shop/shopservice.h index 87eae88..2b1ef82 100644 --- a/shop/shopservice.h +++ b/shop/shopservice.h @@ -13,16 +13,16 @@ class ShopService : public Service { public: ShopService(); - QSharedPointer createVoucher(); - void addShopItem(QSharedPointer voucher, QSharedPointer item, int count); - void calculate(QSharedPointer voucher); - void calculateItem(QSharedPointer item); - void loadItems(QSharedPointer voucher); - void pay(QSharedPointer voucher); - QList > savedVouchers(); - QList > tempVouchers(); - QList > paiedVouchers(); - QList > allSellableItems(); + VoucherPtr createVoucher(); + void addShopItem(VoucherPtr voucher, QSharedPointer item, int count); + void calculate(VoucherPtr voucher); + void calculateItem(VoucherItemPtr item); + void loadItems(VoucherPtr voucher); + void pay(VoucherPtr voucher); + QList savedVouchers(); + QList tempVouchers(); + QList paiedVouchers(); + QList allSellableItems(); private: QDecDouble includeVat(QDecDouble price, Enums::VatType vatType); @@ -32,8 +32,8 @@ private: QDecDouble vatRate(Enums::VatType vatType); public: - void saveVoucher(QSharedPointer entity); - void updateVoucher(QSharedPointer entity); + void saveVoucher(VoucherPtr entity); + void updateVoucher(VoucherPtr entity); }; #endif // SHOPSERVICE_H From 9e9e1f6dba93bf3e18b66f5c0ab18295d540ce75 Mon Sep 17 00:00:00 2001 From: Josef Rokos Date: Wed, 3 Aug 2016 18:24:15 +0200 Subject: [PATCH 4/7] Added load receipt functionality. --- core/context.cpp | 4 ++++ shop/receiptloadform.cpp | 11 +++++++++++ shop/receiptloadform.h | 2 ++ shop/shopform.cpp | 17 +++++++++++++++++ shop/shopservice.cpp | 27 +++++++++++++++++++++++++++ shop/shopservice.h | 1 + 6 files changed, 62 insertions(+) diff --git a/core/context.cpp b/core/context.cpp index c658df6..7b92ef3 100644 --- a/core/context.cpp +++ b/core/context.cpp @@ -65,6 +65,10 @@ void Context::loadPlugins() m_plugins.append(plugin); } } + else + { + qDebug() << pluginLoader.errorString(); + } } QString dbPath = m_settings->value("db/path", "").toString(); diff --git a/shop/receiptloadform.cpp b/shop/receiptloadform.cpp index 9622c27..1eff0a6 100644 --- a/shop/receiptloadform.cpp +++ b/shop/receiptloadform.cpp @@ -28,6 +28,7 @@ ReceiptLoadForm::ReceiptLoadForm(QWidget *parent) : ui->tabVouchers->setColumnWidth(2, 200); m_itemModel = new AutoTableModel(this); + m_itemModel->setCheckboxSelect(true); ui->tabItems->setModel(m_itemModel); connect(ui->tabVouchers->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](const QModelIndex ¤t, QModelIndex){ @@ -43,6 +44,16 @@ ReceiptLoadForm::~ReceiptLoadForm() delete ui; } +QList 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; diff --git a/shop/receiptloadform.h b/shop/receiptloadform.h index ec022d3..f49954d 100644 --- a/shop/receiptloadform.h +++ b/shop/receiptloadform.h @@ -16,6 +16,8 @@ class ReceiptLoadForm : public QDialog public: explicit ReceiptLoadForm(QWidget *parent = 0); ~ReceiptLoadForm(); + QList selectedItems(); + VoucherPtr selectedVoucher(); private slots: void on_lineEdit_textChanged(const QString &text); diff --git a/shop/shopform.cpp b/shop/shopform.cpp index 3b1cfc5..8995846 100644 --- a/shop/shopform.cpp +++ b/shop/shopform.cpp @@ -129,6 +129,23 @@ 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(); } diff --git a/shop/shopservice.cpp b/shop/shopservice.cpp index 23833d7..242dd4a 100644 --- a/shop/shopservice.cpp +++ b/shop/shopservice.cpp @@ -106,6 +106,33 @@ void ShopService::pay(VoucherPtr voucher) tx.commit(); } +void ShopService::moveItems(QList items, VoucherPtr source, VoucherPtr target) +{ + Transaction tx; + + 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 ShopService::savedVouchers() { return all(QString("status = %1").arg(QString::number(Voucher::NOT_PAID))); diff --git a/shop/shopservice.h b/shop/shopservice.h index 2b1ef82..4646e55 100644 --- a/shop/shopservice.h +++ b/shop/shopservice.h @@ -19,6 +19,7 @@ public: void calculateItem(VoucherItemPtr item); void loadItems(VoucherPtr voucher); void pay(VoucherPtr voucher); + void moveItems(QList items, VoucherPtr source, VoucherPtr target); QList savedVouchers(); QList tempVouchers(); QList paiedVouchers(); From a82a0be8836c4143493ca22f872a22954f78aa73 Mon Sep 17 00:00:00 2001 From: Josef Rokos Date: Thu, 4 Aug 2016 22:19:16 +0200 Subject: [PATCH 5/7] Fixed API change. --- shop/shopform.cpp | 4 ++-- shop/shopform.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shop/shopform.cpp b/shop/shopform.cpp index fd3a9eb..d62030e 100644 --- a/shop/shopform.cpp +++ b/shop/shopform.cpp @@ -150,7 +150,7 @@ void ShopForm::on_loadButton_clicked() form->show(); } -void ShopForm::onCountChanged(int oldCount) +void ShopForm::onCountChanged(int oldCount/* = 0*/) { VoucherItem *item = qobject_cast(sender()); if (item != NULL && item->count() == 0) @@ -268,7 +268,7 @@ void ShopForm::addItem(QSharedPointer 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) diff --git a/shop/shopform.h b/shop/shopform.h index 301823b..1542b59 100644 --- a/shop/shopform.h +++ b/shop/shopform.h @@ -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); From 0af4db2641c0c3bcb5e133f2ffeb1e6071092d24 Mon Sep 17 00:00:00 2001 From: Josef Rokos Date: Sat, 7 Jan 2017 15:19:40 +0100 Subject: [PATCH 6/7] Minor UI changes. Added gcc switches to odb compiler. --- odb.pri | 2 +- shop/shop.json | 1 + shop/shopform.cpp | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/odb.pri b/odb.pri index 5459420..ab3dc7b 100644 --- a/odb.pri +++ b/odb.pri @@ -46,7 +46,7 @@ ODB_FLAGS += -I $$PWD/core ODB_FLAGS += -I $$PWD/qdecimal/src ODB_FLAGS += -I $$PWD/qdecimal/decnumber ODB_FLAGS += $$ODB_OTHER_INCLUDES -ODB_FLAGS += -D __PIC__ +ODB_FLAGS += -x -std=c++11 -x -fPIC win32 { ODB_FLAGS += -I d:/prac/odb/libodb-2.4.0 diff --git a/shop/shop.json b/shop/shop.json index 9f54cc6..ccd3cab 100644 --- a/shop/shop.json +++ b/shop/shop.json @@ -57,6 +57,7 @@ CREATE TABLE \"Voucher\" ( "translations" : { "CZ" : { "name" : "Název", + "code" : "Kod", "count" : "Počet", "unitPrice" : "Jednotková cena", "vatRate" : "Procento DPH", diff --git a/shop/shopform.cpp b/shop/shopform.cpp index d62030e..3df7c76 100644 --- a/shop/shopform.cpp +++ b/shop/shopform.cpp @@ -60,6 +60,7 @@ void ShopForm::loadLast() if (m_commodityModel == NULL) { m_commodityModel = new AutoTableModel(this); + m_commodityModel->setTranslations(Context::instance().plugin("SHOP")->translations()); ui->commodityTable->setModel(m_commodityModel); connect(ui->commodityTable->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](const QModelIndex ¤t, const QModelIndex &){ @@ -68,6 +69,8 @@ void ShopForm::loadLast() } m_commodityModel->setData(srv.allSellableItems()); + ui->commodityTable->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); + ui->commodityTable->setColumnHidden(3, true); } void ShopForm::fillRaceiptCombo() From c2544d812f78752e52570b7cd22f3fc995ee6530 Mon Sep 17 00:00:00 2001 From: Zdenek Jonak Date: Tue, 10 Jan 2017 20:56:04 +0100 Subject: [PATCH 7/7] translation source files --- addressbook/translations/addressbook_cs_CZ.ts | 62 ++++ commodity/translations/commodity_cs_CZ.ts | 85 +++++ core/translations/core_cs_CZ.ts | 93 ++++- services/translations/services_cs_CZ.ts | 82 +++++ shop/translations/shop_cs_CZ.ts | 319 ++++++++++++++++++ 5 files changed, 624 insertions(+), 17 deletions(-) create mode 100644 addressbook/translations/addressbook_cs_CZ.ts create mode 100644 commodity/translations/commodity_cs_CZ.ts create mode 100644 services/translations/services_cs_CZ.ts create mode 100644 shop/translations/shop_cs_CZ.ts diff --git a/addressbook/translations/addressbook_cs_CZ.ts b/addressbook/translations/addressbook_cs_CZ.ts new file mode 100644 index 0000000..64d466c --- /dev/null +++ b/addressbook/translations/addressbook_cs_CZ.ts @@ -0,0 +1,62 @@ + + + + + AddressbookForm + + + Form + + + + + Title + Titul + + + + First Name + Křestní jméno + + + + Last Name + Příjmení + + + + Day of Birth + Datum narození + + + + ID Card Number + Číslo dokladu totožnosti + + + + City + Město + + + + ZTP + ZTP + + + + Street + Ulice + + + + House Number + Číslo popisné + + + + ZIP + PSČ + + + diff --git a/commodity/translations/commodity_cs_CZ.ts b/commodity/translations/commodity_cs_CZ.ts new file mode 100644 index 0000000..db5539e --- /dev/null +++ b/commodity/translations/commodity_cs_CZ.ts @@ -0,0 +1,85 @@ + + + + + CommodityForm + + + Form + Zboží + + + + Name + Název + + + + Short Name + Zobrazit na účtence + + + + Code + Kód + + + + Type + Druh + + + + Price + Cena + + + + Vat + DPH + + + + Count + Počet + + + + None + Žádná + + + + High + Vysoká + + + + First Lower + První snížená + + + + Second Lower + Druhá snížená + + + + CommoditySettingsForm + + + Form + + + + + + + + + + + + - + - + + + diff --git a/core/translations/core_cs_CZ.ts b/core/translations/core_cs_CZ.ts index e23a684..6fd7131 100644 --- a/core/translations/core_cs_CZ.ts +++ b/core/translations/core_cs_CZ.ts @@ -126,86 +126,132 @@ - + + Base settings + + + + Company info Informace o společnosti - + IC IČO - + VAT number DIČ - + VAT payer Plátce DPH - + VAT rates Sazby DPH - + High Vysoká - + First lower První snížená - + Second lower Druhá snížená - + + + Number series + + + + + Edit name + + + + + Season + + + + + Create new + + + + Contact Kontaktní údaje - + Firm Name Název společnosti - + Street Ulice - + House Number Číslo popisné - + City Město - + ZIP code PSČ - - + + Logo Logo - + Select file Vyber soubor + + + Switch season + + + + + Realy switch active season? + + + + + New season + + + + + Realy create new season and switch to it? + + GridForm @@ -314,6 +360,19 @@ Název filtru + + SeasonNameDialog + + + Season + + + + + Season name + + + SettingsForm diff --git a/services/translations/services_cs_CZ.ts b/services/translations/services_cs_CZ.ts new file mode 100644 index 0000000..a065c7e --- /dev/null +++ b/services/translations/services_cs_CZ.ts @@ -0,0 +1,82 @@ + + + + + AccServiceForm + + + Form + Služba + + + + Service Name + Název + + + + Price + Cena + + + + Service Type + Druh + + + + Sale Possible + Umožnit slevu + + + + Active + Aktivní + + + + ServiceCode + Kód + + + + Vat Type + Sazba DPH + + + + Car + Vozidlo + + + + Tent + Stan + + + + OTHER + Ostatní + + + + None + Žádná + + + + High + Vysoká + + + + First Lower + První snížená + + + + Second Lower + Druhá snížená + + + diff --git a/shop/translations/shop_cs_CZ.ts b/shop/translations/shop_cs_CZ.ts new file mode 100644 index 0000000..c92efdf --- /dev/null +++ b/shop/translations/shop_cs_CZ.ts @@ -0,0 +1,319 @@ + + + + + DirectSaleForm + + + Form + Zboží + + + + Commodity Name + Název + + + + Price + Cena + + + + Count + Počet + + + + VAT rate + Sazba DPH + + + + None + Žádná + + + + High + Vysoká + + + + First Lower + První snížená + + + + Second Lower + Druhá snížená + + + + PayDialog + + + Recieve money + + + + + Total: + Celkem: + + + + + 0 + + + + + Recieved + + + + + Return + + + + + PaydVouchersDialog + + + Paied vouchers + + + + + Print receipt + + + + + + Save receipt + + + + + ... + + + + + Items + Položky + + + + Total: + Celkem: + + + + 0 + + + + + Text files (*.txt) + + + + + ReceiptLoadForm + + + Dialog + + + + + Receipts + Účtenky + + + + Search + Hledat + + + + Items + Položky + + + + ReceiptSaveForm + + + Existing Receipts + Přidat k již uložené + + + + Search + Hledat + + + GroupBox + Uložit novou + + + + Save receipt + + + + + Add to existing + + + + + Save as new + + + + + New receipt + + + + + Name + Název + + + + Description + Popis + + + + Search Contacts + Vyhledat kontakt + + + + ShopForm + + + Form + + + + + Commodity + Zboží + + + + Count + Počet + + + + Add Item + Přidat položku + + + + Direct Sale + Přímý prodej + + + + Ctrl+D + + + + + Receipt + Účtenka + + + + Total: + Celkem: + + + + 0 + + + + + Temporary Save + Dočasné uložení + + + + Save + Uložení + + + + Load + Načíst + + + + Show paied + + + + + Pay + Zaplatit + + + + << empty >> + + + + + ShopSettingsForm + + + Form + Zboží + + + + Printer + + + + + Output device + + + + + Letters per line + + + + + Footer text + + + + + TemporaryReceiptSaveForm + + + Dialog + Dočasné uložení + + + + Temporary Receipt Name + Název dočasně uložené účtenky + + +