diff --git a/src/core/marketplace.cpp b/src/core/marketplace.cpp index aab11de..38abcf9 100644 --- a/src/core/marketplace.cpp +++ b/src/core/marketplace.cpp @@ -2,7 +2,6 @@ #include "database.h" #include -#include #include #include #include @@ -134,27 +133,6 @@ void Marketplace::removeSale(boost::uuids::uuid uuid) sales_.end()); } -void Marketplace::exportReportToCSV(const std::string& filename, int feeInPercent, int maxFeeInEuro) -{ - const char delimiter = ','; - std::ofstream file(filename); - - file << "Verk.Nr." << delimiter << "Nachname" << delimiter << "Vorname" << delimiter - << "Anz. gemeldet" << delimiter << "Anz. verkauft" << delimiter << "Umsatz" << delimiter - << "Auszahlung\n"; - - for (const auto& seller : sellers_) { - file << seller->getSellerNo() << delimiter - << escapeCsvValue(seller->getLastName(), delimiter) << delimiter - << escapeCsvValue(seller->getFirstName(), delimiter) << delimiter - << seller->numArticlesOffered() << delimiter << seller->numArticlesSold() << delimiter - << escapeCsvValue(seller->sumAsString(), delimiter) << delimiter - << escapeCsvValue(paymentAsString(seller->sumInCents(), feeInPercent, maxFeeInEuro), - delimiter) - << "\n"; - } -} - double marketFee(int sum, int percent, int maxFee) { int fee = (sum * percent) / 100.0L; @@ -178,29 +156,4 @@ std::string paymentAsString(int sumInCent, int percent, int maxFeeInCent) feeStream << std::right << std::setw(10) << std::showbase << std::put_money(sumInCent - marketFee(sumInCent, percent, maxFeeInCent), false); return feeStream.str(); -} - -std::string escapeCsvValue(const std::string& value, const char delimiter) -{ - std::stringstream output; - bool containsDelim{false}; - - if (value.find(delimiter) != std::string::npos || value.find('"') != std::string::npos) { - containsDelim = true; - output << '"'; - } - - for (auto& symbol : value) { - if (symbol == '"') { - output << '"' << symbol; - } else { - output << symbol; - } - } - - if (containsDelim) { - output << '"'; - } - - return output.str(); } \ No newline at end of file diff --git a/src/core/marketplace.h b/src/core/marketplace.h index b6613f1..203079d 100644 --- a/src/core/marketplace.h +++ b/src/core/marketplace.h @@ -41,8 +41,6 @@ class Marketplace void finishCurrentSale(std::unique_ptr sale); void removeSale(boost::uuids::uuid uuid); - void exportReportToCSV(const std::string& filename, int feeInPercent, int maxFeeInEuro); - private: SellersVec sellers_; SalesVec sales_; @@ -52,6 +50,5 @@ class Marketplace double marketFee(int sumInCent, int percent, int maxFeeInCent); std::string marketFeeAsString(int sumInCent, int percent, int maxFeeInCent); std::string paymentAsString(int sumInCent, int percent, int maxFeeInCent); -std::string escapeCsvValue(const std::string& value, const char delimiter); #endif \ No newline at end of file diff --git a/src/gui/reportdialog.cpp b/src/gui/reportdialog.cpp index f598c80..9d5e9e2 100644 --- a/src/gui/reportdialog.cpp +++ b/src/gui/reportdialog.cpp @@ -2,9 +2,6 @@ #include "mainwindow.h" -#include -#include - ReportDialog::ReportDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, f) { ui_.setupUi(this); @@ -12,21 +9,4 @@ ReportDialog::ReportDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(parent, model_ = std::make_unique(market_, ui_.reportView); ui_.reportView->setModel(model_.get()); ui_.reportView->hideColumn(0); - - connect(ui_.exportCsvButton, &QPushButton::clicked, this, &ReportDialog::onExportCsvButtonClicked); -} - -void ReportDialog::onExportCsvButtonClicked() -{ - QSettings settings; - int feeInPercent = settings.value("global/feeInPercent").toInt(); - int maxFeeInEuro = settings.value("global/maxFeeInEuro").toInt(); - - QFileDialog fileDialog(this); - fileDialog.setFileMode(QFileDialog::AnyFile); - fileDialog.setNameFilter("CSV Files (*.csv)"); - fileDialog.setAcceptMode(QFileDialog::AcceptSave); - if (fileDialog.exec()) { - market_->exportReportToCSV(fileDialog.selectedFiles().at(0).toStdString(), feeInPercent, maxFeeInEuro); - } } \ No newline at end of file diff --git a/src/gui/reportdialog.h b/src/gui/reportdialog.h index a6c21d6..987cf73 100644 --- a/src/gui/reportdialog.h +++ b/src/gui/reportdialog.h @@ -17,10 +17,7 @@ class ReportDialog : public QDialog ReportDialog(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowTitleHint | Qt::WindowSystemMenuHint); - private slots: - void onExportCsvButtonClicked(); - - private: + private: Ui::ReportDialog ui_; Marketplace* market_; std::unique_ptr model_; diff --git a/src/gui/reportdialog.ui b/src/gui/reportdialog.ui index 68e480a..fc2525f 100644 --- a/src/gui/reportdialog.ui +++ b/src/gui/reportdialog.ui @@ -39,7 +39,7 @@ - + Exportieren (.csv)