Compare commits
132 Commits
@ -0,0 +1,2 @@
|
|||||||
|
cmake*
|
||||||
|
build
|
@ -0,0 +1,9 @@
|
|||||||
|
[submodule "3rdparty/qdecimal"]
|
||||||
|
path = 3rdparty/qdecimal
|
||||||
|
url = https://github.com/semihc/qdecimal.git
|
||||||
|
[submodule "3rdparty/QxOrm"]
|
||||||
|
path = 3rdparty/QxOrm
|
||||||
|
url = https://github.com/PepaRokos/QxOrm.git
|
||||||
|
[submodule "3rdparty/LimeReport"]
|
||||||
|
path = 3rdparty/LimeReport
|
||||||
|
url = https://github.com/PepaRokos/LimeReport.git
|
@ -0,0 +1,3 @@
|
|||||||
|
add_subdirectory(qdecimal)
|
||||||
|
add_subdirectory(QxOrm)
|
||||||
|
add_subdirectory(LimeReport)
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit b1bfd131ad3a9a107c176b4661a47eee54dfd481
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 975c3b5ad3e02e3a257f28ff81071da0a17a1e64
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 31d650e0e61acdef1f5b2c23b6daf26ea409c22c
|
@ -0,0 +1,17 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.24)
|
||||||
|
project(prodejna-root)
|
||||||
|
|
||||||
|
add_subdirectory(3rdparty/qdecimal)
|
||||||
|
add_subdirectory(3rdparty/QxOrm)
|
||||||
|
add_subdirectory(3rdparty/LimeReport)
|
||||||
|
|
||||||
|
add_subdirectory(core)
|
||||||
|
add_subdirectory(application)
|
||||||
|
add_subdirectory(countryregister)
|
||||||
|
add_subdirectory(addressbook)
|
||||||
|
add_subdirectory(postregister)
|
||||||
|
add_subdirectory(services)
|
||||||
|
add_subdirectory(shop)
|
||||||
|
add_subdirectory(commodity)
|
||||||
|
add_subdirectory(camp)
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
#include "accform.h"
|
|
||||||
#include "ui_accform.h"
|
|
||||||
|
|
||||||
AccForm::AccForm(QWidget *parent) :
|
|
||||||
QWidget(parent),
|
|
||||||
ui(new Ui::AccForm)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
AccForm::~AccForm()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
#include "accgrid.h"
|
|
||||||
|
|
||||||
#include "tablemodel.h"
|
|
||||||
|
|
||||||
AccGrid::AccGrid(QWidget *parent) :
|
|
||||||
GridForm<Person>(parent)
|
|
||||||
{
|
|
||||||
setTableModel(new TableModel());
|
|
||||||
}
|
|
||||||
|
|
||||||
AccGrid::~AccGrid()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
|||||||
#ifndef ACCGRID_H
|
|
||||||
#define ACCGRID_H
|
|
||||||
|
|
||||||
#include <core.h>
|
|
||||||
#include "data/person.h"
|
|
||||||
|
|
||||||
#include "accommodation-odb.hxx"
|
|
||||||
|
|
||||||
class AccGrid : public GridForm<Person>
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit AccGrid(QWidget *parent = NULL);
|
|
||||||
~AccGrid();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ACCGRID_H
|
|
@ -1,41 +0,0 @@
|
|||||||
#include <context.h>
|
|
||||||
|
|
||||||
#include "accommodation.h"
|
|
||||||
#include <QDebug>
|
|
||||||
|
|
||||||
#include "data/person.h"
|
|
||||||
#include "accommodationservice.h"
|
|
||||||
|
|
||||||
#include "accgrid.h"
|
|
||||||
#include "acform.h"
|
|
||||||
|
|
||||||
Accommodation::Accommodation()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Accommodation::initServiceUi()
|
|
||||||
{
|
|
||||||
AccGrid *grid = new AccGrid();
|
|
||||||
AcForm *form = new AcForm();
|
|
||||||
|
|
||||||
grid->setForm(form);
|
|
||||||
AccommodationService *service = new AccommodationService();
|
|
||||||
m_service = service;
|
|
||||||
m_ui = grid;
|
|
||||||
}
|
|
||||||
|
|
||||||
QIcon Accommodation::pluginIcon()
|
|
||||||
{
|
|
||||||
return QIcon(":/icons/accPlugin.svg");
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
QWidget *Accommodation::ui()
|
|
||||||
{
|
|
||||||
QWidget *ui = IPlugin::ui();
|
|
||||||
AccGrid *form = qobject_cast<AccGrid*>(ui);
|
|
||||||
|
|
||||||
form->fillData();
|
|
||||||
|
|
||||||
return ui;
|
|
||||||
}
|
|
||||||
*/
|
|
@ -1,37 +0,0 @@
|
|||||||
#ifndef ACCOMMODATION_H
|
|
||||||
#define ACCOMMODATION_H
|
|
||||||
|
|
||||||
#include "accommodation_global.h"
|
|
||||||
#include <core.h>
|
|
||||||
#include <QObject>
|
|
||||||
#include <QtPlugin>
|
|
||||||
|
|
||||||
class ACCOMMODATIONSHARED_EXPORT Accommodation : public QObject, IMetaDataPlugin
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
Q_PLUGIN_METADATA(IID PluginInterface_iid FILE "accommodation.json")
|
|
||||||
Q_INTERFACES(IPlugin)
|
|
||||||
|
|
||||||
public:
|
|
||||||
Accommodation();
|
|
||||||
|
|
||||||
// QString pluginName() Q_DECL_OVERRIDE;
|
|
||||||
// void init(const QJsonObject &metaData) Q_DECL_OVERRIDE;
|
|
||||||
// QString pluginId() Q_DECL_OVERRIDE;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void initServiceUi() Q_DECL_OVERRIDE;
|
|
||||||
|
|
||||||
|
|
||||||
// IPlugin interface
|
|
||||||
public:
|
|
||||||
//QWidget *ui();
|
|
||||||
|
|
||||||
// IPlugin interface
|
|
||||||
public:
|
|
||||||
virtual QIcon pluginIcon();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ACCOMMODATION_H
|
|
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"id" : "ACCOMMODATION",
|
|
||||||
"name" : {
|
|
||||||
"default" : "Accommodation",
|
|
||||||
"CZ" : "Kemp"
|
|
||||||
},
|
|
||||||
"descriptoin" : {
|
|
||||||
"default" : "",
|
|
||||||
"CZ" : ""
|
|
||||||
},
|
|
||||||
"schemaVersion" : 1,
|
|
||||||
"sql" : [
|
|
||||||
"CREATE TABLE \"Person\" (
|
|
||||||
\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
\"firstName\" TEXT NULL,
|
|
||||||
\"lastName\" TEXT NULL);"
|
|
||||||
|
|
||||||
],
|
|
||||||
"dependencies" : []
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
#-------------------------------------------------
|
|
||||||
#
|
|
||||||
# Project created by QtCreator 2015-10-28T15:27:14
|
|
||||||
#
|
|
||||||
#-------------------------------------------------
|
|
||||||
|
|
||||||
QT += widgets sql
|
|
||||||
|
|
||||||
TARGET = accommodation
|
|
||||||
TEMPLATE = lib
|
|
||||||
|
|
||||||
DEFINES += ACCOMMODATION_LIBRARY
|
|
||||||
|
|
||||||
SOURCES += accommodation.cpp \
|
|
||||||
data/person.cpp \
|
|
||||||
accommodationservice.cpp \
|
|
||||||
tablemodel.cpp \
|
|
||||||
acform.cpp \
|
|
||||||
accgrid.cpp \
|
|
||||||
data/address.cpp
|
|
||||||
|
|
||||||
HEADERS += accommodation.h\
|
|
||||||
accommodation_global.h \
|
|
||||||
data/person.h \
|
|
||||||
accommodationservice.h \
|
|
||||||
tablemodel.h \
|
|
||||||
acform.h \
|
|
||||||
accgrid.h \
|
|
||||||
data/address.h \
|
|
||||||
data/accommodation-data.h
|
|
||||||
|
|
||||||
include(../config_plugin.pri)
|
|
||||||
|
|
||||||
OTHER_FILES += \
|
|
||||||
accommodation.json
|
|
||||||
|
|
||||||
FORMS += \
|
|
||||||
acform.ui
|
|
||||||
|
|
||||||
ODB_FILES = accommodation/data/accommodation-data.h
|
|
||||||
H_DIR = $$PWD/data/*.h
|
|
||||||
include(../odb.pri)
|
|
||||||
|
|
||||||
RESOURCES += \
|
|
||||||
accrc.qrc
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
|||||||
#ifndef ACCOMMODATION_GLOBAL_H
|
|
||||||
#define ACCOMMODATION_GLOBAL_H
|
|
||||||
|
|
||||||
#include <QtCore/qglobal.h>
|
|
||||||
|
|
||||||
#if defined(ACCOMMODATION_LIBRARY)
|
|
||||||
# define ACCOMMODATIONSHARED_EXPORT Q_DECL_EXPORT
|
|
||||||
#else
|
|
||||||
# define ACCOMMODATIONSHARED_EXPORT Q_DECL_IMPORT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // ACCOMMODATION_GLOBAL_H
|
|
@ -1,28 +0,0 @@
|
|||||||
#include "accommodationservice.h"
|
|
||||||
|
|
||||||
#include <odb/database.hxx>
|
|
||||||
#include <odb/transaction.hxx>
|
|
||||||
|
|
||||||
#include "accommodation-odb.hxx"
|
|
||||||
|
|
||||||
AccommodationService::AccommodationService()
|
|
||||||
:Service<Person>("ACCOMMODATION")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
AccommodationService::~AccommodationService()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccommodationService::pokus(QSharedPointer<Person> entity)
|
|
||||||
{
|
|
||||||
odb::database *db = Context::instance().db();
|
|
||||||
//odb::transaction tr(db->begin());
|
|
||||||
|
|
||||||
Transaction tr;
|
|
||||||
this->all();
|
|
||||||
db->persist(entity);
|
|
||||||
tr.commit();
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
|||||||
#ifndef ACCOMMODATIONSERVICE_H
|
|
||||||
#define ACCOMMODATIONSERVICE_H
|
|
||||||
|
|
||||||
#include "data/person.h"
|
|
||||||
#include <core.h>
|
|
||||||
|
|
||||||
#include "accommodation_global.h"
|
|
||||||
#include "accommodation-odb.hxx"
|
|
||||||
|
|
||||||
class ACCOMMODATIONSHARED_EXPORT AccommodationService : public Service<Person>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
AccommodationService();
|
|
||||||
~AccommodationService();
|
|
||||||
|
|
||||||
void pokus(QSharedPointer<Person> entity);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ACCOMMODATIONSERVICE_H
|
|
@ -1,5 +0,0 @@
|
|||||||
<RCC>
|
|
||||||
<qresource prefix="/">
|
|
||||||
<file>icons/accPlugin.svg</file>
|
|
||||||
</qresource>
|
|
||||||
</RCC>
|
|
@ -1,34 +0,0 @@
|
|||||||
#include "acform.h"
|
|
||||||
#include "ui_acform.h"
|
|
||||||
#include <QList>
|
|
||||||
|
|
||||||
#include <settingsservice.h>
|
|
||||||
#include <settings/globalsettings.h>
|
|
||||||
|
|
||||||
#include "accommodation-odb.hxx"
|
|
||||||
|
|
||||||
AcForm::AcForm(QWidget *parent) :
|
|
||||||
AutoForm<Person>(parent),
|
|
||||||
ui(new Ui::AcForm)
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
registerBinding(ui->firstName);
|
|
||||||
registerBinding(ui->lastName);
|
|
||||||
}
|
|
||||||
|
|
||||||
AcForm::~AcForm()
|
|
||||||
{
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AcForm::registerCombos()
|
|
||||||
{
|
|
||||||
QList<ComboData> cbData;
|
|
||||||
Service<Address> srv;
|
|
||||||
foreach (QSharedPointer<Address> adr, srv.all()) {
|
|
||||||
cbData.append(ComboData(adr));
|
|
||||||
}
|
|
||||||
|
|
||||||
registerBinding(ui->address, cbData);
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
#ifndef ACFORM_H
|
|
||||||
#define ACFORM_H
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <autoform.h>
|
|
||||||
|
|
||||||
#include "data/person.h"
|
|
||||||
#include "accommodation-odb.hxx"
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class AcForm;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AcForm : public AutoForm<Person>
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit AcForm(QWidget *parent = 0);
|
|
||||||
~AcForm();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui::AcForm *ui;
|
|
||||||
|
|
||||||
// AutoForm interface
|
|
||||||
protected:
|
|
||||||
virtual void registerCombos();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ACFORM_H
|
|
@ -1,62 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AcForm</class>
|
|
||||||
<widget class="QWidget" name="AcForm">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>833</width>
|
|
||||||
<height>536</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Form</string>
|
|
||||||
</property>
|
|
||||||
<widget class="QLineEdit" name="firstName">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>90</x>
|
|
||||||
<y>60</y>
|
|
||||||
<width>191</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLineEdit" name="lastName">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>90</x>
|
|
||||||
<y>110</y>
|
|
||||||
<width>191</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="pushButton">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>610</x>
|
|
||||||
<y>410</y>
|
|
||||||
<width>81</width>
|
|
||||||
<height>22</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>PushButton</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QComboBox" name="address">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>110</x>
|
|
||||||
<y>170</y>
|
|
||||||
<width>191</width>
|
|
||||||
<height>22</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@ -1,8 +0,0 @@
|
|||||||
#ifndef ACCOMMODATIONDATA_H
|
|
||||||
#define ACCOMMODATIONDATA_H
|
|
||||||
|
|
||||||
#include "address.h"
|
|
||||||
#include "person.h"
|
|
||||||
|
|
||||||
#endif // ACCOMMODATIONDATA_H
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
#include "address.h"
|
|
||||||
|
|
||||||
Address::Address(QObject *parent) : ComboItem(parent)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Address::~Address()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
QString Address::city() const
|
|
||||||
{
|
|
||||||
return m_city;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Address::setCity(const QString &city)
|
|
||||||
{
|
|
||||||
m_city = city;
|
|
||||||
}
|
|
||||||
QString Address::street() const
|
|
||||||
{
|
|
||||||
return m_street;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Address::setStreet(const QString &street)
|
|
||||||
{
|
|
||||||
m_street = street;
|
|
||||||
}
|
|
||||||
QString Address::houseNumber() const
|
|
||||||
{
|
|
||||||
return m_houseNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Address::setHouseNumber(const QString &houseNumber)
|
|
||||||
{
|
|
||||||
m_houseNumber = houseNumber;
|
|
||||||
}
|
|
||||||
int Address::id() const
|
|
||||||
{
|
|
||||||
return m_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Address::setId(int id)
|
|
||||||
{
|
|
||||||
m_id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Address::eq(ComboItem *other)
|
|
||||||
{
|
|
||||||
Address *addr = qobject_cast<Address*>(other);
|
|
||||||
return addr != NULL && m_id == addr->id();
|
|
||||||
}
|
|
||||||
|
|
||||||
QString Address::toString()
|
|
||||||
{
|
|
||||||
return m_street + ", " + m_houseNumber + ", " + m_city;
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
#ifndef ADDRESS_H
|
|
||||||
#define ADDRESS_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QString>
|
|
||||||
|
|
||||||
#include <data/comboitem.h>
|
|
||||||
|
|
||||||
#include <odb/core.hxx>
|
|
||||||
|
|
||||||
#pragma db object
|
|
||||||
class Address : public ComboItem
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
Q_PROPERTY(QString city READ city WRITE setCity)
|
|
||||||
Q_PROPERTY(QString street READ street WRITE setStreet)
|
|
||||||
Q_PROPERTY(QString houseNumber READ houseNumber WRITE setHouseNumber)
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit Address(QObject *parent = 0);
|
|
||||||
~Address();
|
|
||||||
|
|
||||||
QString city() const;
|
|
||||||
void setCity(const QString &city);
|
|
||||||
|
|
||||||
QString street() const;
|
|
||||||
void setStreet(const QString &street);
|
|
||||||
|
|
||||||
QString houseNumber() const;
|
|
||||||
void setHouseNumber(const QString &houseNumber);
|
|
||||||
|
|
||||||
int id() const;
|
|
||||||
void setId(int id);
|
|
||||||
|
|
||||||
private:
|
|
||||||
friend class odb::access;
|
|
||||||
|
|
||||||
#pragma db id auto
|
|
||||||
int m_id;
|
|
||||||
QString m_city;
|
|
||||||
QString m_street;
|
|
||||||
QString m_houseNumber;
|
|
||||||
|
|
||||||
signals:
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
|
|
||||||
// ComboItem interface
|
|
||||||
public:
|
|
||||||
virtual bool eq(ComboItem *other);
|
|
||||||
virtual QString toString();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // ADDRESS_H
|
|
@ -1,49 +0,0 @@
|
|||||||
#include <data/comboitem.h>
|
|
||||||
#include "person.h"
|
|
||||||
|
|
||||||
Person::Person()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
int Person::id() const
|
|
||||||
{
|
|
||||||
return m_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Person::setId(int value)
|
|
||||||
{
|
|
||||||
m_id = value;
|
|
||||||
}
|
|
||||||
QString Person::getFirstName() const
|
|
||||||
{
|
|
||||||
return firstName;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Person::setFirstName(const QString &value)
|
|
||||||
{
|
|
||||||
firstName = value;
|
|
||||||
}
|
|
||||||
QString Person::getLastName() const
|
|
||||||
{
|
|
||||||
return lastName;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Person::setLastName(const QString &value)
|
|
||||||
{
|
|
||||||
lastName = value;
|
|
||||||
}
|
|
||||||
QSharedPointer<QObject> Person::address() const
|
|
||||||
{
|
|
||||||
return m_address;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Person::setAddress(const QSharedPointer<QObject> &address)
|
|
||||||
{
|
|
||||||
if (qobject_cast<Address*>(address.data()) != NULL)
|
|
||||||
{
|
|
||||||
m_address = qSharedPointerDynamicCast<Address, QObject>(address);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
|||||||
#ifndef PERSON_H
|
|
||||||
#define PERSON_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QString>
|
|
||||||
|
|
||||||
#include "address.h"
|
|
||||||
|
|
||||||
#include <odb/core.hxx>
|
|
||||||
|
|
||||||
#pragma db object
|
|
||||||
class Person : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
Q_PROPERTY(QString firstName READ getFirstName WRITE setFirstName)
|
|
||||||
Q_PROPERTY(QString lastName READ getLastName WRITE setLastName)
|
|
||||||
Q_PROPERTY(QSharedPointer<QObject> address READ address WRITE setAddress)
|
|
||||||
public:
|
|
||||||
Person();
|
|
||||||
|
|
||||||
int id() const;
|
|
||||||
void setId(int value);
|
|
||||||
|
|
||||||
QString getFirstName() const;
|
|
||||||
void setFirstName(const QString &value);
|
|
||||||
|
|
||||||
QString getLastName() const;
|
|
||||||
void setLastName(const QString &value);
|
|
||||||
|
|
||||||
QSharedPointer<QObject> address() const;
|
|
||||||
void setAddress(const QSharedPointer<QObject> &address);
|
|
||||||
|
|
||||||
private:
|
|
||||||
friend class odb::access;
|
|
||||||
#pragma db id auto
|
|
||||||
int m_id;
|
|
||||||
QString firstName;
|
|
||||||
QString lastName;
|
|
||||||
QSharedPointer<Address> m_address;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // PERSON_H
|
|
@ -1,8 +0,0 @@
|
|||||||
#include "tablemodel.h"
|
|
||||||
|
|
||||||
TableModel::TableModel(QObject *parent)
|
|
||||||
:AutoTableModel<Person>(parent)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
|||||||
#ifndef TABLEMODEL_H
|
|
||||||
#define TABLEMODEL_H
|
|
||||||
|
|
||||||
#include <core.h>
|
|
||||||
#include <autotablemodel.h>
|
|
||||||
|
|
||||||
#include "data/person.h"
|
|
||||||
|
|
||||||
class TableModel : public AutoTableModel<Person>
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit TableModel(QObject *parent = NULL);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // TABLEMODEL_H
|
|
@ -0,0 +1,55 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.24)
|
||||||
|
project(addressbook)
|
||||||
|
|
||||||
|
include(../3rdparty/QxOrm/QxOrm.cmake)
|
||||||
|
|
||||||
|
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ../plugins)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
find_package(Qt6 COMPONENTS
|
||||||
|
Core
|
||||||
|
Gui
|
||||||
|
Widgets
|
||||||
|
Qml
|
||||||
|
REQUIRED)
|
||||||
|
|
||||||
|
add_library(addressbook SHARED
|
||||||
|
addressbook.cpp
|
||||||
|
addressbook.h
|
||||||
|
addressbookrc.qrc
|
||||||
|
addressbook_global.h
|
||||||
|
addressbookform.cpp
|
||||||
|
addressbookform.h
|
||||||
|
addressbookform.ui
|
||||||
|
addressbookgrid.cpp
|
||||||
|
addressbookgrid.h
|
||||||
|
addressbookservice.cpp
|
||||||
|
addressbookservice.h
|
||||||
|
addressbooktablemodel.cpp
|
||||||
|
addressbooktablemodel.h
|
||||||
|
data/addressbookdata.cpp
|
||||||
|
data/addressbookdata.h)
|
||||||
|
|
||||||
|
target_compile_definitions(addressbook PRIVATE -DADDRESSBOOK_LIBRARY)
|
||||||
|
|
||||||
|
include_directories(../core)
|
||||||
|
include_directories(../countryregister)
|
||||||
|
|
||||||
|
target_link_libraries(addressbook
|
||||||
|
Qt::Core
|
||||||
|
Qt::Gui
|
||||||
|
Qt::Widgets
|
||||||
|
Qt::Qml
|
||||||
|
qdecimal
|
||||||
|
decnumber
|
||||||
|
QxOrm
|
||||||
|
core
|
||||||
|
countryregister
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS addressbook
|
||||||
|
LIBRARY DESTINATION ../plugins)
|
@ -1,45 +0,0 @@
|
|||||||
#-------------------------------------------------
|
|
||||||
#
|
|
||||||
# Project created by QtCreator 2016-02-09T21:27:28
|
|
||||||
#
|
|
||||||
#-------------------------------------------------
|
|
||||||
|
|
||||||
QT += widgets sql
|
|
||||||
|
|
||||||
QT -= gui
|
|
||||||
|
|
||||||
TARGET = addressbook
|
|
||||||
TEMPLATE = lib
|
|
||||||
|
|
||||||
DEFINES += ADDRESSBOOK_LIBRARY
|
|
||||||
|
|
||||||
SOURCES += addressbook.cpp \
|
|
||||||
data/addressbookdata.cpp \
|
|
||||||
addressbookform.cpp \
|
|
||||||
addressbookgrid.cpp \
|
|
||||||
addressbooktablemodel.cpp \
|
|
||||||
addressbookservice.cpp
|
|
||||||
|
|
||||||
HEADERS += addressbook.h\
|
|
||||||
addressbook_global.h \
|
|
||||||
data/addressbookdata.h \
|
|
||||||
addressbookform.h \
|
|
||||||
addressbookgrid.h \
|
|
||||||
addressbooktablemodel.h \
|
|
||||||
addressbookservice.h
|
|
||||||
|
|
||||||
include(../config_plugin.pri)
|
|
||||||
|
|
||||||
ODB_FILES = addressbook/data/addressbookdata.h
|
|
||||||
H_DIR = $$PWD/data/*.h
|
|
||||||
include(../odb.pri)
|
|
||||||
|
|
||||||
OTHER_FILES += \
|
|
||||||
addressbook.json
|
|
||||||
|
|
||||||
FORMS += \
|
|
||||||
addressbookform.ui
|
|
||||||
|
|
||||||
RESOURCES += \
|
|
||||||
addressbookrc.qrc
|
|
||||||
TRANSLATIONS = translations/addressbook_cs_CZ.ts
|
|
Binary file not shown.
@ -0,0 +1,47 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.24)
|
||||||
|
project(prodejna)
|
||||||
|
|
||||||
|
include(../3rdparty/QxOrm/QxOrm.cmake)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
find_package(Qt6 COMPONENTS
|
||||||
|
Core
|
||||||
|
Gui
|
||||||
|
Widgets
|
||||||
|
Sql
|
||||||
|
Qml
|
||||||
|
REQUIRED)
|
||||||
|
|
||||||
|
include_directories(../core)
|
||||||
|
|
||||||
|
add_executable(prodejna
|
||||||
|
main.cpp
|
||||||
|
appRc.qrc
|
||||||
|
application.cpp
|
||||||
|
application.h
|
||||||
|
logindialog.cpp
|
||||||
|
logindialog.h
|
||||||
|
logindialog.ui
|
||||||
|
mainwindow.cpp
|
||||||
|
mainwindow.h
|
||||||
|
mainwindow.ui
|
||||||
|
shop.rc
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(prodejna
|
||||||
|
Qt::Core
|
||||||
|
Qt::Gui
|
||||||
|
Qt::Widgets
|
||||||
|
Qt::Sql
|
||||||
|
Qt::Qml
|
||||||
|
core
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||||
|
set_property(TARGET prodejna PROPERTY WIN32_EXECUTABLE true)
|
||||||
|
endif()
|
@ -0,0 +1,31 @@
|
|||||||
|
#include "application.h"
|
||||||
|
|
||||||
|
Application::Application(int &argc, char **argv)
|
||||||
|
:QApplication(argc, argv)
|
||||||
|
{
|
||||||
|
m_single = new QSharedMemory("ShredMemoryForOneInstanceOfProdejnaApp", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
Application::~Application()
|
||||||
|
{
|
||||||
|
if (m_single->isAttached())
|
||||||
|
{
|
||||||
|
m_single->detach();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Application::lock()
|
||||||
|
{
|
||||||
|
if (m_single->attach(QSharedMemory::ReadOnly))
|
||||||
|
{
|
||||||
|
m_single->detach();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_single->create(1))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef APPLICATION_H
|
||||||
|
#define APPLICATION_H
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QSharedMemory>
|
||||||
|
|
||||||
|
class Application : public QApplication
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
Application(int &argc, char **argv);
|
||||||
|
~Application();
|
||||||
|
|
||||||
|
bool lock();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QSharedMemory *m_single;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // APPLICATION_H
|
@ -1,68 +0,0 @@
|
|||||||
#-------------------------------------------------
|
|
||||||
#
|
|
||||||
# Project created by QtCreator 2015-10-28T15:23:55
|
|
||||||
#
|
|
||||||
#-------------------------------------------------
|
|
||||||
|
|
||||||
QT += core gui sql
|
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
|
||||||
|
|
||||||
TARGET = prodejna
|
|
||||||
TEMPLATE = app
|
|
||||||
|
|
||||||
DEFINES += _GLIBCXX_USE_CXX11_ABI=1
|
|
||||||
|
|
||||||
CONFIG += c++11
|
|
||||||
|
|
||||||
include(../config_odb.pri)
|
|
||||||
|
|
||||||
win32 {
|
|
||||||
INCLUDEPATH += $$ODB_INCLUDE_PREFIX/libodb-2.4.0
|
|
||||||
INCLUDEPATH += $$ODB_INCLUDE_PREFIX/libodb-qt-2.4.0
|
|
||||||
INCLUDEPATH += $$ODB_INCLUDE_PREFIX/libodb-sqlite-2.4.0
|
|
||||||
INCLUDEPATH += $$ODB_INCLUDE_PREFIX/sqlite
|
|
||||||
|
|
||||||
RC_FILE = shop.rc
|
|
||||||
}
|
|
||||||
|
|
||||||
SOURCES += main.cpp\
|
|
||||||
mainwindow.cpp \
|
|
||||||
logindialog.cpp
|
|
||||||
|
|
||||||
HEADERS += mainwindow.h \
|
|
||||||
logindialog.h
|
|
||||||
|
|
||||||
FORMS += mainwindow.ui \
|
|
||||||
logindialog.ui
|
|
||||||
|
|
||||||
|
|
||||||
unix {
|
|
||||||
QMAKE_CXXFLAGS += -Wno-unknown-pragmas
|
|
||||||
}
|
|
||||||
|
|
||||||
win32 {
|
|
||||||
QMAKE_CXXFLAGS += -wd4995 -wd4068
|
|
||||||
}
|
|
||||||
|
|
||||||
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../core/release/ -lcore
|
|
||||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../core/debug/ -lcore
|
|
||||||
else:unix: LIBS += -L$$OUT_PWD/../core/ -lcore
|
|
||||||
|
|
||||||
INCLUDEPATH += $$PWD/../core
|
|
||||||
DEPENDPATH += $$PWD/../core
|
|
||||||
|
|
||||||
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../qdecimal/lib/ -lqdecimal -ldecnumber
|
|
||||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../qdecimal/lib/ -lqdecimal -ldecnumber
|
|
||||||
else:unix: LIBS += -L$$OUT_PWD/../qdecimal/lib/ -lqdecimal -ldecnumber
|
|
||||||
|
|
||||||
INCLUDEPATH += $$PWD/../qdecimal/src
|
|
||||||
INCLUDEPATH += $$PWD/../qdecimal/decnumber
|
|
||||||
|
|
||||||
RESOURCES += \
|
|
||||||
appRc.qrc
|
|
||||||
|
|
||||||
TRANSLATIONS = translations/prodejna_cz.ts
|
|
||||||
|
|
||||||
DISTFILES += \
|
|
||||||
shop.rc
|
|
Binary file not shown.
@ -0,0 +1,131 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE TS>
|
||||||
|
<TS version="2.1" language="cs_CZ">
|
||||||
|
<context>
|
||||||
|
<name>LoginDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../logindialog.ui" line="14"/>
|
||||||
|
<location filename="../logindialog.ui" line="70"/>
|
||||||
|
<source>Login</source>
|
||||||
|
<translation>Login</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../logindialog.ui" line="80"/>
|
||||||
|
<source>Password</source>
|
||||||
|
<translation>Heslo</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>MainWindow</name>
|
||||||
|
<message>
|
||||||
|
<source>MainWindow</source>
|
||||||
|
<translation type="vanished">Prodejna</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="14"/>
|
||||||
|
<source>Prodejna</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="122"/>
|
||||||
|
<source>Prodejna 2.0</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="145"/>
|
||||||
|
<source>Fi&le</source>
|
||||||
|
<translation>&Soubor</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="154"/>
|
||||||
|
<source>&Registers</source>
|
||||||
|
<translation>Číse&lníky</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="161"/>
|
||||||
|
<source>Help</source>
|
||||||
|
<translation>Pomoc</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="183"/>
|
||||||
|
<source>&Exit</source>
|
||||||
|
<translation>&Konec</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="188"/>
|
||||||
|
<source>&Open database...</source>
|
||||||
|
<translation>&Otevřít databázi...</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="197"/>
|
||||||
|
<source>&Login...</source>
|
||||||
|
<translation>&Přihlásit...</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="214"/>
|
||||||
|
<source>&Post register</source>
|
||||||
|
<translation>Čís&elník PSČ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="219"/>
|
||||||
|
<source>&Country register</source>
|
||||||
|
<translation>Čísel&ník států</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="224"/>
|
||||||
|
<source>&About</source>
|
||||||
|
<translation>&O programu</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="229"/>
|
||||||
|
<source>About &Qt</source>
|
||||||
|
<translation>O knihovně &Qt</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>About</source>
|
||||||
|
<translation type="vanished">O aplikaci</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>About Qt</source>
|
||||||
|
<translation type="vanished">O QT</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Post register</source>
|
||||||
|
<translation type="vanished">Číselník adres</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>File</source>
|
||||||
|
<translation type="vanished">Soubor</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Exit</source>
|
||||||
|
<translation type="vanished">Konec</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Open database...</source>
|
||||||
|
<translation type="vanished">Otevřít databázi...</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Login...</source>
|
||||||
|
<translation type="vanished">Přihlásit se...</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.ui" line="206"/>
|
||||||
|
<location filename="../mainwindow.ui" line="209"/>
|
||||||
|
<source>Settings</source>
|
||||||
|
<translation>Nastavení</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.cpp" line="259"/>
|
||||||
|
<source>About prodejna</source>
|
||||||
|
<translation>O aplikaci prodejna</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../mainwindow.cpp" line="259"/>
|
||||||
|
<source>Modular cash register software under GPL license.
|
||||||
|
(C) 2015 - 2017 Josef Rokos, Zdenek Jonák</source>
|
||||||
|
<translation>Modulární pokladní aplikace pod GPL license.
|
||||||
|
(C) 2015 - 2017 Josef Rokos, Zdenek Jonák</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
</TS>
|
Binary file not shown.
@ -1,68 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE TS>
|
|
||||||
<TS version="2.1" language="cs_CZ">
|
|
||||||
<context>
|
|
||||||
<name>LoginDialog</name>
|
|
||||||
<message>
|
|
||||||
<location filename="../logindialog.ui" line="14"/>
|
|
||||||
<location filename="../logindialog.ui" line="70"/>
|
|
||||||
<source>Login</source>
|
|
||||||
<translation>Login</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../logindialog.ui" line="80"/>
|
|
||||||
<source>Password</source>
|
|
||||||
<translation>Heslo</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
<context>
|
|
||||||
<name>MainWindow</name>
|
|
||||||
<message>
|
|
||||||
<location filename="../mainwindow.ui" line="14"/>
|
|
||||||
<source>MainWindow</source>
|
|
||||||
<translation>Prodejna</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../mainwindow.ui" line="68"/>
|
|
||||||
<source>Fi&le</source>
|
|
||||||
<translation>&Soubor</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../mainwindow.ui" line="90"/>
|
|
||||||
<source>&Exit</source>
|
|
||||||
<translation>&Konec</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../mainwindow.ui" line="95"/>
|
|
||||||
<source>&Open database...</source>
|
|
||||||
<translation>&Otevřít databázi...</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../mainwindow.ui" line="104"/>
|
|
||||||
<source>&Login...</source>
|
|
||||||
<translation>&Přihlásit...</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>File</source>
|
|
||||||
<translation type="vanished">Soubor</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Exit</source>
|
|
||||||
<translation type="vanished">Konec</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Open database...</source>
|
|
||||||
<translation type="vanished">Otevřít databázi...</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Login...</source>
|
|
||||||
<translation type="vanished">Přihlásit se...</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../mainwindow.ui" line="113"/>
|
|
||||||
<location filename="../mainwindow.ui" line="116"/>
|
|
||||||
<source>Settings</source>
|
|
||||||
<translation>Nastavení</translation>
|
|
||||||
</message>
|
|
||||||
</context>
|
|
||||||
</TS>
|
|
@ -0,0 +1,85 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.24)
|
||||||
|
project(camp)
|
||||||
|
|
||||||
|
include(../3rdparty/QxOrm/QxOrm.cmake)
|
||||||
|
|
||||||
|
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ../plugins)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
find_package(Qt6 COMPONENTS
|
||||||
|
Core
|
||||||
|
Gui
|
||||||
|
Widgets
|
||||||
|
Qml
|
||||||
|
REQUIRED)
|
||||||
|
|
||||||
|
add_library(camp SHARED
|
||||||
|
addservicedialog.cpp
|
||||||
|
addservicedialog.h
|
||||||
|
addservicedialog.ui
|
||||||
|
camp.cpp
|
||||||
|
camp.h
|
||||||
|
camp_global.h
|
||||||
|
campform.cpp
|
||||||
|
campform.h
|
||||||
|
campform.ui
|
||||||
|
campgrid.cpp
|
||||||
|
campgrid.h
|
||||||
|
camprc.qrc
|
||||||
|
campseller.cpp
|
||||||
|
campseller.h
|
||||||
|
campservice.cpp
|
||||||
|
campservice.h
|
||||||
|
campshopitem.cpp
|
||||||
|
campshopitem.h
|
||||||
|
campwizard.cpp
|
||||||
|
campwizard.h
|
||||||
|
campwizard.ui
|
||||||
|
detailwidget.cpp
|
||||||
|
detailwidget.h
|
||||||
|
detailwidget.ui
|
||||||
|
data/addressitem.cpp
|
||||||
|
data/addressitem.h
|
||||||
|
data/camp-data.h
|
||||||
|
data/campdata.cpp
|
||||||
|
data/campdata.h
|
||||||
|
data/personprice.cpp
|
||||||
|
data/personprice.h
|
||||||
|
data/sale.cpp
|
||||||
|
data/sale.h
|
||||||
|
data/serviceitem.cpp
|
||||||
|
data/serviceitem.h
|
||||||
|
settings/campsettings.cpp
|
||||||
|
settings/campsettings.h
|
||||||
|
settings/campsettingsform.cpp
|
||||||
|
settings/campsettingsform.h
|
||||||
|
settings/campsettingsform.ui)
|
||||||
|
|
||||||
|
target_compile_definitions(camp PRIVATE -DCAMP_LIBRARY)
|
||||||
|
|
||||||
|
include_directories(../core)
|
||||||
|
include_directories(../countryregister
|
||||||
|
../addressbook
|
||||||
|
../services
|
||||||
|
../shop)
|
||||||
|
|
||||||
|
target_link_libraries(camp
|
||||||
|
Qt::Core
|
||||||
|
Qt::Gui
|
||||||
|
Qt::Widgets
|
||||||
|
Qt::Qml
|
||||||
|
qdecimal
|
||||||
|
decnumber
|
||||||
|
QxOrm
|
||||||
|
core
|
||||||
|
addressbook
|
||||||
|
services
|
||||||
|
shop
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS addressbook
|
||||||
|
LIBRARY DESTINATION ../plugins)
|
@ -0,0 +1,27 @@
|
|||||||
|
#include "addservicedialog.h"
|
||||||
|
#include "ui_addservicedialog.h"
|
||||||
|
|
||||||
|
AddServiceDialog::AddServiceDialog(AccServicePtr service, QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::AddServiceDialog)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
ui->editName->setText(service->accServiceName());
|
||||||
|
ui->editPrice->setValue(service->price().toDouble());
|
||||||
|
}
|
||||||
|
|
||||||
|
AddServiceDialog::~AddServiceDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString AddServiceDialog::description()
|
||||||
|
{
|
||||||
|
return ui->editDescription->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble AddServiceDialog::price()
|
||||||
|
{
|
||||||
|
return QDecDouble(ui->editPrice->value());
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef ADDSERVICEDIALOG_H
|
||||||
|
#define ADDSERVICEDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QDecDouble.hh>
|
||||||
|
#include <data/accservice.h>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class AddServiceDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AddServiceDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AddServiceDialog(AccServicePtr service, QWidget *parent = nullptr);
|
||||||
|
~AddServiceDialog() override;
|
||||||
|
|
||||||
|
QString description();
|
||||||
|
QDecDouble price();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::AddServiceDialog *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ADDSERVICEDIALOG_H
|
@ -0,0 +1,105 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>AddServiceDialog</class>
|
||||||
|
<widget class="QDialog" name="AddServiceDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>143</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Service name</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="editName">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0" colspan="2">
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="editDescription"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Description</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="editPrice">
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>999999.989999999990687</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Price</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>AddServiceDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>AddServiceDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
@ -0,0 +1,29 @@
|
|||||||
|
#include "camp.h"
|
||||||
|
|
||||||
|
#include "campgrid.h"
|
||||||
|
#include "campform.h"
|
||||||
|
#include "campservice.h"
|
||||||
|
#include "settings/campsettingsform.h"
|
||||||
|
|
||||||
|
void Camp::initServiceUi()
|
||||||
|
{
|
||||||
|
m_service = new CampService();
|
||||||
|
m_ui = new CampGrid();
|
||||||
|
((CampGrid*)m_ui)->setForm(new CampForm());
|
||||||
|
m_settingsUi = new CampSettingsForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon Camp::pluginIcon()
|
||||||
|
{
|
||||||
|
return QIcon(":/icons/campPlugin.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
QTranslator *Camp::translator()
|
||||||
|
{
|
||||||
|
return translatorFrom(":/translations/camp_");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Camp::hasNumberSeries()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
#ifndef CAMP_H
|
||||||
|
#define CAMP_H
|
||||||
|
|
||||||
|
#include "camp_global.h"
|
||||||
|
#include <core.h>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QtPlugin>
|
||||||
|
|
||||||
|
class CAMPSHARED_EXPORT Camp : public QObject, IMetaDataPlugin
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
Q_PLUGIN_METADATA(IID PluginInterface_iid FILE "camp.json")
|
||||||
|
Q_INTERFACES(IPlugin)
|
||||||
|
|
||||||
|
public:
|
||||||
|
Camp() = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void initServiceUi() Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
// IPlugin interface
|
||||||
|
public:
|
||||||
|
QIcon pluginIcon() override;
|
||||||
|
QTranslator *translator() override;
|
||||||
|
bool hasNumberSeries() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CAMP_H
|
@ -0,0 +1,146 @@
|
|||||||
|
{
|
||||||
|
"id" : "CAMP",
|
||||||
|
"name" : {
|
||||||
|
"default" : "Camp",
|
||||||
|
"CZ" : "Kemp"
|
||||||
|
},
|
||||||
|
"descriptoin" : {
|
||||||
|
"default" : "",
|
||||||
|
"CZ" : ""
|
||||||
|
},
|
||||||
|
"schemaVersion" : 8,
|
||||||
|
"sql" : [
|
||||||
|
"CREATE TABLE \"CampData\" (
|
||||||
|
\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
\"numSer\" TEXT NULL,
|
||||||
|
\"start\" TEXT NULL,
|
||||||
|
\"end\" TEXT NULL,
|
||||||
|
\"ownerFirstame\" TEXT NULL,
|
||||||
|
\"ownerLastname\" TEXT NULL,
|
||||||
|
\"ownerAddress\" TEXT NULL,
|
||||||
|
\"totalPrice\" INTEGER NOT NULL,
|
||||||
|
\"sale\" INTEGER NOT NULL,
|
||||||
|
\"fixedSale\" INTEGER NOT NULL,
|
||||||
|
\"season\" INTEGER NULL,
|
||||||
|
CONSTRAINT \"season_fk\"
|
||||||
|
FOREIGN KEY (\"season\")
|
||||||
|
REFERENCES \"Season\" (\"id\")
|
||||||
|
DEFERRABLE INITIALLY DEFERRED);
|
||||||
|
|
||||||
|
CREATE TABLE \"AddressItem\" (
|
||||||
|
\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
\"firstName\" TEXT NULL,
|
||||||
|
\"lastName\" TEXT NULL,
|
||||||
|
\"address\" TEXT NULL,
|
||||||
|
\"adbItem\" INTEGER NULL,
|
||||||
|
\"price\" INTEGER NOT NULL,
|
||||||
|
\"campData\" INTEGER NOT NULL,
|
||||||
|
\"personPrice\" INTEGER NULL,
|
||||||
|
CONSTRAINT \"adbItem_fk\"
|
||||||
|
FOREIGN KEY (\"adbItem\")
|
||||||
|
REFERENCES \"AddressbookData\" (\"id\")
|
||||||
|
DEFERRABLE INITIALLY DEFERRED,
|
||||||
|
CONSTRAINT \"campData_fk\"
|
||||||
|
FOREIGN KEY (\"campData\")
|
||||||
|
REFERENCES \"CampData\" (\"id\")
|
||||||
|
DEFERRABLE INITIALLY DEFERRED,
|
||||||
|
CONSTRAINT \"personPrice_fk\"
|
||||||
|
FOREIGN KEY (\"personPrice\")
|
||||||
|
REFERENCES \"PersonPrice\" (\"id\")
|
||||||
|
DEFERRABLE INITIALLY DEFERRED);
|
||||||
|
|
||||||
|
CREATE TABLE \"ServiceItem\" (
|
||||||
|
\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
\"name\" TEXT NULL,
|
||||||
|
\"code\" TEXT NULL,
|
||||||
|
\"price\" INTEGER NOT NULL,
|
||||||
|
\"salePossible\" INTEGER NOT NULL,
|
||||||
|
\"type\" INTEGER NOT NULL,
|
||||||
|
\"campData\" INTEGER NOT NULL,
|
||||||
|
CONSTRAINT \"campData_fk\"
|
||||||
|
FOREIGN KEY (\"campData\")
|
||||||
|
REFERENCES \"CampData\" (\"id\")
|
||||||
|
DEFERRABLE INITIALLY DEFERRED);
|
||||||
|
|
||||||
|
CREATE TABLE \"Sale\" (
|
||||||
|
\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
\"sale\" INTEGER NOT NULL,
|
||||||
|
\"fixed\" INTEGER NOT NULL);
|
||||||
|
|
||||||
|
CREATE TABLE \"PersonPrice\" (
|
||||||
|
\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
\"description\" TEXT NULL,
|
||||||
|
\"fromAge\" INTEGER NOT NULL,
|
||||||
|
\"toAge\" INTEGER NOT NULL,
|
||||||
|
\"price\" INTEGER NOT NULL,
|
||||||
|
\"active\" INTEGER NOT NULL);
|
||||||
|
",
|
||||||
|
|
||||||
|
"ALTER TABLE Sale ADD \"description\" TEXT NULL;
|
||||||
|
",
|
||||||
|
|
||||||
|
"ALTER TABLE AddressItem ADD \"owner\" INTEGER NULL;
|
||||||
|
",
|
||||||
|
|
||||||
|
"ALTER TABLE ServiceItem ADD \"sale\" INTEGER NULL;
|
||||||
|
ALTER TABLE ServiceItem ADD \"description\" TEXT NULL;
|
||||||
|
",
|
||||||
|
|
||||||
|
"ALTER TABLE ServiceItem ADD \"totalPrice\" INTEGER NULL;
|
||||||
|
ALTER TABLE ServiceItem ADD \"fullPrice\" INTEGER NULL;
|
||||||
|
ALTER TABLE CampData ADD \"fullPrice\" INTEGER NULL;
|
||||||
|
ALTER TABLE CampData ADD \"totalSale\" INTEGER NULL;
|
||||||
|
",
|
||||||
|
|
||||||
|
"ALTER TABLE CampData ADD \"onVoucher\" INTEGER NULL;
|
||||||
|
",
|
||||||
|
|
||||||
|
"ALTER TABLE AddressItem ADD \"sale\" INTEGER NULL;
|
||||||
|
ALTER TABLE AddressItem ADD \"totalPrice\" INTEGER NULL;
|
||||||
|
",
|
||||||
|
|
||||||
|
"ALTER TABLE CampData ADD \"createdBy\" TEXT NULL;
|
||||||
|
ALTER TABLE CampData ADD \"created\" TEXT NULL;
|
||||||
|
ALTER TABLE CampData ADD \"updatedBy\" TEXT NULL;
|
||||||
|
ALTER TABLE CampData ADD \"updated\" TEXT NULL;
|
||||||
|
"
|
||||||
|
],
|
||||||
|
"dependencies" : [ "ADDRESSBOOK", "SHOP", "SERVICES" ],
|
||||||
|
"translations" : {
|
||||||
|
"CZ" : {
|
||||||
|
"numSer" : "Číslo",
|
||||||
|
"start" : "Od",
|
||||||
|
"end" : "Do",
|
||||||
|
"owner" : "Plátce",
|
||||||
|
"ownerFirstame" : "Křestní jméno plátce",
|
||||||
|
"ownerLastname" : "Příjmení plátce",
|
||||||
|
"ownerAddress" : "Adresa plátce",
|
||||||
|
"totalPrice" : "Cena celkem",
|
||||||
|
"fullPrice" : "Plná cena",
|
||||||
|
"sale" : "Sleva",
|
||||||
|
"fixedSale" : "Pevná částka",
|
||||||
|
"season" : "Sezona",
|
||||||
|
"firstName" : "Křestní jméno",
|
||||||
|
"lastName" : "Příjmení",
|
||||||
|
"address" : "Adresa",
|
||||||
|
"price" : "Cena",
|
||||||
|
"name" : "Název",
|
||||||
|
"code" : "Kód",
|
||||||
|
"salePossible" : "Umožnit slevu",
|
||||||
|
"type" : "Druh",
|
||||||
|
"fixed" : "Pevná",
|
||||||
|
"description" : "Popis",
|
||||||
|
"fromAge" : "Od věku",
|
||||||
|
"toAge" : "Do věku",
|
||||||
|
"active" : "Aktivní",
|
||||||
|
"totalSale" : "Sleva celkem",
|
||||||
|
"accServiceName" : "Název",
|
||||||
|
"onVoucher" : "Na účtence"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"reports" : [
|
||||||
|
{ "name" : "Doklad", "description" : "Doklad k ubytování", "listReport" : false, "file" : "camp_accommodation_document.lrxml" },
|
||||||
|
{ "name" : "Doklad jedna strana anglicky", "description" : "Doklad k ubytování jedna strana anglicky", "listReport" : false, "file" : "camp_accommodation_document_en.lrxml" }
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef CAMP_GLOBAL_H
|
||||||
|
#define CAMP_GLOBAL_H
|
||||||
|
|
||||||
|
#include <QtCore/qglobal.h>
|
||||||
|
#include <QxOrm.h>
|
||||||
|
|
||||||
|
#if defined(CAMP_LIBRARY)
|
||||||
|
# define CAMPSHARED_EXPORT Q_DECL_EXPORT
|
||||||
|
#else
|
||||||
|
# define CAMPSHARED_EXPORT Q_DECL_IMPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CAMP_LIBRARY
|
||||||
|
#define QX_REGISTER_HPP_CAMP QX_REGISTER_HPP_EXPORT_DLL
|
||||||
|
#define QX_REGISTER_CPP_CAMP QX_REGISTER_CPP_EXPORT_DLL
|
||||||
|
#else // CAMP_LIBRARY
|
||||||
|
#define QX_REGISTER_HPP_CAMP QX_REGISTER_HPP_IMPORT_DLL
|
||||||
|
#define QX_REGISTER_CPP_CAMP QX_REGISTER_CPP_IMPORT_DLL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CAMP_GLOBAL_H
|
@ -0,0 +1,14 @@
|
|||||||
|
#include "campform.h"
|
||||||
|
#include "ui_campform.h"
|
||||||
|
|
||||||
|
CampForm::CampForm(QWidget *parent) :
|
||||||
|
AutoForm<CampData>(parent),
|
||||||
|
ui(new Ui::CampForm)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
CampForm::~CampForm()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef CAMPFORM_H
|
||||||
|
#define CAMPFORM_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <core.h>
|
||||||
|
#include "data/camp-data.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class CampForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CampForm : public AutoForm<CampData>
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CampForm(QWidget *parent = nullptr);
|
||||||
|
~CampForm() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::CampForm *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CAMPFORM_H
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CampForm</class>
|
||||||
|
<widget class="QWidget" name="CampForm">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>462</width>
|
||||||
|
<height>403</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -0,0 +1,165 @@
|
|||||||
|
#include "campgrid.h"
|
||||||
|
#include "campwizard.h"
|
||||||
|
#include "campservice.h"
|
||||||
|
#include "campshopitem.h"
|
||||||
|
|
||||||
|
#include <data/shop-data.h>
|
||||||
|
#include <shopservice.h>
|
||||||
|
#include <paydialog.h>
|
||||||
|
|
||||||
|
CampGrid::CampGrid(QWidget *parent) : GridForm<CampData>(parent)
|
||||||
|
{
|
||||||
|
setTableModel(new AutoTableModel<CampData>);
|
||||||
|
|
||||||
|
QHBoxLayout *tbLayout = qobject_cast<QHBoxLayout*>(this->toolbar()->layout());
|
||||||
|
|
||||||
|
if (tbLayout != nullptr)
|
||||||
|
{
|
||||||
|
QToolButton *btnImport = new QToolButton(this->toolbar());
|
||||||
|
btnImport->setIcon(QIcon(":/icons/pay.svg"));
|
||||||
|
btnImport->setAutoRaise(true);
|
||||||
|
btnImport->setIconSize(QSize(24, 24));
|
||||||
|
btnImport->setToolTip(tr("Pay"));
|
||||||
|
tbLayout->insertWidget(tbLayout->count() - 1, btnImport);
|
||||||
|
|
||||||
|
connect(btnImport, &QToolButton::clicked, [this](){
|
||||||
|
CampDataPtr data = currentEntity();
|
||||||
|
|
||||||
|
if (!data.isNull())
|
||||||
|
{
|
||||||
|
addToVoucher(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
m_detail = new DetailWidget(this);
|
||||||
|
mainLayout()->addWidget(m_detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampGrid::handleNewRecord()
|
||||||
|
{
|
||||||
|
if (!checkPermAdd())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CampService srv;
|
||||||
|
CampDataPtr data = srv.create();
|
||||||
|
CampWizard *wizard = new CampWizard();
|
||||||
|
wizard->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
wizard->setData(data);
|
||||||
|
wizard->setNewRecord(true);
|
||||||
|
|
||||||
|
connect(wizard, &QDialog::accepted, [this, data](){
|
||||||
|
addRow(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
wizard->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampGrid::handleEditRecord()
|
||||||
|
{
|
||||||
|
if (!checkPermEdit())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CampDataPtr data = currentEntity();
|
||||||
|
if (data.isNull())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->onVoucher())
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Can not edit"), tr("This record is asociated with voucher. Can not edit paid items"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->people().isEmpty() || data->services().isEmpty()) {
|
||||||
|
CampService srv;
|
||||||
|
srv.load(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
CampWizard *wizard = new CampWizard();
|
||||||
|
wizard->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
wizard->setData(data);
|
||||||
|
wizard->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampGrid::doDelete(CampDataPtr entity)
|
||||||
|
{
|
||||||
|
if (!checkPermDelete())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entity->onVoucher())
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Can not delete"), tr("This record is asociated with voucher. Can not delete paid items"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CampService srv;
|
||||||
|
srv.erase(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampGrid::addToVoucher(const CampDataPtr& data)
|
||||||
|
{
|
||||||
|
if (data->onVoucher())
|
||||||
|
{
|
||||||
|
QMessageBox::information(this, tr("Can not pay"), tr("This record is already paid"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsService settSrv("CAMP");
|
||||||
|
CampSettingsPtr settings = settSrv.loadSettings<CampSettings>();
|
||||||
|
CampShopItemPtr campItem(new CampShopItem);
|
||||||
|
|
||||||
|
campItem->setId(data->id());
|
||||||
|
campItem->setUnitPrice(data->totalPrice());
|
||||||
|
campItem->setVatType(settings->vatType());
|
||||||
|
|
||||||
|
ShopService shopSrv;
|
||||||
|
VoucherPtr voucher = shopSrv.createVoucher();
|
||||||
|
|
||||||
|
shopSrv.addShopItem(voucher, campItem, 1);
|
||||||
|
shopSrv.calculate(voucher);
|
||||||
|
shopSrv.save(voucher);
|
||||||
|
|
||||||
|
data->setOnVoucher(true);
|
||||||
|
|
||||||
|
CampService srvCamp;
|
||||||
|
srvCamp.update(data);
|
||||||
|
|
||||||
|
PayDialog *payDlg = new PayDialog(voucher->totalPrice(), this);
|
||||||
|
payDlg->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
payDlg->show();
|
||||||
|
|
||||||
|
connect(payDlg, &QDialog::accepted, [payDlg, voucher](){
|
||||||
|
payVoucherFromUI(voucher, payDlg);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(payDlg, &QDialog::rejected, [voucher, &shopSrv, data](){
|
||||||
|
CampService srvCamp;
|
||||||
|
data->setOnVoucher(false);
|
||||||
|
srvCamp.update(data);
|
||||||
|
voucher->clearItems();
|
||||||
|
shopSrv.erase(voucher);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampGrid::currentIndexChanged(const QModelIndex ¤t)
|
||||||
|
{
|
||||||
|
if (current.isValid())
|
||||||
|
{
|
||||||
|
auto current = currentEntity();
|
||||||
|
m_detail->setData(current);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<CampDataPtr> CampGrid::listForGrid()
|
||||||
|
{
|
||||||
|
CampService srv;
|
||||||
|
return srv.allForSeason();
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
#ifndef CAMPGRID_H
|
||||||
|
#define CAMPGRID_H
|
||||||
|
|
||||||
|
#include <core.h>
|
||||||
|
#include "data/camp-data.h"
|
||||||
|
|
||||||
|
#include "detailwidget.h"
|
||||||
|
|
||||||
|
class CampGrid : public GridForm<CampData>
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit CampGrid(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
// IGridForm interface
|
||||||
|
protected:
|
||||||
|
void handleNewRecord() override;
|
||||||
|
void handleEditRecord() override;
|
||||||
|
|
||||||
|
// GridForm interface
|
||||||
|
protected:
|
||||||
|
void doDelete(CampDataPtr entity) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void addToVoucher(const CampDataPtr& data);
|
||||||
|
DetailWidget *m_detail;
|
||||||
|
|
||||||
|
|
||||||
|
// IGridForm interface
|
||||||
|
protected:
|
||||||
|
void currentIndexChanged(const QModelIndex ¤t) override;
|
||||||
|
|
||||||
|
// GridForm interface
|
||||||
|
protected:
|
||||||
|
QList<CampDataPtr> listForGrid() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CAMPGRID_H
|
@ -0,0 +1,6 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/">
|
||||||
|
<file>icons/campPlugin.svg</file>
|
||||||
|
<file>translations/camp_cs_CZ.qm</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
@ -0,0 +1,35 @@
|
|||||||
|
#include "campseller.h"
|
||||||
|
|
||||||
|
#include "campwizard.h"
|
||||||
|
#include "campservice.h"
|
||||||
|
#include "data/camp-data.h"
|
||||||
|
#include "campshopitem.h"
|
||||||
|
|
||||||
|
CampSeller::CampSeller(QObject *parent)
|
||||||
|
:ISeller(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSeller::prepareItem()
|
||||||
|
{
|
||||||
|
CampWizard *wizard = new CampWizard();
|
||||||
|
wizard->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
|
CampService srv;
|
||||||
|
CampDataPtr data = srv.create();
|
||||||
|
wizard->setData(data);
|
||||||
|
wizard->setNewRecord(true);
|
||||||
|
wizard->show();
|
||||||
|
|
||||||
|
connect(wizard, &QDialog::accepted, [this, data](){
|
||||||
|
SettingsService settSrv("CAMP");
|
||||||
|
CampSettingsPtr settings = settSrv.loadSettings<CampSettings>();
|
||||||
|
CampShopItemPtr item(new CampShopItem);
|
||||||
|
|
||||||
|
item->setUnitPrice(data->totalPrice());
|
||||||
|
item->setId(data->id());
|
||||||
|
item->setVatType(settings->vatType());
|
||||||
|
|
||||||
|
emit itemPrepared(item, 1);
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
#ifndef CAMPSELLER_H
|
||||||
|
#define CAMPSELLER_H
|
||||||
|
|
||||||
|
#include <iseller.h>
|
||||||
|
|
||||||
|
class CampSeller : public ISeller
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit CampSeller(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
// ISeller interface
|
||||||
|
public:
|
||||||
|
void prepareItem() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CAMPSELLER_H
|
@ -0,0 +1,411 @@
|
|||||||
|
#include "campservice.h"
|
||||||
|
#include <settingsservice.h>
|
||||||
|
#include <seasonservice.h>
|
||||||
|
#include <numberseriesservice.h>
|
||||||
|
#include "campshopitem.h"
|
||||||
|
#include "campseller.h"
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
CampService::CampService()
|
||||||
|
{
|
||||||
|
m_pluginId = "CAMP";
|
||||||
|
m_seller = new CampSeller(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::addPerson(const CampDataPtr& data, const AddressbookDataPtr& address)
|
||||||
|
{
|
||||||
|
AddressItemPtr addrItem(new AddressItem);
|
||||||
|
|
||||||
|
addrItem->setAdbItem(address);
|
||||||
|
addrItem->setAddress(address->toString());
|
||||||
|
addrItem->setFirstName(address->firstName());
|
||||||
|
addrItem->setLastName(address->lastName());
|
||||||
|
addrItem->setCampData(data);
|
||||||
|
|
||||||
|
if (data->people().isEmpty())
|
||||||
|
{
|
||||||
|
setOwner(data, addrItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
data->addPerson(addrItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::addService(const CampDataPtr& data, const AccServicePtr& service)
|
||||||
|
{
|
||||||
|
ServiceItemPtr serviceItem(new ServiceItem);
|
||||||
|
|
||||||
|
serviceItem->setName(service->accServiceName());
|
||||||
|
serviceItem->setCode(service->accServiceCode());
|
||||||
|
serviceItem->setPrice(service->price());
|
||||||
|
serviceItem->setSalePossible(service->salePossible());
|
||||||
|
serviceItem->setType(service->serviceType());
|
||||||
|
|
||||||
|
data->addServiceItem(serviceItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::addService(CampDataPtr data, AccServicePtr service, QDecDouble price, const QString& description)
|
||||||
|
{
|
||||||
|
ServiceItemPtr item = addServiceInt(data, service);
|
||||||
|
item->setPrice(price);
|
||||||
|
item->setDescription(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::setOwner(const CampDataPtr& data, const AddressItemPtr& person)
|
||||||
|
{
|
||||||
|
foreach (AddressItemPtr p, data->people()) {
|
||||||
|
p->setOwner(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
person->setOwner(true);
|
||||||
|
|
||||||
|
data->setOwnerFirstame(person->firstName());
|
||||||
|
data->setOwnerLastname(person->lastName());
|
||||||
|
data->setOwnerAddress(person->address());
|
||||||
|
}
|
||||||
|
|
||||||
|
CampDataPtr CampService::create()
|
||||||
|
{
|
||||||
|
CampDataPtr data(new CampData);
|
||||||
|
data->setStart(QDate::currentDate());
|
||||||
|
data->setEnd(QDate::currentDate());
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::calculate(const CampDataPtr& data)
|
||||||
|
{
|
||||||
|
SettingsService srv("CAMP");
|
||||||
|
m_settings = srv.loadSettings<CampSettings>();
|
||||||
|
|
||||||
|
calcServices(data);
|
||||||
|
calcPeople(data);
|
||||||
|
calcPrice(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::saveCamp(const CampDataPtr& data)
|
||||||
|
{
|
||||||
|
if (!checkPermission(PERM_ADD))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SeasonService seasonSrv;
|
||||||
|
SeasonPtr season = seasonSrv.active();
|
||||||
|
data->setSeason(season);
|
||||||
|
|
||||||
|
qx::QxSession session;
|
||||||
|
|
||||||
|
NumberSeriesService numSrv;
|
||||||
|
data->setNumSer(numSrv.nextStrForPlugin("CAMP", &session));
|
||||||
|
|
||||||
|
addDateAndUser(data, true);
|
||||||
|
save(data, &session);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*void CampService::updateCamp(CampDataPtr data)
|
||||||
|
{
|
||||||
|
if (!checkPermission(PERM_EDIT))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Transaction tr;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
odb::database *db = Context::instance().db();
|
||||||
|
|
||||||
|
db->execute(QString("DELETE FROM ServiceItem WHERE campData = %1").arg(data->id()).toStdString());
|
||||||
|
db->execute(QString("DELETE FROM AddressItem WHERE campData = %1").arg(data->id()).toStdString());
|
||||||
|
|
||||||
|
foreach (ServiceItemPtr item, data->services()) {
|
||||||
|
item->setCampData(data.toWeakRef());
|
||||||
|
db->persist(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (AddressItemPtr item, data->people()) {
|
||||||
|
item->setCampData(data.toWeakRef());
|
||||||
|
db->persist(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
addDateAndUser(data, false);
|
||||||
|
|
||||||
|
db->update(data);
|
||||||
|
tr.commit();
|
||||||
|
}
|
||||||
|
catch (const odb::exception &ex)
|
||||||
|
{
|
||||||
|
emit dbError(ex.what());
|
||||||
|
emit dbErrorUpdate(ex.what());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*void CampService::eraseCamp(CampDataPtr data)
|
||||||
|
{
|
||||||
|
if (!checkPermission(PERM_DELETE))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Transaction tr;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
odb::database *db = Context::instance().db();
|
||||||
|
|
||||||
|
db->execute(QString("DELETE FROM ServiceItem WHERE campData = %1").arg(data->id()).toStdString());
|
||||||
|
db->execute(QString("DELETE FROM AddressItem WHERE campData = %1").arg(data->id()).toStdString());
|
||||||
|
|
||||||
|
db->erase(data);
|
||||||
|
tr.commit();
|
||||||
|
}
|
||||||
|
catch (const odb::exception &ex)
|
||||||
|
{
|
||||||
|
emit dbError(ex.what());
|
||||||
|
emit dbErrorDelete(ex.what());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*void CampService::loadItems(CampDataPtr data)
|
||||||
|
{
|
||||||
|
Service<AddressItem> srv;
|
||||||
|
data->setPeople(srv.all(QString("campData = %1").arg(data->id())));
|
||||||
|
|
||||||
|
Service<ServiceItem> srvService;
|
||||||
|
data->setServices(srvService.all(QString("campData = %1").arg(data->id())));
|
||||||
|
}*/
|
||||||
|
|
||||||
|
QList<CampDataPtr> CampService::allForSeason()
|
||||||
|
{
|
||||||
|
SeasonService seasonSrv;
|
||||||
|
SeasonPtr season = seasonSrv.active();
|
||||||
|
|
||||||
|
return all(QString("season = %1").arg(QString::number(season->id())));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::calcPeople(CampDataPtr data)
|
||||||
|
{
|
||||||
|
foreach (ServiceItemPtr service, data->services()) {
|
||||||
|
if (service->type() == AccService::ACCFEE)
|
||||||
|
{
|
||||||
|
data->removeServiceItem(service);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Service<PersonPrice> srvPrices;
|
||||||
|
QList<PersonPricePtr> prices = srvPrices.all("active = 1");
|
||||||
|
int days = data->start().daysTo(data->end());
|
||||||
|
QDecDouble sale = data->sale();
|
||||||
|
bool fixedSale = data->fixedSale();
|
||||||
|
|
||||||
|
foreach (AddressItemPtr item, data->people()) {
|
||||||
|
QDate first(1,1,1);
|
||||||
|
qint64 daysStart = item->adbItem()->birthDate().daysTo(data->start());
|
||||||
|
first = first.addDays(daysStart);
|
||||||
|
int startAge = first.year() - 1;
|
||||||
|
|
||||||
|
first = QDate(1,1,1);
|
||||||
|
qint64 daysEnd = item->adbItem()->birthDate().daysTo(data->end());
|
||||||
|
first = first.addDays(daysEnd);
|
||||||
|
int endAge = first.year() - 1;
|
||||||
|
|
||||||
|
auto setTotal = [&](){
|
||||||
|
if (sale != QDecDouble(0) && !fixedSale)
|
||||||
|
{
|
||||||
|
QDecDouble itemSale = (item->price() * sale) / 100;
|
||||||
|
item->setSale(itemSale);
|
||||||
|
item->setTotalPrice(item->price() - itemSale);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item->setSale(0);
|
||||||
|
item->setTotalPrice(item->price());
|
||||||
|
}
|
||||||
|
|
||||||
|
addAccFee(data, item, startAge, endAge, days);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!item->personPrice().isNull())
|
||||||
|
{
|
||||||
|
item->setPrice(item->personPrice()->price() * days);
|
||||||
|
setTotal();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item->setPrice(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (PersonPricePtr price, prices) {
|
||||||
|
if (price->fromAge() <= endAge && price->toAge() >= endAge)
|
||||||
|
{
|
||||||
|
item->setPersonPrice(price);
|
||||||
|
item->setPrice(price->price() * days);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setTotal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::calcServices(const CampDataPtr& data)
|
||||||
|
{
|
||||||
|
QDecDouble sale = data->sale();
|
||||||
|
bool fixedSale = data->fixedSale();
|
||||||
|
int days = data->start().daysTo(data->end());
|
||||||
|
|
||||||
|
foreach (ServiceItemPtr item, data->services()) {
|
||||||
|
item->setFullPrice(item->price() * days);
|
||||||
|
|
||||||
|
if (sale != QDecDouble(0) && !fixedSale && item->salePossible())
|
||||||
|
{
|
||||||
|
QDecDouble itemSale = (item->fullPrice() * sale) / 100;
|
||||||
|
item->setSale(itemSale);
|
||||||
|
item->setTotalPrice(item->fullPrice() - itemSale);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item->setSale(0);
|
||||||
|
item->setTotalPrice(item->fullPrice());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::calcPrice(const CampDataPtr& data)
|
||||||
|
{
|
||||||
|
QDecDouble totalPrice(0);
|
||||||
|
QDecDouble sale(0);
|
||||||
|
|
||||||
|
foreach (ServiceItemPtr service, data->services()) {
|
||||||
|
totalPrice += service->totalPrice();
|
||||||
|
sale += service->sale();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (AddressItemPtr addr, data->people()) {
|
||||||
|
totalPrice += addr->totalPrice();
|
||||||
|
sale += addr->sale();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->fixedSale())
|
||||||
|
{
|
||||||
|
totalPrice -= data->sale();
|
||||||
|
sale = data->sale();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (m_settings->rounding()) {
|
||||||
|
case Enums::R_UP:
|
||||||
|
totalPrice = QDecDouble(ceil(totalPrice.toDouble() * pow(10, m_settings->decimalPlaces())) / pow(10, m_settings->decimalPlaces()));
|
||||||
|
break;
|
||||||
|
case Enums::R_DOWN:
|
||||||
|
totalPrice = QDecDouble(floor(totalPrice.toDouble() * pow(10, m_settings->decimalPlaces())) / pow(10, m_settings->decimalPlaces()));
|
||||||
|
break;
|
||||||
|
case Enums::R_MATH:
|
||||||
|
totalPrice = QDecDouble(round(totalPrice.toDouble() * pow(10, m_settings->decimalPlaces())) / pow(10, m_settings->decimalPlaces()));
|
||||||
|
break;
|
||||||
|
case Enums::R_NONE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
data->setTotalPrice(totalPrice);
|
||||||
|
data->setTotalSale(sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::addAccFee(const CampDataPtr& data, const AddressItemPtr& item, int startAge, int endAge, int days)
|
||||||
|
{
|
||||||
|
if (item->adbItem()->ztp())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto addAccService = [this, item, data](int count){
|
||||||
|
ServiceItemPtr srvItem(new ServiceItem);
|
||||||
|
|
||||||
|
srvItem->setName(item->firstName() + " " + item->lastName());
|
||||||
|
srvItem->setDescription(m_settings->accFeeText());
|
||||||
|
srvItem->setPrice(m_settings->accFee());
|
||||||
|
srvItem->setTotalPrice(m_settings->accFee() * count);
|
||||||
|
srvItem->setFullPrice(srvItem->totalPrice());
|
||||||
|
srvItem->setType(AccService::ACCFEE);
|
||||||
|
srvItem->setSalePossible(false);
|
||||||
|
srvItem->setCampData(data);
|
||||||
|
data->addServiceItem(srvItem);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (startAge == endAge || (startAge >= m_settings->accFeeStartAge() && startAge <= m_settings->accFeeEndAge()))
|
||||||
|
{
|
||||||
|
if (endAge >= m_settings->accFeeStartAge() && endAge <= m_settings->accFeeEndAge())
|
||||||
|
{
|
||||||
|
addAccService(days);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (endAge >= m_settings->accFeeStartAge() && endAge <= m_settings->accFeeEndAge())
|
||||||
|
{
|
||||||
|
QDate tmp(data->end().year(), item->adbItem()->birthDate().month(), item->adbItem()->birthDate().day());
|
||||||
|
int count = tmp.daysTo(data->end());
|
||||||
|
|
||||||
|
addAccService(count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<IShopItemPtr> CampService::shopItems(const QString& category)
|
||||||
|
{
|
||||||
|
if (!category.isEmpty()) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
CampShopItemPtr item(new CampShopItem);
|
||||||
|
|
||||||
|
QList<IShopItemPtr> items;
|
||||||
|
items.append(item);
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
IShopItemPtr CampService::shopItem(int )
|
||||||
|
{
|
||||||
|
return CampShopItemPtr(new CampShopItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampService::addedToVoucher(int itemId, int countAdded)
|
||||||
|
{
|
||||||
|
CampDataPtr data = loadById(itemId);
|
||||||
|
|
||||||
|
if (countAdded > 0)
|
||||||
|
{
|
||||||
|
data->setOnVoucher(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data->setOnVoucher(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->update(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
ISeller *CampService::seller()
|
||||||
|
{
|
||||||
|
return m_seller;
|
||||||
|
}
|
||||||
|
|
||||||
|
ServiceItemPtr CampService::addServiceInt(const CampDataPtr& data, const AccServicePtr& service)
|
||||||
|
{
|
||||||
|
ServiceItemPtr serviceItem(new ServiceItem);
|
||||||
|
|
||||||
|
serviceItem->setName(service->accServiceName());
|
||||||
|
serviceItem->setCode(service->accServiceCode());
|
||||||
|
serviceItem->setPrice(service->price());
|
||||||
|
serviceItem->setSalePossible(service->salePossible());
|
||||||
|
serviceItem->setType(service->serviceType());
|
||||||
|
serviceItem->setCampData(data);
|
||||||
|
|
||||||
|
data->addServiceItem(serviceItem);
|
||||||
|
|
||||||
|
return serviceItem;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
#ifndef CAMPSERVICE_H
|
||||||
|
#define CAMPSERVICE_H
|
||||||
|
|
||||||
|
#include <core.h>
|
||||||
|
#include <data/addressbookdata.h>
|
||||||
|
#include <data/accservice.h>
|
||||||
|
#include <isellableservice.h>
|
||||||
|
#include "data/camp-data.h"
|
||||||
|
#include "settings/campsettings.h"
|
||||||
|
|
||||||
|
class CampService : public Service<CampData>, public ISellableService
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CampService();
|
||||||
|
|
||||||
|
void addPerson(const CampDataPtr& data, const AddressbookDataPtr& address);
|
||||||
|
void addService(const CampDataPtr& data, const AccServicePtr& service);
|
||||||
|
void addService(CampDataPtr data, AccServicePtr service, QDecDouble price, const QString& description);
|
||||||
|
void setOwner(const CampDataPtr& data, const AddressItemPtr& person);
|
||||||
|
CampDataPtr create();
|
||||||
|
void calculate(const CampDataPtr& data);
|
||||||
|
void saveCamp(const CampDataPtr& data);
|
||||||
|
//void updateCamp(CampDataPtr data);
|
||||||
|
//void eraseCamp(CampDataPtr data);
|
||||||
|
//void loadItems(CampDataPtr data);
|
||||||
|
QList<CampDataPtr> allForSeason();
|
||||||
|
|
||||||
|
private:
|
||||||
|
ServiceItemPtr addServiceInt(const CampDataPtr& data, const AccServicePtr& service);
|
||||||
|
void calcPeople(CampDataPtr data);
|
||||||
|
void calcServices(const CampDataPtr& data);
|
||||||
|
void calcPrice(const CampDataPtr& data);
|
||||||
|
void addAccFee(const CampDataPtr& data, const AddressItemPtr& item, int startAge, int endAge, int days);
|
||||||
|
CampSettingsPtr m_settings;
|
||||||
|
ISeller *m_seller;
|
||||||
|
|
||||||
|
// ISellableService interface
|
||||||
|
public:
|
||||||
|
QList<IShopItemPtr> shopItems(const QString& category = "") override;
|
||||||
|
IShopItemPtr shopItem(int itemId) override;
|
||||||
|
void addedToVoucher(int itemId, int countAdded) override;
|
||||||
|
ISeller *seller() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CAMPSERVICE_H
|
@ -0,0 +1,59 @@
|
|||||||
|
#include "campshopitem.h"
|
||||||
|
|
||||||
|
CampShopItem::CampShopItem(QObject *parent)
|
||||||
|
:IShopItem(parent)
|
||||||
|
{
|
||||||
|
m_id = 0;
|
||||||
|
m_unitPrice = QDecDouble(0);
|
||||||
|
m_vatType = Enums::NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampShopItem::name()
|
||||||
|
{
|
||||||
|
return "Camp";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampShopItem::shortName()
|
||||||
|
{
|
||||||
|
return "Camp";
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble CampShopItem::unitPrice()
|
||||||
|
{
|
||||||
|
return m_unitPrice;
|
||||||
|
}
|
||||||
|
|
||||||
|
Enums::VatType CampShopItem::vatType()
|
||||||
|
{
|
||||||
|
return m_vatType;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampShopItem::pluginId() const
|
||||||
|
{
|
||||||
|
return "CAMP";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampShopItem::code()
|
||||||
|
{
|
||||||
|
return "Camp";
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampShopItem::setUnitPrice(const QDecDouble &unitPrice)
|
||||||
|
{
|
||||||
|
m_unitPrice = unitPrice;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampShopItem::setVatType(const Enums::VatType &vatType)
|
||||||
|
{
|
||||||
|
m_vatType = vatType;
|
||||||
|
}
|
||||||
|
|
||||||
|
long CampShopItem::id() const
|
||||||
|
{
|
||||||
|
return m_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampShopItem::setId(long id)
|
||||||
|
{
|
||||||
|
m_id = id;
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
#ifndef CAMPSHOPITEM_H
|
||||||
|
#define CAMPSHOPITEM_H
|
||||||
|
|
||||||
|
#include <shopitem.h>
|
||||||
|
|
||||||
|
class CampShopItem : public IShopItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit CampShopItem(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
// IShopItem interface
|
||||||
|
public:
|
||||||
|
long id() const override;
|
||||||
|
QString name() override;
|
||||||
|
QString shortName() override;
|
||||||
|
QDecDouble unitPrice() override;
|
||||||
|
Enums::VatType vatType() override;
|
||||||
|
QString pluginId() const override;
|
||||||
|
|
||||||
|
// ShopItem interface
|
||||||
|
public:
|
||||||
|
QString code() override;
|
||||||
|
|
||||||
|
void setUnitPrice(const QDecDouble &unitPrice);
|
||||||
|
void setVatType(const Enums::VatType &vatType);
|
||||||
|
void setId(long id);
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_id;
|
||||||
|
QDecDouble m_unitPrice;
|
||||||
|
Enums::VatType m_vatType;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef QSharedPointer<CampShopItem> CampShopItemPtr;
|
||||||
|
|
||||||
|
#endif // CAMPSHOPITEM_H
|
@ -0,0 +1,497 @@
|
|||||||
|
#include "campwizard.h"
|
||||||
|
#include "ui_campwizard.h"
|
||||||
|
#include "campservice.h"
|
||||||
|
#include "addservicedialog.h"
|
||||||
|
|
||||||
|
#include <core.h>
|
||||||
|
#include <addressbookservice.h>
|
||||||
|
#include <data/accservice.h>
|
||||||
|
#include <reporting/reportviewer.h>
|
||||||
|
|
||||||
|
#include <QScroller>
|
||||||
|
|
||||||
|
////////////////////////////////////
|
||||||
|
/// \brief AddressHelper::AddressHelper
|
||||||
|
/// \param parent
|
||||||
|
///
|
||||||
|
AddressHelper::AddressHelper(QObject *parent)
|
||||||
|
:QObject(parent)
|
||||||
|
{
|
||||||
|
m_address = AddressbookDataPtr(new AddressbookData);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSharedPointer<QObject> AddressHelper::address() const
|
||||||
|
{
|
||||||
|
return m_address;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressHelper::setAddress(const QSharedPointer<QObject> &address)
|
||||||
|
{
|
||||||
|
if (qobject_cast<AddressbookData*>(address.data()) != NULL)
|
||||||
|
{
|
||||||
|
m_address = qSharedPointerDynamicCast<AddressbookData, QObject>(address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AddressbookDataPtr AddressHelper::addr() const
|
||||||
|
{
|
||||||
|
return m_address;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressHelper::setAddr(const AddressbookDataPtr &address)
|
||||||
|
{
|
||||||
|
m_address = address;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddressbookDataPtr AddressHelper::newAddress()
|
||||||
|
{
|
||||||
|
AddressBookService adbSrv;
|
||||||
|
m_copyAddress = adbSrv.copyAddress(m_address);
|
||||||
|
|
||||||
|
return m_copyAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddressbookDataPtr AddressHelper::copyAddress()
|
||||||
|
{
|
||||||
|
if (m_copyAddress.isNull())
|
||||||
|
{
|
||||||
|
m_copyAddress = AddressbookDataPtr(new AddressbookData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_copyAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////
|
||||||
|
/// \brief SaleHelper::SaleHelper
|
||||||
|
/// \param parent
|
||||||
|
///
|
||||||
|
SaleHelper::SaleHelper(QObject *parent) :QObject(parent)
|
||||||
|
{
|
||||||
|
m_sale = SalePtr(new Sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
SalePtr SaleHelper::salePtr() const
|
||||||
|
{
|
||||||
|
return m_sale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SaleHelper::setSalePtr(const SalePtr &sale)
|
||||||
|
{
|
||||||
|
m_sale = sale;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSharedPointer<QObject> SaleHelper::sale() const
|
||||||
|
{
|
||||||
|
return m_sale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SaleHelper::setSale(const QSharedPointer<QObject> &sale)
|
||||||
|
{
|
||||||
|
if (qobject_cast<Sale*>(sale.data()) != NULL)
|
||||||
|
{
|
||||||
|
m_sale = qSharedPointerDynamicCast<Sale, QObject>(sale);
|
||||||
|
emit saleChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
/// \brief CampWizard::CampWizard
|
||||||
|
/// \param parent
|
||||||
|
///
|
||||||
|
CampWizard::CampWizard(QWidget *parent) :
|
||||||
|
QWizard(parent),
|
||||||
|
ui(new Ui::CampWizard)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
m_peopleModel = new AutoTableModel<AddressItem>(this);
|
||||||
|
m_peopleModel->setTranslations(Context::instance().plugin("CAMP")->translations());
|
||||||
|
ui->tablePeople->setModel(m_peopleModel);
|
||||||
|
ui->tablePeople->hideColumn(2);
|
||||||
|
ui->tablePeople->hideColumn(3);
|
||||||
|
ui->tablePeople->hideColumn(4);
|
||||||
|
ui->tablePeople->hideColumn(5);
|
||||||
|
ui->tablePeople->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
|
ui->tablePeople->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
connect(ui->tablePeople->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](QModelIndex, QModelIndex){
|
||||||
|
ui->btnRemove->setEnabled(!m_data->people().isEmpty());
|
||||||
|
ui->btnOwner->setEnabled(!m_data->people().isEmpty());
|
||||||
|
});
|
||||||
|
|
||||||
|
m_dataBinder = new ObjectBinder(this);
|
||||||
|
m_dataBinder->registerBinding(ui->start);
|
||||||
|
m_dataBinder->registerBinding(ui->end);
|
||||||
|
m_dataBinder->registerBinding(ui->totalPrice);
|
||||||
|
m_dataBinder->registerBinding(ui->totalSale);
|
||||||
|
|
||||||
|
m_addrHelper = new AddressHelper(this);
|
||||||
|
|
||||||
|
Service<AddressbookData> addrSrv;
|
||||||
|
m_addrHelperBinder = new ObjectBinder(this);
|
||||||
|
m_addrHelperBinder->registerBinding(ui->address, ComboData::createComboData(addrSrv.all("")));
|
||||||
|
m_addrHelperBinder->setData(m_addrHelper);
|
||||||
|
|
||||||
|
m_addressBinder = new ObjectBinder(this);
|
||||||
|
m_addressBinder->registerBinding(ui->title);
|
||||||
|
m_addressBinder->registerBinding(ui->firstName);
|
||||||
|
m_addressBinder->registerBinding(ui->lastName);
|
||||||
|
m_addressBinder->registerBinding(ui->birthDate);
|
||||||
|
m_addressBinder->registerBinding(ui->idCardNumber);
|
||||||
|
m_addressBinder->registerBinding(ui->ztp);
|
||||||
|
m_addressBinder->registerBinding(ui->addressStreet);
|
||||||
|
m_addressBinder->registerBinding(ui->addressHouseNumber);
|
||||||
|
m_addressBinder->registerBinding(ui->addressZipCode);
|
||||||
|
m_addressBinder->registerBinding(ui->addressCity);
|
||||||
|
|
||||||
|
Service<CountryData> coutrySrv;
|
||||||
|
m_addressBinder->registerBinding(ui->country, ComboData::createComboData(coutrySrv.all()));
|
||||||
|
|
||||||
|
m_addressBinder->setData(m_addrHelper->copyAddress().data());
|
||||||
|
m_addressBinder->bindToUi();
|
||||||
|
|
||||||
|
m_bindAddrCombo = true;
|
||||||
|
|
||||||
|
Service<AccService> serviceSrv;
|
||||||
|
m_servicesModel = new AutoTableModel<AccService>(this);
|
||||||
|
m_servicesModel->setTranslations(Context::instance().plugin("CAMP")->translations());
|
||||||
|
m_servicesModel->setData(serviceSrv.all());
|
||||||
|
ui->tableServices->setModel(m_servicesModel);
|
||||||
|
|
||||||
|
ui->tableServices->hideColumn(1);
|
||||||
|
ui->tableServices->hideColumn(3);
|
||||||
|
ui->tableServices->hideColumn(4);
|
||||||
|
ui->tableServices->hideColumn(5);
|
||||||
|
ui->tableServices->hideColumn(6);
|
||||||
|
|
||||||
|
ui->tableServices->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
m_itemsModel = new AutoTableModel<ServiceItem>();
|
||||||
|
m_itemsModel->setTranslations(Context::instance().plugin("CAMP")->translations());
|
||||||
|
ui->tableItems->setModel(m_itemsModel);
|
||||||
|
|
||||||
|
ui->tableItems->hideColumn(1);
|
||||||
|
ui->tableItems->hideColumn(4);
|
||||||
|
ui->tableItems->hideColumn(5);
|
||||||
|
ui->tableItems->hideColumn(6);
|
||||||
|
ui->tableItems->hideColumn(7);
|
||||||
|
|
||||||
|
ui->tableItems->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
connect(ui->tableServices->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](QModelIndex current, QModelIndex){
|
||||||
|
ui->btnAddService->setEnabled(current.isValid());
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->tableItems->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](QModelIndex, QModelIndex){
|
||||||
|
ui->btnRemoveService->setEnabled(!m_data->services().isEmpty());
|
||||||
|
});
|
||||||
|
|
||||||
|
m_saleHelper = new SaleHelper(this);
|
||||||
|
m_saleBinder = new ObjectBinder(this);
|
||||||
|
Service<Sale> saleSrv;
|
||||||
|
m_saleBinder->registerBinding(ui->sale, ComboData::createComboData(saleSrv.all()));
|
||||||
|
m_saleBinder->setData(m_saleHelper);
|
||||||
|
m_saleBinder->bindToUi();
|
||||||
|
|
||||||
|
ui->tabPeople->setModel(m_peopleModel);
|
||||||
|
ui->tabPeople->hideColumn(0);
|
||||||
|
ui->tabPeople->hideColumn(1);
|
||||||
|
ui->tabPeople->hideColumn(6);
|
||||||
|
ui->tabPeople->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
ui->tabServices->setModel(m_itemsModel);
|
||||||
|
ui->tabServices->hideColumn(1);
|
||||||
|
ui->tabServices->hideColumn(3);
|
||||||
|
ui->tabServices->hideColumn(7);
|
||||||
|
ui->tabServices->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
|
ui->tabServices->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
QScroller::grabGesture(ui->tabServices, QScroller::LeftMouseButtonGesture);
|
||||||
|
QScroller::grabGesture(ui->tabPeople, QScroller::LeftMouseButtonGesture);
|
||||||
|
|
||||||
|
m_newRecord = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
CampWizard::~CampWizard()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::setData(const CampDataPtr &data)
|
||||||
|
{
|
||||||
|
m_data = data;
|
||||||
|
|
||||||
|
m_dataBinder->setData(data.data());
|
||||||
|
m_dataBinder->bindToUi();
|
||||||
|
m_addrHelperBinder->bindToUi();
|
||||||
|
|
||||||
|
m_peopleModel->setData(data->people());
|
||||||
|
m_itemsModel->setData(data->services());
|
||||||
|
|
||||||
|
ui->sale_2->setValue(m_data->sale().toDouble());
|
||||||
|
ui->lblSale->setText(m_data->fixedSale() ? tr("Fixed amound") : tr("%"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_btnAdd_clicked()
|
||||||
|
{
|
||||||
|
m_addressBinder->bindToData();
|
||||||
|
|
||||||
|
CampService srv;
|
||||||
|
AddressBookService adbSrv;
|
||||||
|
|
||||||
|
if (ui->groupNew->isChecked())
|
||||||
|
{
|
||||||
|
AddressbookDataPtr newAddr = adbSrv.copyAddress(m_addrHelper->copyAddress());
|
||||||
|
adbSrv.save(newAddr);
|
||||||
|
srv.addPerson(m_data, newAddr);
|
||||||
|
|
||||||
|
m_bindAddrCombo = false;
|
||||||
|
m_addrHelperBinder->registerBinding(ui->address, ComboData::createComboData(adbSrv.all()));
|
||||||
|
m_addrHelperBinder->bindToUi();
|
||||||
|
m_bindAddrCombo = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
srv.addPerson(m_data, m_addrHelper->addr());
|
||||||
|
}
|
||||||
|
|
||||||
|
m_peopleModel->setData(m_data->people());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CampWizard::on_address_currentIndexChanged(int)
|
||||||
|
{
|
||||||
|
if (m_bindAddrCombo)
|
||||||
|
{
|
||||||
|
AddressBookService adbSrv;
|
||||||
|
m_addrHelperBinder->bindToData();
|
||||||
|
m_addressBinder->setData(m_addrHelper->newAddress().data());
|
||||||
|
m_addressBinder->bindToUi();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_btnRemove_clicked()
|
||||||
|
{
|
||||||
|
AddressItemPtr selAddr = m_peopleModel->itemFromIndex(ui->tablePeople->currentIndex());
|
||||||
|
m_data->removePerson(selAddr);
|
||||||
|
m_peopleModel->setData(m_data->people());
|
||||||
|
|
||||||
|
ui->btnOwner->setEnabled(false);
|
||||||
|
ui->btnRemove->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_btnOwner_clicked()
|
||||||
|
{
|
||||||
|
CampService srv;
|
||||||
|
AddressItemPtr selAddr = m_peopleModel->itemFromIndex(ui->tablePeople->currentIndex());
|
||||||
|
srv.setOwner(m_data, selAddr);
|
||||||
|
|
||||||
|
QModelIndex currIndex = ui->tablePeople->currentIndex();
|
||||||
|
m_peopleModel->setData(m_data->people());
|
||||||
|
ui->tablePeople->setCurrentIndex(currIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_groupNew_clicked(bool checked)
|
||||||
|
{
|
||||||
|
if (checked)
|
||||||
|
{
|
||||||
|
ui->address->setEnabled(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->address->setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_CampWizard_currentIdChanged(int id)
|
||||||
|
{
|
||||||
|
if (id == 2)
|
||||||
|
{
|
||||||
|
CampService srv;
|
||||||
|
srv.calculate(m_data);
|
||||||
|
|
||||||
|
m_dataBinder->bindToUi();
|
||||||
|
m_itemsModel->setData(m_data->services());
|
||||||
|
|
||||||
|
ui->lFrom->setText(m_data->start().toString("d. M. yyyy"));
|
||||||
|
ui->lTo->setText(m_data->end().toString("d. M. yyyy"));
|
||||||
|
ui->lDays->setText(QString::number(m_data->start().daysTo(m_data->end())));
|
||||||
|
ui->lOwner->setText(m_data->ownerAddress());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_btnAddService_clicked()
|
||||||
|
{
|
||||||
|
AccServicePtr service = m_servicesModel->itemFromIndex(ui->tableServices->currentIndex());
|
||||||
|
AddServiceDialog *dialog = new AddServiceDialog(service, this);
|
||||||
|
|
||||||
|
dialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
|
connect(dialog, &QDialog::accepted, [=](){
|
||||||
|
CampService srv;
|
||||||
|
srv.addService(m_data, service, dialog->price(), dialog->description());
|
||||||
|
m_itemsModel->setData(m_data->services());
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_btnRemoveService_clicked()
|
||||||
|
{
|
||||||
|
ServiceItemPtr item = m_itemsModel->itemFromIndex(ui->tableItems->currentIndex());
|
||||||
|
m_data->removeServiceItem(item);
|
||||||
|
m_itemsModel->setData(m_data->services());
|
||||||
|
|
||||||
|
ui->btnRemoveService->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_checkSale_clicked()
|
||||||
|
{
|
||||||
|
ui->sale->setEnabled(ui->checkSale->isChecked());
|
||||||
|
applySale();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::applySale()
|
||||||
|
{
|
||||||
|
if (m_data.isNull())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ui->checkSale->isChecked())
|
||||||
|
{
|
||||||
|
m_saleBinder->bindToData();
|
||||||
|
m_data->setSale(m_saleHelper->salePtr()->sale());
|
||||||
|
m_data->setFixedSale(m_saleHelper->salePtr()->fixed());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_data->setSale(QDecDouble(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_sale_currentIndexChanged(int)
|
||||||
|
{
|
||||||
|
applySale();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::setNewRecord(bool newRecord)
|
||||||
|
{
|
||||||
|
m_newRecord = newRecord;
|
||||||
|
|
||||||
|
if (newRecord)
|
||||||
|
{
|
||||||
|
ui->wSale->setVisible(false);
|
||||||
|
ui->checkSale->setText(tr("Apply sale"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->wSale->setVisible(true);
|
||||||
|
ui->checkSale->setText(tr("Change"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CampWizard::validateCurrentPage()
|
||||||
|
{
|
||||||
|
m_dataBinder->bindToData();
|
||||||
|
|
||||||
|
if (currentPage() == ui->peoplePage && m_data->people().isEmpty())
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Error"), tr("Add people."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentPage() == ui->peoplePage && m_data->start() >= m_data->end())
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Error"), tr("Start date is after or equals end date."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentPage() == ui->servicePage && m_data->services().isEmpty())
|
||||||
|
{
|
||||||
|
QMessageBox::critical(this, tr("Error"), tr("Add service."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::accept()
|
||||||
|
{
|
||||||
|
CampService srv;
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
connect(&srv, &IService::dbError, [this, &success](QString msg){
|
||||||
|
QMessageBox::critical(this, tr("Database error"), tr(msg.toStdString().c_str()));
|
||||||
|
success = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(&srv, &IService::permissionDenied, [this, &success](QString msg){
|
||||||
|
QMessageBox::critical(this, tr("Permission denied"), msg.toStdString().c_str());
|
||||||
|
success = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (m_newRecord && m_data->id() == 0)
|
||||||
|
{
|
||||||
|
srv.saveCamp(m_data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
srv.update(m_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
QDialog::accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampWizard::on_btnPrint_clicked()
|
||||||
|
{
|
||||||
|
if (QMessageBox::question(this, tr("Save record?"), tr("Record must be saved before print. Do you want to save record?")) != QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CampService srv;
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
connect(&srv, &IService::dbError, [this, &success](QString msg){
|
||||||
|
QMessageBox::critical(this, tr("Database error"), tr(msg.toStdString().c_str()));
|
||||||
|
success = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(&srv, &IService::permissionDenied, [this, &success](QString msg){
|
||||||
|
QMessageBox::critical(this, tr("Permission denied"), msg.toStdString().c_str());
|
||||||
|
success = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (m_newRecord && m_data->id() == 0)
|
||||||
|
{
|
||||||
|
srv.saveCamp(m_data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
srv.update(m_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!success)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReportPtr report(new Report);
|
||||||
|
report->setFile("camp_accommodation_document.lrxml");
|
||||||
|
|
||||||
|
VariableFiller filler;
|
||||||
|
filler.fill(report, m_data->id());
|
||||||
|
|
||||||
|
ReportViewer *viewer = new ReportViewer(this);
|
||||||
|
viewer->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
viewer->setReport(report);
|
||||||
|
viewer->openPreview();
|
||||||
|
|
||||||
|
connect(viewer, &QDialog::finished, [this](int){
|
||||||
|
this->accept();
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,118 @@
|
|||||||
|
#ifndef CAMPWIZARD_H
|
||||||
|
#define CAMPWIZARD_H
|
||||||
|
|
||||||
|
#include <QWizard>
|
||||||
|
#include "data/camp-data.h"
|
||||||
|
#include <objectbinder.h>
|
||||||
|
#include <data/addressbookdata.h>
|
||||||
|
#include <data/accservice.h>
|
||||||
|
#include <core.h>
|
||||||
|
|
||||||
|
class AddressHelper : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(QSharedPointer<QObject> address READ address WRITE setAddress)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AddressHelper(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
QSharedPointer<QObject> address() const;
|
||||||
|
void setAddress(const QSharedPointer<QObject> &address);
|
||||||
|
|
||||||
|
AddressbookDataPtr addr() const;
|
||||||
|
void setAddr(const AddressbookDataPtr &address);
|
||||||
|
|
||||||
|
AddressbookDataPtr newAddress();
|
||||||
|
AddressbookDataPtr copyAddress();
|
||||||
|
|
||||||
|
private:
|
||||||
|
AddressbookDataPtr m_address;
|
||||||
|
AddressbookDataPtr m_copyAddress;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SaleHelper : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(QSharedPointer<QObject> sale READ sale WRITE setSale NOTIFY saleChanged)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SaleHelper(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
SalePtr salePtr() const;
|
||||||
|
void setSalePtr(const SalePtr &sale);
|
||||||
|
|
||||||
|
QSharedPointer<QObject> sale() const;
|
||||||
|
void setSale(const QSharedPointer<QObject> &sale);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void saleChanged();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SalePtr m_sale;
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class CampWizard;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CampWizard : public QWizard
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CampWizard(QWidget *parent = nullptr);
|
||||||
|
~CampWizard() override;
|
||||||
|
|
||||||
|
void setData(const CampDataPtr &data);
|
||||||
|
void setNewRecord(bool newRecord);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_btnAdd_clicked();
|
||||||
|
|
||||||
|
void on_address_currentIndexChanged(int index);
|
||||||
|
|
||||||
|
void on_btnRemove_clicked();
|
||||||
|
|
||||||
|
void on_btnOwner_clicked();
|
||||||
|
|
||||||
|
void on_groupNew_clicked(bool checked);
|
||||||
|
|
||||||
|
void on_CampWizard_currentIdChanged(int id);
|
||||||
|
|
||||||
|
void on_btnAddService_clicked();
|
||||||
|
|
||||||
|
void on_btnRemoveService_clicked();
|
||||||
|
|
||||||
|
void on_checkSale_clicked();
|
||||||
|
|
||||||
|
void applySale();
|
||||||
|
|
||||||
|
void on_sale_currentIndexChanged(int index);
|
||||||
|
|
||||||
|
void on_btnPrint_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::CampWizard *ui;
|
||||||
|
CampDataPtr m_data;
|
||||||
|
ObjectBinder *m_dataBinder;
|
||||||
|
ObjectBinder *m_addrHelperBinder;
|
||||||
|
ObjectBinder *m_addressBinder;
|
||||||
|
AddressHelper *m_addrHelper;
|
||||||
|
ObjectBinder *m_saleBinder;
|
||||||
|
SaleHelper *m_saleHelper;
|
||||||
|
|
||||||
|
AutoTableModel<AddressItem> *m_peopleModel;
|
||||||
|
AutoTableModel<AccService> *m_servicesModel;
|
||||||
|
AutoTableModel<ServiceItem> *m_itemsModel;
|
||||||
|
bool m_bindAddrCombo;
|
||||||
|
bool m_newRecord;
|
||||||
|
|
||||||
|
// QWizard interface
|
||||||
|
public:
|
||||||
|
bool validateCurrentPage() override;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void accept() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CAMPWIZARD_H
|
@ -0,0 +1,913 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CampWizard</class>
|
||||||
|
<widget class="QWizard" name="CampWizard">
|
||||||
|
<property name="windowModality">
|
||||||
|
<enum>Qt::ApplicationModal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>948</width>
|
||||||
|
<height>684</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Camp record</string>
|
||||||
|
</property>
|
||||||
|
<property name="windowIcon">
|
||||||
|
<iconset resource="camprc.qrc">
|
||||||
|
<normaloff>:/icons/campPlugin.svg</normaloff>:/icons/campPlugin.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="wizardStyle">
|
||||||
|
<enum>QWizard::ClassicStyle</enum>
|
||||||
|
</property>
|
||||||
|
<widget class="QWizardPage" name="peoplePage">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>From</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDateEdit" name="start">
|
||||||
|
<property name="displayFormat">
|
||||||
|
<string>d. M. yyyy</string>
|
||||||
|
</property>
|
||||||
|
<property name="calendarPopup">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>To</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDateEdit" name="end">
|
||||||
|
<property name="displayFormat">
|
||||||
|
<string>d. M. yyyy</string>
|
||||||
|
</property>
|
||||||
|
<property name="calendarPopup">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>People</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_3" native="true">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>450</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Existing address</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="3">
|
||||||
|
<widget class="QPushButton" name="btnAdd">
|
||||||
|
<property name="text">
|
||||||
|
<string>Add</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/new.svg</normaloff>:/icons/new.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="4">
|
||||||
|
<widget class="QGroupBox" name="groupNew">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>&New address</string>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout_2">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Title</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="title"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>First name</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="firstName"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>Last name</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLineEdit" name="lastName"/>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>Date of birth</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QDateEdit" name="birthDate">
|
||||||
|
<property name="displayFormat">
|
||||||
|
<string>d. MM. yyyy</string>
|
||||||
|
</property>
|
||||||
|
<property name="calendarPopup">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="label_8">
|
||||||
|
<property name="text">
|
||||||
|
<string>ID card</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLineEdit" name="idCardNumber"/>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QCheckBox" name="ztp">
|
||||||
|
<property name="text">
|
||||||
|
<string>ZTP</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QLabel" name="label_9">
|
||||||
|
<property name="text">
|
||||||
|
<string>Street</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QLineEdit" name="addressStreet"/>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="0">
|
||||||
|
<widget class="QLabel" name="label_10">
|
||||||
|
<property name="text">
|
||||||
|
<string>House number</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="1">
|
||||||
|
<widget class="QLineEdit" name="addressHouseNumber"/>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="0">
|
||||||
|
<widget class="QLabel" name="label_11">
|
||||||
|
<property name="text">
|
||||||
|
<string>ZIP code</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="1">
|
||||||
|
<widget class="QLineEdit" name="addressZipCode"/>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="0">
|
||||||
|
<widget class="QLabel" name="label_12">
|
||||||
|
<property name="text">
|
||||||
|
<string>City</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="1">
|
||||||
|
<widget class="QLineEdit" name="addressCity"/>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="0">
|
||||||
|
<widget class="QLabel" name="label_13">
|
||||||
|
<property name="text">
|
||||||
|
<string>Country</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="1">
|
||||||
|
<widget class="QComboBox" name="country">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>450</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" colspan="3">
|
||||||
|
<widget class="QComboBox" name="address">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>300</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_8" native="true">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>150</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_9" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnRemove">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Remove</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/remove.svg</normaloff>:/icons/remove.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnOwner">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Owner</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/ok.svg</normaloff>:/icons/ok.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>24</width>
|
||||||
|
<height>24</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tablePeople">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>380</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="editTriggers">
|
||||||
|
<set>QAbstractItemView::NoEditTriggers</set>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWizardPage" name="servicePage">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_3">
|
||||||
|
<property name="title">
|
||||||
|
<string>Services</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tableServices">
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_2" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnAddService">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/new.svg</normaloff>:/icons/new.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnRemoveService">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/remove.svg</normaloff>:/icons/remove.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tableItems">
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_4">
|
||||||
|
<property name="title">
|
||||||
|
<string>Sale</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkSale">
|
||||||
|
<property name="text">
|
||||||
|
<string>Change</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QComboBox" name="sale">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QWidget" name="wSale" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||||
|
<item>
|
||||||
|
<widget class="QDoubleSpinBox" name="sale_2">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>60</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>999.990000000000009</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lblSale">
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_8">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWizardPage" name="finishPage">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_5">
|
||||||
|
<property name="title">
|
||||||
|
<string>Summary</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_4" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_16">
|
||||||
|
<property name="text">
|
||||||
|
<string>From:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lFrom">
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_18">
|
||||||
|
<property name="text">
|
||||||
|
<string>To:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lTo">
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_5" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_20">
|
||||||
|
<property name="text">
|
||||||
|
<string>Days:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lDays">
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_10" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_23">
|
||||||
|
<property name="text">
|
||||||
|
<string>Owner:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="lOwner">
|
||||||
|
<property name="text">
|
||||||
|
<string>TextLabel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_7">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_14">
|
||||||
|
<property name="text">
|
||||||
|
<string>People:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tabPeople"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_15">
|
||||||
|
<property name="text">
|
||||||
|
<string>Services:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tabServices"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_6" native="true">
|
||||||
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_22">
|
||||||
|
<property name="text">
|
||||||
|
<string>Sale:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_24">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Total:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="totalSale">
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="frame">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>999999999.990000009536743</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="totalPrice">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="frame">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>999999999.990000009536743</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_7" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btnPrint">
|
||||||
|
<property name="text">
|
||||||
|
<string>Print</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/print.svg</normaloff>:/icons/print.svg</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>start</tabstop>
|
||||||
|
<tabstop>end</tabstop>
|
||||||
|
<tabstop>address</tabstop>
|
||||||
|
<tabstop>groupNew</tabstop>
|
||||||
|
<tabstop>title</tabstop>
|
||||||
|
<tabstop>firstName</tabstop>
|
||||||
|
<tabstop>lastName</tabstop>
|
||||||
|
<tabstop>birthDate</tabstop>
|
||||||
|
<tabstop>idCardNumber</tabstop>
|
||||||
|
<tabstop>ztp</tabstop>
|
||||||
|
<tabstop>addressStreet</tabstop>
|
||||||
|
<tabstop>addressHouseNumber</tabstop>
|
||||||
|
<tabstop>addressZipCode</tabstop>
|
||||||
|
<tabstop>addressCity</tabstop>
|
||||||
|
<tabstop>country</tabstop>
|
||||||
|
<tabstop>btnAdd</tabstop>
|
||||||
|
<tabstop>btnRemove</tabstop>
|
||||||
|
<tabstop>btnOwner</tabstop>
|
||||||
|
<tabstop>tablePeople</tabstop>
|
||||||
|
<tabstop>btnAddService</tabstop>
|
||||||
|
<tabstop>btnRemoveService</tabstop>
|
||||||
|
<tabstop>tableItems</tabstop>
|
||||||
|
<tabstop>tabPeople</tabstop>
|
||||||
|
<tabstop>tabServices</tabstop>
|
||||||
|
<tabstop>btnPrint</tabstop>
|
||||||
|
<tabstop>checkSale</tabstop>
|
||||||
|
<tabstop>sale</tabstop>
|
||||||
|
<tabstop>tableServices</tabstop>
|
||||||
|
</tabstops>
|
||||||
|
<resources>
|
||||||
|
<include location="../core/rc.qrc"/>
|
||||||
|
<include location="camprc.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -0,0 +1,141 @@
|
|||||||
|
#include "addressitem.h"
|
||||||
|
#include <define.h>
|
||||||
|
|
||||||
|
QX_REGISTER_CPP_CAMP(AddressItem)
|
||||||
|
|
||||||
|
namespace qx {
|
||||||
|
template<> void register_class(QxClass<AddressItem>& t) {
|
||||||
|
t.setName("AddressItem");
|
||||||
|
t.id(&AddressItem::m_id, "id");
|
||||||
|
t.data(&AddressItem::m_firstName, "firstName");
|
||||||
|
t.data(&AddressItem::m_lastName, "lastName");
|
||||||
|
t.data(&AddressItem::m_address, "address");
|
||||||
|
t.data(&AddressItem::m_price, "price");
|
||||||
|
t.data(&AddressItem::m_owner, "owner");
|
||||||
|
t.data(&AddressItem::m_sale, "sale");
|
||||||
|
t.data(&AddressItem::m_totalPrice, "totalPrice");
|
||||||
|
|
||||||
|
t.relationManyToOne(&AddressItem::m_adbItem, "adbItem");
|
||||||
|
t.relationManyToOne(&AddressItem::m_campData, "campData");
|
||||||
|
t.relationManyToOne(&AddressItem::m_personPrice, "personPrice");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AddressItem::AddressItem(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
m_id = 0;
|
||||||
|
m_price = 0;
|
||||||
|
m_owner = false;
|
||||||
|
m_sale = 0;
|
||||||
|
m_totalPrice = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
long AddressItem::id() const
|
||||||
|
{
|
||||||
|
return m_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setId(long id)
|
||||||
|
{
|
||||||
|
m_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString AddressItem::firstName() const
|
||||||
|
{
|
||||||
|
return m_firstName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setFirstName(const QString &firstName)
|
||||||
|
{
|
||||||
|
m_firstName = firstName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString AddressItem::lastName() const
|
||||||
|
{
|
||||||
|
return m_lastName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setLastName(const QString &lastName)
|
||||||
|
{
|
||||||
|
m_lastName = lastName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString AddressItem::address() const
|
||||||
|
{
|
||||||
|
return m_address;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setAddress(const QString &address)
|
||||||
|
{
|
||||||
|
m_address = address;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble AddressItem::price() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_price);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setPrice(QDecDouble price)
|
||||||
|
{
|
||||||
|
m_price = FROM_DEC(price);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSharedPointer<CampData> AddressItem::campData() const
|
||||||
|
{
|
||||||
|
return m_campData;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setCampData(const QSharedPointer<CampData> &campData)
|
||||||
|
{
|
||||||
|
m_campData = campData;
|
||||||
|
}
|
||||||
|
|
||||||
|
PersonPricePtr AddressItem::personPrice() const
|
||||||
|
{
|
||||||
|
return m_personPrice;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setPersonPrice(const PersonPricePtr &personPrice)
|
||||||
|
{
|
||||||
|
m_personPrice = personPrice;
|
||||||
|
}
|
||||||
|
|
||||||
|
AddressbookDataPtr AddressItem::adbItem() const
|
||||||
|
{
|
||||||
|
return m_adbItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setAdbItem(const AddressbookDataPtr &adbItem)
|
||||||
|
{
|
||||||
|
m_adbItem = adbItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AddressItem::owner() const
|
||||||
|
{
|
||||||
|
return m_owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setOwner(bool owner)
|
||||||
|
{
|
||||||
|
m_owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble AddressItem::totalPrice() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_totalPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setTotalPrice(QDecDouble totalPrice)
|
||||||
|
{
|
||||||
|
m_totalPrice = FROM_DEC(totalPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble AddressItem::sale() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddressItem::setSale(QDecDouble sale)
|
||||||
|
{
|
||||||
|
m_sale = FROM_DEC(sale);
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
#ifndef ADDRESSITEM_H
|
||||||
|
#define ADDRESSITEM_H
|
||||||
|
|
||||||
|
#include "camp-data.h"
|
||||||
|
#include <QObject>
|
||||||
|
#include <QSharedPointer>
|
||||||
|
#include <QWeakPointer>
|
||||||
|
#include <QDecDouble.hh>
|
||||||
|
#include <data/addressbookdata.h>
|
||||||
|
|
||||||
|
#include "../camp_global.h"
|
||||||
|
|
||||||
|
class CampData;
|
||||||
|
|
||||||
|
class AddressItem : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
QX_REGISTER_FRIEND_CLASS(AddressItem)
|
||||||
|
Q_PROPERTY(QString firstName READ firstName WRITE setFirstName)
|
||||||
|
Q_PROPERTY(QString lastName READ lastName WRITE setLastName)
|
||||||
|
Q_PROPERTY(QString address READ address WRITE setAddress)
|
||||||
|
Q_PROPERTY(QDecDouble price READ price WRITE setPrice)
|
||||||
|
Q_PROPERTY(QDecDouble sale READ sale WRITE setSale)
|
||||||
|
Q_PROPERTY(QDecDouble totalPrice READ totalPrice WRITE setTotalPrice)
|
||||||
|
Q_PROPERTY(bool owner READ owner WRITE setOwner)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AddressItem(QObject *parent = 0);
|
||||||
|
|
||||||
|
long id() const;
|
||||||
|
void setId(long id);
|
||||||
|
|
||||||
|
QString firstName() const;
|
||||||
|
void setFirstName(const QString &firstName);
|
||||||
|
|
||||||
|
QString lastName() const;
|
||||||
|
void setLastName(const QString &lastName);
|
||||||
|
|
||||||
|
QString address() const;
|
||||||
|
void setAddress(const QString &address);
|
||||||
|
|
||||||
|
QDecDouble price() const;
|
||||||
|
void setPrice(QDecDouble price);
|
||||||
|
|
||||||
|
QSharedPointer<CampData> campData() const;
|
||||||
|
void setCampData(const QSharedPointer<CampData> &campData);
|
||||||
|
|
||||||
|
PersonPricePtr personPrice() const;
|
||||||
|
void setPersonPrice(const PersonPricePtr &personPrice);
|
||||||
|
|
||||||
|
AddressbookDataPtr adbItem() const;
|
||||||
|
void setAdbItem(const AddressbookDataPtr &adbItem);
|
||||||
|
|
||||||
|
bool owner() const;
|
||||||
|
void setOwner(bool owner);
|
||||||
|
|
||||||
|
QDecDouble totalPrice() const;
|
||||||
|
void setTotalPrice(QDecDouble totalPrice);
|
||||||
|
|
||||||
|
QDecDouble sale() const;
|
||||||
|
void setSale(QDecDouble sale);
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_id;
|
||||||
|
QString m_firstName;
|
||||||
|
QString m_lastName;
|
||||||
|
QString m_address;
|
||||||
|
AddressbookDataPtr m_adbItem;
|
||||||
|
int m_price;
|
||||||
|
int m_totalPrice;
|
||||||
|
int m_sale;
|
||||||
|
CampDataPtr m_campData;
|
||||||
|
PersonPricePtr m_personPrice;
|
||||||
|
bool m_owner;
|
||||||
|
};
|
||||||
|
|
||||||
|
QX_REGISTER_HPP_CAMP(AddressItem, QObject, 0)
|
||||||
|
|
||||||
|
#endif // ADDRESSITEM_H
|
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef CAMP_DATA_H
|
||||||
|
#define CAMP_DATA_H
|
||||||
|
|
||||||
|
#include <QSharedPointer>
|
||||||
|
|
||||||
|
class CampData;
|
||||||
|
class AddressItem;
|
||||||
|
class ServiceItem;
|
||||||
|
class Sale;
|
||||||
|
class PersonPrice;
|
||||||
|
|
||||||
|
typedef QSharedPointer<CampData> CampDataPtr;
|
||||||
|
typedef QSharedPointer<ServiceItem> ServiceItemPtr;
|
||||||
|
typedef QSharedPointer<AddressItem> AddressItemPtr;
|
||||||
|
typedef QSharedPointer<Sale> SalePtr;
|
||||||
|
typedef QSharedPointer<PersonPrice> PersonPricePtr;
|
||||||
|
|
||||||
|
#include "campdata.h"
|
||||||
|
#include "addressitem.h"
|
||||||
|
#include "serviceitem.h"
|
||||||
|
#include "sale.h"
|
||||||
|
#include "personprice.h"
|
||||||
|
|
||||||
|
#endif // CAMP_DATA_H
|
@ -0,0 +1,262 @@
|
|||||||
|
#include "campdata.h"
|
||||||
|
#include <define.h>
|
||||||
|
|
||||||
|
QX_REGISTER_CPP_CAMP(CampData)
|
||||||
|
|
||||||
|
namespace qx {
|
||||||
|
template<> void register_class(QxClass<CampData>& t) {
|
||||||
|
t.setName("CampData");
|
||||||
|
t.id(&CampData::m_id, "id");
|
||||||
|
t.data(&CampData::m_numSer, "numSer");
|
||||||
|
t.data(&CampData::m_start, "start");
|
||||||
|
t.data(&CampData::m_end, "end");
|
||||||
|
t.data(&CampData::m_ownerFirstame, "ownerFirstame");
|
||||||
|
t.data(&CampData::m_ownerLastname, "ownerLastname");
|
||||||
|
t.data(&CampData::m_ownerAddress, "ownerAddress");
|
||||||
|
t.data(&CampData::m_totalPrice, "totalPrice");
|
||||||
|
t.data(&CampData::m_sale, "sale");
|
||||||
|
t.data(&CampData::m_fixedSale, "fixedSale");
|
||||||
|
t.data(&CampData::m_fullPrice, "fullPrice");
|
||||||
|
t.data(&CampData::m_totalSale, "totalSale");
|
||||||
|
t.data(&CampData::m_onVoucher, "onVoucher");
|
||||||
|
t.data(&CampData::m_createdBy, "createdBy");
|
||||||
|
t.data(&CampData::m_created, "created");
|
||||||
|
t.data(&CampData::m_updatedBy, "updatedBy");
|
||||||
|
t.data(&CampData::m_updated, "updated");
|
||||||
|
|
||||||
|
t.relationManyToOne(&CampData::m_season, "season");
|
||||||
|
t.relationOneToMany(&CampData::m_people, "people", "campData");
|
||||||
|
t.relationOneToMany(&CampData::m_services, "services", "campData");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CampData::CampData(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
m_id = 0;
|
||||||
|
m_totalPrice = 0;
|
||||||
|
m_sale = 0;
|
||||||
|
m_totalSale = 0;
|
||||||
|
m_fixedSale = false;
|
||||||
|
m_fullPrice = 0;
|
||||||
|
m_onVoucher = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
long CampData::id() const
|
||||||
|
{
|
||||||
|
return m_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setId(long id)
|
||||||
|
{
|
||||||
|
m_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDate CampData::start() const
|
||||||
|
{
|
||||||
|
return m_start;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setStart(const QDate &start)
|
||||||
|
{
|
||||||
|
m_start = start;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDate CampData::end() const
|
||||||
|
{
|
||||||
|
return m_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setEnd(const QDate &end)
|
||||||
|
{
|
||||||
|
m_end = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampData::ownerFirstame() const
|
||||||
|
{
|
||||||
|
return m_ownerFirstame;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setOwnerFirstame(const QString &ownerFirstame)
|
||||||
|
{
|
||||||
|
m_ownerFirstame = ownerFirstame;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampData::ownerLastname() const
|
||||||
|
{
|
||||||
|
return m_ownerLastname;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setOwnerLastname(const QString &ownerLastname)
|
||||||
|
{
|
||||||
|
m_ownerLastname = ownerLastname;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampData::ownerAddress() const
|
||||||
|
{
|
||||||
|
return m_ownerAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setOwnerAddress(const QString &ownerAddress)
|
||||||
|
{
|
||||||
|
m_ownerAddress = ownerAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<ServiceItemPtr> CampData::services() const
|
||||||
|
{
|
||||||
|
return m_services;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setServices(const QList<QSharedPointer<ServiceItem> > &services)
|
||||||
|
{
|
||||||
|
m_services = services;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::addServiceItem(const ServiceItemPtr& serviceItem)
|
||||||
|
{
|
||||||
|
m_services.append(serviceItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::removeServiceItem(const ServiceItemPtr& serviceItem)
|
||||||
|
{
|
||||||
|
m_services.removeOne(serviceItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<AddressItemPtr> CampData::people() const
|
||||||
|
{
|
||||||
|
return m_people;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setPeople(const QList<AddressItemPtr> &people)
|
||||||
|
{
|
||||||
|
m_people = people;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::addPerson(const AddressItemPtr& person)
|
||||||
|
{
|
||||||
|
m_people.append(person);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::removePerson(const AddressItemPtr& person)
|
||||||
|
{
|
||||||
|
m_people.removeOne(person);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble CampData::totalPrice() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_totalPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setTotalPrice(QDecDouble totalPrice)
|
||||||
|
{
|
||||||
|
m_totalPrice = FROM_DEC(totalPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
SeasonPtr CampData::season() const
|
||||||
|
{
|
||||||
|
return m_season;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setSeason(const SeasonPtr &season)
|
||||||
|
{
|
||||||
|
m_season = season;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble CampData::sale() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setSale(QDecDouble sale)
|
||||||
|
{
|
||||||
|
m_sale = FROM_DEC(sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CampData::fixedSale() const
|
||||||
|
{
|
||||||
|
return m_fixedSale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setFixedSale(bool fixedSale)
|
||||||
|
{
|
||||||
|
m_fixedSale = fixedSale;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampData::numSer() const
|
||||||
|
{
|
||||||
|
return m_numSer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setNumSer(const QString &numSer)
|
||||||
|
{
|
||||||
|
m_numSer = numSer;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble CampData::totalSale() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_totalSale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setTotalSale(QDecDouble totalSale)
|
||||||
|
{
|
||||||
|
m_totalSale = FROM_DEC(totalSale);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble CampData::fullPrice() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_fullPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setFullPrice(QDecDouble fullPrice)
|
||||||
|
{
|
||||||
|
m_fullPrice = FROM_DEC(fullPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CampData::onVoucher() const
|
||||||
|
{
|
||||||
|
return m_onVoucher;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setOnVoucher(bool onVoucher)
|
||||||
|
{
|
||||||
|
m_onVoucher = onVoucher;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampData::createdBy() const
|
||||||
|
{
|
||||||
|
return m_createdBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setCreatedBy(const QString &createdBy)
|
||||||
|
{
|
||||||
|
m_createdBy = createdBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampData::updatedBy() const
|
||||||
|
{
|
||||||
|
return m_updatedBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setUpdatedBy(const QString &updatedBy)
|
||||||
|
{
|
||||||
|
m_updatedBy = updatedBy;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDateTime CampData::created() const
|
||||||
|
{
|
||||||
|
return m_created;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setCreated(const QDateTime &created)
|
||||||
|
{
|
||||||
|
m_created = created;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDateTime CampData::updated() const
|
||||||
|
{
|
||||||
|
return m_updated;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampData::setUpdated(const QDateTime &updated)
|
||||||
|
{
|
||||||
|
m_updated = updated;
|
||||||
|
}
|
@ -0,0 +1,125 @@
|
|||||||
|
#ifndef CAMPDATA_H
|
||||||
|
#define CAMPDATA_H
|
||||||
|
|
||||||
|
#include "camp-data.h"
|
||||||
|
#include <QObject>
|
||||||
|
#include <QDate>
|
||||||
|
#include <QDecDouble.hh>
|
||||||
|
#include <data/season.h>
|
||||||
|
|
||||||
|
#include "../camp_global.h"
|
||||||
|
|
||||||
|
class CampData : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
QX_REGISTER_FRIEND_CLASS(CampData)
|
||||||
|
Q_PROPERTY(QString numSer READ numSer WRITE setNumSer)
|
||||||
|
Q_PROPERTY(QDate start READ start WRITE setStart)
|
||||||
|
Q_PROPERTY(QDate end READ end WRITE setEnd)
|
||||||
|
Q_PROPERTY(QString ownerFirstame READ ownerFirstame WRITE setOwnerFirstame)
|
||||||
|
Q_PROPERTY(QString ownerLastname READ ownerLastname WRITE setOwnerLastname)
|
||||||
|
Q_PROPERTY(QString ownerAddress READ ownerAddress WRITE setOwnerAddress)
|
||||||
|
Q_PROPERTY(QDecDouble totalPrice READ totalPrice WRITE setTotalPrice)
|
||||||
|
Q_PROPERTY(QDecDouble sale READ sale WRITE setSale)
|
||||||
|
Q_PROPERTY(bool fixedSale READ fixedSale WRITE setFixedSale)
|
||||||
|
Q_PROPERTY(QDecDouble totalSale READ totalSale WRITE setTotalSale)
|
||||||
|
Q_PROPERTY(bool onVoucher READ onVoucher WRITE setOnVoucher)
|
||||||
|
Q_PROPERTY(QString createdBy READ createdBy WRITE setCreatedBy)
|
||||||
|
Q_PROPERTY(QString updatedBy READ updatedBy WRITE setUpdatedBy)
|
||||||
|
Q_PROPERTY(QDateTime created READ created WRITE setCreated)
|
||||||
|
Q_PROPERTY(QDateTime updated READ updated WRITE setUpdated)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CampData(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
long id() const;
|
||||||
|
void setId(long id);
|
||||||
|
|
||||||
|
QDate start() const;
|
||||||
|
void setStart(const QDate &start);
|
||||||
|
|
||||||
|
QDate end() const;
|
||||||
|
void setEnd(const QDate &end);
|
||||||
|
|
||||||
|
QString ownerFirstame() const;
|
||||||
|
void setOwnerFirstame(const QString &ownerFirstame);
|
||||||
|
|
||||||
|
QString ownerLastname() const;
|
||||||
|
void setOwnerLastname(const QString &ownerLastname);
|
||||||
|
|
||||||
|
QString ownerAddress() const;
|
||||||
|
void setOwnerAddress(const QString &ownerAddress);
|
||||||
|
|
||||||
|
QList<ServiceItemPtr> services() const;
|
||||||
|
void setServices(const QList<ServiceItemPtr> &services);
|
||||||
|
void addServiceItem(const ServiceItemPtr& serviceItem);
|
||||||
|
void removeServiceItem(const ServiceItemPtr& serviceItem);
|
||||||
|
|
||||||
|
QList<AddressItemPtr> people() const;
|
||||||
|
void setPeople(const QList<AddressItemPtr> &people);
|
||||||
|
void addPerson(const AddressItemPtr& person);
|
||||||
|
void removePerson(const AddressItemPtr& person);
|
||||||
|
|
||||||
|
QDecDouble totalPrice() const;
|
||||||
|
void setTotalPrice(QDecDouble totalPrice);
|
||||||
|
|
||||||
|
SeasonPtr season() const;
|
||||||
|
void setSeason(const SeasonPtr &season);
|
||||||
|
|
||||||
|
QDecDouble sale() const;
|
||||||
|
void setSale(QDecDouble sale);
|
||||||
|
|
||||||
|
bool fixedSale() const;
|
||||||
|
void setFixedSale(bool fixedSale);
|
||||||
|
|
||||||
|
QString numSer() const;
|
||||||
|
void setNumSer(const QString &numSer);
|
||||||
|
|
||||||
|
QDecDouble totalSale() const;
|
||||||
|
void setTotalSale(QDecDouble totalSale);
|
||||||
|
|
||||||
|
QDecDouble fullPrice() const;
|
||||||
|
void setFullPrice(QDecDouble fullPrice);
|
||||||
|
|
||||||
|
bool onVoucher() const;
|
||||||
|
void setOnVoucher(bool onVoucher);
|
||||||
|
|
||||||
|
QString createdBy() const;
|
||||||
|
void setCreatedBy(const QString &createdBy);
|
||||||
|
|
||||||
|
QString updatedBy() const;
|
||||||
|
void setUpdatedBy(const QString &updatedBy);
|
||||||
|
|
||||||
|
QDateTime created() const;
|
||||||
|
void setCreated(const QDateTime &created);
|
||||||
|
|
||||||
|
QDateTime updated() const;
|
||||||
|
void setUpdated(const QDateTime &updated);
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_id;
|
||||||
|
QString m_numSer;
|
||||||
|
QDate m_start;
|
||||||
|
QDate m_end;
|
||||||
|
QString m_ownerFirstame;
|
||||||
|
QString m_ownerLastname;
|
||||||
|
QString m_ownerAddress;
|
||||||
|
QList<ServiceItemPtr> m_services;
|
||||||
|
QList<AddressItemPtr> m_people;
|
||||||
|
int m_fullPrice;
|
||||||
|
int m_totalPrice;
|
||||||
|
int m_sale;
|
||||||
|
int m_totalSale;
|
||||||
|
bool m_fixedSale;
|
||||||
|
SeasonPtr m_season;
|
||||||
|
bool m_onVoucher;
|
||||||
|
QString m_createdBy;
|
||||||
|
QString m_updatedBy;
|
||||||
|
QDateTime m_created;
|
||||||
|
QDateTime m_updated;
|
||||||
|
};
|
||||||
|
|
||||||
|
QX_REGISTER_HPP_CAMP(CampData, QObject, 0)
|
||||||
|
|
||||||
|
#endif // CAMPDATA_H
|
@ -0,0 +1,85 @@
|
|||||||
|
#include "personprice.h"
|
||||||
|
#include <define.h>
|
||||||
|
|
||||||
|
QX_REGISTER_CPP_CAMP(PersonPrice)
|
||||||
|
|
||||||
|
namespace qx {
|
||||||
|
template<> void register_class(QxClass<PersonPrice>& t) {
|
||||||
|
t.setName("PersonPrice");
|
||||||
|
t.id(&PersonPrice::m_id, "id");
|
||||||
|
t.data(&PersonPrice::m_description, "description");
|
||||||
|
t.data(&PersonPrice::m_fromAge, "fromAge");
|
||||||
|
t.data(&PersonPrice::m_toAge, "toAge");
|
||||||
|
t.data(&PersonPrice::m_price, "price");
|
||||||
|
t.data(&PersonPrice::m_active, "active");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PersonPrice::PersonPrice(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
m_id = 0;
|
||||||
|
m_fromAge = 0;
|
||||||
|
m_toAge = 0;
|
||||||
|
m_price = 0;
|
||||||
|
m_active = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
long PersonPrice::id() const
|
||||||
|
{
|
||||||
|
return m_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PersonPrice::setId(long id)
|
||||||
|
{
|
||||||
|
m_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString PersonPrice::description() const
|
||||||
|
{
|
||||||
|
return m_description;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PersonPrice::setDescription(const QString &description)
|
||||||
|
{
|
||||||
|
m_description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PersonPrice::fromAge() const
|
||||||
|
{
|
||||||
|
return m_fromAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PersonPrice::setFromAge(int fromAge)
|
||||||
|
{
|
||||||
|
m_fromAge = fromAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PersonPrice::toAge() const
|
||||||
|
{
|
||||||
|
return m_toAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PersonPrice::setToAge(int toAge)
|
||||||
|
{
|
||||||
|
m_toAge = toAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble PersonPrice::price() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_price);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PersonPrice::setPrice(QDecDouble price)
|
||||||
|
{
|
||||||
|
m_price = FROM_DEC(price);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PersonPrice::active() const
|
||||||
|
{
|
||||||
|
return m_active;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PersonPrice::setActive(bool active)
|
||||||
|
{
|
||||||
|
m_active = active;
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
#ifndef PERSONPRICE_H
|
||||||
|
#define PERSONPRICE_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QDecDouble.hh>
|
||||||
|
|
||||||
|
#include "../camp_global.h"
|
||||||
|
|
||||||
|
class PersonPrice : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
QX_REGISTER_FRIEND_CLASS(PersonPrice)
|
||||||
|
Q_PROPERTY(QString description READ description WRITE setDescription)
|
||||||
|
Q_PROPERTY(int fromAge READ fromAge WRITE setFromAge)
|
||||||
|
Q_PROPERTY(int toAge READ toAge WRITE setToAge)
|
||||||
|
Q_PROPERTY(QDecDouble price READ price WRITE setPrice)
|
||||||
|
Q_PROPERTY(bool active READ active WRITE setActive)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit PersonPrice(QObject *parent = 0);
|
||||||
|
|
||||||
|
long id() const;
|
||||||
|
void setId(long id);
|
||||||
|
|
||||||
|
QString description() const;
|
||||||
|
void setDescription(const QString &description);
|
||||||
|
|
||||||
|
int fromAge() const;
|
||||||
|
void setFromAge(int fromAge);
|
||||||
|
|
||||||
|
int toAge() const;
|
||||||
|
void setToAge(int toAge);
|
||||||
|
|
||||||
|
QDecDouble price() const;
|
||||||
|
void setPrice(QDecDouble price);
|
||||||
|
|
||||||
|
bool active() const;
|
||||||
|
void setActive(bool active);
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_id;
|
||||||
|
QString m_description;
|
||||||
|
int m_fromAge;
|
||||||
|
int m_toAge;
|
||||||
|
int m_price;
|
||||||
|
bool m_active;
|
||||||
|
};
|
||||||
|
|
||||||
|
QX_REGISTER_HPP_CAMP(PersonPrice, QObject, 0)
|
||||||
|
|
||||||
|
#endif // PERSONPRICE_H
|
@ -0,0 +1,78 @@
|
|||||||
|
#include "sale.h"
|
||||||
|
#include <define.h>
|
||||||
|
|
||||||
|
QX_REGISTER_CPP_CAMP(Sale)
|
||||||
|
|
||||||
|
namespace qx {
|
||||||
|
template<> void register_class(QxClass<Sale>& t) {
|
||||||
|
t.setName("Sale");
|
||||||
|
t.id(&Sale::m_id, "id");
|
||||||
|
t.data(&Sale::m_sale, "sale");
|
||||||
|
t.data(&Sale::m_fixed, "fixed");
|
||||||
|
t.data(&Sale::m_description, "description");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Sale::Sale(QObject *parent) : ComboItem(parent)
|
||||||
|
{
|
||||||
|
m_id = 0;
|
||||||
|
m_sale = 0;
|
||||||
|
m_fixed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
long Sale::id() const
|
||||||
|
{
|
||||||
|
return m_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sale::setId(long id)
|
||||||
|
{
|
||||||
|
m_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble Sale::sale() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sale::setSale(QDecDouble sale)
|
||||||
|
{
|
||||||
|
m_sale = FROM_DEC(sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sale::fixed() const
|
||||||
|
{
|
||||||
|
return m_fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sale::setFixed(bool fixed)
|
||||||
|
{
|
||||||
|
m_fixed = fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Sale::description() const
|
||||||
|
{
|
||||||
|
return m_description;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sale::setDescription(const QString &description)
|
||||||
|
{
|
||||||
|
m_description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Sale::eq(ComboItem *other)
|
||||||
|
{
|
||||||
|
Sale *sale = qobject_cast<Sale*>(other);
|
||||||
|
|
||||||
|
if (sale == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this->m_id == sale->m_id && this->m_sale == sale->m_sale && this->m_fixed == sale->m_fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Sale::toString()
|
||||||
|
{
|
||||||
|
return m_description;
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
#ifndef SALE_H
|
||||||
|
#define SALE_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QDecDouble.hh>
|
||||||
|
#include <combodata.h>
|
||||||
|
|
||||||
|
#include "../camp_global.h"
|
||||||
|
|
||||||
|
class Sale : public ComboItem
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
QX_REGISTER_FRIEND_CLASS(Sale)
|
||||||
|
Q_PROPERTY(QString description READ description WRITE setDescription)
|
||||||
|
Q_PROPERTY(QDecDouble sale READ sale WRITE setSale)
|
||||||
|
Q_PROPERTY(bool fixed READ fixed WRITE setFixed)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Sale(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
long id() const;
|
||||||
|
void setId(long id);
|
||||||
|
|
||||||
|
QDecDouble sale() const;
|
||||||
|
void setSale(QDecDouble sale);
|
||||||
|
|
||||||
|
bool fixed() const;
|
||||||
|
void setFixed(bool fixed);
|
||||||
|
|
||||||
|
QString description() const;
|
||||||
|
void setDescription(const QString &description);
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_id;
|
||||||
|
QString m_description;
|
||||||
|
int m_sale;
|
||||||
|
bool m_fixed;
|
||||||
|
|
||||||
|
// ComboItem interface
|
||||||
|
public:
|
||||||
|
bool eq(ComboItem *other) override;
|
||||||
|
QString toString() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
QX_REGISTER_HPP_CAMP(Sale, ComboItem, 0)
|
||||||
|
|
||||||
|
#endif // SALE_H
|
@ -0,0 +1,143 @@
|
|||||||
|
#include "serviceitem.h"
|
||||||
|
#include <define.h>
|
||||||
|
|
||||||
|
QX_REGISTER_CPP_CAMP(ServiceItem)
|
||||||
|
|
||||||
|
namespace qx {
|
||||||
|
template<> void register_class(QxClass<ServiceItem>& t) {
|
||||||
|
t.setName("ServiceItem");
|
||||||
|
t.id(&ServiceItem::m_id, "id");
|
||||||
|
t.data(&ServiceItem::m_name, "name");
|
||||||
|
t.data(&ServiceItem::m_code, "code");
|
||||||
|
t.data(&ServiceItem::m_price, "price");
|
||||||
|
t.data(&ServiceItem::m_salePossible, "salePossible");
|
||||||
|
t.data(&ServiceItem::m_type, "type");
|
||||||
|
t.data(&ServiceItem::m_sale, "sale");
|
||||||
|
t.data(&ServiceItem::m_description, "description");
|
||||||
|
t.data(&ServiceItem::m_totalPrice, "totalPrice");
|
||||||
|
t.data(&ServiceItem::m_fullPrice, "fullPrice");
|
||||||
|
|
||||||
|
t.relationManyToOne(&ServiceItem::m_campData, "campData");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ServiceItem::ServiceItem(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
m_id = 0;
|
||||||
|
m_salePossible = false;
|
||||||
|
m_sale = 0;
|
||||||
|
m_price = 0;
|
||||||
|
m_totalPrice = 0;
|
||||||
|
m_fullPrice = 0;
|
||||||
|
m_type = AccService::OTHER;
|
||||||
|
}
|
||||||
|
|
||||||
|
long ServiceItem::id() const
|
||||||
|
{
|
||||||
|
return m_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setId(long id)
|
||||||
|
{
|
||||||
|
m_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ServiceItem::name() const
|
||||||
|
{
|
||||||
|
return m_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setName(const QString &name)
|
||||||
|
{
|
||||||
|
m_name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ServiceItem::code() const
|
||||||
|
{
|
||||||
|
return m_code;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setCode(const QString &code)
|
||||||
|
{
|
||||||
|
m_code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble ServiceItem::price() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_price);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setPrice(QDecDouble price)
|
||||||
|
{
|
||||||
|
m_price = FROM_DEC(price);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ServiceItem::salePossible() const
|
||||||
|
{
|
||||||
|
return m_salePossible;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setSalePossible(bool salePossible)
|
||||||
|
{
|
||||||
|
m_salePossible = salePossible;
|
||||||
|
}
|
||||||
|
|
||||||
|
AccService::ServiceType ServiceItem::type() const
|
||||||
|
{
|
||||||
|
return m_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setType(const AccService::ServiceType &type)
|
||||||
|
{
|
||||||
|
m_type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWeakPointer<CampData> ServiceItem::campData() const
|
||||||
|
{
|
||||||
|
return m_campData;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setCampData(const QWeakPointer<CampData> &campData)
|
||||||
|
{
|
||||||
|
m_campData = campData;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ServiceItem::description() const
|
||||||
|
{
|
||||||
|
return m_description;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setDescription(const QString &description)
|
||||||
|
{
|
||||||
|
m_description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble ServiceItem::sale() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setSale(QDecDouble sale)
|
||||||
|
{
|
||||||
|
m_sale = FROM_DEC(sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble ServiceItem::totalPrice() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_totalPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setTotalPrice(QDecDouble totalPrice)
|
||||||
|
{
|
||||||
|
m_totalPrice = FROM_DEC(totalPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble ServiceItem::fullPrice() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_fullPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServiceItem::setFullPrice(QDecDouble fullPrice)
|
||||||
|
{
|
||||||
|
m_fullPrice = FROM_DEC(fullPrice);
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
#ifndef SREVICEITEM_H
|
||||||
|
#define SREVICEITEM_H
|
||||||
|
|
||||||
|
#include "camp-data.h"
|
||||||
|
#include <QObject>
|
||||||
|
#include <QSharedPointer>
|
||||||
|
#include <QWeakPointer>
|
||||||
|
#include <QDecDouble.hh>
|
||||||
|
#include <data/accservice.h>
|
||||||
|
|
||||||
|
#include "../camp_global.h"
|
||||||
|
|
||||||
|
class CampData;
|
||||||
|
|
||||||
|
class ServiceItem : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
QX_REGISTER_FRIEND_CLASS(ServiceItem)
|
||||||
|
Q_PROPERTY(QString name READ name WRITE setName)
|
||||||
|
Q_PROPERTY(QString code READ code WRITE setCode)
|
||||||
|
Q_PROPERTY(QString description READ description WRITE setDescription)
|
||||||
|
Q_PROPERTY(QDecDouble price READ price WRITE setPrice)
|
||||||
|
Q_PROPERTY(QDecDouble fullPrice READ fullPrice WRITE setFullPrice)
|
||||||
|
Q_PROPERTY(QDecDouble sale READ sale WRITE setSale)
|
||||||
|
Q_PROPERTY(QDecDouble totalPrice READ totalPrice WRITE setTotalPrice)
|
||||||
|
Q_PROPERTY(AccService::ServiceType type READ type WRITE setType)
|
||||||
|
Q_ENUMS(AccService::ServiceType)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ServiceItem(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
long id() const;
|
||||||
|
void setId(long id);
|
||||||
|
|
||||||
|
QString name() const;
|
||||||
|
void setName(const QString &name);
|
||||||
|
|
||||||
|
QString code() const;
|
||||||
|
void setCode(const QString &code);
|
||||||
|
|
||||||
|
QDecDouble price() const;
|
||||||
|
void setPrice(QDecDouble price);
|
||||||
|
|
||||||
|
bool salePossible() const;
|
||||||
|
void setSalePossible(bool salePossible);
|
||||||
|
|
||||||
|
AccService::ServiceType type() const;
|
||||||
|
void setType(const AccService::ServiceType &type);
|
||||||
|
|
||||||
|
QWeakPointer<CampData> campData() const;
|
||||||
|
void setCampData(const QWeakPointer<CampData> &campData);
|
||||||
|
|
||||||
|
QString description() const;
|
||||||
|
void setDescription(const QString &description);
|
||||||
|
|
||||||
|
QDecDouble sale() const;
|
||||||
|
void setSale(QDecDouble sale);
|
||||||
|
|
||||||
|
QDecDouble totalPrice() const;
|
||||||
|
void setTotalPrice(QDecDouble totalPrice);
|
||||||
|
|
||||||
|
QDecDouble fullPrice() const;
|
||||||
|
void setFullPrice(QDecDouble fullPrice);
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_id;
|
||||||
|
QString m_name;
|
||||||
|
QString m_code;
|
||||||
|
QString m_description;
|
||||||
|
int m_price;
|
||||||
|
int m_fullPrice;
|
||||||
|
int m_totalPrice;
|
||||||
|
int m_sale;
|
||||||
|
bool m_salePossible;
|
||||||
|
AccService::ServiceType m_type;
|
||||||
|
CampDataPtr m_campData;
|
||||||
|
};
|
||||||
|
|
||||||
|
QX_REGISTER_HPP_CAMP(ServiceItem, QObject, 0)
|
||||||
|
|
||||||
|
#endif // SREVICEITEM_H
|
@ -0,0 +1,52 @@
|
|||||||
|
#include "detailwidget.h"
|
||||||
|
#include "ui_detailwidget.h"
|
||||||
|
|
||||||
|
#include <QScroller>
|
||||||
|
|
||||||
|
#include "campservice.h"
|
||||||
|
|
||||||
|
DetailWidget::DetailWidget(QWidget *parent) :
|
||||||
|
QWidget(parent),
|
||||||
|
ui(new Ui::DetailWidget)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
m_peopleModel = new AutoTableModel<AddressItem>(this);
|
||||||
|
m_servicesModel = new AutoTableModel<ServiceItem>(this);
|
||||||
|
|
||||||
|
m_peopleModel->setTranslations(Context::instance().plugin("CAMP")->translations());
|
||||||
|
m_servicesModel->setTranslations(Context::instance().plugin("CAMP")->translations());
|
||||||
|
|
||||||
|
ui->tabPeople->setModel(m_peopleModel);
|
||||||
|
ui->tabServices->setModel(m_servicesModel);
|
||||||
|
|
||||||
|
ui->tabPeople->hideColumn(0);
|
||||||
|
ui->tabPeople->hideColumn(1);
|
||||||
|
ui->tabPeople->hideColumn(6);
|
||||||
|
ui->tabPeople->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
ui->tabServices->hideColumn(1);
|
||||||
|
ui->tabServices->hideColumn(3);
|
||||||
|
ui->tabServices->hideColumn(7);
|
||||||
|
ui->tabServices->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
|
ui->tabServices->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
QScroller::grabGesture(ui->tabServices, QScroller::LeftMouseButtonGesture);
|
||||||
|
QScroller::grabGesture(ui->tabPeople, QScroller::LeftMouseButtonGesture);
|
||||||
|
}
|
||||||
|
|
||||||
|
DetailWidget::~DetailWidget()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DetailWidget::setData(CampDataPtr &data)
|
||||||
|
{
|
||||||
|
if (data->people().isEmpty() || data->services().isEmpty()) {
|
||||||
|
CampService srv;
|
||||||
|
srv.load(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_peopleModel->setData(data->people());
|
||||||
|
m_servicesModel->setData(data->services());
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef DETAILWIDGET_H
|
||||||
|
#define DETAILWIDGET_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <autotablemodel.h>
|
||||||
|
#include "data/camp-data.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class DetailWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
class DetailWidget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit DetailWidget(QWidget *parent = nullptr);
|
||||||
|
~DetailWidget() override;
|
||||||
|
|
||||||
|
void setData(CampDataPtr &data);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::DetailWidget *ui;
|
||||||
|
AutoTableModel<AddressItem> *m_peopleModel;
|
||||||
|
AutoTableModel<ServiceItem> *m_servicesModel;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DETAILWIDGET_H
|
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>DetailWidget</class>
|
||||||
|
<widget class="QWidget" name="DetailWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>806</width>
|
||||||
|
<height>445</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>People</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tabPeople">
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::NoSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>Services</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tabServices">
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::NoSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,83 @@
|
|||||||
|
#include "campsettings.h"
|
||||||
|
#include <define.h>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
CampSettings::CampSettings(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
m_accFee = 0;
|
||||||
|
m_rounding = Enums::R_MATH;
|
||||||
|
m_decimalPlaces = 0;
|
||||||
|
m_vatType = Enums::NONE;
|
||||||
|
m_accFeeStartAge = 0;
|
||||||
|
m_accFeeEndAge = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDecDouble CampSettings::accFee() const
|
||||||
|
{
|
||||||
|
return TO_DEC(m_accFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettings::setAccFee(QDecDouble accFee)
|
||||||
|
{
|
||||||
|
m_accFee = FROM_DEC(accFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
Enums::Rounding CampSettings::rounding() const
|
||||||
|
{
|
||||||
|
return m_rounding;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettings::setRounding(const Enums::Rounding &rounding)
|
||||||
|
{
|
||||||
|
m_rounding = rounding;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CampSettings::decimalPlaces() const
|
||||||
|
{
|
||||||
|
return m_decimalPlaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettings::setDecimalPlaces(int decimalPlaces)
|
||||||
|
{
|
||||||
|
m_decimalPlaces = decimalPlaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CampSettings::accFeeStartAge() const
|
||||||
|
{
|
||||||
|
return m_accFeeStartAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettings::setAccFeeStartAge(int accFeeStartAge)
|
||||||
|
{
|
||||||
|
m_accFeeStartAge = accFeeStartAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CampSettings::accFeeEndAge() const
|
||||||
|
{
|
||||||
|
return m_accFeeEndAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettings::setAccFeeEndAge(int accFeeEndAge)
|
||||||
|
{
|
||||||
|
m_accFeeEndAge = accFeeEndAge;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CampSettings::accFeeText() const
|
||||||
|
{
|
||||||
|
return m_accFeeText;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettings::setAccFeeText(const QString &accFeeText)
|
||||||
|
{
|
||||||
|
m_accFeeText = accFeeText;
|
||||||
|
}
|
||||||
|
|
||||||
|
Enums::VatType CampSettings::vatType() const
|
||||||
|
{
|
||||||
|
return m_vatType;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettings::setVatType(const Enums::VatType &vatType)
|
||||||
|
{
|
||||||
|
m_vatType = vatType;
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
#ifndef CAMPSETTINGS_H
|
||||||
|
#define CAMPSETTINGS_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <enums.h>
|
||||||
|
#include <QDecDouble.hh>
|
||||||
|
#include <QSharedPointer>
|
||||||
|
|
||||||
|
class CampSettings : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(QDecDouble accFee READ accFee WRITE setAccFee)
|
||||||
|
Q_PROPERTY(int accFeeStartAge READ accFeeStartAge WRITE setAccFeeStartAge)
|
||||||
|
Q_PROPERTY(int accFeeEndAge READ accFeeEndAge WRITE setAccFeeEndAge)
|
||||||
|
Q_PROPERTY(Enums::Rounding rounding READ rounding WRITE setRounding)
|
||||||
|
Q_PROPERTY(Enums::VatType vatType READ vatType WRITE setVatType)
|
||||||
|
Q_PROPERTY(int decimalPlaces READ decimalPlaces WRITE setDecimalPlaces)
|
||||||
|
Q_PROPERTY(QString accFeeText READ accFeeText WRITE setAccFeeText)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CampSettings(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
QDecDouble accFee() const;
|
||||||
|
void setAccFee(QDecDouble accFee);
|
||||||
|
|
||||||
|
Enums::Rounding rounding() const;
|
||||||
|
void setRounding(const Enums::Rounding &rounding);
|
||||||
|
|
||||||
|
int decimalPlaces() const;
|
||||||
|
void setDecimalPlaces(int decimalPlaces);
|
||||||
|
|
||||||
|
int accFeeStartAge() const;
|
||||||
|
void setAccFeeStartAge(int accFeeStartAge);
|
||||||
|
|
||||||
|
int accFeeEndAge() const;
|
||||||
|
void setAccFeeEndAge(int accFeeEndAge);
|
||||||
|
|
||||||
|
QString accFeeText() const;
|
||||||
|
void setAccFeeText(const QString &accFeeText);
|
||||||
|
|
||||||
|
Enums::VatType vatType() const;
|
||||||
|
void setVatType(const Enums::VatType &vatType);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_accFee;
|
||||||
|
int m_accFeeStartAge;
|
||||||
|
int m_accFeeEndAge;
|
||||||
|
QString m_accFeeText;
|
||||||
|
Enums::Rounding m_rounding;
|
||||||
|
Enums::VatType m_vatType;
|
||||||
|
int m_decimalPlaces;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef QSharedPointer<CampSettings> CampSettingsPtr;
|
||||||
|
|
||||||
|
#endif // CAMPSETTINGS_H
|
@ -0,0 +1,181 @@
|
|||||||
|
#include "campsettingsform.h"
|
||||||
|
#include "ui_campsettingsform.h"
|
||||||
|
|
||||||
|
#include <settingsservice.h>
|
||||||
|
#include <QScroller>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QHeaderView>
|
||||||
|
|
||||||
|
CampSettingsForm::CampSettingsForm(QWidget *parent) :
|
||||||
|
FormBinder<CampSettings>(parent),
|
||||||
|
ui(new Ui::CampSettingsForm)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
m_personPriceModel = new AutoTableModel<PersonPrice>();
|
||||||
|
m_personPriceModel->setEditableCols(QList<int>() << 0 << 1 << 2 << 3);
|
||||||
|
m_saleModel = new AutoTableModel<Sale>();
|
||||||
|
m_saleModel->setEditableCols(QList<int>() << 0 << 1 << 2);
|
||||||
|
|
||||||
|
ui->tablePersonPrices->setModel(m_personPriceModel);
|
||||||
|
ui->tableSales->setModel(m_saleModel);
|
||||||
|
|
||||||
|
ui->tablePersonPrices->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
|
ui->tableSales->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
|
|
||||||
|
QScroller::grabGesture(ui->tablePersonPrices, QScroller::LeftMouseButtonGesture);
|
||||||
|
QScroller::grabGesture(ui->tableSales, QScroller::LeftMouseButtonGesture);
|
||||||
|
|
||||||
|
connect(ui->tablePersonPrices->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](){
|
||||||
|
ui->btnPriceDisable->setEnabled(ui->tablePersonPrices->currentIndex().isValid());
|
||||||
|
ui->btnPriceRemove->setEnabled(ui->tablePersonPrices->currentIndex().isValid());
|
||||||
|
ui->btnPriceDisable->setChecked(m_personPriceModel->itemFromIndex(ui->tablePersonPrices->currentIndex())->active());
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->tableSales->selectionModel(), &QItemSelectionModel::currentRowChanged, [this](){
|
||||||
|
ui->btnSaleRemove->setEnabled(ui->tableSales->currentIndex().isValid());
|
||||||
|
});
|
||||||
|
|
||||||
|
registerBinding(ui->accFee);
|
||||||
|
registerBinding(ui->accFeeStartAge);
|
||||||
|
registerBinding(ui->accFeeEndAge);
|
||||||
|
registerBinding(ui->decimalPlaces);
|
||||||
|
registerBinding(ui->accFeeText);
|
||||||
|
QList<ComboData> roundings ;
|
||||||
|
roundings << ComboData(Enums::R_NONE, tr("None"))
|
||||||
|
<< ComboData(Enums::R_UP, tr("Up"))
|
||||||
|
<< ComboData(Enums::R_DOWN, tr("Down"))
|
||||||
|
<< ComboData(Enums::R_MATH, tr("Mathematic"));
|
||||||
|
registerBinding(ui->rounding, roundings);
|
||||||
|
QList<ComboData> vatTypes;
|
||||||
|
vatTypes << ComboData(Enums::NONE, tr("None"))
|
||||||
|
<< ComboData(Enums::HIGH, tr("High"))
|
||||||
|
<< ComboData(Enums::FIRST_LOWER, tr("First lower"))
|
||||||
|
<< ComboData(Enums::SECOND_LOWER, tr("Second lower"));
|
||||||
|
registerBinding(ui->vatType, vatTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
CampSettingsForm::~CampSettingsForm()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CampSettingsForm::saveRecord()
|
||||||
|
{
|
||||||
|
bindToData();
|
||||||
|
SettingsService srv("CAMP");
|
||||||
|
srv.saveSettings(entity());
|
||||||
|
|
||||||
|
Service<PersonPrice> personSrv;
|
||||||
|
Service<Sale> saleSrv;
|
||||||
|
bool ret = true;
|
||||||
|
|
||||||
|
connect(&personSrv, &IService::dbErrorDelete, [&ret, this](QString){
|
||||||
|
QMessageBox::critical(this, tr("Cannot delete"), tr("Price already used"));
|
||||||
|
ret = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach (PersonPricePtr p, personSrv.all()) {
|
||||||
|
bool found = false;
|
||||||
|
foreach (PersonPricePtr price, m_personPriceModel->list()) {
|
||||||
|
if (price->id() == p->id())
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
personSrv.erase(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (PersonPricePtr p, m_personPriceModel->list()) {
|
||||||
|
bool found = false;
|
||||||
|
foreach (PersonPricePtr price, personSrv.all()) {
|
||||||
|
if (price->id() == p->id())
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
personSrv.save(p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
personSrv.update(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (SalePtr s, saleSrv.all()) {
|
||||||
|
saleSrv.erase(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (SalePtr s, m_saleModel->list()) {
|
||||||
|
saleSrv.save(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettingsForm::loadEntity()
|
||||||
|
{
|
||||||
|
SettingsService srv("CAMP");
|
||||||
|
CampSettingsPtr settings = srv.loadSettings<CampSettings>();
|
||||||
|
setEntity(settings);
|
||||||
|
|
||||||
|
Service<PersonPrice> personSrv;
|
||||||
|
Service<Sale> saleSrv;
|
||||||
|
|
||||||
|
m_personPriceModel->setData(personSrv.all());
|
||||||
|
m_saleModel->setData(saleSrv.all());
|
||||||
|
|
||||||
|
ui->btnPriceDisable->setEnabled(false);
|
||||||
|
ui->btnPriceRemove->setEnabled(false);
|
||||||
|
ui->btnSaleRemove->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettingsForm::on_btnPriceAdd_clicked()
|
||||||
|
{
|
||||||
|
PersonPricePtr price(new PersonPrice());
|
||||||
|
m_personPriceModel->addRow(price);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettingsForm::on_btnSaleAdd_clicked()
|
||||||
|
{
|
||||||
|
SalePtr sale(new Sale());
|
||||||
|
m_saleModel->addRow(sale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettingsForm::on_btnPriceRemove_clicked()
|
||||||
|
{
|
||||||
|
m_personPriceModel->removeRowAt(ui->tablePersonPrices->currentIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettingsForm::on_btnPriceDisable_clicked()
|
||||||
|
{
|
||||||
|
PersonPricePtr price = m_personPriceModel->itemFromIndex(ui->tablePersonPrices->currentIndex());
|
||||||
|
price->setActive(!price->active());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettingsForm::on_btnPriceFilter_clicked()
|
||||||
|
{
|
||||||
|
Service<PersonPrice> srv;
|
||||||
|
if (ui->btnPriceFilter->isChecked())
|
||||||
|
{
|
||||||
|
m_personPriceModel->setData(srv.all("active = 1"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_personPriceModel->setData(srv.all());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampSettingsForm::on_btnSaleRemove_clicked()
|
||||||
|
{
|
||||||
|
m_saleModel->removeRowAt(ui->tableSales->currentIndex());
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
#ifndef CAMPSETTINGSFORM_H
|
||||||
|
#define CAMPSETTINGSFORM_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QList>
|
||||||
|
|
||||||
|
#include "campsettings.h"
|
||||||
|
#include "../data/camp-data.h"
|
||||||
|
#include <formbinder.h>
|
||||||
|
#include <autotablemodel.h>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class CampSettingsForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CampSettingsForm : public FormBinder<CampSettings>
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CampSettingsForm(QWidget *parent = nullptr);
|
||||||
|
~CampSettingsForm() override;
|
||||||
|
|
||||||
|
// IForm interface
|
||||||
|
public slots:
|
||||||
|
bool saveRecord() override;
|
||||||
|
|
||||||
|
// IForm interface
|
||||||
|
public:
|
||||||
|
void loadEntity() override;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_btnPriceAdd_clicked();
|
||||||
|
|
||||||
|
void on_btnSaleAdd_clicked();
|
||||||
|
|
||||||
|
void on_btnPriceRemove_clicked();
|
||||||
|
|
||||||
|
void on_btnPriceDisable_clicked();
|
||||||
|
|
||||||
|
void on_btnPriceFilter_clicked();
|
||||||
|
|
||||||
|
void on_btnSaleRemove_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::CampSettingsForm *ui;
|
||||||
|
AutoTableModel<PersonPrice> *m_personPriceModel;
|
||||||
|
AutoTableModel<Sale> *m_saleModel;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CAMPSETTINGSFORM_H
|
@ -0,0 +1,343 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CampSettingsForm</class>
|
||||||
|
<widget class="QWidget" name="CampSettingsForm">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>995</width>
|
||||||
|
<height>641</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_3" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Person prices</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnPriceAdd">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Add</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/new_24x24.png</normaloff>:/icons/new_24x24.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnPriceRemove">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Remove</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/remove_24x24.png</normaloff>:/icons/remove_24x24.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnPriceDisable">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Deactivate</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/ok_24x24.png</normaloff>:/icons/ok_24x24.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnPriceFilter">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Filter active</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/filter_24x24.png</normaloff>:/icons/filter_24x24.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tablePersonPrices">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>550</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>Sales</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widget_2" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnSaleAdd">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Add</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/new_24x24.png</normaloff>:/icons/new_24x24.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnSaleRemove">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Remove</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../core/rc.qrc">
|
||||||
|
<normaloff>:/icons/remove_24x24.png</normaloff>:/icons/remove_24x24.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTableView" name="tableSales"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_3">
|
||||||
|
<property name="title">
|
||||||
|
<string>Other settings</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Accommodation fee</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Rounding</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QComboBox" name="rounding"/>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="0">
|
||||||
|
<widget class="QLabel" name="decimalPlaceslab">
|
||||||
|
<property name="text">
|
||||||
|
<string>Decimal places</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="decimalPlaces">
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>100000.000000000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Fee start age</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QSpinBox" name="accFeeStartAge">
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="accFee">
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<double>99999.990000000005239</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Fee end age</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QSpinBox" name="accFeeEndAge">
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>Fee description</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLineEdit" name="accFeeText"/>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="0">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>Vat type</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="1">
|
||||||
|
<widget class="QComboBox" name="vatType"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="../../core/rc.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue