soll calculation
This commit is contained in:
+8
-3
@@ -190,9 +190,9 @@ QTime cBooking::ist()
|
||||
return(QTime(0, 0, 0).addSecs(istSecs()));
|
||||
}
|
||||
|
||||
void cBooking::setSoll()
|
||||
void cBooking::setSoll(const QTime& time)
|
||||
{
|
||||
m_soll = QTime(0, 0, 0);
|
||||
m_soll = time;
|
||||
}
|
||||
|
||||
QTime cBooking::soll()
|
||||
@@ -364,8 +364,9 @@ int cBooking::totalPause()
|
||||
return(geht1().secsTo(kommt2()) + geht2().secsTo(kommt3()) + geht3().secsTo(kommt4()) + geht4().secsTo(kommt5()));
|
||||
}
|
||||
|
||||
bool cBookingList::load()
|
||||
bool cBookingList::load(cDailyWorkingList* lpDailyWorkingList)
|
||||
{
|
||||
m_lpDailyWorkingList = lpDailyWorkingList;
|
||||
QSqlQuery query;
|
||||
|
||||
query.prepare("SELECT datum, "
|
||||
@@ -408,6 +409,10 @@ bool cBookingList::load()
|
||||
lpBooking->setGeht5(query.value("geht5").toTime());
|
||||
lpBooking->setCode(query.value("code").toString());
|
||||
lpBooking->setInformation(query.value("information").toString());
|
||||
|
||||
cDailyWorking* lpDailyWorking = m_lpDailyWorkingList->get(lpBooking->date());
|
||||
if(lpDailyWorking)
|
||||
lpBooking->setSoll(lpDailyWorking->soll(lpBooking->date().dayOfWeek()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+66
-61
@@ -2,6 +2,8 @@
|
||||
#define CBOOKING_H
|
||||
|
||||
|
||||
#include "cdailyworking.h"
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
@@ -16,88 +18,88 @@ class cBooking : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit cBooking(const QDate& date, QObject* parent = nullptr);
|
||||
explicit cBooking(const QDate& date, QObject* parent = nullptr);
|
||||
|
||||
QDate date();
|
||||
QDate date();
|
||||
|
||||
void setKommt1(const QTime& time);
|
||||
QTime kommt1();
|
||||
void setKommt1(const QTime& time);
|
||||
QTime kommt1();
|
||||
|
||||
void setGeht1(const QTime& time);
|
||||
QTime geht1();
|
||||
void setGeht1(const QTime& time);
|
||||
QTime geht1();
|
||||
|
||||
void setKommt2(const QTime& time);
|
||||
QTime kommt2();
|
||||
void setKommt2(const QTime& time);
|
||||
QTime kommt2();
|
||||
|
||||
void setGeht2(const QTime& time);
|
||||
QTime geht2();
|
||||
void setGeht2(const QTime& time);
|
||||
QTime geht2();
|
||||
|
||||
void setKommt3(const QTime& time);
|
||||
QTime kommt3();
|
||||
void setKommt3(const QTime& time);
|
||||
QTime kommt3();
|
||||
|
||||
void setGeht3(const QTime& time);
|
||||
QTime geht3();
|
||||
void setGeht3(const QTime& time);
|
||||
QTime geht3();
|
||||
|
||||
void setKommt4(const QTime& time);
|
||||
QTime kommt4();
|
||||
void setKommt4(const QTime& time);
|
||||
QTime kommt4();
|
||||
|
||||
void setGeht4(const QTime& time);
|
||||
QTime geht4();
|
||||
void setGeht4(const QTime& time);
|
||||
QTime geht4();
|
||||
|
||||
void setKommt5(const QTime& time);
|
||||
QTime kommt5();
|
||||
void setKommt5(const QTime& time);
|
||||
QTime kommt5();
|
||||
|
||||
void setGeht5(const QTime& time);
|
||||
QTime geht5();
|
||||
void setGeht5(const QTime& time);
|
||||
QTime geht5();
|
||||
|
||||
void setCode(const QString& code);
|
||||
QString code();
|
||||
void setCode(const QString& code);
|
||||
QString code();
|
||||
|
||||
void setInformation(const QString& information);
|
||||
QString information();
|
||||
void setInformation(const QString& information);
|
||||
QString information();
|
||||
|
||||
qint32 pauseSecs();
|
||||
QTime pause();
|
||||
qint32 pauseSecs();
|
||||
QTime pause();
|
||||
|
||||
qint32 istSecs();
|
||||
QTime ist();
|
||||
qint32 istSecs();
|
||||
QTime ist();
|
||||
|
||||
void setSoll();
|
||||
QTime soll();
|
||||
void setSoll(const QTime& time);
|
||||
QTime soll();
|
||||
|
||||
qint32 diff();
|
||||
QString diffString();
|
||||
qint32 diff();
|
||||
QString diffString();
|
||||
|
||||
void setPrevDiff(qint32 diff);
|
||||
qint32 prevDiff();
|
||||
void setPrevDiff(qint32 diff);
|
||||
qint32 prevDiff();
|
||||
|
||||
qint32 currentDiff();
|
||||
QString currentDiffString();
|
||||
qint32 currentDiff();
|
||||
QString currentDiffString();
|
||||
|
||||
qreal hoursDecimal();
|
||||
qreal hoursDecimal();
|
||||
|
||||
bool save();
|
||||
bool save();
|
||||
private:
|
||||
QDate m_date;
|
||||
QTime m_kommt1;
|
||||
QTime m_geht1;
|
||||
QTime m_kommt2;
|
||||
QTime m_geht2;
|
||||
QTime m_kommt3;
|
||||
QTime m_geht3;
|
||||
QTime m_kommt4;
|
||||
QTime m_geht4;
|
||||
QTime m_kommt5;
|
||||
QTime m_geht5;
|
||||
QString m_code;
|
||||
QString m_information;
|
||||
QTime m_soll;
|
||||
qint32 m_prevDiff;
|
||||
QDate m_date;
|
||||
QTime m_kommt1;
|
||||
QTime m_geht1;
|
||||
QTime m_kommt2;
|
||||
QTime m_geht2;
|
||||
QTime m_kommt3;
|
||||
QTime m_geht3;
|
||||
QTime m_kommt4;
|
||||
QTime m_geht4;
|
||||
QTime m_kommt5;
|
||||
QTime m_geht5;
|
||||
QString m_code;
|
||||
QString m_information;
|
||||
QTime m_soll;
|
||||
qint32 m_prevDiff;
|
||||
|
||||
void bind(QSqlQuery& query, const QString& variable, const QTime& time);
|
||||
void bind(QSqlQuery& query, const QString& variable, const QTime& time);
|
||||
|
||||
int totalWork();
|
||||
int totalPause();
|
||||
int totalWork();
|
||||
int totalPause();
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cBooking*)
|
||||
@@ -105,9 +107,12 @@ Q_DECLARE_METATYPE(cBooking*)
|
||||
class cBookingList : public QList<cBooking*>
|
||||
{
|
||||
public:
|
||||
bool load();
|
||||
cBooking* add(const QDate& date);
|
||||
cBooking* find(const QDate& date);
|
||||
bool load(cDailyWorkingList* m_dailyWorkingList);
|
||||
cBooking* add(const QDate& date);
|
||||
cBooking* find(const QDate& date);
|
||||
|
||||
private:
|
||||
cDailyWorkingList* m_lpDailyWorkingList;
|
||||
};
|
||||
|
||||
#endif // CBOOKING_H
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
#include "cdailyworking.h"
|
||||
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
cDailyWorking::cDailyWorking(const QDate& date, QObject *parent) :
|
||||
QObject(parent),
|
||||
m_date(date),
|
||||
m_montag(QTime(7, 42, 0)),
|
||||
m_dienstag(QTime(7, 42, 0)),
|
||||
m_mittwoch(QTime(7, 42, 0)),
|
||||
m_donnerstag(QTime(7, 42, 0)),
|
||||
m_freitag(QTime(7, 42, 0)),
|
||||
m_samstag(QTime(0, 0, 0)),
|
||||
m_sonntag(QTime(0, 0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
QDate cDailyWorking::date()
|
||||
{
|
||||
return(m_date);
|
||||
}
|
||||
|
||||
void cDailyWorking::setMontag(const QTime& time)
|
||||
{
|
||||
m_montag = time;
|
||||
}
|
||||
|
||||
QTime cDailyWorking::montag()
|
||||
{
|
||||
return(m_montag);
|
||||
}
|
||||
|
||||
void cDailyWorking::setDienstag(const QTime& time)
|
||||
{
|
||||
m_dienstag = time;
|
||||
}
|
||||
|
||||
QTime cDailyWorking::dienstag()
|
||||
{
|
||||
return(m_dienstag);
|
||||
}
|
||||
|
||||
void cDailyWorking::setMittwoch(const QTime& time)
|
||||
{
|
||||
m_mittwoch = time;
|
||||
}
|
||||
|
||||
QTime cDailyWorking::mittwoch()
|
||||
{
|
||||
return(m_mittwoch);
|
||||
}
|
||||
|
||||
void cDailyWorking::setDonnerstag(const QTime& time)
|
||||
{
|
||||
m_donnerstag = time;
|
||||
}
|
||||
|
||||
QTime cDailyWorking::donnerstag()
|
||||
{
|
||||
return(m_donnerstag);
|
||||
}
|
||||
|
||||
void cDailyWorking::setFreitag(const QTime& time)
|
||||
{
|
||||
m_freitag = time;
|
||||
}
|
||||
|
||||
QTime cDailyWorking::freitag()
|
||||
{
|
||||
return(m_freitag);
|
||||
}
|
||||
|
||||
void cDailyWorking::setSamstag(const QTime& time)
|
||||
{
|
||||
m_samstag = time;
|
||||
}
|
||||
|
||||
QTime cDailyWorking::samstag()
|
||||
{
|
||||
return(m_samstag);
|
||||
}
|
||||
|
||||
void cDailyWorking::setSonntag(const QTime& time)
|
||||
{
|
||||
m_sonntag = time;
|
||||
}
|
||||
|
||||
QTime cDailyWorking::sonntag()
|
||||
{
|
||||
return(m_sonntag);
|
||||
}
|
||||
|
||||
QTime cDailyWorking::soll(qint16 day)
|
||||
{
|
||||
switch(day)
|
||||
{
|
||||
case 1:
|
||||
return(montag());
|
||||
case 2:
|
||||
return(dienstag());
|
||||
case 3:
|
||||
return(mittwoch());
|
||||
case 4:
|
||||
return(donnerstag());
|
||||
case 5:
|
||||
return(freitag());
|
||||
case 6:
|
||||
return(samstag());
|
||||
case 7:
|
||||
return(sonntag());
|
||||
default:
|
||||
return(QTime(0, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
bool cDailyWorkingList::load()
|
||||
{
|
||||
QSqlQuery query;
|
||||
|
||||
query.prepare("SELECT datum, "
|
||||
" montag,"
|
||||
" dienstag, "
|
||||
" mittwoch, "
|
||||
" donnerstag, "
|
||||
" freitag, "
|
||||
" samstag, "
|
||||
" sonntag "
|
||||
"FROM dailyWorking "
|
||||
"ORDER BY datum;");
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
qDebug() << "SELECT FROM dailyWorking: " << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
while(query.next())
|
||||
{
|
||||
cDailyWorking* lpWorking = add(query.value("datum").toDate());
|
||||
|
||||
if(lpWorking)
|
||||
{
|
||||
lpWorking->setMontag(query.value("montag").toTime());
|
||||
lpWorking->setDienstag(query.value("dienstag").toTime());
|
||||
lpWorking->setMittwoch(query.value("mittwoch").toTime());
|
||||
lpWorking->setDonnerstag(query.value("donnerstag").toTime());
|
||||
lpWorking->setFreitag(query.value("freitag").toTime());
|
||||
lpWorking->setSamstag(query.value("samstag").toTime());
|
||||
lpWorking->setSonntag(query.value("sonntag").toTime());
|
||||
}
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cDailyWorking* cDailyWorkingList::add(const QDate& date)
|
||||
{
|
||||
if(find(date))
|
||||
return(nullptr);
|
||||
|
||||
cDailyWorking* lpWorking = new cDailyWorking(date);
|
||||
append(lpWorking);
|
||||
return(lpWorking);
|
||||
}
|
||||
|
||||
cDailyWorking* cDailyWorkingList::find(const QDate& date)
|
||||
{
|
||||
for(cDailyWorkingList::iterator i = begin();i != end(); i++)
|
||||
{
|
||||
if((*i)->date() == date)
|
||||
return(*i);
|
||||
}
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
cDailyWorking* cDailyWorkingList::get(const QDate& date)
|
||||
{
|
||||
for(cDailyWorkingList::iterator i = begin();i != end(); i++)
|
||||
{
|
||||
if((*i)->date() <= date)
|
||||
return(*i);
|
||||
}
|
||||
return(nullptr);
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
#ifndef CDAILYWORKING_H
|
||||
#define CDAILYWORKING_H
|
||||
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
#include <QDate>
|
||||
#include <QTime>
|
||||
|
||||
|
||||
class cDailyWorking : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit cDailyWorking(const QDate& date, QObject *parent = nullptr);
|
||||
|
||||
QDate date();
|
||||
|
||||
void setMontag(const QTime& time);
|
||||
QTime montag();
|
||||
|
||||
void setDienstag(const QTime& time);
|
||||
QTime dienstag();
|
||||
|
||||
void setMittwoch(const QTime& time);
|
||||
QTime mittwoch();
|
||||
|
||||
void setDonnerstag(const QTime& time);
|
||||
QTime donnerstag();
|
||||
|
||||
void setFreitag(const QTime& time);
|
||||
QTime freitag();
|
||||
|
||||
void setSamstag(const QTime& time);
|
||||
QTime samstag();
|
||||
|
||||
void setSonntag(const QTime& time);
|
||||
QTime sonntag();
|
||||
|
||||
QTime soll(qint16 day);
|
||||
|
||||
private:
|
||||
QDate m_date;
|
||||
QTime m_montag;
|
||||
QTime m_dienstag;
|
||||
QTime m_mittwoch;
|
||||
QTime m_donnerstag;
|
||||
QTime m_freitag;
|
||||
QTime m_samstag;
|
||||
QTime m_sonntag;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cDailyWorking*)
|
||||
|
||||
class cDailyWorkingList : public QList<cDailyWorking*>
|
||||
{
|
||||
public:
|
||||
bool load();
|
||||
cDailyWorking* add(const QDate& date);
|
||||
cDailyWorking* find(const QDate& date);
|
||||
cDailyWorking* get(const QDate& date);
|
||||
};
|
||||
|
||||
#endif // CDAILYWORKING_H
|
||||
+24
-11
@@ -19,7 +19,8 @@ cMainWindow::cMainWindow(QWidget *parent) :
|
||||
m_lpMonthlyView(nullptr)
|
||||
{
|
||||
openDB();
|
||||
m_bookingList.load();
|
||||
m_dailyWorkingList.load();
|
||||
m_bookingList.load(&m_dailyWorkingList);
|
||||
|
||||
initUI();
|
||||
|
||||
@@ -93,22 +94,34 @@ void cMainWindow::openDB()
|
||||
}
|
||||
|
||||
qDebug() << "Database opened";
|
||||
QSqlQuery query;
|
||||
|
||||
// if(!m_db.tables().contains("config"))
|
||||
// {
|
||||
// QSqlQuery query;
|
||||
|
||||
// query.prepare("CREATE TABLE config "
|
||||
// " ")
|
||||
// }
|
||||
if(!m_db.tables().contains("dailyWorking"))
|
||||
{
|
||||
query.prepare("CREATE TABLE dailyWorking "
|
||||
"( "
|
||||
" ab DATE PRIMARY KEY UNIQUE, "
|
||||
" montag TIME, "
|
||||
" dienstag TIME, "
|
||||
" mittwoch TIME, "
|
||||
" donnerstag TIME, "
|
||||
" freitag TIME, "
|
||||
" samstag TIME, "
|
||||
" sonntag TIME "
|
||||
");");
|
||||
if(!query.exec())
|
||||
{
|
||||
qDebug() << "CREATE TABLE dailyWorking: " << query.lastError().text();
|
||||
return;
|
||||
}
|
||||
qDebug() << "CREATE TABLE dailyWorking";
|
||||
}
|
||||
|
||||
if(!m_db.tables().contains("booking"))
|
||||
{
|
||||
QSqlQuery query;
|
||||
|
||||
query.prepare("CREATE TABLE booking "
|
||||
"( "
|
||||
" datum DATE PRIMARY KEY UNIQE, "
|
||||
" datum DATE PRIMARY KEY UNIQUE, "
|
||||
" kommt1 TIME, "
|
||||
" geht1 TIME, "
|
||||
" kommt2 TIME, "
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
|
||||
#include "cmonthlyview.h"
|
||||
#include "cdailyworking.h"
|
||||
#include "cbooking.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
@@ -27,6 +28,7 @@ private:
|
||||
Ui::cMainWindow* ui;
|
||||
cMonthlyView* m_lpMonthlyView;
|
||||
QSqlDatabase m_db;
|
||||
cDailyWorkingList m_dailyWorkingList;
|
||||
cBookingList m_bookingList;
|
||||
|
||||
void initUI();
|
||||
|
||||
@@ -26,6 +26,7 @@ CONFIG += c++11
|
||||
|
||||
SOURCES += \
|
||||
cbooking.cpp \
|
||||
cdailyworking.cpp \
|
||||
cmonthlyitemdelegate.cpp \
|
||||
cmonthlyview.cpp \
|
||||
cpublicholiday.cpp \
|
||||
@@ -34,6 +35,7 @@ SOURCES += \
|
||||
|
||||
HEADERS += \
|
||||
cbooking.h \
|
||||
cdailyworking.h \
|
||||
cmainwindow.h \
|
||||
cmonthlyitemdelegate.h \
|
||||
cmonthlyview.h \
|
||||
|
||||
Reference in New Issue
Block a user