/*************************************************************************** libMiniCash Copyright © 2013-2022 christoph holzheuer c.holzheuer@sourceworx.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. ***************************************************************************/ #include #include #include #include #include #include /** * @brief MCSalesSummary::MCSalesSummary: speichert die Verkaufsliste einzelner Kunden nach Kundennummer. */ MCSalesSummary::MCSalesSummary() : QMap() { } /** * @brief Liest jeweils eine Transaktionsdatei ein. * * @param filename der Dateiname * @param salescount die Gesamtanzahl der Verkäufe, wird hier hochgezählt * @param model das Datenmodel * @return die Anzahl der Verkäufe in dieser Datei */ int MCSalesSummary::appendFromFile( const QString& filename, int& customercount, MCSalesModel& model ) { QFile file( filename ); if ( !file.open(QIODevice::ReadOnly | QIODevice::Text ) ) return -1; // throw... int salescount = 0; QSet customerSet; QTextStream input(&file); while( !input.atEnd() ) { QString line = input.readLine(); QStringList entries = line.simplified().split( QRegularExpression("\\s+") ); if( entries.size() < MCSalesItemMap::MaxSize ) continue; const QString& tcount = entries[ MCSalesItemMap::Count ]; const QString& sellerID = entries[ MCSalesItemMap::SellerID ]; const QString& itemNo = entries[ MCSalesItemMap::ItemNo ]; const QString& price = entries[ MCSalesItemMap::Price ]; /// Transaktionen des Kunden holen, eventuell erzeugen MCSalesItemMap& result = operator[]( sellerID ); customerSet.insert( tcount ); /// speichern ... result.appendItem ( sellerID, itemNo, price ); /// die Transaktionsnummer entspricht der Anzahl der Kunden /// und auch anzeigen model.appendEntry ( tcount, sellerID, itemNo, price ); salescount++; } customercount = customerSet.count(); return salescount; } /** * @brief Dump nach cout zu debugging-zwecken */ void MCSalesSummary::dump() { // for( const QString& key : *this->keys() ) haut so nicht hin, lernen foreach (const QString &str, keys()) { qDebug() << str << ':' << ": "; value( str ).dump(); } }