Compare commits

...

3 commits

Author SHA1 Message Date
0a91de4d86 importing sales started 2018-08-02 15:28:35 +02:00
c82378dfa9 export sales works now 2018-08-02 15:06:35 +02:00
dc54809146 code cleanup 2018-08-02 14:42:15 +02:00
6 changed files with 115 additions and 11 deletions

View file

@ -18,14 +18,13 @@ void ExcelReader::readSellersFromFile(const std::string& filename, Marketplace*
int rowCount{}; int rowCount{};
for (const auto& row : ws.rows(false)) { for (const auto& row : ws.rows(false)) {
// auto test = row[0].value<int>();
if (rowCount < START_ROW) { if (rowCount < START_ROW) {
++rowCount; ++rowCount;
continue; continue;
} else if (rowCount > END_ROW) { } else if (rowCount > END_ROW) {
break; break;
} }
if(row[2].value<std::string>().empty() && row[3].value<std::string>().empty()) { if (row[2].value<std::string>().empty() && row[3].value<std::string>().empty()) {
++rowCount; ++rowCount;
continue; continue;
} }

View file

@ -31,17 +31,16 @@ void JsonUtil::exportSellers(const std::string& filename, Marketplace* market)
void JsonUtil::importSellers(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); seller->setState(Seller::State::DELETE);
} }
market->storeToDb(true); market->storeToDb(true);
Json::Value jsonValues; Json::Value jsonValues;
std::ifstream file(filename); std::ifstream file(filename);
file >> jsonValues; file >> jsonValues;
for(auto val : jsonValues["sellers"]) { for (auto val : jsonValues["sellers"]) {
auto seller = std::make_unique<Seller>(); auto seller = std::make_unique<Seller>();
seller->setUuidFromString(val["uuid"].asString()); seller->setUuidFromString(val["uuid"].asString());
seller->setSellerNo(val["seller_no"].asInt()); seller->setSellerNo(val["seller_no"].asInt());
@ -51,4 +50,55 @@ void JsonUtil::importSellers(const std::string& filename, Marketplace* market)
market->getSellers().push_back(std::move(seller)); market->getSellers().push_back(std::move(seller));
} }
market->storeToDb(); 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<Json::StreamWriter> 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);
}
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
} }

View file

@ -10,6 +10,8 @@ class JsonUtil
public: public:
static void exportSellers(const std::string& filename, Marketplace* market); static void exportSellers(const std::string& filename, Marketplace* market);
static void importSellers(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 #endif

View file

@ -12,6 +12,7 @@
#include <excelreader.h> #include <excelreader.h>
#include <regex> #include <regex>
#include <exception>
#include <QFileDialog> #include <QFileDialog>
#include <QMessageBox> #include <QMessageBox>
@ -68,6 +69,10 @@ MainWindow::MainWindow()
&MainWindow::onImportSellerJsonActionTriggered); &MainWindow::onImportSellerJsonActionTriggered);
connect(ui_.exportSellerJsonAction, &QAction::triggered, this, connect(ui_.exportSellerJsonAction, &QAction::triggered, this,
&MainWindow::onExportSellerJsonActionTriggered); &MainWindow::onExportSellerJsonActionTriggered);
connect(ui_.exportSalesJsonAction, &QAction::triggered, this,
&MainWindow::onExportSalesJsonActionTriggered);
connect(ui_.importSalesJsonAction, &QAction::triggered, this,
&MainWindow::onImportSalesJsonActionTriggered);
} }
void MainWindow::onActionEditSellerTriggered() void MainWindow::onActionEditSellerTriggered()
@ -276,11 +281,45 @@ void MainWindow::onImportSellerJsonActionTriggered()
JsonUtil::importSellers(filename.toStdString(), marketplace_.get()); JsonUtil::importSellers(filename.toStdString(), marketplace_.get());
} }
void MainWindow::onExportSellerJsonActionTriggered() void MainWindow::onExportSellerJsonActionTriggered()
{ {
auto filename = QFileDialog::getSaveFileName(this, "Verkäufer exportieren", QString(), auto filename = QFileDialog::getSaveFileName(this, "Verkäufer exportieren", QString(),
"JSON Dateien (*.json)"); "JSON Dateien (*.json)");
JsonUtil::exportSellers(filename.toStdString(), marketplace_.get()); 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());
}
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();
}
}

View file

@ -35,6 +35,8 @@ class MainWindow : public QMainWindow
void onImportSellerExcelActionTriggered(); void onImportSellerExcelActionTriggered();
void onImportSellerJsonActionTriggered(); void onImportSellerJsonActionTriggered();
void onExportSellerJsonActionTriggered(); void onExportSellerJsonActionTriggered();
void onExportSalesJsonActionTriggered();
void onImportSalesJsonActionTriggered();
void setSaleModel(); void setSaleModel();
Ui::MainWindow ui_; Ui::MainWindow ui_;

View file

@ -421,15 +421,17 @@ drucken</string>
<addaction name="aboutAction"/> <addaction name="aboutAction"/>
<addaction name="aboutQtAction"/> <addaction name="aboutQtAction"/>
</widget> </widget>
<widget class="QMenu" name="menuExtras"> <widget class="QMenu" name="menuSales">
<property name="title"> <property name="title">
<string>&amp;Extras</string> <string>&amp;Umsätze</string>
</property> </property>
<addaction name="reportAction"/> <addaction name="reportAction"/>
<addaction name="importSalesJsonAction"/>
<addaction name="exportSalesJsonAction"/>
</widget> </widget>
<addaction name="menu_Datei"/> <addaction name="menu_Datei"/>
<addaction name="menu_Edit"/> <addaction name="menu_Edit"/>
<addaction name="menuExtras"/> <addaction name="menuSales"/>
<addaction name="menuHilfe"/> <addaction name="menuHilfe"/>
</widget> </widget>
<widget class="QStatusBar" name="statusbar"/> <widget class="QStatusBar" name="statusbar"/>
@ -482,6 +484,16 @@ drucken</string>
<string>Aus JSON-Datei</string> <string>Aus JSON-Datei</string>
</property> </property>
</action> </action>
<action name="exportSalesJsonAction">
<property name="text">
<string>Exportieren (JSON)</string>
</property>
</action>
<action name="importSalesJsonAction">
<property name="text">
<string>Importieren (JSON)</string>
</property>
</action>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>