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
+