From 84f71ea056cea23a10faa5a4302eea4abf51371d Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Mon, 30 Jul 2018 14:43:02 +0200 Subject: [PATCH] lots of smaller improvements --- src/core/article.cpp | 13 ++++++++++--- src/core/article.h | 3 ++- src/core/entity.h | 6 ++++-- src/core/marketplace.cpp | 11 ++++------- src/core/marketplace.h | 2 +- src/core/sale.cpp | 2 +- src/core/seller.cpp | 2 +- src/gui/basketmodel.cpp | 10 +++++++--- src/gui/mainwindow.cpp | 4 ++-- src/gui/mainwindow.ui | 5 ++++- src/gui/reportdialog.ui | 9 ++++++++- src/gui/reportmodel.cpp | 4 ++++ src/gui/salemodel.cpp | 2 +- 13 files changed, 49 insertions(+), 24 deletions(-) diff --git a/src/core/article.cpp b/src/core/article.cpp index 34dc249..c4fdce7 100644 --- a/src/core/article.cpp +++ b/src/core/article.cpp @@ -31,9 +31,16 @@ int Article::getPrice() const { return price_; } std::string Article::getPriceAsString() const { std::stringstream sumStream; - //sumStream.imbue(std::locale("de_DE.utf8")); - sumStream << std::right << std::setw(12) << std::showbase << std::put_money(price_, false); + // sumStream.imbue(std::locale("de_DE.utf8")); + sumStream << std::right << std::setw(10) << std::showbase << std::put_money(price_, false); return sumStream.str(); } -int Article::getArticleNo() { return articleNo_; } \ No newline at end of file +int Article::getArticleNo() const { return articleNo_; } + +std::string Article::getCompleteArticleNo() const +{ + std::stringstream artNoStream; + artNoStream << sourceNo_ << "K" << std::setfill('0') << std::setw(5) << articleNo_; + return artNoStream.str(); +} \ No newline at end of file diff --git a/src/core/article.h b/src/core/article.h index 2282fdf..a497242 100644 --- a/src/core/article.h +++ b/src/core/article.h @@ -25,7 +25,8 @@ class Article : public Entity void setSale(Sale* salePtr); void setSeller(Seller* sellerPtr); - int getArticleNo(); + int getArticleNo() const; + std::string getCompleteArticleNo() const; std::string getDescription(); Seller* getSeller(); Sale* getSale(); diff --git a/src/core/entity.h b/src/core/entity.h index 8751dce..017b6e0 100644 --- a/src/core/entity.h +++ b/src/core/entity.h @@ -11,7 +11,7 @@ class Entity public: enum class State { NEW, UPDATE, DELETE, OK }; - //Entity() = default; + // Entity() = default; virtual ~Entity() = 0; void createUuid(); @@ -24,10 +24,12 @@ class Entity virtual State getState() const; virtual int getSourceNo() const; + protected: + int sourceNo_{}; + private: boost::uuids::uuid uuid_{}; State state_{State::NEW}; - int sourceNo_{}; }; #endif // ENTITY_H \ No newline at end of file diff --git a/src/core/marketplace.cpp b/src/core/marketplace.cpp index 66615f5..4913317 100644 --- a/src/core/marketplace.cpp +++ b/src/core/marketplace.cpp @@ -89,14 +89,11 @@ void Marketplace::addArticleToBasket(std::unique_ptr
article) size_t Marketplace::basketSize() { return basket_.size(); } -void Marketplace::finishCurrentSale() +void Marketplace::finishCurrentSale(std::unique_ptr sale) { if (basket_.size() == 0) return; - auto sale = std::make_unique(); - sale->createUuid(); - for (auto iter = basket_.begin(); iter != basket_.end(); ++iter) { sale->addArticle((*iter).get()); (*iter)->getSeller()->addArticle(std::move(*iter)); @@ -125,7 +122,7 @@ std::string Marketplace::getBasketSumAsString() // return sumStream.str(); std::stringstream sumStream; // sumStream.imbue(std::locale("de_DE.utf8")); - sumStream << std::right << std::setw(12) << std::showbase << std::put_money(sumInCent, false); + sumStream << std::right << std::setw(10) << std::showbase << std::put_money(sumInCent, false); return sumStream.str(); } @@ -148,7 +145,7 @@ double marketFee(int sum, int percent, int maxFee) std::string marketFeeAsString(int sum, int percent, int maxFee) { std::stringstream feeStream; - feeStream << std::right << std::setw(12) << std::showbase + feeStream << std::right << std::setw(10) << std::showbase << std::put_money(marketFee(sum, percent, maxFee), false); return feeStream.str(); } @@ -156,7 +153,7 @@ std::string marketFeeAsString(int sum, int percent, int maxFee) std::string paymentAsString(int sum, int percent) { std::stringstream feeStream; - feeStream << std::right << std::setw(12) << std::showbase + feeStream << std::right << std::setw(10) << std::showbase << std::put_money(sum - marketFee(sum, percent), false); return feeStream.str(); } \ No newline at end of file diff --git a/src/core/marketplace.h b/src/core/marketplace.h index 7bddb72..b5c63a4 100644 --- a/src/core/marketplace.h +++ b/src/core/marketplace.h @@ -38,7 +38,7 @@ class Marketplace Seller* findSellerWithSellerNo(int sellerNo); void addArticleToBasket(std::unique_ptr
article); size_t basketSize(); - void finishCurrentSale(); + void finishCurrentSale(std::unique_ptr sale); void removeSale(boost::uuids::uuid uuid); private: diff --git a/src/core/sale.cpp b/src/core/sale.cpp index 6c3dd1b..95bf4dc 100644 --- a/src/core/sale.cpp +++ b/src/core/sale.cpp @@ -34,7 +34,7 @@ int Sale::sumInCents() std::string Sale::sumAsString() { std::stringstream sumStream; - sumStream << std::right << std::setw(12) << std::showbase << std::put_money(sumInCents(), false); + sumStream << std::right << std::setw(10) << std::showbase << std::put_money(sumInCents(), false); return sumStream.str(); } diff --git a/src/core/seller.cpp b/src/core/seller.cpp index 61e48ef..89f5aa8 100644 --- a/src/core/seller.cpp +++ b/src/core/seller.cpp @@ -94,7 +94,7 @@ int Seller::sumInCents() std::string Seller::sumAsString() { std::stringstream sumStream; - sumStream << std::right << std::setw(12) << std::showbase << std::put_money(sumInCents(), false); + sumStream << std::right << std::setw(10) << std::showbase << std::put_money(sumInCents(), false); return sumStream.str(); } diff --git a/src/gui/basketmodel.cpp b/src/gui/basketmodel.cpp index 8441e21..215d7de 100644 --- a/src/gui/basketmodel.cpp +++ b/src/gui/basketmodel.cpp @@ -24,7 +24,8 @@ QVariant BasketModel::data(const QModelIndex& index, int role) const case 0: [[fallthrough]]; case 1: - [[fallthrough]]; + myFont.setFamily("monospace"); + return myFont; case 2: return myFont; case 3: @@ -45,7 +46,7 @@ QVariant BasketModel::data(const QModelIndex& index, int role) const case 0: return article->getUuidAsString().c_str(); case 1: - return article->getArticleNo(); + return article->getCompleteArticleNo().c_str(); case 2: return article->getSeller()->getSellerNo(); case 3: @@ -96,7 +97,10 @@ void BasketModel::addArticle(Seller* seller, int price) void BasketModel::finishSale() { emit beginRemoveRows(QModelIndex(), 0, marketplace_->getBasket().size() - 1); - marketplace_->finishCurrentSale(); + auto sale = std::make_unique(); + sale->createUuid(); + sale->setSourceNo(QSettings().value("global/cashPointNo").toInt()); + marketplace_->finishCurrentSale(std::move(sale)); emit endRemoveRows(); emit basketDataChanged(); } diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index c9f6373..cb98663 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -96,6 +96,7 @@ void MainWindow::onPaidButtonTriggered() dynamic_cast(ui_.basketView->model())->finishSale(); ui_.lastPriceLabel1->setText(lastPrice); ui_.lastPriceLabel2->setText(lastPrice); + ui_.basketSumLabel->setText(" 0,00 €"); statusBar()->showMessage("Verkaufsvorgang erfolgreich durchgeführt.", STATUSBAR_TIMEOUT); } } @@ -128,8 +129,7 @@ void MainWindow::onSellerNoEditCheckSellerNo() if (dialogResult == QDialog::Accepted) { int price = priceDialog.getPrice(); dynamic_cast(ui_.basketView->model())->addArticle(seller, price); - std::string sumStr = "Gesamt: " + marketplace_->getBasketSumAsString(); - ui_.basketSumLabel->setText(sumStr.c_str()); + ui_.basketSumLabel->setText(marketplace_->getBasketSumAsString().c_str()); } } diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index 80b52d6..ac8b2bb 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -33,6 +33,7 @@ + Monospace 18 75 true @@ -42,7 +43,7 @@ QFrame::Box - Gesamt: --- + 0,00 € Qt::AlignCenter @@ -298,6 +299,7 @@ drucken + Monospace 20 75 true @@ -351,6 +353,7 @@ drucken + Monospace 20 75 true diff --git a/src/gui/reportdialog.ui b/src/gui/reportdialog.ui index f19e7ab..fc2525f 100644 --- a/src/gui/reportdialog.ui +++ b/src/gui/reportdialog.ui @@ -17,7 +17,14 @@ - + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + diff --git a/src/gui/reportmodel.cpp b/src/gui/reportmodel.cpp index 52d2b2b..45ff334 100644 --- a/src/gui/reportmodel.cpp +++ b/src/gui/reportmodel.cpp @@ -35,6 +35,10 @@ QVariant ReportModel::data(const QModelIndex& index, int role) const if (role == Qt::TextAlignmentRole) { switch (index.column()) { case 4: + [[fallthrough]]; + case 5: + [[fallthrough]]; + case 6: return Qt::AlignRight; default: return Qt::AlignLeft; diff --git a/src/gui/salemodel.cpp b/src/gui/salemodel.cpp index 2ef9959..c0d3589 100644 --- a/src/gui/salemodel.cpp +++ b/src/gui/salemodel.cpp @@ -108,7 +108,7 @@ QVariant SaleModel::data(const QModelIndex& index, int role) const Article* article = static_cast(index.internalPointer()); switch (index.column()) { case 0: - return article->getArticleNo(); + return article->getCompleteArticleNo().c_str(); case 1: return article->getPriceAsString().c_str(); case 2: