From 045bc8dd20c87507b72d48c8b4022049ee100894 Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Thu, 2 Aug 2018 11:15:15 +0200 Subject: [PATCH] export sellers as json file --- src/core/CMakeLists.txt | 6 ++++-- src/core/excelreader.cpp | 12 ++++++++---- src/core/jsonutil.cpp | 31 +++++++++++++++++++++++++++++++ src/core/jsonutil.h | 14 ++++++++++++++ src/gui/kima2.cpp | 4 ++-- src/gui/mainwindow.cpp | 15 +++++++++++++-- src/gui/mainwindow.h | 3 ++- src/gui/mainwindow.ui | 6 ++++++ 8 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 src/core/jsonutil.cpp create mode 100644 src/core/jsonutil.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 7df4118..64a1c6b 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -3,7 +3,8 @@ set(Boost_USE_STATIC_LIBS ON) find_package(Boost 1.62 COMPONENTS date_time REQUIRED) find_package(SQLite3 REQUIRED) find_package(PkgConfig REQUIRED) -pkg_check_modules(XLNT REQUIRED xlnt) +pkg_check_modules(XLNT REQUIRED xlnt>=1.3) +pkg_check_modules(JSONCPP REQUIRED jsoncpp) set(CORE_SOURCES database.cpp @@ -13,10 +14,11 @@ set(CORE_SOURCES sale.cpp marketplace.cpp excelreader.cpp + jsonutil ) add_library(core STATIC ${CORE_SOURCES}) -target_link_libraries(core Boost::boost Boost::date_time sqlite3 ${XLNT_LIBRARIES}) +target_link_libraries(core Boost::boost Boost::date_time sqlite3 ${XLNT_LIBRARIES} ${JSONCPP_LIBRARIES}) if (WIN32) target_link_libraries(core bcrypt) endif() diff --git a/src/core/excelreader.cpp b/src/core/excelreader.cpp index eee03ef..f136a34 100644 --- a/src/core/excelreader.cpp +++ b/src/core/excelreader.cpp @@ -8,15 +8,19 @@ void ExcelReader::readSellersFromFile(const std::string& filename, Marketplace* wb.load(filename); auto ws = wb.sheet_by_index(0); - const int START_ROW = 6; - const int END_ROW = 349; + const int START_ROW = 5; + const int END_ROW = 350; int rowCount{}; for (const auto& row : ws.rows(false)) { // auto test = row[0].value(); - if (rowCount < START_ROW) + if (rowCount < START_ROW) { + rowCount++; continue; - std::cout << row[0].to_string() << "\n"; + } else if (rowCount > END_ROW) { + break; + } + std::cout << row[0].value() << "\n"; rowCount++; } } diff --git a/src/core/jsonutil.cpp b/src/core/jsonutil.cpp new file mode 100644 index 0000000..f163ba9 --- /dev/null +++ b/src/core/jsonutil.cpp @@ -0,0 +1,31 @@ +#include "jsonutil.h" + +#include + +#include + +void JsonUtil::exportSellers(const std::string& filename, Marketplace* market) +{ + Json::Value root; + std::ofstream file(filename); + + Json::StreamWriterBuilder builder; + builder["commentStyle"] = "None"; + builder["indentation"] = " "; + + std::unique_ptr writer(builder.newStreamWriter()); + + root["encoding"] = "UTF-8"; + + for (const auto& seller : market->getSellers()) { + Json::Value newEntry; + newEntry["uuid"] = seller->getUuidAsString(); + newEntry["seller_no"] = seller->getSellerNo(); + newEntry["last_name"] = seller->getLastName(); + newEntry["first_name"] = seller->getFirstName(); + newEntry["num_offered_articles"] = seller->getFirstName(); + root["sellers"].append(newEntry); + } + + writer->write(root, &file); +} \ No newline at end of file diff --git a/src/core/jsonutil.h b/src/core/jsonutil.h new file mode 100644 index 0000000..e71b59d --- /dev/null +++ b/src/core/jsonutil.h @@ -0,0 +1,14 @@ +#ifndef JSON_H +#define JSON_H + +#include "marketplace.h" + +#include + +class JsonUtil +{ + public: + static void exportSellers(const std::string& filename, Marketplace* market); +}; + +#endif \ No newline at end of file diff --git a/src/gui/kima2.cpp b/src/gui/kima2.cpp index baf9cb7..b8886cf 100644 --- a/src/gui/kima2.cpp +++ b/src/gui/kima2.cpp @@ -14,8 +14,8 @@ int main(int argc, char* argv[]) // Set the locale to german, so that currency is correct // std::locale german("de_DE.utf-8"); - std::locale myLocale(""); - std::locale::global(myLocale); + //std::locale myLocale(""); + //std::locale::global(myLocale); QApplication kimaApp{argc, argv}; diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index de48a3b..972981c 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -2,6 +2,7 @@ #include "basketmodel.h" #include "config.h" +#include "jsonutil.h" #include "pricedialog.h" #include "reportdialog.h" #include "salemodel.h" @@ -62,7 +63,9 @@ MainWindow::MainWindow() QSettings().value("global/cashPointNo").toString()); }); connect(ui_.importExcelAction, &QAction::triggered, this, - &MainWindow::onImportExcelActionTriggered); + &MainWindow::onImportSellerExcelActionTriggered); + connect(ui_.exportSellerJsonAction, &QAction::triggered, this, + &MainWindow::onExportSellerJsonActionTriggered); } void MainWindow::onActionEditSellerTriggered() @@ -239,7 +242,7 @@ void MainWindow::onAbout() ">info@rustysoft.de>

"); } -void MainWindow::onImportExcelActionTriggered() +void MainWindow::onImportSellerExcelActionTriggered() { if (!marketplace_->getSales().empty()) { QMessageBox(QMessageBox::Icon::Information, "Import nicht möglich", @@ -253,4 +256,12 @@ void MainWindow::onImportExcelActionTriggered() "Excel Dateien (*.xlsx *.xls)"); ExcelReader::readSellersFromFile(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()); } \ No newline at end of file diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 8c87f91..cf1b12d 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -32,7 +32,8 @@ class MainWindow : public QMainWindow void onActionEditSellerTriggered(); void onSellerNoEditCheckSellerNo(); void onPaidButtonTriggered(); - void onImportExcelActionTriggered(); + void onImportSellerExcelActionTriggered(); + void onExportSellerJsonActionTriggered(); void setSaleModel(); Ui::MainWindow ui_; diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index 56c493c..58e86c3 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -405,6 +405,7 @@ drucken
+ @@ -464,6 +465,11 @@ drucken Importieren (Excel) + + + Exportieren (JSON) + +