Added sales to people. Print button on Camp wizard is now functional. Added item grids below Camp main grid.
This commit is contained in:
+5
-1
@@ -8,7 +8,7 @@
|
||||
"default" : "",
|
||||
"CZ" : ""
|
||||
},
|
||||
"schemaVersion" : 6,
|
||||
"schemaVersion" : 7,
|
||||
"sql" : [
|
||||
"CREATE TABLE \"CampData\" (
|
||||
\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -93,6 +93,10 @@ 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;
|
||||
"
|
||||
],
|
||||
"dependencies" : [ "ADDRESSBOOK", "SHOP", "SERVICES" ],
|
||||
|
||||
+6
-3
@@ -36,7 +36,8 @@ SOURCES += camp.cpp \
|
||||
campservice.cpp \
|
||||
addservicedialog.cpp \
|
||||
campshopitem.cpp \
|
||||
campseller.cpp
|
||||
campseller.cpp \
|
||||
detailwidget.cpp
|
||||
|
||||
HEADERS += camp.h\
|
||||
camp_global.h \
|
||||
@@ -54,7 +55,8 @@ HEADERS += camp.h\
|
||||
campservice.h \
|
||||
addservicedialog.h \
|
||||
campshopitem.h \
|
||||
campseller.h
|
||||
campseller.h \
|
||||
detailwidget.h
|
||||
|
||||
include(../config_plugin.pri)
|
||||
|
||||
@@ -104,4 +106,5 @@ FORMS += \
|
||||
campform.ui \
|
||||
settings/campsettingsform.ui \
|
||||
campwizard.ui \
|
||||
addservicedialog.ui
|
||||
addservicedialog.ui \
|
||||
detailwidget.ui
|
||||
|
||||
@@ -31,6 +31,9 @@ CampGrid::CampGrid(QWidget *parent) : GridForm<CampData>(parent)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
m_detail = new DetailWidget(this);
|
||||
mainLayout()->addWidget(m_detail);
|
||||
}
|
||||
|
||||
void CampGrid::handleNewRecord()
|
||||
@@ -101,6 +104,12 @@ void CampGrid::doDelete(CampDataPtr entity)
|
||||
|
||||
void CampGrid::addToVoucher(CampDataPtr data)
|
||||
{
|
||||
if (data->onVoucher())
|
||||
{
|
||||
QMessageBox::information(this, tr("Can not pay"), tr("This record is already paid"));
|
||||
return;
|
||||
}
|
||||
|
||||
CampShopItemPtr campItem(new CampShopItem);
|
||||
|
||||
campItem->setId(data->id());
|
||||
@@ -134,3 +143,11 @@ void CampGrid::addToVoucher(CampDataPtr data)
|
||||
shopSrv.eraseVoucher(voucher);
|
||||
});
|
||||
}
|
||||
|
||||
void CampGrid::currentIndexChanged(const QModelIndex ¤t)
|
||||
{
|
||||
if (current.isValid())
|
||||
{
|
||||
m_detail->setData(currentEntity());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "data/camp-data.h"
|
||||
#include "camp-odb.hxx"
|
||||
|
||||
#include "detailwidget.h"
|
||||
|
||||
class CampGrid : public GridForm<CampData>
|
||||
{
|
||||
public:
|
||||
@@ -21,7 +23,12 @@ protected:
|
||||
|
||||
private:
|
||||
void addToVoucher(CampDataPtr data);
|
||||
DetailWidget *m_detail;
|
||||
|
||||
|
||||
// IGridForm interface
|
||||
protected:
|
||||
void currentIndexChanged(const QModelIndex ¤t);
|
||||
};
|
||||
|
||||
#endif // CAMPGRID_H
|
||||
|
||||
+16
-1
@@ -212,6 +212,8 @@ void CampService::calcPeople(CampDataPtr data)
|
||||
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);
|
||||
@@ -249,6 +251,18 @@ void CampService::calcPeople(CampDataPtr data)
|
||||
continue;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -287,7 +301,8 @@ void CampService::calcPrice(CampDataPtr data)
|
||||
}
|
||||
|
||||
foreach (AddressItemPtr addr, data->people()) {
|
||||
totalPrice += addr->price();
|
||||
totalPrice += addr->totalPrice();
|
||||
sale += addr->sale();
|
||||
}
|
||||
|
||||
if (data->fixedSale())
|
||||
|
||||
+52
-2
@@ -6,6 +6,7 @@
|
||||
#include <core.h>
|
||||
#include <addressbookservice.h>
|
||||
#include <accservice.h>
|
||||
#include <reporting/reportviewer.h>
|
||||
|
||||
////////////////////////////////////
|
||||
/// \brief AddressHelper::AddressHelper
|
||||
@@ -105,6 +106,8 @@ CampWizard::CampWizard(QWidget *parent) :
|
||||
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);
|
||||
|
||||
@@ -166,6 +169,7 @@ CampWizard::CampWizard(QWidget *parent) :
|
||||
ui->tableItems->hideColumn(4);
|
||||
ui->tableItems->hideColumn(5);
|
||||
ui->tableItems->hideColumn(6);
|
||||
ui->tableItems->hideColumn(7);
|
||||
|
||||
ui->tableItems->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||
|
||||
@@ -187,12 +191,13 @@ CampWizard::CampWizard(QWidget *parent) :
|
||||
ui->tabPeople->setModel(m_peopleModel);
|
||||
ui->tabPeople->hideColumn(0);
|
||||
ui->tabPeople->hideColumn(1);
|
||||
ui->tabPeople->hideColumn(4);
|
||||
ui->tabPeople->hideColumn(6);
|
||||
ui->tabPeople->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||
|
||||
ui->tabServices->setModel(m_itemsModel);
|
||||
ui->tabServices->hideColumn(1);
|
||||
ui->tabServices->hideColumn(6);
|
||||
ui->tabServices->hideColumn(3);
|
||||
ui->tabServices->hideColumn(7);
|
||||
ui->tabServices->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
ui->tabServices->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);
|
||||
|
||||
@@ -432,3 +437,48 @@ void CampWizard::accept()
|
||||
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.updateCamp(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->setReport(report);
|
||||
viewer->openPreview();
|
||||
}
|
||||
|
||||
@@ -89,6 +89,8 @@ private slots:
|
||||
|
||||
void on_sale_currentIndexChanged(int index);
|
||||
|
||||
void on_btnPrint_clicked();
|
||||
|
||||
private:
|
||||
Ui::CampWizard *ui;
|
||||
CampDataPtr m_data;
|
||||
|
||||
+3
-3
@@ -843,7 +843,7 @@
|
||||
<widget class="QWidget" name="widget_7" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<widget class="QPushButton" name="btnPrint">
|
||||
<property name="text">
|
||||
<string>Print</string>
|
||||
</property>
|
||||
@@ -900,14 +900,14 @@
|
||||
<tabstop>tableItems</tabstop>
|
||||
<tabstop>tabPeople</tabstop>
|
||||
<tabstop>tabServices</tabstop>
|
||||
<tabstop>pushButton_2</tabstop>
|
||||
<tabstop>btnPrint</tabstop>
|
||||
<tabstop>checkSale</tabstop>
|
||||
<tabstop>sale</tabstop>
|
||||
<tabstop>tableServices</tabstop>
|
||||
</tabstops>
|
||||
<resources>
|
||||
<include location="camprc.qrc"/>
|
||||
<include location="../core/rc.qrc"/>
|
||||
<include location="camprc.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
@@ -6,6 +6,8 @@ AddressItem::AddressItem(QObject *parent) : QObject(parent)
|
||||
m_id = 0;
|
||||
m_price = 0;
|
||||
m_owner = false;
|
||||
m_sale = 0;
|
||||
m_totalPrice = 0;
|
||||
}
|
||||
|
||||
int AddressItem::id() const
|
||||
@@ -97,3 +99,23 @@ 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);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@ class AddressItem : public QObject
|
||||
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:
|
||||
@@ -52,6 +54,12 @@ public:
|
||||
bool owner() const;
|
||||
void setOwner(bool owner);
|
||||
|
||||
QDecDouble totalPrice() const;
|
||||
void setTotalPrice(QDecDouble totalPrice);
|
||||
|
||||
QDecDouble sale() const;
|
||||
void setSale(QDecDouble sale);
|
||||
|
||||
private:
|
||||
friend class odb::access;
|
||||
#pragma db id auto
|
||||
@@ -61,6 +69,8 @@ private:
|
||||
QString m_address;
|
||||
AddressbookDataPtr m_adbItem;
|
||||
int m_price;
|
||||
int m_totalPrice;
|
||||
int m_sale;
|
||||
#pragma db not_null
|
||||
QWeakPointer<CampData> m_campData;
|
||||
PersonPricePtr m_personPrice;
|
||||
|
||||
@@ -20,6 +20,7 @@ class ServiceItem : public QObject
|
||||
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)
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#include "detailwidget.h"
|
||||
#include "ui_detailwidget.h"
|
||||
|
||||
#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);
|
||||
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);
|
||||
}
|
||||
|
||||
DetailWidget::~DetailWidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void DetailWidget::setData(const CampDataPtr &data)
|
||||
{
|
||||
CampService srv;
|
||||
srv.loadItems(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 = 0);
|
||||
~DetailWidget();
|
||||
|
||||
void setData(const 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>
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user