117 lines
2.8 KiB
C++
117 lines
2.8 KiB
C++
/***************************************************************************
|
|
|
|
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 <QMessageBox>
|
|
#include <QDebug>
|
|
#include <QSet>
|
|
|
|
#include <mcsalessummary.h>
|
|
#include <mcsalesmodel.h>
|
|
#include <mcsalessummary.h>
|
|
|
|
/**
|
|
* @brief MCSalesSummary::MCSalesSummary: speichert die Verkaufsliste einzelner Kunden nach Kundennummer.
|
|
*/
|
|
|
|
MCSalesSummary::MCSalesSummary()
|
|
: QMap<QString, MCSalesItemMap>()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @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<QString> 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();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|