From dc548091466b16363116486e993d1c6ebf3d19f2 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Thu, 2 Aug 2018 14:42:15 +0200 Subject: [PATCH 1/3] code cleanup --- src/core/excelreader.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/excelreader.cpp b/src/core/excelreader.cpp index 7225c78..f39333c 100644 --- a/src/core/excelreader.cpp +++ b/src/core/excelreader.cpp @@ -18,14 +18,13 @@ void ExcelReader::readSellersFromFile(const std::string& filename, Marketplace* int rowCount{}; for (const auto& row : ws.rows(false)) { - // auto test = row[0].value(); if (rowCount < START_ROW) { ++rowCount; continue; } else if (rowCount > END_ROW) { break; } - if(row[2].value().empty() && row[3].value().empty()) { + if (row[2].value().empty() && row[3].value().empty()) { ++rowCount; continue; } From c82378dfa9965290c46b26f6f34f27f631be3940 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Thu, 2 Aug 2018 15:06:35 +0200 Subject: [PATCH 2/3] export sales works now --- src/core/jsonutil.cpp | 43 ++++++++++++++++++++++++++++++++++++++---- src/core/jsonutil.h | 1 + src/gui/mainwindow.cpp | 12 +++++++++++- src/gui/mainwindow.h | 1 + src/gui/mainwindow.ui | 12 +++++++++--- 5 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/core/jsonutil.cpp b/src/core/jsonutil.cpp index 6dc855c..8935760 100644 --- a/src/core/jsonutil.cpp +++ b/src/core/jsonutil.cpp @@ -31,17 +31,16 @@ void JsonUtil::exportSellers(const std::string& filename, Marketplace* market) void JsonUtil::importSellers(const std::string& filename, Marketplace* market) { - for (auto& seller : market->getSellers()) - { + for (auto& seller : market->getSellers()) { seller->setState(Seller::State::DELETE); } market->storeToDb(true); - + Json::Value jsonValues; std::ifstream file(filename); file >> jsonValues; - for(auto val : jsonValues["sellers"]) { + for (auto val : jsonValues["sellers"]) { auto seller = std::make_unique(); seller->setUuidFromString(val["uuid"].asString()); seller->setSellerNo(val["seller_no"].asInt()); @@ -51,4 +50,40 @@ void JsonUtil::importSellers(const std::string& filename, Marketplace* market) market->getSellers().push_back(std::move(seller)); } market->storeToDb(); +} + +void JsonUtil::exportSales(const std::string& filename, Marketplace* market, int cashPointNo) +{ + Json::Value root; + std::ofstream file(filename); + + Json::StreamWriterBuilder builder; + builder["commentStyle"] = "None"; + builder["indentation"] = " "; + + std::unique_ptr writer(builder.newStreamWriter()); + + root["source_no"] = cashPointNo; + + for (const auto& sale : market->getSales()) { + Json::Value newSale; + newSale["uuid"] = sale->getUuidAsString(); + newSale["timestamp"] = sale->getTimestamp(); + + for (const auto& article : sale->getArticles()) { + Json::Value newArticle; + newArticle["uuid"] = article->getUuidAsString(); + newArticle["seller_uuid"] = article->getSeller()->getUuidAsString(); + newArticle["desc"] = article->getDescription(); + newArticle["price"] = article->getPrice(); + // newArticle["source_no"] = article->getSourceNo(); + newArticle["article_no"] = article->getArticleNo(); + + newSale["articles"].append(newArticle); + } + + root["sales"].append(newSale); + } + + writer->write(root, &file); } \ No newline at end of file diff --git a/src/core/jsonutil.h b/src/core/jsonutil.h index 0e3a03d..45403e1 100644 --- a/src/core/jsonutil.h +++ b/src/core/jsonutil.h @@ -10,6 +10,7 @@ class JsonUtil public: static void exportSellers(const std::string& filename, Marketplace* market); static void importSellers(const std::string& filename, Marketplace* market); + static void exportSales(const std::string& filename, Marketplace* market, int cashPointNo); }; #endif \ No newline at end of file diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 5d12161..52247e6 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -68,6 +68,8 @@ MainWindow::MainWindow() &MainWindow::onImportSellerJsonActionTriggered); connect(ui_.exportSellerJsonAction, &QAction::triggered, this, &MainWindow::onExportSellerJsonActionTriggered); + connect(ui_.exportSalesJsonAction, &QAction::triggered, this, + &MainWindow::onExportSalesJsonActionTriggered); } void MainWindow::onActionEditSellerTriggered() @@ -276,11 +278,19 @@ void MainWindow::onImportSellerJsonActionTriggered() JsonUtil::importSellers(filename.toStdString(), marketplace_.get()); } - void MainWindow::onExportSellerJsonActionTriggered() { auto filename = QFileDialog::getSaveFileName(this, "Verkäufer exportieren", QString(), "JSON Dateien (*.json)"); JsonUtil::exportSellers(filename.toStdString(), marketplace_.get()); +} + +void MainWindow::onExportSalesJsonActionTriggered() +{ + QSettings settings; + + auto filename = QFileDialog::getSaveFileName(this, "Umsätze/Transaktionen exportieren", + QString(), "JSON Dateien (*.json)"); + JsonUtil::exportSales(filename.toStdString(), marketplace_.get(), settings.value("global/cashPointNo").toInt()); } \ No newline at end of file diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 77f59c6..300f039 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -35,6 +35,7 @@ class MainWindow : public QMainWindow void onImportSellerExcelActionTriggered(); void onImportSellerJsonActionTriggered(); void onExportSellerJsonActionTriggered(); + void onExportSalesJsonActionTriggered(); void setSaleModel(); Ui::MainWindow ui_; diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index f0f54a6..6af5b36 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -421,15 +421,16 @@ drucken - + - &Extras + &Umsätze + - + @@ -482,6 +483,11 @@ drucken Aus JSON-Datei + + + Exportieren (JSON) + + From 0a91de4d8697b6cfe0b7cf5b8bde96f23ec2c7d9 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Thu, 2 Aug 2018 15:28:35 +0200 Subject: [PATCH 3/3] importing sales started --- src/core/jsonutil.cpp | 15 +++++++++++++++ src/core/jsonutil.h | 1 + src/gui/mainwindow.cpp | 33 +++++++++++++++++++++++++++++++-- src/gui/mainwindow.h | 1 + src/gui/mainwindow.ui | 6 ++++++ 5 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/core/jsonutil.cpp b/src/core/jsonutil.cpp index 8935760..5acadee 100644 --- a/src/core/jsonutil.cpp +++ b/src/core/jsonutil.cpp @@ -86,4 +86,19 @@ void JsonUtil::exportSales(const std::string& filename, Marketplace* market, int } writer->write(root, &file); +} + +void JsonUtil::importSales(const std::string& filename, Marketplace* market, int cashPointNo) +{ + Json::Value jsonValues; + std::ifstream file(filename); + file >> jsonValues; + + int source_no = jsonValues["source_no"].asInt(); + if (source_no == cashPointNo) { + throw std::runtime_error("Die Kassen-Nr. der zu imporierenden Daten wird von dieser Kasse " + "hier bereits verwendet."); + } + + // TODO: Import sales } \ No newline at end of file diff --git a/src/core/jsonutil.h b/src/core/jsonutil.h index 45403e1..1f0335d 100644 --- a/src/core/jsonutil.h +++ b/src/core/jsonutil.h @@ -11,6 +11,7 @@ class JsonUtil static void exportSellers(const std::string& filename, Marketplace* market); static void importSellers(const std::string& filename, Marketplace* market); static void exportSales(const std::string& filename, Marketplace* market, int cashPointNo); + static void importSales(const std::string& filename, Marketplace* market, int cashPointNo); }; #endif \ No newline at end of file diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 52247e6..8447b59 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -12,6 +12,7 @@ #include #include +#include #include #include @@ -70,6 +71,8 @@ MainWindow::MainWindow() &MainWindow::onExportSellerJsonActionTriggered); connect(ui_.exportSalesJsonAction, &QAction::triggered, this, &MainWindow::onExportSalesJsonActionTriggered); + connect(ui_.importSalesJsonAction, &QAction::triggered, this, + &MainWindow::onImportSalesJsonActionTriggered); } void MainWindow::onActionEditSellerTriggered() @@ -292,5 +295,31 @@ void MainWindow::onExportSalesJsonActionTriggered() auto filename = QFileDialog::getSaveFileName(this, "Umsätze/Transaktionen exportieren", QString(), "JSON Dateien (*.json)"); - JsonUtil::exportSales(filename.toStdString(), marketplace_.get(), settings.value("global/cashPointNo").toInt()); -} \ No newline at end of file + JsonUtil::exportSales(filename.toStdString(), marketplace_.get(), + settings.value("global/cashPointNo").toInt()); +} + +void MainWindow::onImportSalesJsonActionTriggered() +{ + /* if (!marketplace_->getSales().empty()) { + QMessageBox(QMessageBox::Icon::Information, "Import nicht möglich", + "Der Import ist nicht möglich, da schon Verkäufe getätigt wurden.", + QMessageBox::StandardButton::Ok, this) + .exec(); + return; + } */ + + QSettings settings; + + auto filename = QFileDialog::getOpenFileName(this, "Umsätze/Transaktionen importieren", + QString(), "JSON Dateien (*.json)"); + + try { + JsonUtil::importSales(filename.toStdString(), marketplace_.get(), + settings.value("global/cashPointNo").toInt()); + } catch (std::runtime_error& err) { + QMessageBox(QMessageBox::Icon::Warning, "Import nicht möglich", err.what(), QMessageBox::Ok, + this) + .exec(); + } +} diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 300f039..f928e6b 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -36,6 +36,7 @@ class MainWindow : public QMainWindow void onImportSellerJsonActionTriggered(); void onExportSellerJsonActionTriggered(); void onExportSalesJsonActionTriggered(); + void onImportSalesJsonActionTriggered(); void setSaleModel(); Ui::MainWindow ui_; diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index 6af5b36..2e7d874 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -426,6 +426,7 @@ drucken &Umsätze + @@ -488,6 +489,11 @@ drucken Exportieren (JSON) + + + Importieren (JSON) + +