Files
miniCashAll/libMiniCash/mcsalessummary.cpp
2025-08-05 22:37:51 +02:00

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();
}
}