Compare commits
158 Commits
3fc795f962
...
feature/ap
| Author | SHA256 | Date | |
|---|---|---|---|
|
|
76fdc880c7 | ||
|
|
45f19d80d0 | ||
|
|
0ae153617b | ||
|
|
2832becccf | ||
|
|
cf5822c950 | ||
|
|
f0382a960e | ||
|
|
a720dfebeb | ||
|
|
ddf35a55a8 | ||
|
|
1e9ba40b6b | ||
|
|
fc9b1c0801 | ||
|
|
3083406b1b | ||
|
|
f172468ba6 | ||
| eda50e036a | |||
|
|
7c66dcf890 | ||
| 8fec981409 | |||
| 16ba24b13d | |||
|
|
309f1f58d7 | ||
|
|
445c183e71 | ||
| 7b8c3630f8 | |||
| d125b56564 | |||
|
|
7f5675c06d | ||
|
|
30493dbdbf | ||
|
|
41ecdb658c | ||
| 6e8c2f340c | |||
| 76c4be7a7a | |||
| 8236bd32e6 | |||
|
|
480dd673c4 | ||
| 3520c65879 | |||
| a821956a67 | |||
| 46cba58ebe | |||
| a7a1cd4913 | |||
| 34bd7409df | |||
| 6df02d9ff2 | |||
| 9499eace9b | |||
|
|
721232a975 | ||
| 8f6efac11e | |||
|
|
83f64f9af8 | ||
| d6034a5299 | |||
|
|
dc1ea604f7 | ||
| 15b14387df | |||
| fadd3d1b9e | |||
|
|
fb06cea060 | ||
| 648753823f | |||
| 495252c408 | |||
|
|
5cf5676d9b | ||
|
|
9a6d59a19b | ||
| 5b7e364c20 | |||
| ce26d6d223 | |||
|
|
13416edd25 | ||
| c49e4ebacd | |||
| 7b1f5cd3cc | |||
| 325e396774 | |||
| f20cebab14 | |||
| bd7cba5430 | |||
| 607cccfb07 | |||
| 8b82b49982 | |||
|
|
9ff0a0fbce | ||
|
|
ef77e4c17d | ||
| 7b0ec6ed99 | |||
|
|
7099102e13 | ||
|
|
343e15c873 | ||
|
|
2704177fdb | ||
| 773d398f8c | |||
| 714a12e2d3 | |||
| 898d808b1f | |||
| e3053be72e | |||
| ac6a83c352 | |||
|
|
469b8d0a21 | ||
| 0834ee8905 | |||
| c8114d9e54 | |||
| 002575baa1 | |||
| 66fce857ba | |||
| 767200096f | |||
| 55a35d0931 | |||
| 2a01433cf0 | |||
| 66c1b168c8 | |||
| f61f1e5c8f | |||
| 4c07689a4a | |||
| 5bf1d8de08 | |||
| 09a0daad66 | |||
| 5b031e9d8d | |||
| 155794e489 | |||
| 712df39383 | |||
| f5b32d6621 | |||
| c132b6830a | |||
| a6bed81aaf | |||
| 78ede0fad8 | |||
| 26759be1cb | |||
| 35c977c89e | |||
| bd232a2a28 | |||
| b414a050be | |||
| 821da47f98 | |||
| fb81b764f1 | |||
| e81407b43d | |||
| 73542e8089 | |||
| 89e96422cc | |||
| eacd3dacc7 | |||
| e0ec99098e | |||
| 6bf6ff3111 | |||
| 4c62834369 | |||
| e528729181 | |||
| d7928d25fc | |||
| bd2316dbfb | |||
| 82b3c2d403 | |||
| 8ee303227e | |||
| 2a09fed57a | |||
| e7d0b7cdb5 | |||
| f0cde5ec20 | |||
| 3738bf1c6e | |||
| dec4ca59f0 | |||
| 0f253c518d | |||
| 7228d5fae9 | |||
| e2410d0852 | |||
| a68ae311bf | |||
| cc25f85771 | |||
| fdaae34678 | |||
| b468c3d078 | |||
| 5ff4749247 | |||
| 80bd2c9be2 | |||
| bfd1d0974d | |||
| b162117a80 | |||
| 3eeb6ab910 | |||
| aca38067d0 | |||
| 1f5e9c01e8 | |||
| 42c7a9c33a | |||
| 0813c3c8c0 | |||
| bcc616d3b5 | |||
| f710db48de | |||
| a709aa6da1 | |||
| 83d44cf3c7 | |||
| b5c3b56fb3 | |||
| 931a99c06b | |||
| 337f383701 | |||
| af04b3baa1 | |||
| 0b55556fb4 | |||
| 0923365cbd | |||
| 74b00c0b94 | |||
| 716915f333 | |||
| 538399b59a | |||
| 8e9fe46b96 | |||
| ba08715c9a | |||
| 104aba8347 | |||
| 338733a0fb | |||
| d512d1d8b0 | |||
| 00e535bb13 | |||
| 103b172a60 | |||
| c2edfab9a2 | |||
| 180f8e5ae9 | |||
| dab3df3b14 | |||
| 75dc64b4f3 | |||
| afad232068 | |||
| d870736dab | |||
| fc197246a6 | |||
| 705bffc8d3 | |||
| e94a9f9900 | |||
| f035f60910 | |||
| f2969aeafe | |||
| 8f41c240ac |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -228,3 +228,4 @@ cython_debug/
|
|||||||
|
|
||||||
|
|
||||||
rc_*.py
|
rc_*.py
|
||||||
|
.DS_STORE
|
||||||
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
17
.idea/QtSettings.xml
generated
Normal file
17
.idea/QtSettings.xml
generated
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="QtSettings">
|
||||||
|
<option name="mySettingsPerProfile">
|
||||||
|
<map>
|
||||||
|
<entry key="">
|
||||||
|
<value>
|
||||||
|
<PerProfileState>
|
||||||
|
<option name="myCustomQmlPath" value="/opt/homebrew/share/qt/qml" />
|
||||||
|
<option name="myCustomQtBinPath" value="/opt/homebrew/bin" />
|
||||||
|
</PerProfileState>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
12
.idea/dataSources.xml
generated
Normal file
12
.idea/dataSources.xml
generated
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="pyqcrm@bearybot.selfhost.co" uuid="ed28331b-481b-40e7-9295-d9cdae9fd4f2">
|
||||||
|
<driver-ref>mariadb</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:mariadb://bearybot.selfhost.co:8080/pyqcrm</jdbc-url>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
16
.idea/discord.xml
generated
Normal file
16
.idea/discord.xml
generated
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="PROJECT_FILES" />
|
||||||
|
<option name="nameOverrideEnabled" value="true" />
|
||||||
|
<option name="nameOverrideText" value="the qml thing (╯°□°)╯︵ ┻━┻" />
|
||||||
|
<option name="description" value="" />
|
||||||
|
<option name="applicationTheme" value="default" />
|
||||||
|
<option name="iconsTheme" value="default" />
|
||||||
|
<option name="button1Title" value="" />
|
||||||
|
<option name="button1Url" value="" />
|
||||||
|
<option name="button2Title" value="" />
|
||||||
|
<option name="button2Url" value="" />
|
||||||
|
<option name="customApplicationId" value="" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
7
.idea/misc.xml
generated
Normal file
7
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="Python 3.12 (pyqcrm)" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (pyqcrm)" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/pyqcrm.iml" filepath="$PROJECT_DIR$/.idea/pyqcrm.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
10
.idea/pyqcrm.iml
generated
Normal file
10
.idea/pyqcrm.iml
generated
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.12 (pyqcrm)" jdkType="Python SDK" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
22
.idea/qmlSettings.xml
generated
Normal file
22
.idea/qmlSettings.xml
generated
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="QmlSettings">
|
||||||
|
<option name="mySettingsPerProfile">
|
||||||
|
<map>
|
||||||
|
<entry key="">
|
||||||
|
<value>
|
||||||
|
<PerProfileState>
|
||||||
|
<option name="myExtraQmlPaths">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/TeroStyle" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="myLSPEnabled" value="true" />
|
||||||
|
<option name="myQmlFormatEnabled" value="true" />
|
||||||
|
</PerProfileState>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
17
.idea/runConfigurations/Compile_pyqcrm_qrc.xml
generated
Normal file
17
.idea/runConfigurations/Compile_pyqcrm_qrc.xml
generated
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Compile pyqcrm.qrc" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value=".venv/bin/pyside6-rcc -o rc_pyqcrm.py pyqcrm.qrc" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value=".venv/bin/pyside6-rcc" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="-o rc_qml.py qml.qrc" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/bin/zsh" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="false" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
17
.idea/runConfigurations/Compile_qml_qrc.xml
generated
Normal file
17
.idea/runConfigurations/Compile_qml_qrc.xml
generated
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Compile qml.qrc" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value=".venv/bin/pyside6-rcc -o rc_qml.py qml.qrc" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value=".venv/bin/pyside6-rcc" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="-o rc_qml.py qml.qrc" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/bin/zsh" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="false" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="false" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
31
.idea/runConfigurations/main.xml
generated
Normal file
31
.idea/runConfigurations/main.xml
generated
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="main" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
|
||||||
|
<module name="pyqcrm" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
<env name="QT_LOGGING_RULES" value="*.debug=true; qt.*.debug=false" />
|
||||||
|
<env name="QT_LOGGING_TO_CONSOLE" value="1" />
|
||||||
|
<env name="QT_QML_DEBUG" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="SDK_NAME" value="Python 3.12 (pyqcrm)" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="IS_MODULE_SDK" value="false" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/main.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Compile qml.qrc" run_configuration_type="ShConfigurationType" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Compile pyqcrm.qrc" run_configuration_type="ShConfigurationType" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
6
.idea/sqldialects.xml
generated
Normal file
6
.idea/sqldialects.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="SqlDialectMappings">
|
||||||
|
<file url="file://$PROJECT_DIR$/doc/db_schemer_v1.1-pyqcrm-202503171158_clean.sql" dialect="MariaDB" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
BIN
Dienstleistungen.docx
Normal file
BIN
Dienstleistungen.docx
Normal file
Binary file not shown.
@@ -1,187 +1,191 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
//Oschkarischtverhaftetwegensexy
|
|
||||||
//Oschkarischtverhaftetwegennichtganzsosexy
|
Frame
|
||||||
GridLayout
|
|
||||||
{
|
{
|
||||||
id: addContactLayout
|
id: addContactFrame
|
||||||
Layout.fillWidth: true
|
property alias contactGrid: addContactLayout
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignTop
|
||||||
columns: 2
|
Layout.fillWidth: true
|
||||||
rowSpacing: 9
|
GridLayout
|
||||||
visible: false
|
{
|
||||||
property alias fname: firstname
|
id: addContactLayout
|
||||||
property alias lname: lastname
|
anchors.fill: parent
|
||||||
|
// Layout.fillWidth: true
|
||||||
|
// Layout.fillHeight: true
|
||||||
|
// Layout.alignment: Qt.AlignTop
|
||||||
|
columns: 2
|
||||||
|
rowSpacing: 9
|
||||||
|
property alias fname: firstname
|
||||||
|
property alias lname: lastname
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
|
||||||
text: qsTr("Anrede")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
}
|
|
||||||
ComboBox
|
|
||||||
{
|
|
||||||
property string name: "title"
|
|
||||||
id: title
|
|
||||||
Layout.fillWidth: true
|
|
||||||
editable: false
|
|
||||||
model: ["Herr", "Frau"]
|
|
||||||
}
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Vorname")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
}
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property string name: "firstname"
|
|
||||||
id: firstname
|
|
||||||
Layout.fillWidth: true
|
|
||||||
onTextChanged: checkFields()
|
|
||||||
}
|
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Nachname")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
}
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property string name: "lastname"
|
|
||||||
id: lastname
|
|
||||||
Layout.fillWidth: true
|
|
||||||
onTextChanged: checkFields()
|
|
||||||
}
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Position")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
}
|
|
||||||
ComboBox
|
|
||||||
{
|
|
||||||
property string name: "jobdescription"
|
|
||||||
id: jobdescription
|
|
||||||
Layout.fillWidth: true
|
|
||||||
editable: true
|
|
||||||
}
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("E-Mail")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
}
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property string name: "email"
|
|
||||||
id: emailcontact
|
|
||||||
Layout.fillWidth: true
|
|
||||||
placeholderText: qsTr("beispiel@domain.de")
|
|
||||||
validator: RegularExpressionValidator
|
|
||||||
{
|
{
|
||||||
regularExpression: /([\+!#$%&‘\*\–\/\=?\^_`\.{|}\~0-9A-Za-z]{1,185})@([0-9A-Za-z\.]{1,64})\.([a-zA-z]{2,5})/
|
text: qsTr("Anrede")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
}
|
ComboBox
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Telefon")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
}
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property string name: "telephonecontact"
|
|
||||||
id: telephonecontact
|
|
||||||
Layout.fillWidth: true
|
|
||||||
validator: RegularExpressionValidator
|
|
||||||
{
|
{
|
||||||
regularExpression: /([+0-9]{1})([0-9]{1,17})/
|
property string name: "title"
|
||||||
|
id: title
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: ["Herr", "Frau"]
|
||||||
}
|
}
|
||||||
}
|
Label
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Handy")
|
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
|
||||||
}
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property string name: "cellphone"
|
|
||||||
id: cellphone
|
|
||||||
Layout.fillWidth: true
|
|
||||||
validator: RegularExpressionValidator
|
|
||||||
{
|
{
|
||||||
regularExpression: /([+0-9]{1})([0-9]{1,17})/
|
text: qsTr("Vorname")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
}
|
TextField
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Geburtsdatum")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property string name: "birthday"
|
|
||||||
id: birthday
|
|
||||||
Layout.fillWidth: true
|
|
||||||
placeholderText: qsTr("TT.MM.JJJJ")
|
|
||||||
validator: RegularExpressionValidator
|
|
||||||
|
|
||||||
{
|
{
|
||||||
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
property string name: "firstname"
|
||||||
|
id: firstname
|
||||||
|
Layout.fillWidth: true
|
||||||
|
onTextChanged: checkFields()
|
||||||
}
|
}
|
||||||
Keys.onPressed: (event)=>
|
|
||||||
|
Label
|
||||||
{
|
{
|
||||||
if (event.key !== Qt.Key_Backspace)
|
text: qsTr("Nachname")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "lastname"
|
||||||
|
id: lastname
|
||||||
|
Layout.fillWidth: true
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Position")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "jobdescription"
|
||||||
|
id: jobdescription
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("E-Mail")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "email"
|
||||||
|
id: emailcontact
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderText: qsTr("beispiel@domain.de")
|
||||||
|
validator: RegularExpressionValidator
|
||||||
{
|
{
|
||||||
var len = birthday.length
|
regularExpression: /([\+!#$%&‘\*\–\/\=?\^_`\.{|}\~\-\_0-9A-Za-z]{1,185})@([0-9A-Za-z\.\-\_]{1,64})\.([a-zA-z]{2,5})/
|
||||||
var bd = birthday.text
|
|
||||||
if (len === 2 || len === 5) birthday.text = bd + "."
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Telefon")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "telephonecontact"
|
||||||
|
id: telephonecontact
|
||||||
|
Layout.fillWidth: true
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /([+0-9]{1})([0-9]{1,17})/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Priorität")
|
text: qsTr("Mobil")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
}
|
}
|
||||||
ComboBox
|
TextField
|
||||||
{
|
{
|
||||||
property string name: "rank"
|
property string name: "cellphone"
|
||||||
id: rank
|
id: cellphone
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
editable: false
|
validator: RegularExpressionValidator
|
||||||
model: ["Nein", "Ja"]
|
{
|
||||||
}
|
regularExpression: /([+0-9]{1})([0-9]{1,17})/
|
||||||
Label
|
}
|
||||||
{
|
}
|
||||||
text: qsTr("Rechnung")
|
Label
|
||||||
Layout.alignment: Qt.AlignRight
|
{
|
||||||
}
|
text: qsTr("Geburtsdatum")
|
||||||
ComboBox
|
Layout.alignment: Qt.AlignRight
|
||||||
{
|
}
|
||||||
property string name: "invoice"
|
|
||||||
id: invoice
|
TextField
|
||||||
Layout.fillWidth: true
|
{
|
||||||
editable: false
|
property string name: "birthday"
|
||||||
objectName: "combo"
|
id: birthday
|
||||||
model: ["Nein", "Ja"]
|
Layout.fillWidth: true
|
||||||
}
|
placeholderText: qsTr("TT.MM.JJJJ")
|
||||||
Label
|
validator: RegularExpressionValidator
|
||||||
{
|
|
||||||
text: qsTr("Mahnung")
|
{
|
||||||
Layout.alignment: Qt.AlignRight
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
}
|
}
|
||||||
ComboBox
|
Keys.onPressed: (event)=>
|
||||||
{
|
{
|
||||||
property string name: "due"
|
if (event.key !== Qt.Key_Backspace)
|
||||||
id: due
|
{
|
||||||
Layout.fillWidth: true
|
var len = birthday.length
|
||||||
editable: false
|
var bd = birthday.text
|
||||||
model: ["Nein", "Ja"]
|
if (len === 2 || len === 5) birthday.text = bd + "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Priorität")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "rank"
|
||||||
|
id: rank
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: ["Nein", "Ja"]
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Rechnung")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "invoice"
|
||||||
|
id: invoice
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
objectName: "combo"
|
||||||
|
model: ["Nein", "Ja"]
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Mahnung")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "due"
|
||||||
|
id: due
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: ["Nein", "Ja"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkContactField()
|
function checkContactField()
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Controls.Fusion
|
|
||||||
import QtQuick.Dialogs
|
import QtQuick.Dialogs
|
||||||
import "../js/qmldict.js" as JsLib
|
import "../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
@@ -26,7 +25,6 @@ ColumnLayout
|
|||||||
checked: false
|
checked: false
|
||||||
onCheckStateChanged:
|
onCheckStateChanged:
|
||||||
{
|
{
|
||||||
addContactLayout.visible = checked
|
|
||||||
checkFields()
|
checkFields()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,15 +35,21 @@ ColumnLayout
|
|||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
spacing: 45
|
spacing: 45
|
||||||
|
Frame
|
||||||
CustomerView
|
|
||||||
{
|
{
|
||||||
id: customerView
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillWidth: true
|
||||||
|
CustomerView
|
||||||
|
{
|
||||||
|
id: customerView
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AddContact
|
AddContact
|
||||||
{
|
{
|
||||||
id: addContactLayout
|
id: addContactFrame
|
||||||
|
visible: checkAddContact.checked
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RowLayout
|
RowLayout
|
||||||
@@ -55,7 +59,7 @@ ColumnLayout
|
|||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
text: qsTr("Abbrechen")
|
text: qsTr("Abbrechen")
|
||||||
onClicked: appLoader.source = "CustomerTable.qml"
|
onClicked: contentStack.pop()
|
||||||
}
|
}
|
||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
@@ -66,14 +70,14 @@ ColumnLayout
|
|||||||
{
|
{
|
||||||
if (!checkAddContact.checked)
|
if (!checkAddContact.checked)
|
||||||
{
|
{
|
||||||
new_business = JsLib.addBusiness(customerView)
|
new_business = JsLib.parseForm(customerView)
|
||||||
business_model.addBusiness(new_business, 0)
|
business_model.addBusiness(new_business, 0)
|
||||||
appLoader.source = "CustomerTable.qml"
|
contentStack.pop()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
new_business = JsLib.addBusiness(customerView)
|
new_business = JsLib.parseForm(customerView)
|
||||||
var new_contact = JsLib.addBusiness(addContactLayout)
|
var new_contact = JsLib.parseForm(addContactFrame.contactGrid)
|
||||||
contact_model.addContact(new_contact)
|
contact_model.addContact(new_contact)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -95,7 +99,7 @@ ColumnLayout
|
|||||||
{
|
{
|
||||||
var con_id = arguments[0]
|
var con_id = arguments[0]
|
||||||
business_model.addBusiness(new_business, con_id)
|
business_model.addBusiness(new_business, con_id)
|
||||||
appLoader.source = "CustomerTable.qml"
|
contentStack.pop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +107,7 @@ ColumnLayout
|
|||||||
{
|
{
|
||||||
if(checkAddContact.checked)
|
if(checkAddContact.checked)
|
||||||
{
|
{
|
||||||
if(!customerView.checkBusinessField() || !addContactLayout.checkContactField())
|
if(!customerView.checkBusinessField() || !addContactFrame.checkContactField())
|
||||||
saveBtn.enabled = false
|
saveBtn.enabled = false
|
||||||
else
|
else
|
||||||
saveBtn.enabled = true
|
saveBtn.enabled = true
|
||||||
|
|||||||
230
Gui/AddNewObject.qml
Normal file
230
Gui/AddNewObject.qml
Normal file
@@ -0,0 +1,230 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
id: newObject
|
||||||
|
|
||||||
|
columns: 4
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
rowSpacing: 9
|
||||||
|
|
||||||
|
|
||||||
|
//// New grid row
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Straße*")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "street"
|
||||||
|
id: street
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Nr.*")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "houseno"
|
||||||
|
id: houseno
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
|
||||||
|
// New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("PLZ")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "postcode"
|
||||||
|
id: postcode
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
onCurrentTextChanged: checkFields()
|
||||||
|
onEditTextChanged: checkFields()
|
||||||
|
onActivated: currentValue
|
||||||
|
model: address_model
|
||||||
|
textRole: "display"
|
||||||
|
popup.height: 300
|
||||||
|
currentIndex: -1
|
||||||
|
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /([0-9]{1,5})/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ort")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "city"
|
||||||
|
id: city
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
onEditTextChanged: checkFields()
|
||||||
|
onCurrentTextChanged: checkFields()
|
||||||
|
model: address_model
|
||||||
|
textRole: "city"
|
||||||
|
popup.height: 300
|
||||||
|
currentIndex: -1
|
||||||
|
}
|
||||||
|
|
||||||
|
// New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Parteien")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
SpinBox
|
||||||
|
{
|
||||||
|
property string name: "units"
|
||||||
|
id: partitions
|
||||||
|
Layout.fillWidth: true
|
||||||
|
from: 1
|
||||||
|
to: 100
|
||||||
|
value: 1
|
||||||
|
editable: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Stockwerke")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
SpinBox
|
||||||
|
{
|
||||||
|
property string name: "floors"
|
||||||
|
id: floors
|
||||||
|
Layout.fillWidth: true
|
||||||
|
from: 1
|
||||||
|
to: 100
|
||||||
|
value: 1
|
||||||
|
editable: true
|
||||||
|
}
|
||||||
|
|
||||||
|
// New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Zwischenetage")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "mezzanin"
|
||||||
|
id: mezzanin
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: [qsTr("Ja"), qsTr("Nein")]
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Aufzug")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "lift"
|
||||||
|
id: lift
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: [qsTr("Ja"), qsTr("Nein")]
|
||||||
|
}
|
||||||
|
|
||||||
|
//New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Objekt-Nr.")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "objectno"
|
||||||
|
id: objectno
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
placeholderText: qsTr("0 oder leer um eine Nummer automatisch zu generieren")
|
||||||
|
placeholderTextColor: "pink"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Besonderheiten")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "remarks"
|
||||||
|
id: remarks
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
//// New grid row
|
||||||
|
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Reinigungsmittel wo?*")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "cleaningproducts"
|
||||||
|
id: cleaningproducts
|
||||||
|
Layout.fillWidth: true
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkObjectField()
|
||||||
|
{
|
||||||
|
|
||||||
|
return street.text.trim() && houseno.text.trim() &&
|
||||||
|
|
||||||
|
(postcode.editText.trim() || postcode.currentText.trim()) &&
|
||||||
|
(city.editText.trim() || city.currentText.trim()) &&
|
||||||
|
cleaningproducts.text.trim()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
213
Gui/AddNewOffer.qml
Normal file
213
Gui/AddNewOffer.qml
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
id: newObject
|
||||||
|
|
||||||
|
columns: 4
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
rowSpacing: 9
|
||||||
|
|
||||||
|
//New Grid
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Objekt:")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
font: Typography.h2
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
}
|
||||||
|
|
||||||
|
//New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Objekt-Nr.")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "objectno"
|
||||||
|
id: objectno
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Objekt hinzufügen")
|
||||||
|
icon.source: "qrc:/images/PlusCircle.svg"
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// New grid row
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Straße")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "street"
|
||||||
|
id: street
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
// onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Nr.*")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "houseno"
|
||||||
|
id: houseno
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
// onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
|
||||||
|
// New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("PLZ")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "postcode"
|
||||||
|
id: postcode
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
// onCurrentTextChanged: checkFields()
|
||||||
|
// onEditTextChanged: checkFields()
|
||||||
|
onActivated: currentValue
|
||||||
|
model: address_model
|
||||||
|
textRole: "display"
|
||||||
|
popup.height: 300
|
||||||
|
currentIndex: -1
|
||||||
|
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /([0-9]{1,5})/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ort")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "city"
|
||||||
|
id: city
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
// onEditTextChanged: checkFields()
|
||||||
|
// onCurrentTextChanged: checkFields()
|
||||||
|
model: address_model
|
||||||
|
textRole: "city"
|
||||||
|
popup.height: 300
|
||||||
|
currentIndex: -1
|
||||||
|
}
|
||||||
|
|
||||||
|
//New Grid
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Kunde:")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
font: Typography.h2
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
}
|
||||||
|
|
||||||
|
//New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Kunden-Nr.")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "customerno"
|
||||||
|
id: customerno
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Kunde hinzufügen")
|
||||||
|
icon.source: "qrc:/images/PlusCircle.svg"
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// New grid row
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Kunden-Name")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
|
||||||
|
id: customerName
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
// function checkObjectField()
|
||||||
|
// {
|
||||||
|
|
||||||
|
// return street.text.trim() && houseno.text.trim() &&
|
||||||
|
|
||||||
|
// (postcode.editText.trim() || postcode.currentText.trim()) &&
|
||||||
|
// (city.editText.trim() || city.currentText.trim()) &&
|
||||||
|
// cleaningproducts.text.trim()
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Controls.Fusion
|
|
||||||
import QtQuick.Dialogs
|
import QtQuick.Dialogs
|
||||||
import "../js/qmldict.js" as JsLib
|
import "../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout
|
||||||
{
|
{
|
||||||
property var new_object: null
|
property var new_object: null
|
||||||
|
//property alias checkAddContact: checkAddContact
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
spacing: 15
|
spacing: 15
|
||||||
@@ -20,32 +20,38 @@ ColumnLayout
|
|||||||
}
|
}
|
||||||
CheckBox
|
CheckBox
|
||||||
{
|
{
|
||||||
id: checkAddObject
|
id: checkAddObjectContact
|
||||||
text: qsTr("Mitarbeiter/Ansprechpartner hinzufügen")
|
text: qsTr("Ansprechpartner hinzufügen")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
checked: false
|
checked: false
|
||||||
onCheckStateChanged:
|
onCheckStateChanged:
|
||||||
{
|
{
|
||||||
addObjectLayout.visible = checked
|
checkFields()
|
||||||
//checkFields()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
id: addobject
|
id: addObject
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
spacing: 45
|
spacing: 45
|
||||||
|
|
||||||
ObjectView
|
Frame
|
||||||
{
|
{
|
||||||
id: objectView
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillWidth: true
|
||||||
|
AddNewObject
|
||||||
|
{
|
||||||
|
id: newObject
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectAddOns
|
ObjectAddOns
|
||||||
{
|
{
|
||||||
id: addObjectLayout
|
id: addObjectLayout
|
||||||
|
visible: checkAddObjectContact.checked
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RowLayout
|
RowLayout
|
||||||
@@ -55,27 +61,20 @@ ColumnLayout
|
|||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
text: qsTr("Abbrechen")
|
text: qsTr("Abbrechen")
|
||||||
onClicked: appLoader.source = "ObjectTable.qml"
|
onClicked: contentStack.pop()
|
||||||
}
|
}
|
||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
|
property var new_object: null
|
||||||
id: saveBtn
|
id: saveBtn
|
||||||
text: qsTr("Speichern")
|
text: qsTr("Speichern")
|
||||||
enabled: false
|
enabled: false
|
||||||
onClicked:
|
onClicked:
|
||||||
{
|
{
|
||||||
if (!checkAddObject.checked)
|
new_object = JsLib.parseForm(newObject)
|
||||||
{
|
new_object['lift'] = new_object['lift'] === 'Ja' ? 1 : 0
|
||||||
new_object = JsLib.addObject(objectView)
|
new_object['mezzanin'] = new_object['mezzanin'] === 'Ja' ? 1 : 0
|
||||||
object_model.addObject(new_object, 0)
|
object_model.addObject(new_object)
|
||||||
appLoader.source = "ObjectTable.qml"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
new_object = JsLib.addObject(objectView)
|
|
||||||
var new_objecto = JsLib.addObject(addObjectLayout)
|
|
||||||
objecto_model.addObject(new_objecto)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,32 +84,67 @@ ColumnLayout
|
|||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
//object_model.objectAdded.connect(onObjectAdded)
|
||||||
|
//contact_model.objectContactAdded.connect(onObjectContact)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Connections
|
Connections
|
||||||
|
{
|
||||||
|
target: object_model
|
||||||
|
|
||||||
|
function onObjectIdReady()
|
||||||
|
{
|
||||||
|
var obj_id = arguments[0]
|
||||||
|
if (checkAddObjectContact.checked && obj_id)
|
||||||
|
{
|
||||||
|
var new_objecto = addObjectLayout.getForm()
|
||||||
|
contact_model.addObjectContact(new_objecto, obj_id)
|
||||||
|
object_model.viewCriterion("Alle")
|
||||||
|
}
|
||||||
|
|
||||||
|
contentStack.pop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// function onObjectAdded(added, oid)
|
||||||
// {
|
// {
|
||||||
// target: spacer3
|
// if (!added)
|
||||||
|
// console.log(qsTr("Fehler beim Objekt-Anlegen!"))
|
||||||
// function onObjectIdReady()
|
// if (checkAddObjectContact.checked && oid)
|
||||||
// {
|
// {
|
||||||
// var obj_id = arguments[0]
|
// var new_objecto = addObjectLayout.getForm()
|
||||||
// object_model.addObject(new_object, obj_id)
|
|
||||||
|
// contact_model.addObjectContact(new_objecto, oid)
|
||||||
|
// }
|
||||||
|
// else appLoader.source = "ObjectTable.qml"
|
||||||
|
// }
|
||||||
|
|
||||||
|
// function onObjectContact(added)
|
||||||
|
// {
|
||||||
|
// if (!added)
|
||||||
|
// console.log(qsTr("Fehler beim Objekt-Kontakt-Anlegen!"))
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// //object_model.viewCriterion("Alle")
|
||||||
// appLoader.source = "ObjectTable.qml"
|
// appLoader.source = "ObjectTable.qml"
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// function checkFields()
|
function checkFields()
|
||||||
// {
|
{
|
||||||
// if(checkAddObject.checked)
|
if(checkAddObjectContact.checked)
|
||||||
// {
|
{
|
||||||
// if(!objectView.checkObjectField() || !addObjectLayout.checkObjectField())
|
if(!newObject.checkObjectField() || !addObjectLayout.contactPerson.contacts || !addObjectLayout.contactPerson.contacts.length)
|
||||||
// saveBtn.enabled = false
|
saveBtn.enabled = false
|
||||||
// else
|
else
|
||||||
// saveBtn.enabled = true
|
saveBtn.enabled = true
|
||||||
// }
|
}
|
||||||
// else if (!objectView.checkObjectField())
|
else if (!newObject.checkObjectField())
|
||||||
// saveBtn.enabled = false
|
saveBtn.enabled = false
|
||||||
// else
|
else
|
||||||
// saveBtn.enabled = true
|
saveBtn.enabled = true
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ ApplicationWindow
|
|||||||
anchors.margins: 10
|
anchors.margins: 10
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Neuer Mitarbeiter")
|
text: qsTr("Mitarbeiter zuweisen")
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
font.pixelSize: 35
|
font.pixelSize: 35
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ ApplicationWindow
|
|||||||
text: qsTr("Eingesetzter Mitarbeiter")
|
text: qsTr("Eingesetzter Mitarbeiter")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
TextField
|
ComboBox
|
||||||
{
|
{
|
||||||
id: assignee
|
id: assignee
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -84,6 +84,11 @@ ApplicationWindow
|
|||||||
id: output
|
id: output
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.columnSpan: 2
|
||||||
|
}
|
||||||
}
|
}
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
@@ -103,10 +108,10 @@ ApplicationWindow
|
|||||||
text: qsTr("Hinzufügen")
|
text: qsTr("Hinzufügen")
|
||||||
onClicked:
|
onClicked:
|
||||||
{
|
{
|
||||||
if (assignee.text.trim() !== "" && duration.text.trim() !== "" && wage.text.trim() !== "" && cleanDays.text.trim() !== "" && tasks.text.trim() !== "" && output.text.trim() !== "")
|
if (duration.text.trim() !== "" && wage.text.trim() !== "" && cleanDays.text.trim() !== "" && tasks.text.trim() !== "" && output.text.trim() !== "")
|
||||||
{
|
{
|
||||||
var ne = {
|
var ne = {
|
||||||
"assignee": assignee.text.trim(),
|
"assignee": assignee.currentText,
|
||||||
"duration": duration.text.trim(),
|
"duration": duration.text.trim(),
|
||||||
"wage": wage.text.trim(),
|
"wage": wage.text.trim(),
|
||||||
"cleandays": cleanDays.text.trim(),
|
"cleandays": cleanDays.text.trim(),
|
||||||
|
|||||||
112
Gui/AddOffer.qml
Normal file
112
Gui/AddOffer.qml
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Dialogs
|
||||||
|
import "../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
property var new_object: null
|
||||||
|
//property alias checkAddContact: checkAddContact
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
spacing: 15
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Angebot anlegen")
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
Layout.fillWidth: true
|
||||||
|
font.pixelSize: 35
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
id: addObject
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
spacing: 45
|
||||||
|
|
||||||
|
Frame
|
||||||
|
{
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillWidth: true
|
||||||
|
AddNewOffer
|
||||||
|
{
|
||||||
|
id: newOffer
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Abbrechen")
|
||||||
|
onClicked: contentStack.pop()
|
||||||
|
}
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
property var new_object: null
|
||||||
|
id: saveBtn
|
||||||
|
text: qsTr("Speichern")
|
||||||
|
enabled: false
|
||||||
|
onClicked:
|
||||||
|
{
|
||||||
|
// new_object = JsLib.parseForm(newObject)
|
||||||
|
// new_object['lift'] = new_object['lift'] === 'Ja' ? 1 : 0
|
||||||
|
// new_object['mezzanin'] = new_object['mezzanin'] === 'Ja' ? 1 : 0
|
||||||
|
// object_model.addObject(new_object)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: spacer3
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
//object_model.objectAdded.connect(onObjectAdded)
|
||||||
|
//contact_model.objectContactAdded.connect(onObjectContact)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Connections
|
||||||
|
// {
|
||||||
|
// target: object_model
|
||||||
|
|
||||||
|
// function onObjectIdReady()
|
||||||
|
// {
|
||||||
|
// var obj_id = arguments[0]
|
||||||
|
// if (checkAddObjectContact.checked && obj_id)
|
||||||
|
// {
|
||||||
|
// var new_objecto = addObjectLayout.getForm()
|
||||||
|
// contact_model.addObjectContact(new_objecto, obj_id)
|
||||||
|
// object_model.viewCriterion("Alle")
|
||||||
|
// }
|
||||||
|
|
||||||
|
// appLoader.source = "ObjectTable.qml"
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// function checkFields()
|
||||||
|
// {
|
||||||
|
// if(checkAddObjectContact.checked)
|
||||||
|
// {
|
||||||
|
// if(!newObject.checkObjectField() || !addObjectLayout.contactPerson.contacts || !addObjectLayout.contactPerson.contacts.length)
|
||||||
|
// saveBtn.enabled = false
|
||||||
|
// else
|
||||||
|
// saveBtn.enabled = true
|
||||||
|
// }
|
||||||
|
// else if (!newObject.checkObjectField())
|
||||||
|
// saveBtn.enabled = false
|
||||||
|
// else
|
||||||
|
// saveBtn.enabled = true
|
||||||
|
// }
|
||||||
|
}
|
||||||
57
Gui/BackupSettings.qml
Normal file
57
Gui/BackupSettings.qml
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Dialogs
|
||||||
|
import QtCore
|
||||||
|
import "../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: 150
|
||||||
|
columns: 2
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
Layout.columnSpan: 2
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
text: qsTr("Sicherung")
|
||||||
|
font.pixelSize: 35
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Konfiguration")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
|
||||||
|
}
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
id: saveConfig
|
||||||
|
text: qsTr("Jetzt sichern!")
|
||||||
|
onClicked: utilityDialogs.item.backup_config.open()
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Verschlüsselung")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
id: saveEncryption
|
||||||
|
text: qsTr("Jetzt sichern!")
|
||||||
|
onClicked: utilityDialogs.item.backup_encrypt_pw.open()
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: spacer
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Loader
|
||||||
|
{
|
||||||
|
id: utilityDialogs
|
||||||
|
source: "UtilityDialogs.qml"
|
||||||
|
}
|
||||||
|
}
|
||||||
122
Gui/CompanyConf.qml
Normal file
122
Gui/CompanyConf.qml
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
property alias name: companyName
|
||||||
|
property alias street: street
|
||||||
|
property alias house: houseno
|
||||||
|
property alias zipcode: zipcode
|
||||||
|
property alias city: city
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: 50
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Namen")
|
||||||
|
// font.pixelSize: 57
|
||||||
|
// font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
id: companyName
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Straße")
|
||||||
|
// font.pixelSize: 57
|
||||||
|
// font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
id: street
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Haus-Nr.")
|
||||||
|
// font.pixelSize: 57
|
||||||
|
// font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
id: houseno
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("PLZ")
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
id: zipcode
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
model: address_model
|
||||||
|
textRole: "display"
|
||||||
|
popup.height: 300
|
||||||
|
onCurrentIndexChanged: city.currentIndex = zipcode.currentIndex
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /([0-9]{1,5})/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Stadt")
|
||||||
|
// font.pixelSize: 57
|
||||||
|
// font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
id: city
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
model: address_model
|
||||||
|
textRole: "city"
|
||||||
|
popup.height: 300
|
||||||
|
currentIndex: -1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
var c = config.getCompanyInfo()
|
||||||
|
if (Object.keys(c).length)
|
||||||
|
{
|
||||||
|
companyName.text = c['NAME']
|
||||||
|
street.text = c['STREET']
|
||||||
|
houseno.text = c['HOUSE']
|
||||||
|
zipcode.editText = c['ZIPCODE']
|
||||||
|
city.editText = c['CITY']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
174
Gui/CustomerContactDetails.qml
Normal file
174
Gui/CustomerContactDetails.qml
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
columns: 2
|
||||||
|
rowSpacing: 25
|
||||||
|
Layout.leftMargin: 7
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Layout.columnSpan: 2
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
id: contactLabel
|
||||||
|
color: "darksalmon"
|
||||||
|
font.bold: true
|
||||||
|
text: qsTr("Ansprechpartner")
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['salute'] + " " + contact['contact']['fname'] + " " + contact['contact']['lname']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Geburtsdatum")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['birthday']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("E-Mail")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['email']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Position")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['position']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Priorität")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['priority']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Telefon")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['phone']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Handy")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['cell']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Abrechnung")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['invoice']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Mahnung")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: contact? contact['contact']['reminder']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.columnSpan: 2
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
if (contact && contact['contact']['salute'] === "Frau")
|
||||||
|
contactLabel.text = qsTr("Ansprechpartnerin")
|
||||||
|
}
|
||||||
|
}
|
||||||
61
Gui/CustomerDetails.qml
Normal file
61
Gui/CustomerDetails.qml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
property int selectedClient: -1
|
||||||
|
property var client: null
|
||||||
|
property var contact: null
|
||||||
|
id: clDet
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Zurück")
|
||||||
|
onClicked: contentStack.pop()
|
||||||
|
}
|
||||||
|
|
||||||
|
SplitView
|
||||||
|
{
|
||||||
|
id: clDetView
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
leftPadding: 9
|
||||||
|
rightPadding: 9
|
||||||
|
|
||||||
|
CustomerDetailsView
|
||||||
|
{
|
||||||
|
id: customerDetails
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomerContactDetails
|
||||||
|
{
|
||||||
|
id: contactDetails
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
NoCustomerContact
|
||||||
|
{
|
||||||
|
id: noCustomerContact
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
//Layout.columnSpan: 2
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
//business_model.onRowClicked(selectedClient)
|
||||||
|
client = business_model.getClientDetails()
|
||||||
|
if (client['business']['contactid'] > 0)
|
||||||
|
{
|
||||||
|
contact = contact_model.getContactDetails(client['business']['contactid'])
|
||||||
|
contactDetails.visible = true
|
||||||
|
}
|
||||||
|
else noCustomerContact.visible = true
|
||||||
|
}
|
||||||
|
}
|
||||||
225
Gui/CustomerDetailsView.qml
Normal file
225
Gui/CustomerDetailsView.qml
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
columns: 2
|
||||||
|
rowSpacing: 25
|
||||||
|
SplitView.preferredWidth: clDetView.width / 3 * 1.8
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Steuer-ID")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['tax']? client['business']['tax']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Anmerkungen")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['info']? client['business']['info']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Kundenname")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['company']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("CEO")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['ceo']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Telefon")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['phone']? client['business']['phone']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Handy")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['cell']? client['business']['cell']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Webseite")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
id: clientWebsite
|
||||||
|
color: "goldenrod"
|
||||||
|
font.underline: false
|
||||||
|
text: client['business']['website']? '<a href="' + client['business']['website'] + '">' + client['business']['website'] + '</a>': ""
|
||||||
|
onLinkActivated:
|
||||||
|
{
|
||||||
|
var web_protocol = /^((http|https):\/\/)/;
|
||||||
|
var client_website = !web_protocol.test(client['business']['website'])? "https://" + client['business']['website']: client['business']['website'];
|
||||||
|
Qt.openUrlExternally(client_website)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("E-Mail")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
id: clientEmail
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['email']? '<a href="mailto:' + client['business']['email'] + '">' + client['business']['email'] + '</a>': ""
|
||||||
|
onLinkActivated: Qt.openUrlExternally('mailto:' + client['business']['email'])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Straße")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['street']? client['business']['tax']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Haus-Nr.")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['house']? client['business']['house']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("PLZ")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['zip']? client['business']['zip']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
text: qsTr("Stadt")
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: client['business']['city']? client['business']['city']: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
// Item
|
||||||
|
// {
|
||||||
|
// Layout.columnSpan: 2
|
||||||
|
// Layout.fillHeight: true
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -1,217 +0,0 @@
|
|||||||
import QtQuick
|
|
||||||
import QtQuick.Layouts
|
|
||||||
import QtQuick.Controls
|
|
||||||
import Qt.labs.qmlmodels
|
|
||||||
import QtQuick.Controls.Fusion
|
|
||||||
|
|
||||||
Item {
|
|
||||||
anchors.fill: parent
|
|
||||||
property var availableFilters: ["Name", "Adresse", "PLZ", "Ort"]
|
|
||||||
id: test
|
|
||||||
|
|
||||||
SearchBar
|
|
||||||
{
|
|
||||||
id:searchBar
|
|
||||||
anchors.margins: 9
|
|
||||||
}
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: addBusinessBtn
|
|
||||||
icon.source: "qrc:/images/addbusiness.svg"
|
|
||||||
icon.color: "olive"
|
|
||||||
anchors.right: parent.right
|
|
||||||
flat: true
|
|
||||||
onClicked: appLoader.source = "AddCustomer.qml"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ColumnLayout
|
|
||||||
{
|
|
||||||
id: tableColumn
|
|
||||||
anchors
|
|
||||||
{
|
|
||||||
top: searchBar.bottom
|
|
||||||
bottom: parent.bottom
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
id: showAll
|
|
||||||
checked: true
|
|
||||||
text: qsTr("Alle")
|
|
||||||
onClicked: viewCriterion(showAll)
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
id: showInterested
|
|
||||||
text: qsTr("Interessent")
|
|
||||||
onClicked: viewCriterion(showInterested)
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
id: showClientele
|
|
||||||
text: qsTr("Kunden")
|
|
||||||
onClicked: viewCriterion(showClientele)
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
id: showProvider
|
|
||||||
text: qsTr("Lieferant")
|
|
||||||
onClicked: viewCriterion(showProvider)
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
id: showFinished
|
|
||||||
text: qsTr("Erledigt")
|
|
||||||
onClicked: viewCriterion(showFinished)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
HorizontalHeaderView
|
|
||||||
{
|
|
||||||
id: horizontalHeader
|
|
||||||
Layout.fillWidth: true
|
|
||||||
implicitHeight: 40
|
|
||||||
movableColumns: true //@disable-check M16
|
|
||||||
syncView: customerTable
|
|
||||||
|
|
||||||
delegate: Rectangle {
|
|
||||||
color: addBusinessBtn.palette.alternateBase
|
|
||||||
border.color: addBusinessBtn.palette.base
|
|
||||||
implicitHeight: 40
|
|
||||||
Layout.fillWidth: true
|
|
||||||
implicitWidth: 1
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
text: model.display
|
|
||||||
elide: Text.ElideRight
|
|
||||||
width: parent.width
|
|
||||||
height: parent.height
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
color: addBusinessBtn.palette.text
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TableView
|
|
||||||
{
|
|
||||||
//property var customWidths: [0.2, 0.5, 0.3, 05, 0.2, 0.2]
|
|
||||||
property real newWidth: 0
|
|
||||||
id: customerTable
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
ScrollBar.vertical: ScrollBar
|
|
||||||
{
|
|
||||||
policy: customerTable.contentHeight > customerTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
|
|
||||||
}
|
|
||||||
columnSpacing: 1
|
|
||||||
rowSpacing: 2
|
|
||||||
model: business_model
|
|
||||||
alternatingRows: true
|
|
||||||
resizableColumns: true // @disable-check M16
|
|
||||||
selectionBehavior: TableView.SelectRows
|
|
||||||
selectionModel: ItemSelectionModel
|
|
||||||
{
|
|
||||||
id: selModel
|
|
||||||
model: customerTable.model
|
|
||||||
}
|
|
||||||
|
|
||||||
// columnWidthProvider: function(column)
|
|
||||||
// {
|
|
||||||
// switch (column)
|
|
||||||
// {
|
|
||||||
// case 0: return width * 0.2;
|
|
||||||
// case 1: return width * 0.5;
|
|
||||||
// case 2: return width * 0.3;
|
|
||||||
// default: return width / model.columnCount();
|
|
||||||
// }
|
|
||||||
//return customWidths[column] * width;
|
|
||||||
//return tableColumn.content.implicitWidth // model.columnCount()
|
|
||||||
// newWidth = columnWidth(column)
|
|
||||||
// return newWidth
|
|
||||||
// }
|
|
||||||
|
|
||||||
Timer
|
|
||||||
{
|
|
||||||
id: redrawTable
|
|
||||||
running: true
|
|
||||||
interval: 1
|
|
||||||
repeat: false
|
|
||||||
onTriggered:
|
|
||||||
{
|
|
||||||
customerTable.forceLayout();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
delegate:Rectangle
|
|
||||||
{
|
|
||||||
required property bool selected
|
|
||||||
required property bool current
|
|
||||||
implicitWidth: customerTable.width / customerTable.columns
|
|
||||||
implicitHeight: 25
|
|
||||||
color: selected
|
|
||||||
? addBusinessBtn.palette.highlight //palette.highlight
|
|
||||||
: (customerTable.alternatingRows && row % 2 !== 0
|
|
||||||
? addBusinessBtn.palette.base // palette.base
|
|
||||||
: addBusinessBtn.palette.alternateBase) //palette.alternateBase)
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
text: model.display == null? "": model.display
|
|
||||||
elide: Text.ElideRight
|
|
||||||
width: parent.width
|
|
||||||
height: parent.height
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
leftPadding: 9 //@d isable-check M16
|
|
||||||
color: addBusinessBtn.palette.text
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea
|
|
||||||
{
|
|
||||||
property bool hovered: false
|
|
||||||
id: mouseArea
|
|
||||||
anchors.fill: parent
|
|
||||||
hoverEnabled: true
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
business_model.onRowClicked(row)
|
|
||||||
}
|
|
||||||
onEntered:
|
|
||||||
{
|
|
||||||
customerTable.selectionModel.select(customerTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onContentWidthChanged:
|
|
||||||
{
|
|
||||||
//console.log("Model changed!!")
|
|
||||||
redrawTable.start()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
//Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function viewCriterion(criterion)
|
|
||||||
{
|
|
||||||
business_model.viewCriterion(criterion.text)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -16,11 +16,10 @@ GridLayout
|
|||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
id: lblFirmenName
|
id: lblFirmenName
|
||||||
text: qsTr("Firmenname")
|
text: qsTr("Firmenname*")
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
property string name: "business"
|
property string name: "business"
|
||||||
@@ -29,34 +28,26 @@ GridLayout
|
|||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
onTextChanged: checkFields()
|
onTextChanged: checkFields()
|
||||||
placeholderText: "Pflichtfeld"
|
|
||||||
placeholderTextColor: "red"
|
|
||||||
Layout.columnSpan: 3
|
Layout.columnSpan: 3
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Straße")
|
text: qsTr("Straße*")
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
property string name: "street"
|
property string name: "street"
|
||||||
id: streetid
|
id: streetid
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
onTextChanged: checkFields()
|
onTextChanged: checkFields()
|
||||||
placeholderText: "Pflichtfeld"
|
|
||||||
placeholderTextColor: "red"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Nr.")
|
text: qsTr("Nr.*")
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,8 +57,6 @@ GridLayout
|
|||||||
id: housenoid
|
id: housenoid
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
onTextChanged: checkFields()
|
onTextChanged: checkFields()
|
||||||
placeholderText: "Pflichtfeld"
|
|
||||||
placeholderTextColor: "red"
|
|
||||||
validator: RegularExpressionValidator
|
validator: RegularExpressionValidator
|
||||||
{
|
{
|
||||||
regularExpression: /([0-9a-zA-Z\-]{1,6})/
|
regularExpression: /([0-9a-zA-Z\-]{1,6})/
|
||||||
@@ -96,7 +85,6 @@ GridLayout
|
|||||||
model: address_model
|
model: address_model
|
||||||
textRole: "display"
|
textRole: "display"
|
||||||
popup.height: 300
|
popup.height: 300
|
||||||
popup.y: postcode.y + 5 - (postcode.height * 2)
|
|
||||||
currentIndex: -1
|
currentIndex: -1
|
||||||
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
|
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
|
||||||
Layout.columnSpan: 3
|
Layout.columnSpan: 3
|
||||||
@@ -123,10 +111,8 @@ GridLayout
|
|||||||
model: address_model
|
model: address_model
|
||||||
textRole: "city"
|
textRole: "city"
|
||||||
popup.height: 300
|
popup.height: 300
|
||||||
popup.y: postcode.y + 5 - (postcode.height * 2)
|
|
||||||
currentIndex: -1
|
currentIndex: -1
|
||||||
Layout.columnSpan: 3
|
Layout.columnSpan: 3
|
||||||
// onCurrentIndexChanged: postcode.currentIndex = city.currentIndex
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -149,7 +135,7 @@ GridLayout
|
|||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Handy")
|
text: qsTr("Mobil")
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
}
|
}
|
||||||
TextField
|
TextField
|
||||||
@@ -178,7 +164,7 @@ GridLayout
|
|||||||
Layout.columnSpan: 3
|
Layout.columnSpan: 3
|
||||||
validator: RegularExpressionValidator
|
validator: RegularExpressionValidator
|
||||||
{
|
{
|
||||||
regularExpression: /([\+!#$%&‘\*\–\/\=?\^_`\.{|}\~0-9A-Za-z]{1,185})@([0-9A-Za-z\.]{1,64})\.([a-zA-z]{2,5})/
|
regularExpression: /([\+!#$%&‘\*\–\/\=?\^_`\.{|}\~\-\_0-9A-Za-z]{1,185})@([0-9A-Za-z\.\-\_]{1,64})\.([a-zA-z]{2,5})/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
177
Gui/CustomersTable.qml
Normal file
177
Gui/CustomersTable.qml
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
import Qt.labs.qmlmodels
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
property var availableFilters: ["Name", "Adresse", "PLZ", "Ort"]
|
||||||
|
|
||||||
|
function viewCriterion(criterion)
|
||||||
|
{
|
||||||
|
business_model.viewCriterion(criterion.text);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
Component.onCompleted: contentStack.pop()
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
|
||||||
|
SearchBar
|
||||||
|
{
|
||||||
|
}
|
||||||
|
QuickFilter {
|
||||||
|
onSelectedChanged: (name) => {
|
||||||
|
business_model.viewCriterion(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
model: ListModel {
|
||||||
|
ListElement {
|
||||||
|
|
||||||
|
name: "Alle"
|
||||||
|
text: qsTr("Alle")
|
||||||
|
selected: true
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Interessent"
|
||||||
|
text: qsTr("Interessent")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Kunde"
|
||||||
|
text: qsTr("Kunde")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Lieferant"
|
||||||
|
text: qsTr("Lieferant")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Erledigt"
|
||||||
|
text: qsTr("Erledigt")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
id: addCustomer
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
icon.source: "qrc:/images/PlusCircle.svg"
|
||||||
|
text: qsTr("Kunde Hinzufügen")
|
||||||
|
onClicked: contentStack.push("AddCustomer.qml")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.verticalStretchFactor: 1
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
HorizontalHeaderView
|
||||||
|
{
|
||||||
|
id: horizontalHeader
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
implicitHeight: 40
|
||||||
|
movableColumns: true //@disable-check M16
|
||||||
|
syncView: customerTable
|
||||||
|
|
||||||
|
delegate: Rectangle
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
border.color: addCustomer.palette.base
|
||||||
|
color: addCustomer.palette.alternateBase
|
||||||
|
implicitHeight: 40
|
||||||
|
implicitWidth: 1
|
||||||
|
|
||||||
|
Text
|
||||||
|
{
|
||||||
|
color: addCustomer.palette.text
|
||||||
|
elide: Text.ElideRight
|
||||||
|
height: parent.height
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
text: model.display
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TableView {
|
||||||
|
id: customerTable
|
||||||
|
|
||||||
|
property real newWidth: 0
|
||||||
|
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
alternatingRows: true
|
||||||
|
columnSpacing: 1
|
||||||
|
model: business_model
|
||||||
|
resizableColumns: true
|
||||||
|
rowSpacing: 2
|
||||||
|
selectionBehavior: TableView.SelectRows
|
||||||
|
z: 1
|
||||||
|
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
policy: customerTable.contentHeight > customerTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
|
||||||
|
}
|
||||||
|
delegate: Rectangle {
|
||||||
|
required property bool current
|
||||||
|
required property bool selected
|
||||||
|
|
||||||
|
color: selected ? addCustomer.palette.highlight //palette.highlight
|
||||||
|
: (customerTable.alternatingRows && row % 2 !== 0 ? addCustomer.palette.base // palette.base
|
||||||
|
: addCustomer.palette.alternateBase) //palette.alternateBase)
|
||||||
|
implicitHeight: 25
|
||||||
|
implicitWidth: customerTable.width / customerTable.columns
|
||||||
|
|
||||||
|
Text {
|
||||||
|
color: addCustomer.palette.text
|
||||||
|
elide: Text.ElideRight
|
||||||
|
height: parent.height
|
||||||
|
leftPadding: 9
|
||||||
|
text: model.display == null ? "" : model.display // @disable-check M126
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
|
||||||
|
property bool hovered: false
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onDoubleClicked: {
|
||||||
|
business_model.onRowClicked(row);
|
||||||
|
contentStack.push("CustomerDetails.qml", {
|
||||||
|
selectedClient: row
|
||||||
|
});
|
||||||
|
}
|
||||||
|
onEntered: {
|
||||||
|
customerTable.selectionModel.select(customerTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selectionModel: ItemSelectionModel {
|
||||||
|
id: selModel
|
||||||
|
|
||||||
|
model: customerTable.model
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,15 +2,109 @@ import QtQuick
|
|||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout {
|
||||||
{
|
anchors.top: Navigation.bottom
|
||||||
anchors.top: TopBar.bottom
|
|
||||||
|
|
||||||
Rectangle
|
Rectangle {
|
||||||
{
|
Layout.bottomMargin: 3
|
||||||
color: "blue"
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.bottomMargin: 9
|
color: "dimgrey"
|
||||||
|
radius: 45
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: contractButton
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
border.color: "steelblue"
|
||||||
|
border.width: 1
|
||||||
|
color: "darkslategray"
|
||||||
|
height: 145
|
||||||
|
radius: 45
|
||||||
|
width: 300
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
color: "lightgoldenrodyellow"
|
||||||
|
font.bold: true
|
||||||
|
font.pixelSize: 45
|
||||||
|
text: qsTr("Aufträge")
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onExited: {
|
||||||
|
contractButton.color = "darkslategray";
|
||||||
|
contractButton.border.color = "steelblue";
|
||||||
|
contractButton.border.width = 1;
|
||||||
|
}
|
||||||
|
onHoveredChanged: {
|
||||||
|
var w = contractButton.border.width === 3 ? 1 : 3;
|
||||||
|
contractButton.border.width = w;
|
||||||
|
}
|
||||||
|
onPressed: {
|
||||||
|
contractButton.color = "darkolivegreen";
|
||||||
|
contractButton.border.width = 3;
|
||||||
|
contractButton.border.color = "skyblue";
|
||||||
|
console.log("Aufträge...");
|
||||||
|
}
|
||||||
|
onReleased: {
|
||||||
|
contractButton.color = "darkslategray";
|
||||||
|
contractButton.border.width = 1;
|
||||||
|
contractButton.border.color = "steelblue";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
id: offerButton
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
border.color: "steelblue"
|
||||||
|
border.width: 1
|
||||||
|
color: "darkslategray"
|
||||||
|
height: 145
|
||||||
|
radius: 45
|
||||||
|
width: 300
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
color: "lightgoldenrodyellow"
|
||||||
|
font.bold: true
|
||||||
|
font.pixelSize: 45
|
||||||
|
text: qsTr("Angebote")
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onExited: {
|
||||||
|
offerButton.color = "darkslategray";
|
||||||
|
offerButton.border.color = "steelblue";
|
||||||
|
offerButton.border.width = 1;
|
||||||
|
}
|
||||||
|
onHoveredChanged: {
|
||||||
|
var w = offerButton.border.width === 3 ? 1 : 3;
|
||||||
|
offerButton.border.width = w;
|
||||||
|
}
|
||||||
|
onPressed: {
|
||||||
|
offerButton.color = "darkolivegreen";
|
||||||
|
offerButton.border.width = 3;
|
||||||
|
offerButton.border.color = "skyblue";
|
||||||
|
console.log("Angebote...");
|
||||||
|
}
|
||||||
|
onReleased: {
|
||||||
|
offerButton.color = "darkslategray";
|
||||||
|
offerButton.border.width = 1;
|
||||||
|
offerButton.border.color = "steelblue";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,11 @@ import QtQuick.Layouts
|
|||||||
|
|
||||||
GridLayout
|
GridLayout
|
||||||
{
|
{
|
||||||
// property alias firstStart: firstStartGrid
|
property alias dbHost: dbHost
|
||||||
|
property alias dbPort: dbPort
|
||||||
|
property alias dbName: dbName
|
||||||
|
property alias dbUserName: dbUserName
|
||||||
|
property alias dbPassword: dbPassword
|
||||||
id: dbGrid
|
id: dbGrid
|
||||||
columns: 2
|
columns: 2
|
||||||
columnSpacing: 5
|
columnSpacing: 5
|
||||||
@@ -102,4 +106,17 @@ GridLayout
|
|||||||
{
|
{
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
var db = config.getDbConf()
|
||||||
|
if (Object.keys(db).length)
|
||||||
|
{
|
||||||
|
dbHost.text = db['DB_HOST']
|
||||||
|
dbPort.text = db['DB_PORT']
|
||||||
|
dbName.text = db['DB_NAME']
|
||||||
|
dbUserName.text = db['DB_USER']
|
||||||
|
dbPassword.text = db['DB_PASS']
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,126 +0,0 @@
|
|||||||
import QtQuick
|
|
||||||
import QtQuick.Layouts
|
|
||||||
import QtQuick.Controls
|
|
||||||
import Qt.labs.qmlmodels
|
|
||||||
|
|
||||||
|
|
||||||
Item {
|
|
||||||
property var availableFilters: ["Name", "Adresse", "PLZ", "Ort", "Status"]
|
|
||||||
|
|
||||||
SearchBar
|
|
||||||
{
|
|
||||||
id:searchBar
|
|
||||||
anchors.margins: 9
|
|
||||||
}
|
|
||||||
|
|
||||||
ColumnLayout
|
|
||||||
{
|
|
||||||
anchors
|
|
||||||
{
|
|
||||||
|
|
||||||
top: searchBar.bottom
|
|
||||||
bottom: parent.bottom
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
|
|
||||||
checked: true
|
|
||||||
text: qsTr("Alle")
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
|
|
||||||
text: qsTr("Bewerber")
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
|
|
||||||
text: qsTr("Mitarbeiter")
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
|
|
||||||
text: qsTr("Erledigt")
|
|
||||||
}
|
|
||||||
RadioButton
|
|
||||||
{
|
|
||||||
|
|
||||||
text: qsTr("Ausgeschieden")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
HorizontalHeaderView
|
|
||||||
{
|
|
||||||
id: horizontalHeader
|
|
||||||
Layout.fillWidth: true
|
|
||||||
syncView: testTable
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
TableView
|
|
||||||
{
|
|
||||||
id: testTable
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
columnSpacing: 1
|
|
||||||
rowSpacing: 2
|
|
||||||
model: business_model
|
|
||||||
selectionBehavior: TableView.SelectRows
|
|
||||||
selectionModel: ItemSelectionModel
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
id: selModel
|
|
||||||
model: testTable.model
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
delegate:Rectangle
|
|
||||||
{
|
|
||||||
required property bool selected
|
|
||||||
required property bool current
|
|
||||||
implicitWidth: 200
|
|
||||||
implicitHeight: 25
|
|
||||||
color: selected? "lightblue": palette.base
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
text: model.display
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea
|
|
||||||
{
|
|
||||||
id: mouseArea
|
|
||||||
property bool hovered:false
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
hoverEnabled: true
|
|
||||||
|
|
||||||
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
business_model.onRowClicked(row)
|
|
||||||
testTable.selectionModel.select(testTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows)
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
37
Gui/Employees/AddApplicant.qml
Normal file
37
Gui/Employees/AddApplicant.qml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import TeroStyle
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
ApplicantForm {
|
||||||
|
id: applicantForm
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.verticalStretchFactor: 1
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
Button {
|
||||||
|
icon.source: "qrc:/images/ArrowLeftCircle-Outline.svg"
|
||||||
|
text: qsTr("Verwerfen")
|
||||||
|
|
||||||
|
onClicked: contentStack.pop()
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
enabled: applicantForm.valid
|
||||||
|
icon.source: "qrc:/images/CheckCircle.svg"
|
||||||
|
text: qsTr("Speichern")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
applicantModel.createApplicant(applicantForm.value);
|
||||||
|
contentStack.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
102
Gui/Employees/AddEmployee.qml
Normal file
102
Gui/Employees/AddEmployee.qml
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import "../../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: colPar
|
||||||
|
|
||||||
|
function checkFields() {
|
||||||
|
if (!personalData.checkPersonalField())
|
||||||
|
saveBtn.enabled = false;
|
||||||
|
else
|
||||||
|
saveBtn.enabled = true;
|
||||||
|
}
|
||||||
|
function onAddNewEmployee(added) {
|
||||||
|
if (added) {
|
||||||
|
console.log('addedsuccesfully');
|
||||||
|
contentStack.pop();
|
||||||
|
} else {
|
||||||
|
console.log('failedtoadd');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
anchors.fill: parent
|
||||||
|
implicitWidth: parent.width
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
employee_model.addedNewEmployee.connect(onAddNewEmployee);
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: headline
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
|
||||||
|
font.pixelSize: 35
|
||||||
|
text: qsTr("Mitarbeiter / Bewerber hinzufügen")
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
Frame {
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.horizontalStretchFactor: 1
|
||||||
|
|
||||||
|
EmployeePersonalData {
|
||||||
|
id: personalData
|
||||||
|
|
||||||
|
implicitWidth: parent.width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Frame {
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.horizontalStretchFactor: 1
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
implicitWidth: parent.width
|
||||||
|
|
||||||
|
EmployeeBankData {
|
||||||
|
id: bankAccount
|
||||||
|
|
||||||
|
}
|
||||||
|
EmployeeNationalInsurance {
|
||||||
|
id: nationalInsurance
|
||||||
|
}
|
||||||
|
EmployeeVarious {
|
||||||
|
id: applicantVarious
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: qsTr("Abbrechen")
|
||||||
|
|
||||||
|
onClicked: contentStack.pop()
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
id: saveBtn
|
||||||
|
|
||||||
|
enabled: false
|
||||||
|
text: qsTr("Speichern")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
const new_applicant = JsLib.parseForm(personalData, bankAccount, nationalInsurance, applicantVarious);
|
||||||
|
employee_model.addEmployee(new_applicant);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
218
Gui/Employees/ApplicantForm.qml
Normal file
218
Gui/Employees/ApplicantForm.qml
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls.impl
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import TeroStyle
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
readonly property int fieldM: 235
|
||||||
|
readonly property int fieldS: 110
|
||||||
|
readonly property bool valid: emailAddress.acceptableInput && firstName.acceptableInput && houseNumber.acceptableInput && lastName.acceptableInput && mobileNumber.acceptableInput && phoneNumber.acceptableInput && salutation.acceptableInput&& street.acceptableInput && title.acceptableInput && zipCode.acceptableInput
|
||||||
|
readonly property var value: QtObject {
|
||||||
|
readonly property string emailAddress: emailAddress.text ?? ""
|
||||||
|
readonly property string firstName: firstName.text ?? ""
|
||||||
|
readonly property string houseNumber: houseNumber.text ?? ""
|
||||||
|
readonly property string lastName: lastName.text ?? ""
|
||||||
|
readonly property string mobileNumber: mobileNumber.text ?? ""
|
||||||
|
readonly property string phoneNumber: phoneNumber.text ?? ""
|
||||||
|
readonly property string salutation: salutation.text ?? ""
|
||||||
|
readonly property string street: street.text ?? ""
|
||||||
|
readonly property string title: title.currentText
|
||||||
|
readonly property int zipCode: zipCode.currentIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
function setValue(value) {
|
||||||
|
title.currentIndex = value.title ?? 0;
|
||||||
|
firstName.text = value.firstName ?? "";
|
||||||
|
lastName.text = value.lastName ?? "";
|
||||||
|
street.text = value.street ?? "";
|
||||||
|
houseNumber.text = value.houseNumber ?? "";
|
||||||
|
zipCode.currentIndex = value.zipCode ?? -1;
|
||||||
|
phoneNumber.text = value.phoneNumber ?? "";
|
||||||
|
mobileNumber.text = value.mobileNumber ?? "";
|
||||||
|
emailAddress.text = value.emailAddress ?? "";
|
||||||
|
salutation.text = value.salutation ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
IconLabel {
|
||||||
|
color: Colors.foreground
|
||||||
|
font: Typography.h2
|
||||||
|
icon.color: Colors.foreground
|
||||||
|
icon.height: Typography.h2.pixelSize
|
||||||
|
icon.source: "qrc:/images/UserCircle"
|
||||||
|
icon.width: Typography.h2.pixelSize
|
||||||
|
spacing: Dimensions.m
|
||||||
|
text: qsTr("Stammdaten")
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
spacing: Dimensions.m
|
||||||
|
|
||||||
|
Field {
|
||||||
|
label: qsTr("Anrede")
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: title
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
model: [qsTr("Keine Angabe"), qsTr("Herr"), qsTr("Frau")]
|
||||||
|
|
||||||
|
onCurrentTextChanged: {
|
||||||
|
switch (title.currentIndex) {
|
||||||
|
case 1:
|
||||||
|
salutation.text = "Sehr geehrter Herr ";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
salutation.text = "Sehr geehrte Frau ";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
salutation.text = "Guten Tag ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Vorname")
|
||||||
|
mandatory: true
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: firstName
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
placeholderText: qsTr("Max")
|
||||||
|
|
||||||
|
validator: NotEmptyValidator {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Nachname")
|
||||||
|
mandatory: true
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: lastName
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
placeholderText: qsTr("Mustermann")
|
||||||
|
|
||||||
|
validator: NotEmptyValidator {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
spacing: Dimensions.m
|
||||||
|
|
||||||
|
Field {
|
||||||
|
label: qsTr("Straße")
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: street
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
placeholderText: qsTr("Musterstraße")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Hausnummer")
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: houseNumber
|
||||||
|
|
||||||
|
implicitWidth: fieldS
|
||||||
|
placeholderText: qsTr("1a")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("PLZ")
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: zipCode
|
||||||
|
|
||||||
|
currentIndex: -1
|
||||||
|
editable: true
|
||||||
|
implicitWidth: fieldS
|
||||||
|
model: address_model
|
||||||
|
textRole: "display"
|
||||||
|
|
||||||
|
onActivated: currentValue
|
||||||
|
onCurrentIndexChanged: city.currentIndex = zipCode.currentIndex
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Ort")
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: city
|
||||||
|
|
||||||
|
currentIndex: -1
|
||||||
|
editable: true
|
||||||
|
implicitWidth: fieldM
|
||||||
|
model: address_model
|
||||||
|
textRole: "city"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IconLabel {
|
||||||
|
color: Colors.foreground
|
||||||
|
font: Typography.h2
|
||||||
|
icon.color: Colors.foreground
|
||||||
|
icon.height: Typography.h2.pixelSize
|
||||||
|
icon.source: "qrc:/images/Phone"
|
||||||
|
icon.width: Typography.h2.pixelSize
|
||||||
|
spacing: Dimensions.m
|
||||||
|
text: qsTr("Kontakt")
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
spacing: Dimensions.m
|
||||||
|
|
||||||
|
Field {
|
||||||
|
label: qsTr("Telefonnummer")
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: phoneNumber
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
placeholderText: "+49 1234 567890"
|
||||||
|
|
||||||
|
validator: OptionalPhoneNumberValidator {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Mobil")
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: mobileNumber
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
placeholderText: "+49 123 4567891011"
|
||||||
|
|
||||||
|
validator: OptionalPhoneNumberValidator {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("E-Mail Adresse")
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: emailAddress
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
placeholderText: "tero@example.org"
|
||||||
|
|
||||||
|
validator: OptionalEmailAddressValidator {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Briefanrede")
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: salutation
|
||||||
|
|
||||||
|
implicitWidth: fieldM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
Gui/Employees/EmployeeBankData.qml
Normal file
51
Gui/Employees/EmployeeBankData.qml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
id: bankAccount
|
||||||
|
columns: 2
|
||||||
|
property alias jobstatus: title
|
||||||
|
property alias longest: longest
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
id: longest
|
||||||
|
text: qsTr("Beschäftigungsverhältnis")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "jobstatus"
|
||||||
|
id: title
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: [qsTr("Vollzeit"), qsTr("Teilzeit"), qsTr("Minijob"), qsTr("Ausgeschieden")]
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("IBAN")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "iban"
|
||||||
|
id: iban
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Bank")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "bank"
|
||||||
|
id: bankname
|
||||||
|
Layout.fillWidth: true
|
||||||
|
model: ["",qsTr("Sparkasse"),qsTr("Volksbank")]
|
||||||
|
editable: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
34
Gui/Employees/EmployeeDetails.qml
Normal file
34
Gui/Employees/EmployeeDetails.qml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import TeroStyle
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
property int row: -1
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
onRowChanged: {
|
||||||
|
if (row !== -1) {
|
||||||
|
applicantForm.setValue(applicantModel.applicant(row))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ApplicantForm {
|
||||||
|
id: applicantForm
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.verticalStretchFactor: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
Button {
|
||||||
|
text: qsTr("Als Mitarbeiter:in Einstellen")
|
||||||
|
icon.source: "qrc:/images/InboxArrowDown.svg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
263
Gui/Employees/EmployeeNationalInsurance.qml
Normal file
263
Gui/Employees/EmployeeNationalInsurance.qml
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
id: nationalInsurance
|
||||||
|
columns: 2
|
||||||
|
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
Layout.preferredWidth: bankAccount.longest.width
|
||||||
|
text: qsTr("Herkunftsland")
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "country"
|
||||||
|
id: nation
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
model: [qsTr("Deutschland"), qsTr("Syrien")]
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Sozialversicherungs-Nr")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "socialno"
|
||||||
|
id: socialno
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Steuer-ID")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "taxno"
|
||||||
|
id: taxnumber
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Krankenkasse")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "medicalinsurance"
|
||||||
|
id: medicalinsurance
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Knappschaft")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
visible: bankAccount.jobstatus.currentText === "Minijob" ? 1:0
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "knappschaft"
|
||||||
|
id: knappschaft
|
||||||
|
Layout.fillWidth: true
|
||||||
|
visible: bankAccount.jobstatus.currentText === "Minijob" ? 1:0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ausweistyp")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "idtype"
|
||||||
|
id: idtype
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
model: [qsTr("Personalausweis"), qsTr("Reisepass")]
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ausweis Nr.")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "idnumber"
|
||||||
|
id: idnumber
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ausweis gültig bis")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "idexpiry"
|
||||||
|
id: idexpiry
|
||||||
|
Layout.fillWidth: true
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
|
}
|
||||||
|
Keys.onPressed: (event)=>
|
||||||
|
{
|
||||||
|
if (event.key !== Qt.Key_Backspace)
|
||||||
|
{
|
||||||
|
var len = idexpiry.length
|
||||||
|
var bd = idexpiry.text
|
||||||
|
if (len === 2 || len === 5) idexpiry.text = bd + "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ausstellungsort")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "idauthority"
|
||||||
|
id: idauthority
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
id: test
|
||||||
|
text: qsTr("Ausgestellt am")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "idissued"
|
||||||
|
id: idissued
|
||||||
|
Layout.fillWidth: true
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
|
}
|
||||||
|
Keys.onPressed: (event)=>
|
||||||
|
{
|
||||||
|
if (event.key !== Qt.Key_Backspace)
|
||||||
|
{
|
||||||
|
var len = idissued.length
|
||||||
|
var bd = idissued.text
|
||||||
|
if (len === 2 || len === 5) idissued.text = bd + "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CheckBox
|
||||||
|
{
|
||||||
|
Layout.preferredWidth: bankAccount.longest.width
|
||||||
|
property string name: "worklicense"
|
||||||
|
id: worklicense
|
||||||
|
text: qsTr("Arbeitserlaubnis <font color='red'><b>?</b></font>")
|
||||||
|
visible: nation.currentText === "Deutschland"? false:true
|
||||||
|
}
|
||||||
|
CheckBox
|
||||||
|
{
|
||||||
|
property string name: "residencetype"
|
||||||
|
id: residencetype
|
||||||
|
text: qsTr("Aufenthaltstitel")
|
||||||
|
visible: nation.currentText === "Deutschland"? false:true
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Aufenthaltstitel Nr.")
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "residenceno"
|
||||||
|
id: residenceno
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ausgestellt von")
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "residenceauthority"
|
||||||
|
id: residenceauthority
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ausgestellt am")
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "residenceissued"
|
||||||
|
id: residenceissued
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.fillWidth: true
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
|
}
|
||||||
|
Keys.onPressed: (event)=>
|
||||||
|
{
|
||||||
|
if (event.key !== Qt.Key_Backspace)
|
||||||
|
{
|
||||||
|
var len = residenceissued.length
|
||||||
|
var bd = residenceissued.text
|
||||||
|
if (len === 2 || len === 5) residenceissued.text = bd + "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Gültig bis")
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "residenceexpiry"
|
||||||
|
id: residenceexpiry
|
||||||
|
visible: residencetype.checked
|
||||||
|
Layout.fillWidth: true
|
||||||
|
validator: RegularExpressionValidator
|
||||||
|
{
|
||||||
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
|
}
|
||||||
|
Keys.onPressed: (event)=>
|
||||||
|
{
|
||||||
|
if (event.key !== Qt.Key_Backspace)
|
||||||
|
{
|
||||||
|
var len = residenceexpiry.length
|
||||||
|
var bd = residenceexpiry.text
|
||||||
|
if (len === 2 || len === 5) residenceexpiry.text = bd + "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
409
Gui/Employees/EmployeePersonalData.qml
Normal file
409
Gui/Employees/EmployeePersonalData.qml
Normal file
@@ -0,0 +1,409 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import TeroStyle
|
||||||
|
|
||||||
|
GridLayout {
|
||||||
|
id: personalData
|
||||||
|
|
||||||
|
function checkPersonalField() {
|
||||||
|
return (firstname.text.trim() && lastname.text.trim() && street.text.trim() && houseno.text.trim() && (postcode.editText.trim() || postcode.currentText.trim()) && (city.editText.trim() || city.currentText.trim()) && birthday.text.trim() && phonenumber.text.trim() && cellphone.text.trim() && email.text.trim() && jobdescription.text.trim() && contractstart.text.trim() && contractend.text.trim() && briefAnrede.text.trim());
|
||||||
|
}
|
||||||
|
function requiredField() {
|
||||||
|
const pf = "Pflichtfeld";
|
||||||
|
street.placeholderText = pf;
|
||||||
|
phonenumber.placeholderText = pf;
|
||||||
|
cellphone.placeholderText = pf;
|
||||||
|
email.placeholderText = pf;
|
||||||
|
jobdescription.placeholderText = pf;
|
||||||
|
contractstart.placeholderText = pf;
|
||||||
|
contractend.placeholderText = pf;
|
||||||
|
briefAnrede.placeholderText = pf;
|
||||||
|
houseno.placeholderText = pf;
|
||||||
|
}
|
||||||
|
|
||||||
|
columns: 4
|
||||||
|
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Anrede")
|
||||||
|
}
|
||||||
|
ComboBox {
|
||||||
|
id: title
|
||||||
|
|
||||||
|
property string name: "title"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: [qsTr("Keine Angabe"), qsTr("Herr"), qsTr("Frau")]
|
||||||
|
|
||||||
|
onCurrentTextChanged: {
|
||||||
|
switch (title.currentIndex) {
|
||||||
|
case 1:
|
||||||
|
briefAnrede.text = "Sehr geehrter Herr ";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
briefAnrede.text = "Sehr geehrte Frau ";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
briefAnrede.text = "Guten Tag ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Vorname*")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: firstname
|
||||||
|
|
||||||
|
property string name: "firstname"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Nachname*")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: lastname
|
||||||
|
|
||||||
|
property string name: "lastname"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Straße")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: street
|
||||||
|
|
||||||
|
property string name: "street"
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Nr.")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: houseno
|
||||||
|
|
||||||
|
property string name: "houseno"
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator {
|
||||||
|
regularExpression: /([0-9a-zA-Z\-]{1,6})/
|
||||||
|
}
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("PLZ")
|
||||||
|
}
|
||||||
|
ComboBox {
|
||||||
|
id: postcode
|
||||||
|
|
||||||
|
property string name: "postcode"
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
currentIndex: -1
|
||||||
|
editable: true
|
||||||
|
model: address_model
|
||||||
|
popup.height: 300
|
||||||
|
textRole: "display"
|
||||||
|
|
||||||
|
validator: PostcodeValidator {
|
||||||
|
}
|
||||||
|
|
||||||
|
onActivated: currentValue
|
||||||
|
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
|
||||||
|
onCurrentTextChanged: checkFields()
|
||||||
|
onEditTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Ort")
|
||||||
|
}
|
||||||
|
ComboBox {
|
||||||
|
id: city
|
||||||
|
|
||||||
|
property string name: "city"
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
currentIndex: -1
|
||||||
|
editable: true
|
||||||
|
model: address_model
|
||||||
|
popup.height: 300
|
||||||
|
textRole: "city"
|
||||||
|
|
||||||
|
onCurrentTextChanged: checkFields()
|
||||||
|
onEditTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Geburtsname")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: birthname
|
||||||
|
|
||||||
|
property string name: "birthname"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Geburtsdatum*")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: birthday
|
||||||
|
|
||||||
|
property string name: "birthday"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator {
|
||||||
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onPressed: event => {
|
||||||
|
if (event.key !== Qt.Key_Backspace) {
|
||||||
|
var len = birthday.length;
|
||||||
|
var bd = birthday.text;
|
||||||
|
if (len === 2 || len === 5)
|
||||||
|
birthday.text = bd + ".";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Geburtsort*")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: placeofbirth
|
||||||
|
|
||||||
|
property string name: "placeofbirth"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Telefonnummer")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: phonenumber
|
||||||
|
|
||||||
|
property string name: "phone"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator {
|
||||||
|
regularExpression: /([+0-9]{1})([0-9]{1,17})/
|
||||||
|
}
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Mobil")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: cellphone
|
||||||
|
|
||||||
|
property string name: "mobile"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator {
|
||||||
|
regularExpression: /([+0-9]{1})([0-9]{1,17})/
|
||||||
|
}
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("E-Mail")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: email
|
||||||
|
|
||||||
|
property string name: "email"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderText: qsTr("beispiel@domain.de")
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
validator: EmailAddressValidator {
|
||||||
|
}
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Familienstand")
|
||||||
|
}
|
||||||
|
ComboBox {
|
||||||
|
id: maritalstatus
|
||||||
|
|
||||||
|
property string name: "maritalstatus"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: [qsTr("ledig"), qsTr("verheiratet"), qsTr("verwitwet"), qsTr("geschieden")]
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Stundenlohn")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: salary
|
||||||
|
|
||||||
|
property string name: "salary"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Jobbeschreibung")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: jobdescription
|
||||||
|
|
||||||
|
property string name: "jobdesc"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Vertragsbeginn")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: contractstart
|
||||||
|
|
||||||
|
property string name: "contractstart"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator {
|
||||||
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onPressed: event => {
|
||||||
|
if (event.key !== Qt.Key_Backspace) {
|
||||||
|
var len = contractstart.length;
|
||||||
|
var bd = contractstart.text;
|
||||||
|
if (len === 2 || len === 5)
|
||||||
|
contractstart.text = bd + ".";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Vertragsende")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: contractend
|
||||||
|
|
||||||
|
property string name: "contractend"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
validator: RegularExpressionValidator {
|
||||||
|
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onPressed: event => {
|
||||||
|
if (event.key !== Qt.Key_Backspace) {
|
||||||
|
var len = contractend.length;
|
||||||
|
var bd = contractend.text;
|
||||||
|
if (len === 2 || len === 5)
|
||||||
|
contractend.text = bd + ".";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Arbeitszeiten Tage")
|
||||||
|
}
|
||||||
|
ComboBox {
|
||||||
|
id: workdays
|
||||||
|
|
||||||
|
property string name: "workdays"
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
model: ["1", "2", "3", "4", "5", "6", "7"]
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Stunden")
|
||||||
|
}
|
||||||
|
ComboBox {
|
||||||
|
id: workhours
|
||||||
|
|
||||||
|
property string name: "workhours"
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
model: ["1", "2", "3", "4", "5", "6", "7", "8"]
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Briefanrede")
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: briefAnrede
|
||||||
|
|
||||||
|
property string name: "formofaddress"
|
||||||
|
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderTextColor: "red"
|
||||||
|
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.columnSpan: 4
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
63
Gui/Employees/EmployeeVarious.qml
Normal file
63
Gui/Employees/EmployeeVarious.qml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
id: applicantVarious
|
||||||
|
columns: 2
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
Layout.preferredWidth: bankAccount.longest.width
|
||||||
|
text: qsTr("Grad der Behinderung")
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "disability"
|
||||||
|
id: disability
|
||||||
|
placeholderText: "0,0"
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Disponent")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "disponent"
|
||||||
|
id: disponent
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Kostenstelle")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "office"
|
||||||
|
id: office
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Fremdlohn-Nr.")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "empreference"
|
||||||
|
id: empreference
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
143
Gui/Employees/EmployeesTable.qml
Normal file
143
Gui/Employees/EmployeesTable.qml
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
import Qt.labs.qmlmodels
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
SearchBar {
|
||||||
|
onSubmitted: (query) => {
|
||||||
|
applicantModel.searchQuery = query
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QuickFilter {
|
||||||
|
model: ListModel {
|
||||||
|
ListElement {
|
||||||
|
name: "Alle"
|
||||||
|
selected: true
|
||||||
|
text: qsTr("Alle")
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Bewerber"
|
||||||
|
selected: false
|
||||||
|
text: qsTr("Bewerber")
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Mitarbeiter"
|
||||||
|
selected: false
|
||||||
|
text: qsTr("Kunde")
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Erledigt"
|
||||||
|
selected: false
|
||||||
|
text: qsTr("Erledigt")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onSelectedChanged: name => {
|
||||||
|
employee_model.viewCriterion(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
flat: true
|
||||||
|
icon.source: "qrc:/images/PlusCircle.svg"
|
||||||
|
text: qsTr("Bewerber Hinzufügen")
|
||||||
|
|
||||||
|
onClicked: contentStack.push("AddApplicant.qml")
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
flat: true
|
||||||
|
icon.source: "qrc:/images/PlusCircle.svg"
|
||||||
|
text: qsTr("Mitarbeiter Hinzufügen")
|
||||||
|
|
||||||
|
onClicked: contentStack.push("AddEmployee.qml")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: 2
|
||||||
|
|
||||||
|
HorizontalHeaderView {
|
||||||
|
movableColumns: true
|
||||||
|
syncView: employeesTable
|
||||||
|
|
||||||
|
delegate: Rectangle {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
color: Colors.primary
|
||||||
|
implicitHeight: 33
|
||||||
|
implicitWidth: 1
|
||||||
|
|
||||||
|
Text {
|
||||||
|
color: Colors.primaryContrast
|
||||||
|
elide: Text.ElideRight
|
||||||
|
font: Typography.smallBold
|
||||||
|
height: parent.height
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
padding: Dimensions.s
|
||||||
|
text: model.display
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TableView {
|
||||||
|
id: employeesTable
|
||||||
|
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
columnSpacing: 2
|
||||||
|
model: applicantModel
|
||||||
|
resizableColumns: true
|
||||||
|
rowSpacing: 2
|
||||||
|
selectionBehavior: TableView.SelectRows
|
||||||
|
z: 1
|
||||||
|
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
policy: ScrollBar.AsNeeded
|
||||||
|
}
|
||||||
|
delegate: Rectangle {
|
||||||
|
required property bool selected
|
||||||
|
|
||||||
|
color: selected ? Colors.primaryHighlight : Colors.transparent
|
||||||
|
implicitHeight: 33
|
||||||
|
implicitWidth: employeesTable.width / employeesTable.columns
|
||||||
|
|
||||||
|
Text {
|
||||||
|
color: Colors.foreground
|
||||||
|
elide: Text.ElideRight
|
||||||
|
font: Typography.small
|
||||||
|
height: parent.height
|
||||||
|
padding: Dimensions.s
|
||||||
|
text: (model.display === null || model.display === undefined) ? "" : model.display
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
contentStack.push("EmployeeDetails.qml", { row });
|
||||||
|
}
|
||||||
|
onEntered: {
|
||||||
|
employeesTable.selectionModel.select(employeesTable.model.index(row, 0), ItemSelectionModel.SelectCurrent | ItemSelectionModel.Rows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
selectionModel: ItemSelectionModel {
|
||||||
|
model: employeesTable.model
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
1
Gui/Employees/qmldir
Normal file
1
Gui/Employees/qmldir
Normal file
@@ -0,0 +1 @@
|
|||||||
|
module Employees
|
||||||
@@ -7,11 +7,14 @@ import QtCore
|
|||||||
import "../js/qmldict.js" as Qmldict
|
import "../js/qmldict.js" as Qmldict
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
property string recpass: ""
|
property string recpass: ""
|
||||||
property bool adminAvailable: true
|
property bool adminAvailable: true
|
||||||
|
|
||||||
|
|
||||||
|
id: firstStartItem
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
StackView
|
StackView
|
||||||
{
|
{
|
||||||
@@ -70,12 +73,11 @@ Item
|
|||||||
MessageDialog
|
MessageDialog
|
||||||
{
|
{
|
||||||
id: recoveryDialog
|
id: recoveryDialog
|
||||||
|
|
||||||
text: qsTr("Diesen Wiederherstellungscode musst du sicher aufbewahren!\nMöchtest du das jetzt machen?")
|
text: qsTr("Diesen Wiederherstellungscode musst du sicher aufbewahren!\nMöchtest du das jetzt machen?")
|
||||||
title: qsTr("Wiederherstellen")
|
title: qsTr("Wiederherstellen")
|
||||||
buttons: MessageDialog.Yes | MessageDialog.No
|
buttons: MessageDialog.Yes | MessageDialog.No
|
||||||
onAccepted: recoveryPaswordDialog.open()
|
onAccepted: recoveryPaswordDialog.open()
|
||||||
onRejected: gotoLogin()
|
onRejected: contentStack.replace("LoginSreen.qml")
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageDialog
|
MessageDialog
|
||||||
@@ -87,6 +89,7 @@ Item
|
|||||||
|
|
||||||
Dialog
|
Dialog
|
||||||
{
|
{
|
||||||
|
|
||||||
id: recoveryPaswordDialog
|
id: recoveryPaswordDialog
|
||||||
modal: true
|
modal: true
|
||||||
title: qsTr("Wiederherstellung")
|
title: qsTr("Wiederherstellung")
|
||||||
@@ -115,6 +118,19 @@ Item
|
|||||||
implicitWidth: 300
|
implicitWidth: 300
|
||||||
placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben")
|
placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben")
|
||||||
}
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Wiederherstellungspasswort eingeben: ")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
id: repeatRecoveryPaswordInput
|
||||||
|
text: ""
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
implicitWidth: 300
|
||||||
|
placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -131,7 +147,7 @@ Item
|
|||||||
if (!adminAvailable) config.saveRecoveryKey(saveRecoveryDialog.currentFile, recpass)
|
if (!adminAvailable) config.saveRecoveryKey(saveRecoveryDialog.currentFile, recpass)
|
||||||
else config.getRecoveryKey(saveRecoveryDialog.currentFile, recpass)
|
else config.getRecoveryKey(saveRecoveryDialog.currentFile, recpass)
|
||||||
|
|
||||||
gotoLogin()
|
contentStack.replace("LoginSreen.qml")
|
||||||
}
|
}
|
||||||
|
|
||||||
onRejected:
|
onRejected:
|
||||||
@@ -140,6 +156,12 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loader
|
||||||
|
{
|
||||||
|
id: utilityDialogs
|
||||||
|
source: "UtilityDialogs.qml"
|
||||||
|
}
|
||||||
|
|
||||||
Component.onCompleted:
|
Component.onCompleted:
|
||||||
{
|
{
|
||||||
config.dbConnectionError.connect(onDbConnectionError)
|
config.dbConnectionError.connect(onDbConnectionError)
|
||||||
@@ -147,15 +169,10 @@ Item
|
|||||||
config.backupEncryptionKey.connect(onBackupEncryptionKey)
|
config.backupEncryptionKey.connect(onBackupEncryptionKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
function gotoLogin()
|
|
||||||
{
|
|
||||||
appLoader.source= "LoginScreen.qml"
|
|
||||||
topBar.visible = true
|
|
||||||
}
|
|
||||||
|
|
||||||
function onBackupEncryptionKey()
|
function onBackupEncryptionKey()
|
||||||
{
|
{
|
||||||
recoveryDialog.open()
|
|
||||||
|
utilityDialogs.item.recoveryDialog.open()
|
||||||
}
|
}
|
||||||
|
|
||||||
function onDbConnectionError(msg, success)
|
function onDbConnectionError(msg, success)
|
||||||
@@ -176,5 +193,4 @@ Item
|
|||||||
firstStart.push("AdminUserConfig.qml")
|
firstStart.push("AdminUserConfig.qml")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,210 +4,134 @@ import QtQuick.Controls
|
|||||||
import QtQuick.Dialogs
|
import QtQuick.Dialogs
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
Item {
|
||||||
Item
|
|
||||||
{
|
|
||||||
property string recpass: ""
|
property string recpass: ""
|
||||||
|
|
||||||
|
function dbConnectionFailed(msg) {
|
||||||
|
notifications.notificationDialog.informativeText = msg;
|
||||||
|
notifications.notificationDialog.text = "Verbindung zum Datenbankserver verloren";
|
||||||
|
notifications.notificationDialog.open();
|
||||||
|
}
|
||||||
|
function getEncryptionKey() {
|
||||||
|
recoveryPaswordDialog.open();
|
||||||
|
}
|
||||||
|
function loggedin() {
|
||||||
|
contentStack.replace("Dashboard.qml");
|
||||||
|
}
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: Dimensions.l
|
||||||
|
|
||||||
ColumnLayout
|
Component.onCompleted: {
|
||||||
{
|
loggedin_user.loginOkay.connect(loggedin);
|
||||||
|
config.invalidEncryptionKey.connect(getEncryptionKey);
|
||||||
|
config.checkEncryptionKey();
|
||||||
|
loggedin_user.noDbConnection.connect(dbConnectionFailed);
|
||||||
|
benutzerName.forceActiveFocus();
|
||||||
|
}
|
||||||
|
|
||||||
anchors.fill: parent
|
ColumnLayout {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: Dimensions.m
|
||||||
|
|
||||||
FontLoader
|
Label {
|
||||||
{
|
|
||||||
id: helloStranger
|
|
||||||
source: "qrc:/fonts/HelloStranger.otf"
|
|
||||||
}
|
|
||||||
|
|
||||||
FontLoader
|
|
||||||
{
|
|
||||||
id: damarWulan
|
|
||||||
source: "qrc:/fonts/Damarwulan.ttf"
|
|
||||||
}
|
|
||||||
|
|
||||||
FontLoader
|
|
||||||
{
|
|
||||||
id: hussarPrint
|
|
||||||
source: "qrc:/fonts/HussarPrintA.otf"
|
|
||||||
}
|
|
||||||
|
|
||||||
FontLoader
|
|
||||||
{
|
|
||||||
id: reginaldScript
|
|
||||||
source: "qrc:/fonts/ReginaldScript.ttf"
|
|
||||||
}
|
|
||||||
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
height: 65
|
|
||||||
}
|
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr ("Login*****")
|
|
||||||
font.family: helloStranger.font.family
|
|
||||||
font.weight: helloStranger.font.weight
|
|
||||||
font.styleName: helloStranger.font.styleName
|
|
||||||
font.pixelSize: 89
|
|
||||||
font.bold: true
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
Layout.bottomMargin: Dimensions.l
|
||||||
|
font: Typography.h1
|
||||||
|
text: qsTr("Login")
|
||||||
}
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Benutzername")
|
||||||
|
|
||||||
Item
|
TextField {
|
||||||
{
|
|
||||||
height: 25
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
spacing: 15
|
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr ("Benutzername")
|
|
||||||
minimumPixelSize: 20
|
|
||||||
Layout.preferredWidth: 150
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
font.family: damarWulan.font.family
|
|
||||||
font.weight: damarWulan.font.weight
|
|
||||||
font.styleName: damarWulan.font.styleName
|
|
||||||
font.pixelSize: 21
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
id: benutzerName
|
id: benutzerName
|
||||||
placeholderText: qsTr ("Benutzernamen eingeben")
|
|
||||||
|
focus: true
|
||||||
implicitWidth: 300
|
implicitWidth: 300
|
||||||
font: hussarPrint.font
|
placeholderText: qsTr("Benutzernamen eingeben")
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
onAccepted: {
|
||||||
{
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
spacing: 15
|
|
||||||
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
minimumPixelSize: 20
|
|
||||||
Layout.preferredWidth: 150
|
|
||||||
text: qsTr ("Passwort")
|
|
||||||
font.family: damarWulan.font.family
|
|
||||||
font.weight: damarWulan.font.weight
|
|
||||||
font.styleName: damarWulan.font.styleName
|
|
||||||
font.pixelSize: 21
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
id: passwort
|
|
||||||
placeholderText: qsTr ("Passwort eingeben")
|
|
||||||
implicitWidth: 300
|
|
||||||
font: hussarPrint.font
|
|
||||||
echoMode: TextInput.Password
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.preferredWidth: 465
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
text: qsTr ("Feierabend für heute!")
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
font: reginaldScript.font
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
if (benutzerName.text.trim() && passwort.text.trim())
|
if (benutzerName.text.trim() && passwort.text.trim())
|
||||||
loggedin_user.login(benutzerName.text.trim(), passwort.text)
|
loggedin_user.login(benutzerName.text.trim(), passwort.text);
|
||||||
|
else if (benutzerName.text.trim())
|
||||||
|
passwort.forceActiveFocus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Field {
|
||||||
|
label: qsTr("Passwort")
|
||||||
|
|
||||||
Item
|
TextField {
|
||||||
{
|
id: passwort
|
||||||
Layout.fillHeight: true
|
|
||||||
|
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
implicitWidth: 300
|
||||||
|
placeholderText: qsTr("Passwort eingeben")
|
||||||
|
|
||||||
|
onAccepted: {
|
||||||
|
if (benutzerName.text.trim() && passwort.text.trim())
|
||||||
|
loggedin_user.login(benutzerName.text.trim(), passwort.text);
|
||||||
|
else if (passwort.text.trim())
|
||||||
|
benutzerName.forceActiveFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Button {
|
||||||
|
Layout.topMargin: Dimensions.m
|
||||||
|
icon.source: "qrc:/images/ArrowRightEndOnRectangle.svg"
|
||||||
|
implicitWidth: parent.width
|
||||||
|
text: qsTr("Login")
|
||||||
|
|
||||||
Dialog
|
onClicked: {
|
||||||
{
|
if (benutzerName.text.trim() && passwort.text.trim())
|
||||||
|
loggedin_user.login(benutzerName.text.trim(), passwort.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
Dialog {
|
||||||
id: recoveryPaswordDialog
|
id: recoveryPaswordDialog
|
||||||
modal: true
|
|
||||||
title: qsTr("Wiederherstellung")
|
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
modal: true
|
||||||
standardButtons: Dialog.Ok | Dialog.Cancel
|
standardButtons: Dialog.Ok | Dialog.Cancel
|
||||||
onAccepted:
|
title: qsTr("Wiederherstellung")
|
||||||
{
|
|
||||||
recpass = recoveryPaswordInput.text
|
onAccepted: {
|
||||||
getRecoveryDialog.open()
|
recpass = recoveryPaswordInput.text;
|
||||||
|
getRecoveryDialog.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout {
|
||||||
{
|
RowLayout {
|
||||||
RowLayout
|
Label {
|
||||||
{
|
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Wiederherstellungspasswort eingeben: ")
|
text: qsTr("Wiederherstellungspasswort eingeben: ")
|
||||||
}
|
}
|
||||||
|
TextField {
|
||||||
TextField
|
|
||||||
{
|
|
||||||
id: recoveryPaswordInput
|
id: recoveryPaswordInput
|
||||||
text: ""
|
|
||||||
echoMode: TextInput.Password
|
echoMode: TextInput.Password
|
||||||
implicitWidth: 300
|
implicitWidth: 300
|
||||||
placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben")
|
placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben")
|
||||||
|
text: ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
FileDialog {
|
||||||
FileDialog
|
|
||||||
{
|
|
||||||
id: getRecoveryDialog
|
id: getRecoveryDialog
|
||||||
title: qsTr("Wiederherstellungsdatei")
|
|
||||||
|
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
|
||||||
fileMode: FileDialog.OpenFile
|
fileMode: FileDialog.OpenFile
|
||||||
nameFilters: ["PYQCRM Recovery files (*.pyqrec)"]
|
nameFilters: ["PYQCRM Recovery files (*.pyqrec)"]
|
||||||
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
|
title: qsTr("Wiederherstellungsdatei")
|
||||||
|
|
||||||
onAccepted: config.getRecoveryKey(getRecoveryDialog.currentFile, recpass)
|
onAccepted: config.getRecoveryKey(getRecoveryDialog.currentFile, recpass)
|
||||||
onRejected: quit()
|
onRejected: quit()
|
||||||
}
|
}
|
||||||
Notifications
|
Notifications {
|
||||||
{
|
id: notifications
|
||||||
id: oschkar
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted:
|
|
||||||
{
|
|
||||||
loggedin_user.loginOkay.connect(loggedin)
|
|
||||||
config.invalidEncryptionKey.connect(getEncryptionKey)
|
|
||||||
config.checkEncryptionKey()
|
|
||||||
loggedin_user.noDbConnection.connect(dbConnectionFailed)
|
|
||||||
}
|
|
||||||
|
|
||||||
function loggedin()
|
|
||||||
{
|
|
||||||
appLoader.source = "Dashboard.qml"
|
|
||||||
}
|
|
||||||
|
|
||||||
function getEncryptionKey()
|
|
||||||
{
|
|
||||||
recoveryPaswordDialog.open()
|
|
||||||
}
|
|
||||||
function dbConnectionFailed(msg)
|
|
||||||
{
|
|
||||||
oschkar.notificationBox.informativeText = msg
|
|
||||||
oschkar.notificationBox.text = "Verbindung zum Datenbankserver verloren"
|
|
||||||
oschkar.notificationBox.open()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
22
Gui/MiscConf.qml
Executable file
22
Gui/MiscConf.qml
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
property alias sysTray: sysTray
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: 35
|
||||||
|
|
||||||
|
Switch
|
||||||
|
{
|
||||||
|
id: sysTray
|
||||||
|
text: qsTr("Beim minimieren, in der Taskleiste anzeigen")
|
||||||
|
checked: config.systray()
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
120
Gui/Navigation.qml
Normal file
120
Gui/Navigation.qml
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
property bool onSubPage: false
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
spacing: 0
|
||||||
|
z: 3
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
onSubPage = Qt.binding(() => contentStack.depth > 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
top: parent.top
|
||||||
|
}
|
||||||
|
ButtonGroup {
|
||||||
|
id: mainNav
|
||||||
|
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
ButtonGroup.group: mainNav
|
||||||
|
icon.source: "qrc:/images/Square3Stack3D-Outline.svg"
|
||||||
|
target: "/Gui/Dashboard.qml"
|
||||||
|
text: qsTr("Dashboard")
|
||||||
|
visible: !onSubPage
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
ButtonGroup.group: mainNav
|
||||||
|
icon.source: "qrc:/images/UserGroup-Outline.svg"
|
||||||
|
target: "/Gui/CustomersTable.qml"
|
||||||
|
text: qsTr("Kunden")
|
||||||
|
visible: !onSubPage
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
ButtonGroup.group: mainNav
|
||||||
|
icon.source: "qrc:/images/BuildingOffice2-Outline.svg"
|
||||||
|
target: "/Gui/ObjectsTable.qml"
|
||||||
|
text: qsTr("Objekt")
|
||||||
|
visible: !onSubPage
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
ButtonGroup.group: mainNav
|
||||||
|
icon.source: "qrc:/images/Identification-Outline.svg"
|
||||||
|
target: "/Gui/Employees/EmployeesTable.qml"
|
||||||
|
text: qsTr("Mitarbeiter")
|
||||||
|
visible: !onSubPage
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
ButtonGroup.group: mainNav
|
||||||
|
icon.source: "qrc:/images/RectangleStack-Outline.svg"
|
||||||
|
target: "/Gui/OffersTable.qml"
|
||||||
|
text: qsTr("Angebote")
|
||||||
|
visible: !onSubPage
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
ButtonGroup.group: mainNav
|
||||||
|
icon.source: "qrc:/images/Wallet-Outline.svg"
|
||||||
|
text: qsTr("Abrechnung")
|
||||||
|
visible: !onSubPage
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
icon.source: "qrc:/images/ArrowLeftCircle-Outline.svg"
|
||||||
|
text: qsTr("Zurück")
|
||||||
|
visible: onSubPage
|
||||||
|
checkable: false
|
||||||
|
|
||||||
|
onClicked: contentStack.pop();
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
BarButton {
|
||||||
|
checkable: false
|
||||||
|
icon.source: "qrc:/images/Bars3.svg"
|
||||||
|
|
||||||
|
onClicked: mainMenu.open()
|
||||||
|
|
||||||
|
Menu {
|
||||||
|
id: mainMenu
|
||||||
|
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Einstellungen")
|
||||||
|
|
||||||
|
onTriggered: {
|
||||||
|
// TODO: Check if logged-in user is admin first!!
|
||||||
|
|
||||||
|
contentStack.push("PyqcrmConf.qml");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuSeparator {
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Als PDF exportieren")
|
||||||
|
}
|
||||||
|
MenuSeparator {
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Drucken")
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Erweiterter Druck")
|
||||||
|
|
||||||
|
onTriggered: printerDialog.show()
|
||||||
|
}
|
||||||
|
MenuSeparator {
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Über PYQCRM")
|
||||||
|
|
||||||
|
onTriggered: readMeWin.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
33
Gui/NoCustomerContact.qml
Normal file
33
Gui/NoCustomerContact.qml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
columns: 2
|
||||||
|
rowSpacing: 25
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "darksalmon"
|
||||||
|
font.bold: true
|
||||||
|
text: qsTr("Kein Ansprechpartner gefunden")
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
color: "goldenrod"
|
||||||
|
text: qsTr("Was willst du tun?")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grid row
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.columnSpan: 2
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,74 +1,27 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
Rectangle
|
ColumnLayout {
|
||||||
{
|
anchors.centerIn: parent
|
||||||
anchors.fill: parent
|
spacing: Dimensions.s
|
||||||
color: "slateblue"
|
height: implicitHeight
|
||||||
|
|
||||||
Rectangle
|
H1 {
|
||||||
{
|
Layout.alignment: Qt.AlignCenter
|
||||||
id: info
|
text: qsTr("Keine Verbindung zur Datenbank!")
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
color: Colors.foreground
|
||||||
color: "slateblue"
|
|
||||||
implicitHeight: 55
|
|
||||||
implicitWidth: parent.width / 4
|
|
||||||
y: parent.height / 4
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
anchors.centerIn: parent
|
|
||||||
text: qsTr("Keine Verbindung zur Datenbank!")
|
|
||||||
color: "moccasin"
|
|
||||||
font.bold: true
|
|
||||||
font.pixelSize: 45
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
H2 {
|
||||||
Rectangle
|
Layout.alignment: Qt.AlignCenter
|
||||||
{
|
text: qsTr("Programm kann nicht starten…")
|
||||||
id: nostart
|
color: Colors.foreground
|
||||||
anchors.top: info.bottom
|
|
||||||
color: "slateblue"
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
implicitHeight: 55
|
|
||||||
implicitWidth: parent.width / 4
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
text: qsTr("Programm kann nicht starten..")
|
|
||||||
color: "moccasin"
|
|
||||||
anchors.centerIn: parent
|
|
||||||
font.bold: true
|
|
||||||
font.pixelSize: 45
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Button {
|
||||||
|
Layout.topMargin: Dimensions.l
|
||||||
|
Layout.alignment: Qt.AlignCenter
|
||||||
|
text: qsTr("Beenden")
|
||||||
|
|
||||||
Rectangle
|
onClicked: Qt.quit()
|
||||||
{
|
|
||||||
anchors.top: nostart.bottom
|
|
||||||
anchors.topMargin: 25
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
color: "slateblue"
|
|
||||||
implicitHeight: 55
|
|
||||||
implicitWidth: parent.width / 4
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
width: parent.width
|
|
||||||
height: 75
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
text: qsTr("Beenden")
|
|
||||||
color: "moccasin"
|
|
||||||
anchors.centerIn: parent
|
|
||||||
font.bold: true
|
|
||||||
font.pixelSize: 45
|
|
||||||
}
|
|
||||||
anchors.centerIn: parent
|
|
||||||
background: Rectangle
|
|
||||||
{
|
|
||||||
color: "dodgerblue"
|
|
||||||
radius: 50
|
|
||||||
}
|
|
||||||
onClicked: Qt.quit()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ import QtQuick.Dialogs
|
|||||||
|
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
id: oschkar
|
|
||||||
property alias notificationBox: notificationDialog
|
|
||||||
MessageDialog
|
MessageDialog
|
||||||
{
|
{
|
||||||
id: notificationDialog
|
id: notificationDialog
|
||||||
|
|||||||
@@ -6,13 +6,22 @@ GridLayout
|
|||||||
{
|
{
|
||||||
property var contacts: null
|
property var contacts: null
|
||||||
columns: 2
|
columns: 2
|
||||||
|
Layout.fillWidth: true
|
||||||
CheckBox
|
Label
|
||||||
{
|
{
|
||||||
id: contactperson
|
text: qsTr("Position")
|
||||||
text: qsTr("Ansprechpartner")
|
Layout.alignment: Qt.AlignRight | Qt.AlignTop
|
||||||
Layout.columnSpan: 2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
//property string name: "contacttype"
|
||||||
|
id: posizion
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: false
|
||||||
|
model: [qsTr("Beirat"), qsTr("Hausmeister"), qsTr("Hausbewohner"), qsTr("Sonstiges")]
|
||||||
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Anrede")
|
text: qsTr("Anrede")
|
||||||
@@ -21,61 +30,49 @@ GridLayout
|
|||||||
ComboBox
|
ComboBox
|
||||||
{
|
{
|
||||||
id: title
|
id: title
|
||||||
model: [qsTr("Herr"),qsTr("Frau")]
|
model: [qsTr("Herr"), qsTr("Frau"), qsTr("Keine Angabe")]
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
enabled: contactperson.checked
|
|
||||||
}
|
}
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Vorname")
|
text: qsTr("Vorname*")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
id: firstname
|
id: firstname
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
placeholderText: "Pflichtfeld"
|
// onTextChanged: checkContactFields()
|
||||||
placeholderTextColor: "red"
|
|
||||||
enabled: contactperson.checked
|
|
||||||
}
|
}
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Nachname")
|
text: qsTr("Nachname*")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
id: lastname
|
id: lastname
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
placeholderText: "Pflichtfeld"
|
|
||||||
placeholderTextColor: "red"
|
|
||||||
enabled: contactperson.checked
|
|
||||||
}
|
}
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Telefonnummer")
|
text: mobile.text ? qsTr("Telefonnummer") : qsTr("Telefonnummer*")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
id: phonenumber
|
id: phonenumber
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
placeholderText: "Pflichtfeld"
|
|
||||||
placeholderTextColor: "red"
|
|
||||||
enabled: contactperson.checked
|
|
||||||
}
|
}
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Position")
|
text: phonenumber.text ? qsTr("Mobil") : qsTr("Mobil*")
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
id: posizion
|
id: mobile
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
placeholderText: "Pflichtfeld"
|
|
||||||
placeholderTextColor: "red"
|
|
||||||
enabled: contactperson.checked
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
@@ -92,34 +89,60 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: removeContact
|
id: removeContact
|
||||||
text: qsTr("Entfernen")
|
text: qsTr("Entfernen")
|
||||||
enabled: contactperson.checked
|
enabled: false
|
||||||
|
onClicked:
|
||||||
|
{
|
||||||
|
|
||||||
|
if (contactView.highlightFollowsCurrentItem)
|
||||||
|
{
|
||||||
|
delete contacts[contactView.currentIndex]
|
||||||
|
contacts = contacts.filter(elm => elm)
|
||||||
|
contactModel.remove(contactView.currentIndex)
|
||||||
|
contactView.highlightFollowsCurrentItem = false
|
||||||
|
contactView.currentIndex = -1
|
||||||
|
if (Object.keys(contacts).length === 0)
|
||||||
|
{
|
||||||
|
enabled = false
|
||||||
|
console.log(contacts)
|
||||||
|
}
|
||||||
|
checkFields()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
id: addContact
|
id: addContact
|
||||||
text: qsTr("Hinzufügen")
|
text: qsTr("Hinzufügen")
|
||||||
enabled: contactperson.checked
|
enabled: firstname.text.trim() && lastname.text.trim() && (phonenumber.text.trim() || mobile.text.trim()) && (contacts === null || Object.keys(contacts).length < 3)
|
||||||
onClicked:
|
onClicked:
|
||||||
{
|
{
|
||||||
var num_contacts = 0
|
var num_contacts = 0
|
||||||
if (contacts !== null && contacts !== undefined) num_contacts = Object.keys(contacts).length
|
if (contacts !== null && contacts !== undefined) num_contacts = Object.keys(contacts).length
|
||||||
else contacts = {}
|
else contacts = []
|
||||||
if (num_contacts < 3 && firstname.text.trim() !== "" && lastname.text.trim() !== "" && phonenumber.text.trim() !== "" && posizion.text.trim() !== "")
|
if (num_contacts < 3 && firstname.text.trim() !== "" && lastname.text.trim() !== "" && (phonenumber.text.trim() !== "" || mobile.text.trim() !== ""))
|
||||||
{
|
{
|
||||||
contacts[num_contacts] = {}
|
contacts[num_contacts] = {}
|
||||||
contacts[num_contacts]["title"] = title.currentText
|
contacts[num_contacts]["title"] = title.currentText
|
||||||
|
contacts[num_contacts]["position"] = posizion.currentText
|
||||||
contacts[num_contacts]["fname"] = firstname.text.trim()
|
contacts[num_contacts]["fname"] = firstname.text.trim()
|
||||||
contacts[num_contacts]["lname"] = lastname.text.trim()
|
contacts[num_contacts]["lname"] = lastname.text.trim()
|
||||||
contacts[num_contacts]["phone"] = phonenumber.text.trim()
|
contacts[num_contacts]["phone"] = phonenumber.text.trim()
|
||||||
contacts[num_contacts]["position"] = posizion.text.trim()
|
contacts[num_contacts]["mobile"] = mobile.text.trim()
|
||||||
|
contactModel.append({name: title.currentText + " " + firstname.text.trim() + " " + lastname.text.trim(), phone: phonenumber.text.trim(), mobile: mobile.text.trim(), posizion: posizion.currentText})
|
||||||
contactModel.append({name: title.currentText + " " + firstname.text.trim() + " " + lastname.text.trim(), phone: phonenumber.text.trim(), posizion: posizion.text.trim()})
|
if (checkFields())
|
||||||
|
{
|
||||||
|
saveBtn.enabled = true
|
||||||
|
}
|
||||||
firstname.text = ""
|
firstname.text = ""
|
||||||
lastname.text = ""
|
lastname.text = ""
|
||||||
phonenumber.text = ""
|
phonenumber.text = ""
|
||||||
posizion.text = ""
|
mobile.text = ""
|
||||||
|
posizion.currentIndex = 0
|
||||||
|
title.currentIndex = 0
|
||||||
|
|
||||||
|
removeContact.enabled = true
|
||||||
|
checkFields()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,86 +159,159 @@ GridLayout
|
|||||||
id: contactModel
|
id: contactModel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Component
|
||||||
|
// {
|
||||||
|
// id: headline
|
||||||
|
// Row
|
||||||
|
// {
|
||||||
|
// spacing: 9
|
||||||
|
// Text
|
||||||
|
// {
|
||||||
|
// id: cpname
|
||||||
|
// text: qsTr("Name")
|
||||||
|
// font.bold: true
|
||||||
|
// horizontalAlignment: Text.AlignLeft
|
||||||
|
// color: "white"
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Text
|
||||||
|
// {
|
||||||
|
// id: cpphone
|
||||||
|
// text: qsTr("Telefon")
|
||||||
|
// font.bold: true
|
||||||
|
// horizontalAlignment: Text.AlignLeft
|
||||||
|
// color: "white"
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Text
|
||||||
|
// {
|
||||||
|
// id: cpmobile
|
||||||
|
// text: qsTr("Mobil")
|
||||||
|
// font.bold: true
|
||||||
|
// horizontalAlignment: Text.AlignLeft
|
||||||
|
// color: "white"
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Text
|
||||||
|
// {
|
||||||
|
// id: cppos
|
||||||
|
// text: qsTr("Position")
|
||||||
|
// font.bold: true
|
||||||
|
// horizontalAlignment: Text.AlignLeft
|
||||||
|
// color: "white"
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Text
|
||||||
|
// {
|
||||||
|
// id: cttype
|
||||||
|
// text: qsTr("Typ")
|
||||||
|
// font.bold: true
|
||||||
|
// horizontalAlignment: Text.AlignLeft
|
||||||
|
// color: "white"
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
Component
|
Component
|
||||||
{
|
{
|
||||||
id: headline
|
id: highlight
|
||||||
Row
|
Rectangle
|
||||||
{
|
{
|
||||||
Text
|
width: parent.width
|
||||||
|
color: "lightsteelblue"; radius: 5
|
||||||
|
y: contactView.currentItem.y
|
||||||
|
Behavior on y
|
||||||
{
|
{
|
||||||
id: cpname
|
SpringAnimation
|
||||||
text: qsTr("Name")
|
{
|
||||||
width: 175
|
spring: 3
|
||||||
font.bold: true
|
damping: 0.2
|
||||||
horizontalAlignment: Text.AlignLeft
|
}
|
||||||
color: "black"
|
|
||||||
}
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
id: cpphone
|
|
||||||
text: qsTr("Telefon")
|
|
||||||
width: 100
|
|
||||||
font.bold: true
|
|
||||||
horizontalAlignment: Text.AlignLeft
|
|
||||||
color: "black"
|
|
||||||
}
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
id: cppos
|
|
||||||
text: qsTr("Position")
|
|
||||||
width: 150
|
|
||||||
font.bold: true
|
|
||||||
horizontalAlignment: Text.AlignLeft
|
|
||||||
color: "black"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
{
|
{
|
||||||
|
id: mainRect
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
implicitHeight: 100
|
implicitHeight: 100
|
||||||
color: firstname.palette.base
|
color: firstname.palette.base
|
||||||
border.color: firstname.activeFocus? firstname.palette.highlight: firstname.palette.base
|
border.color: firstname.activeFocus? firstname.palette.highlight: firstname.palette.base
|
||||||
ListView
|
clip: true
|
||||||
|
|
||||||
|
ScrollView
|
||||||
{
|
{
|
||||||
id: contactView
|
id: objContactView
|
||||||
implicitHeight: parent.height
|
// Layout.fillWidth: true
|
||||||
model: contactModel
|
// Layout.preferredHeight: 100
|
||||||
|
//Layout.columnSpan: 3
|
||||||
|
anchors.fill: mainRect
|
||||||
|
ScrollBar.vertical.policy: ScrollBar.AlwaysOn
|
||||||
|
|
||||||
header: headline
|
|
||||||
|
|
||||||
delegate: Item
|
ListView
|
||||||
{
|
{
|
||||||
width: parent.width
|
id: contactView
|
||||||
height: 15
|
anchors.fill: objContactView
|
||||||
|
// implicitHeight: objContactView.height
|
||||||
Row
|
// implicitWidth: objContactView.width
|
||||||
|
model: contactModel
|
||||||
|
// header: headline
|
||||||
|
highlight: Rectangle { color: "slategray"; radius: 3}
|
||||||
|
highlightFollowsCurrentItem: false
|
||||||
|
//focus: true test
|
||||||
|
onActiveFocusChanged: if(!focus) currentIndex = -1
|
||||||
|
delegate: Item
|
||||||
{
|
{
|
||||||
//spacing: 9
|
width: contactView.width
|
||||||
Text
|
height: 77
|
||||||
|
|
||||||
|
MouseArea
|
||||||
{
|
{
|
||||||
text: model.name
|
anchors.fill: parent
|
||||||
width: 175
|
onClicked:
|
||||||
horizontalAlignment: Text.AlignLeft
|
{
|
||||||
|
contactView.currentIndex = index
|
||||||
|
contactView.highlightFollowsCurrentItem = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Text
|
|
||||||
|
|
||||||
|
Column
|
||||||
{
|
{
|
||||||
text: model.phone
|
anchors.margins: 5
|
||||||
width: 100
|
|
||||||
horizontalAlignment: Text.AlignLeft
|
//spacing: 3
|
||||||
}
|
Text
|
||||||
Text
|
{
|
||||||
{
|
text: '<b>' + qsTr('Name: ') + '</b>' + model.name
|
||||||
text: model.posizion
|
horizontalAlignment: Text.AlignLeft
|
||||||
width: 150
|
color: "white"
|
||||||
horizontalAlignment: Text.AlignLeft
|
}
|
||||||
}
|
Text
|
||||||
}
|
{
|
||||||
}
|
text: '<b>' + qsTr('Telefon: ') + '</b>' + model.phone
|
||||||
}
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
color: "white"
|
||||||
|
}
|
||||||
|
Text
|
||||||
|
{
|
||||||
|
text: '<b>' + qsTr('Handy: ') + '</b>' + model.mobile
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
color: "white"
|
||||||
|
}
|
||||||
|
Text
|
||||||
|
{
|
||||||
|
text: '<b>' + qsTr('Position: ') + '</b>' + model.posizion
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
color: "white"
|
||||||
|
}
|
||||||
|
|
||||||
|
} // Column
|
||||||
|
} // delegate
|
||||||
|
} // Listview
|
||||||
|
} // Scrollview
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,125 +4,120 @@ import QtQuick.Controls
|
|||||||
|
|
||||||
GridLayout
|
GridLayout
|
||||||
{
|
{
|
||||||
property var employeeForm: null
|
// property var employeeForm: null
|
||||||
property var employees: null
|
// property var employees: null
|
||||||
id: oaoemployee
|
// id: oaoemployee
|
||||||
columns: 2
|
// columns: 2
|
||||||
rows: 4
|
// rows: 4
|
||||||
Label
|
// Label
|
||||||
{
|
// {
|
||||||
text: qsTr("Mitarbeiter")
|
// text: qsTr("Mitarbeiter")
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignTop
|
// Layout.alignment: Qt.AlignRight | Qt.AlignTop
|
||||||
}
|
// }
|
||||||
|
|
||||||
ListModel
|
// ListModel
|
||||||
{
|
// {
|
||||||
id: employeeModel
|
// id: employeeModel
|
||||||
}
|
// }
|
||||||
|
|
||||||
Component
|
// Component
|
||||||
{
|
// {
|
||||||
id: employeesHeader
|
// id: employeesHeader
|
||||||
Row
|
// Row
|
||||||
{
|
// {
|
||||||
Text
|
// Text
|
||||||
{
|
// {
|
||||||
id: empName
|
// id: empName
|
||||||
text: qsTr("Mitarbeiter")
|
// text: qsTr("Mitarbeiter")
|
||||||
width: 175
|
// width: 175
|
||||||
font.bold: true
|
// font.bold: true
|
||||||
horizontalAlignment: Text.AlignHCenter
|
// horizontalAlignment: Text.AlignLeft
|
||||||
color: "yellow"
|
// color: "black"
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
Rectangle
|
// Rectangle
|
||||||
{
|
// {
|
||||||
Layout.fillWidth: true
|
// Layout.fillWidth: true
|
||||||
implicitHeight: 75
|
// implicitHeight: 75
|
||||||
Layout.rowSpan: 2
|
// Layout.rowSpan: 2
|
||||||
color: mitarbeiterhin.palette.base
|
// color: mitarbeiterhin.palette.base
|
||||||
border.color: mitarbeiterhin.activeFocus? mitarbeiterhin.palette.highlight: mitarbeiterhin.palette.base
|
// border.color: mitarbeiterhin.activeFocus? mitarbeiterhin.palette.highlight: mitarbeiterhin.palette.base
|
||||||
ListView
|
// ListView
|
||||||
{
|
// {
|
||||||
id: employeesList
|
// id: employeesList
|
||||||
//anchors.fill: parent
|
// //anchors.fill: parent
|
||||||
implicitHeight: parent.height
|
// implicitHeight: parent.height
|
||||||
|
|
||||||
model: employeeModel
|
// model: employeeModel
|
||||||
|
|
||||||
header: employeesHeader
|
// header: employeesHeader
|
||||||
|
|
||||||
delegate: Row
|
// delegate: Row
|
||||||
{
|
// {
|
||||||
width: 200
|
// width: 200
|
||||||
height: 15
|
// height: 15
|
||||||
padding: 7
|
// //padding: 7
|
||||||
Text
|
// Text
|
||||||
{
|
// {
|
||||||
text: model.namens
|
// text: model.namens
|
||||||
color: "yellow"
|
// }
|
||||||
}
|
// }
|
||||||
}
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
RowLayout
|
// RowLayout
|
||||||
{
|
// {
|
||||||
Layout.columnSpan: 2
|
// Layout.columnSpan: 2
|
||||||
Layout.fillWidth: true
|
// Layout.fillWidth: true
|
||||||
Item
|
// Item
|
||||||
{
|
// {
|
||||||
Layout.fillWidth: true
|
// Layout.fillWidth: true
|
||||||
}
|
// }
|
||||||
|
|
||||||
Button
|
// Button
|
||||||
{
|
// {
|
||||||
id: mitarbeiterraus
|
// id: mitarbeiterraus
|
||||||
text: qsTr("Mitarbeiter entfernen")
|
// text: qsTr("Mitarbeiter entfernen")
|
||||||
}
|
// }
|
||||||
|
|
||||||
Button
|
// Button
|
||||||
{
|
// {
|
||||||
id: mitarbeiterhin
|
// id: mitarbeiterhin
|
||||||
text: qsTr("Mitarbeiter hinzufügen")
|
// text: qsTr("Mitarbeiter hinzufügen")
|
||||||
onClicked:
|
// onClicked:
|
||||||
{
|
// {
|
||||||
var nm = Qt.createComponent("AddObjectEmployee.qml")
|
// var nm = Qt.createComponent("AddObjectEmployee.qml")
|
||||||
if (nm.status === Component.Ready)
|
// if (nm.status === Component.Ready)
|
||||||
{
|
// {
|
||||||
employeeForm = nm.createObject (appWindow, {width: 600, height: 400})
|
// employeeForm = nm.createObject (appWindow, {width: 600, height: 400})
|
||||||
employeeForm.addNewEmployee.connect(onAddEmployee)
|
// employeeForm.addNewEmployee.connect(onAddEmployee)
|
||||||
employeeForm.show()
|
// employeeForm.show()
|
||||||
}
|
// }
|
||||||
else console.log(nm.errorString())
|
// else console.log(nm.errorString())
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
function onAddEmployee(new_employee)
|
// function onAddEmployee(new_employee)
|
||||||
{
|
// {
|
||||||
var num_employees = 0
|
// var num_employees = 0
|
||||||
|
|
||||||
if (employees === null || employees === undefined) employees = {}
|
// if (employees === null || employees === undefined) employees = {}
|
||||||
else num_employees = Object.keys(employees).length;
|
// else num_employees = Object.keys(employees).length;
|
||||||
|
|
||||||
employees[num_employees] = {}
|
// employees[num_employees] = {}
|
||||||
employees[num_employees]["assignee"] = new_employee["assignee"];
|
// employees[num_employees]["assignee"] = new_employee["assignee"];
|
||||||
employees[num_employees]["duration"] = new_employee["duration"];
|
// employees[num_employees]["duration"] = new_employee["duration"];
|
||||||
employees[num_employees]["wage"] = new_employee["wage"];
|
// employees[num_employees]["wage"] = new_employee["wage"];
|
||||||
employees[num_employees]["cleandays"] = new_employee["cleandays"];
|
// employees[num_employees]["cleandays"] = new_employee["cleandays"];
|
||||||
employees[num_employees]["tasks"] = new_employee["tasks"];
|
// employees[num_employees]["tasks"] = new_employee["tasks"];
|
||||||
employees[num_employees]["output"] = new_employee["output"];
|
// employees[num_employees]["output"] = new_employee["output"];
|
||||||
|
|
||||||
employeeModel.append({namens: new_employee["assignee"]});
|
// employeeModel.append({namens: new_employee["assignee"]});
|
||||||
|
|
||||||
console.log(employeeModel.get(num_employees).namens)
|
// }
|
||||||
|
|
||||||
console.log(new_employee["assignee"])
|
|
||||||
console.log(JSON.stringify(new_employee))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,28 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
import "../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
ColumnLayout
|
Frame
|
||||||
{
|
{
|
||||||
id: addObjectLayout
|
property alias contactPerson: oaocontactperson
|
||||||
visible: false
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillWidth: true
|
||||||
ObjectAddOnEmployee
|
ColumnLayout
|
||||||
{
|
{
|
||||||
id: oaoemployee
|
id: addObjectLayout
|
||||||
|
width: parent.width
|
||||||
|
ObjectAddOnContactPerson
|
||||||
|
{
|
||||||
|
id: oaocontactperson
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ObjectAddOnContactPerson
|
function getForm()
|
||||||
{
|
{
|
||||||
id: oaocontactperson
|
return oaocontactperson.contacts
|
||||||
}
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
Layout.fillHeight: true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
27
Gui/ObjectDetails.qml
Normal file
27
Gui/ObjectDetails.qml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
property int selectedObject: -1
|
||||||
|
id: obDet
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ausgewählter Objekt " + selectedObject)
|
||||||
|
}
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Zurück zu den Objekten")
|
||||||
|
onClicked: contentStack.pop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
object_model.onRowClicked(selectedObject)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,45 +6,85 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: objectView
|
id: objectView
|
||||||
|
|
||||||
columns: 2
|
columns: 4
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
rowSpacing: 9
|
rowSpacing: 9
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Firma")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "business"
|
||||||
|
id: business
|
||||||
|
editable: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.columnSpan: 3
|
||||||
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Objektstraße")
|
text: qsTr("Straße*")
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
id: objectName
|
property string name: "street"
|
||||||
|
id: street
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
onTextChanged: checkFields()
|
onTextChanged: checkFields()
|
||||||
placeholderText: "Pflichtfeld"
|
|
||||||
placeholderTextColor: "red"
|
|
||||||
//Layout.maximumWidth: parent.width / 2
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: qsTr("Leistungsort")
|
text: qsTr("Nr.*")
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField
|
TextField
|
||||||
{
|
{
|
||||||
id: leistungsortid
|
property string name: "houseno"
|
||||||
|
id: houseno
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.alignment: Qt.AlignVCenter
|
||||||
onTextChanged: checkFields()
|
onTextChanged: checkFields()
|
||||||
placeholderText: "Pflichtfeld"
|
}
|
||||||
placeholderTextColor: "red"
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("PLZ*")
|
||||||
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "postcode"
|
||||||
|
id: postcode
|
||||||
|
Layout.fillWidth: true
|
||||||
|
onTextChanged: checkFields()
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Ort")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
|
||||||
|
}
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
property string name: "city"
|
||||||
|
id: city
|
||||||
|
Layout.fillWidth: true
|
||||||
|
editable: true
|
||||||
|
onEditTextChanged: checkFields()
|
||||||
|
onCurrentTextChanged: checkFields()
|
||||||
|
model: address_model
|
||||||
|
textRole: "city"
|
||||||
|
popup.height: 300
|
||||||
|
currentIndex: -1
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -57,7 +97,7 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: lohnanteil
|
id: lohnanteil
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -70,7 +110,7 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: materialanteil
|
id: materialanteil
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -83,7 +123,7 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: zusatz1
|
id: zusatz1
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -96,7 +136,7 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: zusatz2
|
id: zusatz2
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -106,10 +146,9 @@ GridLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
TextField
|
TextField
|
||||||
{
|
{id: gesamtnetto
|
||||||
id: gesamtnetto
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -122,7 +161,7 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: mwst
|
id: mwst
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -135,7 +174,7 @@ GridLayout
|
|||||||
{
|
{
|
||||||
id: gesamt
|
id: gesamt
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
@@ -149,9 +188,8 @@ GridLayout
|
|||||||
id: zahlungsziel
|
id: zahlungsziel
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
editable: false
|
editable: false
|
||||||
//model: business_type
|
|
||||||
textRole: "display"
|
textRole: "display"
|
||||||
//Layout.maximumWidth: parent.width / 2
|
Layout.columnSpan: 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -165,6 +203,7 @@ GridLayout
|
|||||||
id: infoview
|
id: infoview
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 110
|
Layout.preferredHeight: 110
|
||||||
|
Layout.columnSpan: 3
|
||||||
ScrollBar.horizontal: ScrollBar
|
ScrollBar.horizontal: ScrollBar
|
||||||
{
|
{
|
||||||
policy: ScrollBar.AlwaysOn
|
policy: ScrollBar.AlwaysOn
|
||||||
@@ -180,6 +219,7 @@ GridLayout
|
|||||||
{
|
{
|
||||||
color: objectInfo.palette.base
|
color: objectInfo.palette.base
|
||||||
border.color: objectInfo.activeFocus? objectInfo.palette.highlight: objectInfo.palette.base
|
border.color: objectInfo.activeFocus? objectInfo.palette.highlight: objectInfo.palette.base
|
||||||
|
width: parent.width
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,44 +2,101 @@ import QtQuick
|
|||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import Qt.labs.qmlmodels
|
import Qt.labs.qmlmodels
|
||||||
import QtQuick.Controls.Fusion
|
|
||||||
|
|
||||||
Item {
|
ColumnLayout
|
||||||
|
{
|
||||||
property var availableFilters: [""]
|
property var availableFilters: [""]
|
||||||
SearchBar
|
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
function viewCriterion(criterion)
|
||||||
{
|
{
|
||||||
id:searchBar
|
business_model.viewCriterion(criterion.text);
|
||||||
anchors.margins: 9
|
}
|
||||||
|
function onObjectContactAdded(added)
|
||||||
|
{
|
||||||
|
console.log(added)
|
||||||
|
if (added) object_model.viewCriterion("")
|
||||||
}
|
}
|
||||||
|
|
||||||
Button
|
Component.onCompleted:
|
||||||
{
|
{
|
||||||
id: addObjectBtn
|
contact_model.objectContactAdded.connect(onObjectContactAdded)
|
||||||
icon.source: "qrc:/images/addbusiness.svg"
|
contentStack.pop()
|
||||||
icon.color: "olive"
|
}
|
||||||
anchors.right: parent.right
|
RowLayout
|
||||||
flat: true
|
{
|
||||||
onClicked: appLoader.source = "AddObject.qml"
|
Layout.fillWidth: true
|
||||||
|
spacing: Dimensions.l
|
||||||
|
SearchBar
|
||||||
|
{
|
||||||
|
}
|
||||||
|
QuickFilter {
|
||||||
|
onSelectedChanged: (name) => {
|
||||||
|
business_model.viewCriterion(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
model: ListModel {
|
||||||
|
ListElement {
|
||||||
|
|
||||||
|
name: "Alle"
|
||||||
|
text: qsTr("Alle")
|
||||||
|
selected: true
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Interessent"
|
||||||
|
text: qsTr("Interessent")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Kunde"
|
||||||
|
text: qsTr("Kunde")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Lieferant"
|
||||||
|
text: qsTr("Lieferant")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Erledigt"
|
||||||
|
text: qsTr("Erledigt")
|
||||||
|
selected: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
id: addObjectBtn
|
||||||
|
icon.source: "qrc:/images/PlusCircle.svg"
|
||||||
|
text: qsTr("Objekt Hinzufügen")
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
onClicked: contentStack.push("AddObject.qml")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout
|
||||||
{
|
{
|
||||||
id: tableColumn
|
id: tableColumn
|
||||||
anchors
|
Layout.fillWidth: true
|
||||||
{
|
Layout.fillHeight: true
|
||||||
top: searchBar.bottom
|
Layout.verticalStretchFactor: 1
|
||||||
bottom: parent.bottom
|
clip: true
|
||||||
left: parent.left
|
// anchors
|
||||||
right: parent.right
|
// {
|
||||||
}
|
// top: searchBar.bottom
|
||||||
|
// bottom: parent.bottom
|
||||||
|
// left: parent.left
|
||||||
|
// right: parent.right
|
||||||
|
// topMargin: 15
|
||||||
|
// }
|
||||||
HorizontalHeaderView
|
HorizontalHeaderView
|
||||||
{
|
{
|
||||||
id: horizontalHeaderview
|
id: horizontalHeaderview
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
implicitHeight: 40
|
implicitHeight: 40
|
||||||
visible: false
|
|
||||||
movableColumns: true //@disable-check M16
|
movableColumns: true //@disable-check M16
|
||||||
syncView: objectTable
|
syncView: objectTable
|
||||||
|
|
||||||
@@ -66,38 +123,26 @@ Item {
|
|||||||
{
|
{
|
||||||
property real newWidth: 0
|
property real newWidth: 0
|
||||||
id: objectTable
|
id: objectTable
|
||||||
|
z: 1
|
||||||
|
// height: tableColumn.height - horizontalHeaderview.height
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
columnSpacing: 1
|
||||||
|
rowSpacing: 2
|
||||||
|
model: object_model
|
||||||
|
alternatingRows: true
|
||||||
|
resizableColumns: true // @disable-check M16
|
||||||
|
selectionBehavior: TableView.SelectRows
|
||||||
ScrollBar.vertical: ScrollBar
|
ScrollBar.vertical: ScrollBar
|
||||||
{
|
{
|
||||||
policy: objectTable.contentHeight > objectTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
|
policy: objectTable.contentHeight > objectTable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
|
||||||
}
|
}
|
||||||
columnSpacing: 1
|
|
||||||
rowSpacing: 2
|
|
||||||
//model: object_model
|
|
||||||
alternatingRows: true
|
|
||||||
resizableColumns: true // @disable-check M16
|
|
||||||
selectionBehavior: TableView.SelectRows
|
|
||||||
selectionModel: ItemSelectionModel
|
selectionModel: ItemSelectionModel
|
||||||
{
|
{
|
||||||
id: obmodel
|
id: obmodel
|
||||||
model: objectTable.model
|
model: objectTable.model
|
||||||
}
|
}
|
||||||
|
|
||||||
// Timer
|
|
||||||
// {
|
|
||||||
// id: redrawTable
|
|
||||||
// running: true
|
|
||||||
// interval: 1
|
|
||||||
// repeat: false
|
|
||||||
// onTriggered:
|
|
||||||
// {
|
|
||||||
// objectTable.forceLayout();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
delegate:Rectangle
|
delegate:Rectangle
|
||||||
{
|
{
|
||||||
required property bool selected
|
required property bool selected
|
||||||
@@ -112,7 +157,7 @@ Item {
|
|||||||
|
|
||||||
Text
|
Text
|
||||||
{
|
{
|
||||||
text: model.display == null? "": model.display
|
text: (model.display === null || model.display === undefined)? "": model.display
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: parent.height
|
height: parent.height
|
||||||
@@ -127,9 +172,9 @@ Item {
|
|||||||
id: mouseArea
|
id: mouseArea
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
onClicked:
|
onDoubleClicked:
|
||||||
{
|
{
|
||||||
object_model.onRowClicked(row)
|
contentStack.push("ObjectDetails.qml", {selectedObject: row});
|
||||||
}
|
}
|
||||||
onEntered:
|
onEntered:
|
||||||
{
|
{
|
||||||
@@ -137,28 +182,10 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onContentWidthChanged:
|
|
||||||
// {
|
|
||||||
|
|
||||||
// redrawTable.start()
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// function viewCriterion(criterion)
|
Item {
|
||||||
// {
|
Layout.fillHeight: true
|
||||||
// object_model.viewCriterion(criterion.text)
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
66
Gui/OffersTable.qml
Normal file
66
Gui/OffersTable.qml
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
import Qt.labs.qmlmodels
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
function viewOffers(criterion) {
|
||||||
|
//offer_model.viewCriterion(criterion)
|
||||||
|
}
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
spacing: Dimensions.l
|
||||||
|
|
||||||
|
SearchBar {
|
||||||
|
id: searchBar
|
||||||
|
|
||||||
|
}
|
||||||
|
QuickFilter {
|
||||||
|
model: ListModel {
|
||||||
|
ListElement {
|
||||||
|
name: "Alle"
|
||||||
|
selected: true
|
||||||
|
text: qsTr("Alle")
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Offen"
|
||||||
|
selected: false
|
||||||
|
text: qsTr("Offen")
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Abgeschlossen"
|
||||||
|
selected: false
|
||||||
|
text: qsTr("Abgeschlossen")
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
name: "Erledigt"
|
||||||
|
selected: false
|
||||||
|
text: qsTr("Erledigt")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onSelectedChanged: name => {
|
||||||
|
business_model.viewCriterion(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
id: addOfferBtn
|
||||||
|
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
flat: true
|
||||||
|
icon.source: "qrc:/images/PlusCircle.svg"
|
||||||
|
text: qsTr("Angebote Hinzufügen")
|
||||||
|
|
||||||
|
onClicked: contentStack.push("AddOffer.qml")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
id: spacer
|
||||||
|
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
143
Gui/PrinterDialog.qml
Normal file
143
Gui/PrinterDialog.qml
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
Window
|
||||||
|
{
|
||||||
|
property alias printerDialog: printDialog
|
||||||
|
property var printers: null
|
||||||
|
|
||||||
|
id: printDialog
|
||||||
|
title: qsTr("PYQCRM - Drucker")
|
||||||
|
color: palette.base
|
||||||
|
minimumWidth: 300
|
||||||
|
maximumWidth: 600
|
||||||
|
minimumHeight: 150
|
||||||
|
maximumHeight: 150
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
spacing: 9
|
||||||
|
y: 15
|
||||||
|
implicitWidth: parent.width
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.leftMargin: 5
|
||||||
|
Layout.rightMargin: 5
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
id: printersLabel
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Drucker")
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox
|
||||||
|
{
|
||||||
|
id: allPrinters
|
||||||
|
model: printers
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.leftMargin: 5
|
||||||
|
Layout.rightMargin: 5
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
Layout.minimumWidth: printersLabel.width
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
|
text: qsTr("Kopie")
|
||||||
|
}
|
||||||
|
|
||||||
|
SpinBox
|
||||||
|
{
|
||||||
|
id: copiesSpinBox
|
||||||
|
from: 1
|
||||||
|
to: 10
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.leftMargin: 5
|
||||||
|
Layout.rightMargin: 5
|
||||||
|
Layout.fillWidth: true
|
||||||
|
CheckBox
|
||||||
|
{
|
||||||
|
id: colorPrint
|
||||||
|
text: qsTr("Farbe")
|
||||||
|
Layout.minimumWidth: printersLabel.width
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
Layout.leftMargin: 5
|
||||||
|
Layout.rightMargin: 5
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
id: printButton
|
||||||
|
text: qsTr("Drucken")
|
||||||
|
onClicked:
|
||||||
|
{
|
||||||
|
var copies = copiesSpinBox.value > 1? copiesSpinBox.value + " copies": "one copy"
|
||||||
|
console.log("Printing ", copies, " using ", allPrinters.currentText);
|
||||||
|
printDialog.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Ablehnen")
|
||||||
|
onClicked: printDialog.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onVisibleChanged:
|
||||||
|
{
|
||||||
|
copiesSpinBox.value = 1
|
||||||
|
colorPrint.checked = true
|
||||||
|
if (!sys_printers)
|
||||||
|
{
|
||||||
|
printers = sys_printers.getPrinters()
|
||||||
|
if (sys_printers.getDefaultPrinter())
|
||||||
|
allPrinters.currentIndex = allPrinters.indexOfValue(sys_printers.getDefaultPrinter())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
if (sys_printers)
|
||||||
|
{
|
||||||
|
printers = sys_printers.getPrinters()
|
||||||
|
if (sys_printers.getDefaultPrinter())
|
||||||
|
allPrinters.currentIndex = allPrinters.indexOfValue(sys_printers.getDefaultPrinter())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
171
Gui/PyqcrmConf.qml
Normal file
171
Gui/PyqcrmConf.qml
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
property alias companyConf: companyConf
|
||||||
|
property alias miscConf: miscConf
|
||||||
|
anchors.fill: parent
|
||||||
|
TabBar
|
||||||
|
{
|
||||||
|
id: bar
|
||||||
|
width: parent.width
|
||||||
|
TabButton
|
||||||
|
{
|
||||||
|
text: qsTr("Benutzer")
|
||||||
|
}
|
||||||
|
TabButton
|
||||||
|
{
|
||||||
|
text: qsTr("Datenbank")
|
||||||
|
}
|
||||||
|
TabButton
|
||||||
|
{
|
||||||
|
text: qsTr("Das Unternehmen")
|
||||||
|
}
|
||||||
|
|
||||||
|
TabButton
|
||||||
|
{
|
||||||
|
text: qsTr("Sicherung")
|
||||||
|
}
|
||||||
|
|
||||||
|
TabButton
|
||||||
|
{
|
||||||
|
text: qsTr("Sonstiges")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StackLayout
|
||||||
|
{
|
||||||
|
id: confContainer
|
||||||
|
anchors.fill: parent
|
||||||
|
currentIndex: bar.currentIndex
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: userTab
|
||||||
|
UsersPage
|
||||||
|
{
|
||||||
|
id: usersPage
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: dbTab
|
||||||
|
DbConfiguration
|
||||||
|
{
|
||||||
|
id: dbConf
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: companyTab
|
||||||
|
CompanyConf
|
||||||
|
{
|
||||||
|
id: companyConf
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: backup
|
||||||
|
BackupSettings
|
||||||
|
{
|
||||||
|
id: backupSettings
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: miscelanea
|
||||||
|
MiscConf
|
||||||
|
{
|
||||||
|
id: miscConf
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
width: parent.width
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Ablehnen")
|
||||||
|
onClicked: contentStack.pop()
|
||||||
|
}
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
text: qsTr("Speichern")
|
||||||
|
onClicked:
|
||||||
|
{
|
||||||
|
switch (confContainer.currentIndex)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
updateDbConf()
|
||||||
|
break
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
updateCompanyInfo()
|
||||||
|
break
|
||||||
|
case 4:
|
||||||
|
updateMiscConf()
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
console.log("Need to handle users")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateDbConf()
|
||||||
|
{
|
||||||
|
var db = {}
|
||||||
|
db['database'] = {}
|
||||||
|
db['database']['DB_HOST'] = dbConf.dbHost.text.trim()
|
||||||
|
db['database']['DB_PORT'] = dbConf.dbPort.text.trim()
|
||||||
|
db['database']['DB_NAME'] = dbConf.dbName.text.trim()
|
||||||
|
db['database']['DB_USER'] = dbConf.dbUserName.text.trim()
|
||||||
|
db['database']['DB_PASS'] = dbConf.dbPassword.text.trim()
|
||||||
|
|
||||||
|
|
||||||
|
if (db['database']['DB_HOST'] === '' || db['database']['DB_PORT'] === '' ||
|
||||||
|
db['database']['DB_NAME'] === '' || db['database']['DB_USER'] === '' ||
|
||||||
|
db['database']['DB_PASS'] === '');
|
||||||
|
else config.saveDbConf(db)
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateCompanyInfo()
|
||||||
|
{
|
||||||
|
var company = {}
|
||||||
|
company['company'] = {}
|
||||||
|
company['company']['NAME'] = companyConf.name.text.trim()
|
||||||
|
company['company']['STREET'] = companyConf.street.text.trim()
|
||||||
|
company['company']['HOUSE'] = companyConf.house.text.trim()
|
||||||
|
company['company']['ZIPCODE'] = companyConf.zipcode.editText? companyConf.zipcode.editText.trim(): companyConf.zipcode.currentText
|
||||||
|
company['company']['CITY'] = companyConf.city.editText? companyConf.city.editText.trim(): companyConf.city.currentText
|
||||||
|
|
||||||
|
if (company['company']['NAME'] === '' || company['company']['STREET'] === '' ||
|
||||||
|
company['company']['HOUSE'] === '' || company['company']['ZIPCODE'] === '' ||
|
||||||
|
company['company']['CITY'] === '');
|
||||||
|
else config.saveCompanyInfo(company)
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateMiscConf()
|
||||||
|
{
|
||||||
|
var misc = {}
|
||||||
|
misc['misc'] = {}
|
||||||
|
misc['misc']['SYSTRAY'] = miscConf.sysTray.checked
|
||||||
|
config.saveMiscConf(misc)
|
||||||
|
}
|
||||||
|
}
|
||||||
47
Gui/ReadMe.qml
Normal file
47
Gui/ReadMe.qml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
Window
|
||||||
|
{
|
||||||
|
property alias readMeWin: readMeWin
|
||||||
|
id: readMeWin
|
||||||
|
width: 400
|
||||||
|
height: 300
|
||||||
|
title: "PYQCRM - README"
|
||||||
|
color: palette.base
|
||||||
|
|
||||||
|
ScrollView
|
||||||
|
{
|
||||||
|
anchors.fill: parent
|
||||||
|
TextArea
|
||||||
|
{
|
||||||
|
id: readMe
|
||||||
|
anchors.fill: parent
|
||||||
|
readOnly: true
|
||||||
|
wrapMode: TextArea.Wrap
|
||||||
|
color: "darksalmon"
|
||||||
|
|
||||||
|
Component.onCompleted:
|
||||||
|
{
|
||||||
|
var filePath = "qrc:/README";
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("GET", filePath, true);
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState === XMLHttpRequest.DONE)
|
||||||
|
{
|
||||||
|
if (xhr.status === 200)
|
||||||
|
{
|
||||||
|
readMe.text = xhr.responseText;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
readMe.text = qsTr("Datei nicht gefunden!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xhr.send();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
import QtQuick
|
|
||||||
import QtQuick.Controls
|
|
||||||
import QtQuick.Layouts
|
|
||||||
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
id: searchBar
|
|
||||||
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
id: searchField
|
|
||||||
placeholderText: qsTr("Suche")
|
|
||||||
leftPadding: 3
|
|
||||||
rightPadding: 3
|
|
||||||
Layout.preferredWidth: 300
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
icon.source: "qrc:/images/search.svg"
|
|
||||||
icon.color: "olive"
|
|
||||||
x: parent.x + parent.width - width
|
|
||||||
height: parent.height
|
|
||||||
flat: true
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: filterBtn
|
|
||||||
icon.source: "qrc:/images/filter.svg"
|
|
||||||
icon.color: "olive"
|
|
||||||
x: parent.x + parent.width
|
|
||||||
height: searchField.height
|
|
||||||
flat: true
|
|
||||||
onClicked: filterPopup.open()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Popup
|
|
||||||
{
|
|
||||||
id: filterPopup
|
|
||||||
x: filterBtn.x + filterBtn.width
|
|
||||||
y: filterBtn.y
|
|
||||||
width: 100
|
|
||||||
height: 150
|
|
||||||
modal: true
|
|
||||||
focus: true
|
|
||||||
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
|
|
||||||
contentItem: Item
|
|
||||||
{
|
|
||||||
ColumnLayout
|
|
||||||
{
|
|
||||||
anchors.fill: parent
|
|
||||||
//id: filterContent
|
|
||||||
|
|
||||||
Repeater
|
|
||||||
{
|
|
||||||
model: availableFilters
|
|
||||||
|
|
||||||
CheckBox
|
|
||||||
{
|
|
||||||
text: model.modelData
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
setFilter(text, checkState)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setFilter(filter,activated)
|
|
||||||
{
|
|
||||||
console.log(filter)
|
|
||||||
console.log(activated)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
import QtQuick
|
|
||||||
import QtQuick.Controls
|
|
||||||
import QtQuick.Layouts
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
id: topBar
|
|
||||||
spacing: 0
|
|
||||||
height: 35
|
|
||||||
width: parent.width
|
|
||||||
anchors
|
|
||||||
{
|
|
||||||
top: parent.top
|
|
||||||
left: parent.left
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: dashBoard
|
|
||||||
flat: true
|
|
||||||
text: qsTr("Dashboard")
|
|
||||||
implicitWidth: dashBoard.implicitContentWidth + 10
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
appLoader.source = "Dashboard.qml"
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: kunden
|
|
||||||
flat: true
|
|
||||||
text: qsTr("Kunden")
|
|
||||||
implicitWidth: kunden.implicitContentWidth + 10
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
// TODO: here we should call the model
|
|
||||||
appLoader.source = "CustomerTable.qml"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: objekt
|
|
||||||
flat: true
|
|
||||||
text: qsTr("Objekt")
|
|
||||||
implicitWidth: objekt.implicitContentWidth + 10
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
appLoader.source = "ObjectTable.qml"
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: mitarbeiter
|
|
||||||
flat: true
|
|
||||||
text: qsTr("Mitarbeiter")
|
|
||||||
implicitWidth: mitarbeiter.implicitContentWidth + 10
|
|
||||||
onClicked:
|
|
||||||
{
|
|
||||||
appLoader.source = "EmployeeTable.qml"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: abrechnung
|
|
||||||
flat: true
|
|
||||||
text: qsTr("Abrechnung")
|
|
||||||
implicitWidth: abrechnung.implicitContentWidth + 10
|
|
||||||
}
|
|
||||||
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
id: hspacer
|
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
|
|
||||||
Button
|
|
||||||
{
|
|
||||||
id: atajos
|
|
||||||
icon.source: "qrc:/images/menu.svg"
|
|
||||||
icon.color: "red"
|
|
||||||
flat: true
|
|
||||||
Layout.rightMargin: 9
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
17
Gui/UsersPage.qml
Normal file
17
Gui/UsersPage.qml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
property string name: "users"
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Benutzer-Verwaltung")
|
||||||
|
anchors.centerIn: parent
|
||||||
|
font.pixelSize: 57
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
}
|
||||||
208
Gui/UtilityDialogs.qml
Normal file
208
Gui/UtilityDialogs.qml
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Dialogs
|
||||||
|
import QtCore
|
||||||
|
import "../js/qmldict.js" as JsLib
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: utilityDialogs
|
||||||
|
property alias backup_config: backupConfig
|
||||||
|
property alias backup_encrypt_pw: recoveryPasswordDialog
|
||||||
|
|
||||||
|
property var recpass
|
||||||
|
property var configpass
|
||||||
|
Dialog
|
||||||
|
{
|
||||||
|
|
||||||
|
anchors.centerIn: parent
|
||||||
|
id: backupConfig
|
||||||
|
title: "Backup Config"
|
||||||
|
standardButtons: Dialog.Apply | Dialog.Cancel
|
||||||
|
|
||||||
|
onApplied:
|
||||||
|
{
|
||||||
|
|
||||||
|
if (configPwd.text === repeatConfigPwd.text)
|
||||||
|
{
|
||||||
|
configpass = repeatConfigPwd.text
|
||||||
|
saveConfigFile.open()
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
configPwd.text = ""
|
||||||
|
configPwd.placeholderText = qsTr("Passwort stimmt nicht überein")
|
||||||
|
configPwd.placeholderTextColor = "red"
|
||||||
|
repeatConfigPwd.placeholderText = qsTr("")
|
||||||
|
repeatConfigPwd.text = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onRejected: resetRecoveryConfigDialog()
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
id: gridPw
|
||||||
|
columns: 2
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Passwort eingeben")
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
|
||||||
|
id: configPwd
|
||||||
|
placeholderText: qsTr("Sicherungspasswort festlegen")
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
implicitWidth: 300
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Passwort wiederholen")
|
||||||
|
}
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
property string name: "password"
|
||||||
|
id: repeatConfigPwd
|
||||||
|
placeholderText: qsTr("Sicherungspasswort wiederholen")
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
implicitWidth: 300
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
FileDialog
|
||||||
|
{
|
||||||
|
id: saveConfigFile
|
||||||
|
fileMode: FileDialog.SaveFile
|
||||||
|
nameFilters: ["PYQCRM Recovery files (*.pyqrec)"]
|
||||||
|
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
|
||||||
|
onAccepted:
|
||||||
|
{
|
||||||
|
config.backupConfig(saveConfigFile.currentFile, configpass)
|
||||||
|
}
|
||||||
|
onRejected:
|
||||||
|
{
|
||||||
|
backupConfig.close()
|
||||||
|
resetRecoveryConfigDialog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageDialog
|
||||||
|
{
|
||||||
|
id: recoveryDialog
|
||||||
|
|
||||||
|
text: qsTr("Diesen Wiederherstellungscode musst du sicher aufbewahren!\nMöchtest du das jetzt machen?")
|
||||||
|
title: qsTr("Wiederherstellen")
|
||||||
|
buttons: MessageDialog.Yes | MessageDialog.No
|
||||||
|
onAccepted: recoveryPasswordDialog.open()
|
||||||
|
onRejected: contentStack.replace("LoginSreen.qml")
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageDialog
|
||||||
|
{
|
||||||
|
id: conErrDialog
|
||||||
|
text: qsTr("Datenbankverbindung fehlgeschlagen")
|
||||||
|
title: qsTr("Datenbank Verbindung")
|
||||||
|
}
|
||||||
|
|
||||||
|
Dialog
|
||||||
|
{
|
||||||
|
|
||||||
|
id: recoveryPasswordDialog
|
||||||
|
modal: true
|
||||||
|
title: qsTr("Wiederherstellung")
|
||||||
|
anchors.centerIn: parent
|
||||||
|
standardButtons: Dialog.Apply | Dialog.Cancel
|
||||||
|
onApplied:
|
||||||
|
{
|
||||||
|
if (recoveryPasswordInput.text === repeatRecoveryPasswordInput.text)
|
||||||
|
{
|
||||||
|
recpass = recoveryPasswordInput.text
|
||||||
|
saveRecoveryDialog.open()
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
recoveryPasswordInput.text = ""
|
||||||
|
recoveryPasswordInput.placeholderText = qsTr("Passwort stimmt nicht überein")
|
||||||
|
recoveryPasswordInput.placeholderTextColor = "red"
|
||||||
|
repeatRecoveryPasswordInput.placeholderText = qsTr("")
|
||||||
|
repeatRecoveryPasswordInput.text = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClosed: resetRecoveryPwDialog()
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
GridLayout
|
||||||
|
{
|
||||||
|
columns: 2
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Wiederherstellungspasswort festlegen: ")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
id: recoveryPasswordInput
|
||||||
|
text: ""
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
implicitWidth: 300
|
||||||
|
placeholderText: qsTr("Hier Wiederherstellungspasswort eingeben")
|
||||||
|
}
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: qsTr("Wiederherstellungspasswort wiederholen: ")
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField
|
||||||
|
{
|
||||||
|
id: repeatRecoveryPasswordInput
|
||||||
|
text: ""
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
implicitWidth: 300
|
||||||
|
placeholderText: qsTr("Hier Wiederherstellungspasswort wiederholen")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FileDialog
|
||||||
|
{
|
||||||
|
id: saveRecoveryDialog
|
||||||
|
title: qsTr("Wiederherstellungsdatei")
|
||||||
|
fileMode: FileDialog.SaveFile
|
||||||
|
nameFilters: ["PYQCRM Recovery files (*.pyqrec)"]
|
||||||
|
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
|
||||||
|
onAccepted:
|
||||||
|
{
|
||||||
|
config.backupEncryptkey(saveRecoveryDialog.currentFile, recpass)
|
||||||
|
}
|
||||||
|
|
||||||
|
onRejected:
|
||||||
|
{
|
||||||
|
recoveryPasswordDialog.close()
|
||||||
|
resetRecoveryPwDialog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetRecoveryPwDialog()
|
||||||
|
{
|
||||||
|
recoveryPasswordInput.text = ""
|
||||||
|
recoveryPasswordInput.placeholderText = qsTr("Hier Wiederherstellungspasswort eingeben")
|
||||||
|
recoveryPasswordInput.placeholderTextColor = repeatRecoveryPasswordInput.placeholderTextColor
|
||||||
|
repeatRecoveryPasswordInput.text = ""
|
||||||
|
repeatRecoveryPasswordInput.placeholderText = qsTr("Hier Wiederherstellungspasswort wiederholen")
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetRecoveryConfigDialog()
|
||||||
|
{
|
||||||
|
configPwd.text = ""
|
||||||
|
configPwd.placeholderText = qsTr("Hier Wiederherstellungspasswort eingeben")
|
||||||
|
configPwd.placeholderTextColor = repeatConfigPwd.placeholderTextColor
|
||||||
|
repeatConfigPwd.text = ""
|
||||||
|
repeatConfigPwd.placeholderText = qsTr("Hier Wiederherstellungspasswort wiederholen")
|
||||||
|
}
|
||||||
|
}
|
||||||
175
Gui/main.qml
175
Gui/main.qml
@@ -4,109 +4,138 @@ import QtQuick.Controls
|
|||||||
import QtQuick.Dialogs
|
import QtQuick.Dialogs
|
||||||
import QtCore
|
import QtCore
|
||||||
|
|
||||||
ApplicationWindow
|
ApplicationWindow {
|
||||||
{
|
|
||||||
id: appWindow
|
id: appWindow
|
||||||
width: Screen.width * .75
|
|
||||||
height: Screen.height * .85
|
|
||||||
visible: true
|
|
||||||
title: "PYQCRM"
|
|
||||||
property string confile: ""
|
property string confile: ""
|
||||||
|
property alias settingsFileDialog: settingsFiledialog
|
||||||
|
|
||||||
TopBar
|
function showWindow(why) {
|
||||||
{
|
if (why === 3) {
|
||||||
|
systray.setVisible(false);
|
||||||
id:topBar
|
appWindow.show();
|
||||||
anchors
|
|
||||||
{
|
|
||||||
rightMargin: 9
|
|
||||||
leftMargin: 9
|
|
||||||
}
|
}
|
||||||
|
|
||||||
visible: bad_config || !db_con ? false: true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Item
|
font: Typography.body
|
||||||
{
|
height: Screen.height * .85
|
||||||
|
palette.window: Colors.mantle
|
||||||
|
palette.placeholderText: Colors.interactive
|
||||||
|
palette.text: Colors.foreground
|
||||||
|
title: "TERO Personal"
|
||||||
|
visible: true
|
||||||
|
width: Screen.width * .75
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
systray.activated.connect(showWindow);
|
||||||
|
|
||||||
|
if (bad_config) {
|
||||||
|
importDialog.open();
|
||||||
|
} else {
|
||||||
|
if (db_con)
|
||||||
|
contentStack.replace("LoginScreen.qml")
|
||||||
|
else
|
||||||
|
contentStack.replace("NoDbConnection.qml");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onClosing: close => {
|
||||||
|
if (false) {
|
||||||
|
console.log("Main window closed!! Was soll ich tun? kann ich mich beenden?!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onVisibilityChanged: {
|
||||||
|
if (appWindow.visibility === Window.Minimized && config.systray()) {
|
||||||
|
systray.setVisible(true);
|
||||||
|
appWindow.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onWindowStateChanged: windowState => {
|
||||||
|
if (windowState !== Qt.WindowMinimized) {
|
||||||
|
systray.setVisible(false);
|
||||||
|
appWindow.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Navigation {
|
||||||
|
id: navigation
|
||||||
|
|
||||||
|
visible: !(bad_config || !db_con)
|
||||||
|
}
|
||||||
|
PrinterDialog {
|
||||||
|
id: printerDialog
|
||||||
|
|
||||||
|
}
|
||||||
|
ReadMe {
|
||||||
|
id: readMeWin
|
||||||
|
|
||||||
|
}
|
||||||
|
Item {
|
||||||
id: mainView
|
id: mainView
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Loader
|
Rectangle {
|
||||||
{
|
id: contentBackground
|
||||||
id: appLoader
|
anchors {
|
||||||
anchors
|
|
||||||
{
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
top: topBar.bottom
|
|
||||||
bottom: parent.bottom
|
bottom: parent.bottom
|
||||||
topMargin: 0
|
left: navigation.visible ? navigation.right : parent.left
|
||||||
bottomMargin: 9
|
right: parent.right
|
||||||
rightMargin: 9
|
top: parent.top
|
||||||
leftMargin: 9
|
|
||||||
}
|
}
|
||||||
|
color: Colors.background
|
||||||
property alias window: appWindow
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted:
|
StackView {
|
||||||
{
|
id: contentStack
|
||||||
if(bad_config)
|
|
||||||
{
|
anchors {
|
||||||
importDialog.open()
|
fill: contentBackground
|
||||||
}
|
margins: Dimensions.l
|
||||||
else
|
|
||||||
{
|
|
||||||
if (db_con) appLoader.source= "LoginScreen.qml"
|
|
||||||
else appLoader.source= "NoDbConnection.qml"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Dialog
|
Dialog {
|
||||||
{
|
|
||||||
id: importDialog
|
id: importDialog
|
||||||
modal: true
|
|
||||||
anchors.centerIn: parent
|
|
||||||
standardButtons: Dialog.Yes | Dialog.No
|
|
||||||
onAccepted: settingsFiledialog.open()
|
|
||||||
onRejected: appLoader.source= "firststart.qml"
|
|
||||||
title: qsTr("Einstellungen importieren")
|
|
||||||
}
|
|
||||||
|
|
||||||
FileDialog
|
anchors.centerIn: parent
|
||||||
{
|
modal: true
|
||||||
|
standardButtons: Dialog.Yes | Dialog.No
|
||||||
|
title: qsTr("Einstellungen importieren")
|
||||||
|
|
||||||
|
onAccepted: settingsFiledialog.open()
|
||||||
|
onRejected: contentStack.replace("Firststart.qml")
|
||||||
|
}
|
||||||
|
FileDialog {
|
||||||
id: settingsFiledialog
|
id: settingsFiledialog
|
||||||
title: qsTr("PYQCRM Einstellungen")
|
|
||||||
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
|
currentFolder: StandardPaths.standardLocations(StandardPaths.DocumentsLocation)[0]
|
||||||
modality: "ApplicationModal"
|
modality: "ApplicationModal"
|
||||||
nameFilters: [qsTr("PYQCRM Einstellungen (*.pyqcrm)")]
|
nameFilters: [qsTr("PYQCRM Einstellungen (*.pyqrec)")]
|
||||||
onAccepted:
|
title: qsTr("PYQCRM Einstellungen")
|
||||||
{
|
|
||||||
exportFilePassword.open()
|
onAccepted: {
|
||||||
confile = selectedFile
|
exportFilePassword.open();
|
||||||
|
confile = selectedFile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Dialog {
|
||||||
Dialog
|
|
||||||
{
|
|
||||||
id: exportFilePassword
|
id: exportFilePassword
|
||||||
modal: true
|
|
||||||
title: qsTr("PYQCRM Einstellungen")
|
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
modal: true
|
||||||
standardButtons: Dialog.Ok | Dialog.Cancel
|
standardButtons: Dialog.Ok | Dialog.Cancel
|
||||||
|
title: qsTr("PYQCRM Einstellungen")
|
||||||
|
|
||||||
onAccepted: config.importConfig(confile, exportPasswordInput.text)
|
onAccepted: config.importConfig(confile, exportPasswordInput.text)
|
||||||
ColumnLayout
|
|
||||||
{
|
ColumnLayout {
|
||||||
RowLayout
|
RowLayout {
|
||||||
{
|
Label {
|
||||||
Label
|
|
||||||
{
|
|
||||||
text: qsTr("Passwort eingeben:")
|
text: qsTr("Passwort eingeben:")
|
||||||
}
|
}
|
||||||
|
TextField {
|
||||||
TextField
|
|
||||||
{
|
|
||||||
id: exportPasswordInput
|
id: exportPasswordInput
|
||||||
|
|
||||||
echoMode: TextInput.Password
|
echoMode: TextInput.Password
|
||||||
implicitWidth: 300
|
implicitWidth: 300
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
module gui
|
module gui
|
||||||
TopBar 1.0 TopBar.qml
|
Navigation 1.0 Navigation.qml
|
||||||
|
|||||||
54
README
Normal file
54
README
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
PYQCRM - Python QtQuick CRM System
|
||||||
|
|
||||||
|
Einleitung:
|
||||||
|
----------------
|
||||||
|
|
||||||
|
PYQCRM entstand als Teil einer Abschlusspraxis und dem Bedarf der TERO GmbH an einem Managementprogramm für den internen Gebrauch.
|
||||||
|
|
||||||
|
|
||||||
|
Erstellung:
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Das Program wurde mit den folgenen Techologien entwickelt:
|
||||||
|
|
||||||
|
- IDE: Qt-Creator 6.8.x
|
||||||
|
- Framework: QtQuick - QML 6.8.x
|
||||||
|
- Sprache: Python 3.13.x
|
||||||
|
- Datenbank: MariaDB 10.11.x
|
||||||
|
- Sonstiges: JavaScript
|
||||||
|
|
||||||
|
|
||||||
|
Installation:
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Möglicherweise ist für deine Plattform ein Installationspaket verfügbar. Prüfe es also zuerst.
|
||||||
|
|
||||||
|
Es gibt zwei möglichkeiten das Program zu verwenden:
|
||||||
|
|
||||||
|
Möglichkeit I:
|
||||||
|
|
||||||
|
1. Datenbank einrichten (MaraiDB SQL-Schema verfügbar)
|
||||||
|
2. Python installiert und eingerichtet
|
||||||
|
3. Das Program in einen bevorzugten Pfad kopieren.
|
||||||
|
4. Erstelle einen Link zum main.py-Skript und stelle ihn so ein, dass er mit deinem Python-Interpreter ausgeführt wird
|
||||||
|
|
||||||
|
Möglichkeit II:
|
||||||
|
|
||||||
|
1. Datenbank einrichten (MaraiDB SQL-Schema verfügbar)
|
||||||
|
2. Die ausführbare Version des Programs in einen bevorzugten Pfad kopieren
|
||||||
|
3. Erstelle einen Link zur ausführbaren Datei, die für dein System erstellt wurde (pyqcrm/pyqcrm.exe)
|
||||||
|
|
||||||
|
|
||||||
|
Kudos:
|
||||||
|
----------
|
||||||
|
|
||||||
|
Wenn dir dieses Kunstwerk gefällt, kannst du uns deine Wertschätzung einfach dadurch zeigen, dass du jedem von uns einen Bungalow, einen 760IL BMW, lebenslange Flugtickets inklusive Begleitung kaufst und als Geschenk ein paar Millionen Euro auf ein Schweizer Bankkonto überweist.
|
||||||
|
|
||||||
|
|
||||||
|
Team:
|
||||||
|
---------
|
||||||
|
|
||||||
|
Marcopolo
|
||||||
|
Schnacke
|
||||||
|
Renegade
|
||||||
|
|
||||||
61
TeroStyle/BarButton.qml
Normal file
61
TeroStyle/BarButton.qml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls.impl
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Templates as T
|
||||||
|
|
||||||
|
T.ToolButton {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
property string target
|
||||||
|
|
||||||
|
checkable: true
|
||||||
|
icon.color: Colors.foreground
|
||||||
|
icon.height: 36
|
||||||
|
icon.width: 36
|
||||||
|
implicitHeight: 90
|
||||||
|
implicitWidth: 100
|
||||||
|
topPadding: 20
|
||||||
|
|
||||||
|
contentItem: Column {
|
||||||
|
readonly property color color: control.checked ? Colors.primaryShade : control.hovered ? Colors.primary : Colors.foreground
|
||||||
|
|
||||||
|
IconLabel {
|
||||||
|
color: parent.color
|
||||||
|
icon.color: parent.color
|
||||||
|
icon.height: control.icon.height
|
||||||
|
icon.source: control.icon.source
|
||||||
|
icon.width: control.icon.width
|
||||||
|
x: parent.width * .5 - width * .5
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
color: parent.color
|
||||||
|
font: Typography.smaller
|
||||||
|
text: control.text
|
||||||
|
x: parent.width * .5 - width * .5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.top: parent.top
|
||||||
|
color: control.checked ? Colors.primaryShade : Colors.primary
|
||||||
|
implicitWidth: 6
|
||||||
|
visible: control.checked || control.hovered
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
onPressed: mouse => mouse.accepted = false
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
if(!target) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
contentStack.replace(target)
|
||||||
|
}
|
||||||
|
}
|
||||||
69
TeroStyle/Button.qml
Normal file
69
TeroStyle/Button.qml
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls.impl as I
|
||||||
|
import QtQuick.Templates as T
|
||||||
|
|
||||||
|
T.Button {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set true when the button is supposed to be displayed in e.g. a TextField.
|
||||||
|
* You want to do this when this button is directly related to the TextField
|
||||||
|
* and the primary and only action for the TextField.
|
||||||
|
* Usually, you'd only want to display an icon in this button.
|
||||||
|
* If true, automatically sets height, width and position.
|
||||||
|
*
|
||||||
|
* ```qml
|
||||||
|
* TextField {
|
||||||
|
* placeholderText: "Search..."
|
||||||
|
* Button {
|
||||||
|
* icon.source: "qrc:/images/MagnifyingGlass.svg"
|
||||||
|
* isFieldButton: true
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
property bool isFieldButton: false
|
||||||
|
|
||||||
|
|
||||||
|
height: isFieldButton ? parent.height : null
|
||||||
|
icon.color: Colors.primaryContrast
|
||||||
|
icon.height: 21
|
||||||
|
icon.width: 21
|
||||||
|
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, implicitContentHeight + topPadding + bottomPadding)
|
||||||
|
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding)
|
||||||
|
/**
|
||||||
|
* Icon is slightly larger than Text, so we need to reduce the padding a
|
||||||
|
* tiny bit to make sure all Buttons are still the same height.
|
||||||
|
*/
|
||||||
|
padding: Dimensions.m - (icon.source.toString() === "" ? 0 : 1)
|
||||||
|
x: isFieldButton ? parent.x + parent.width - width : null
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
border.color: Colors.interactive
|
||||||
|
border.width: isFieldButton ? 1 : 0
|
||||||
|
bottomLeftRadius: topLeftRadius
|
||||||
|
color: !control.enabled ? Colors.disabled : !control.hovered ? Colors.primary : Colors.primaryLighter
|
||||||
|
radius: Dimensions.radius
|
||||||
|
topLeftRadius: isFieldButton ? 0 : radius
|
||||||
|
}
|
||||||
|
contentItem: I.IconLabel {
|
||||||
|
color: !control.enabled ? Colors.disabledForeground : Colors.primaryContrast
|
||||||
|
display: control.display
|
||||||
|
font: control.font
|
||||||
|
icon: control.icon
|
||||||
|
mirrored: control.mirrored
|
||||||
|
spacing: Dimensions.s
|
||||||
|
text: control.text
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
onPressed: mouse => mouse.accepted = false
|
||||||
|
}
|
||||||
|
}
|
||||||
26
TeroStyle/Colors.qml
Normal file
26
TeroStyle/Colors.qml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
pragma Singleton
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
readonly property int dark: 0
|
||||||
|
readonly property int light: 1
|
||||||
|
|
||||||
|
property int theme: Application.styleHints.colorScheme === Qt.ColorScheme.Light ? light : dark
|
||||||
|
|
||||||
|
readonly property color primary: "#b81a34"
|
||||||
|
readonly property color primaryContrast: "#fdfdfd"
|
||||||
|
readonly property color primaryLighter: Qt.lighter(primary, 1.5)
|
||||||
|
readonly property color primaryShade: theme === dark ? primaryLighter : Qt.darker(primary, 1.5)
|
||||||
|
readonly property color primaryHighlight: theme === dark ? Qt.darker(primary, 2- Colors.highlightOpacity) : Qt.lighter(primary, 2- Colors.highlightOpacity)
|
||||||
|
readonly property color foreground: theme === dark ? "#fdfdfd" : "#110b0c"
|
||||||
|
readonly property color background: theme === dark ? "#303136" : "#eff1f5"
|
||||||
|
readonly property color mantle: theme === dark ? "#1E1E23" : "#e7e9ef"
|
||||||
|
readonly property color interactive: theme === dark ? "#878b97" : "#d9d9da"
|
||||||
|
readonly property color error: theme === dark ? "#ff2264" : "#ff004b"
|
||||||
|
readonly property color disabled: theme === dark ? Qt.darker(interactive, 1.9) : Qt.darker(interactive, 1.3)
|
||||||
|
readonly property color disabledForeground: theme === dark ? Qt.darker(foreground, 1.4) : Qt.lighter(foreground, 1.9)
|
||||||
|
readonly property color transparent: "transparent"
|
||||||
|
|
||||||
|
readonly property double highlightOpacity: .3
|
||||||
|
}
|
||||||
108
TeroStyle/ComboBox.qml
Normal file
108
TeroStyle/ComboBox.qml
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Templates as T
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Controls.impl
|
||||||
|
|
||||||
|
T.ComboBox {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
font: Typography.body
|
||||||
|
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
|
||||||
|
implicitContentHeight + topPadding + bottomPadding,
|
||||||
|
implicitIndicatorHeight + topPadding + bottomPadding)
|
||||||
|
|
||||||
|
|
||||||
|
contentItem: T.TextField {
|
||||||
|
id: test
|
||||||
|
autoScroll: control.editable
|
||||||
|
color: Colors.foreground
|
||||||
|
enabled: control.editable
|
||||||
|
|
||||||
|
font: Typography.body
|
||||||
|
implicitHeight: Typography.body.pixelSize + topPadding + bottomPadding
|
||||||
|
inputMethodHints: control.inputMethodHints
|
||||||
|
padding: Dimensions.m
|
||||||
|
readOnly: control.down
|
||||||
|
selectByMouse: control.selectTextByMouse
|
||||||
|
text: control.editable ? control.editText : control.displayText
|
||||||
|
validator: control.validator
|
||||||
|
width: control.width - indicator.width
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
background: Rectangle {
|
||||||
|
border.color: Colors.interactive
|
||||||
|
border.width: 1
|
||||||
|
color: Colors.mantle
|
||||||
|
radius: Dimensions.radius
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
required property var model
|
||||||
|
required property int index
|
||||||
|
|
||||||
|
width: ListView.view.width
|
||||||
|
text: model[control.textRole]
|
||||||
|
highlighted: control.highlightedIndex === index
|
||||||
|
hoverEnabled: control.hoverEnabled
|
||||||
|
}
|
||||||
|
indicator: Rectangle {
|
||||||
|
id: indicator
|
||||||
|
|
||||||
|
border.color: Colors.interactive
|
||||||
|
bottomRightRadius: Dimensions.radius
|
||||||
|
color: Colors.primary
|
||||||
|
height: control.height
|
||||||
|
topRightRadius: Dimensions.radius
|
||||||
|
width: 20 + Dimensions.s * 2
|
||||||
|
x: control.width - width
|
||||||
|
y: 0
|
||||||
|
z: 2
|
||||||
|
|
||||||
|
IconLabel {
|
||||||
|
anchors.fill: parent
|
||||||
|
bottomPadding: Dimensions.s
|
||||||
|
icon.color: Colors.foreground
|
||||||
|
icon.source: "qrc:/images/ChevronDown.svg"
|
||||||
|
leftPadding: Dimensions.s
|
||||||
|
rightPadding: Dimensions.s
|
||||||
|
topPadding: Dimensions.s
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
onPressed: () => {
|
||||||
|
control.popup.visible = true;
|
||||||
|
control.popup.forceActiveFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
popup: T.Popup {
|
||||||
|
bottomMargin: 6
|
||||||
|
height: Math.min(contentItem.implicitHeight + 2, control.Window.height - topMargin - bottomMargin)
|
||||||
|
padding: 1
|
||||||
|
topMargin: 6
|
||||||
|
width: control.width
|
||||||
|
y: control.height
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
border.color: Colors.interactive
|
||||||
|
color: Colors.mantle
|
||||||
|
radius: Dimensions.radius
|
||||||
|
}
|
||||||
|
contentItem: ListView {
|
||||||
|
clip: true
|
||||||
|
currentIndex: control.highlightedIndex
|
||||||
|
implicitHeight: contentHeight
|
||||||
|
model: control.popup.visible ? control.delegateModel : null
|
||||||
|
|
||||||
|
T.ScrollBar.vertical: ScrollBar {
|
||||||
|
}
|
||||||
|
highlight: Rectangle {
|
||||||
|
color: Colors.primary
|
||||||
|
opacity: Colors.highlightOpacity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
26
TeroStyle/Dimensions.qml
Normal file
26
TeroStyle/Dimensions.qml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
pragma Singleton
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
QtObject
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Distance for objects that are tied to each other,
|
||||||
|
* e.g. a field and its label.
|
||||||
|
*/
|
||||||
|
readonly property int s: 9
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Distance for objects that are grouped together, e.g. radio buttons of the
|
||||||
|
* same radio group.
|
||||||
|
*/
|
||||||
|
readonly property int m: 15
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Distance for objects that are not related to each other, or to objects
|
||||||
|
* and their container.
|
||||||
|
*/
|
||||||
|
readonly property int l: 30
|
||||||
|
|
||||||
|
readonly property int radius: 4
|
||||||
|
}
|
||||||
5
TeroStyle/EmailAddressValidator.qml
Normal file
5
TeroStyle/EmailAddressValidator.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
RegularExpressionValidator {
|
||||||
|
regularExpression: /([\+!#$%&‘\*\–\/\=?\^_`\.{|}\~\-\_0-9A-Za-z]{1,185})@([0-9A-Za-z\.\-\_]{1,64})\.([a-zA-z]{2,5})/
|
||||||
|
}
|
||||||
20
TeroStyle/Field.qml
Normal file
20
TeroStyle/Field.qml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
required property string label
|
||||||
|
/**
|
||||||
|
* Adds an asterisk after the label, informing the user that this field
|
||||||
|
* is mandatory.
|
||||||
|
*/
|
||||||
|
property bool mandatory: false
|
||||||
|
spacing: Dimensions.s
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: label + (mandatory ? "*" : "")
|
||||||
|
font: Typography.body
|
||||||
|
}
|
||||||
|
}
|
||||||
5
TeroStyle/H1.qml
Normal file
5
TeroStyle/H1.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
Text {
|
||||||
|
font: Typography.h1
|
||||||
|
}
|
||||||
5
TeroStyle/H2.qml
Normal file
5
TeroStyle/H2.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
Text {
|
||||||
|
font: Typography.h2
|
||||||
|
}
|
||||||
5
TeroStyle/Label.qml
Normal file
5
TeroStyle/Label.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
Label {
|
||||||
|
color: Colors.foreground
|
||||||
|
}
|
||||||
5
TeroStyle/NotEmptyValidator.qml
Normal file
5
TeroStyle/NotEmptyValidator.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
RegularExpressionValidator {
|
||||||
|
regularExpression: /^\S+.*\S+$/
|
||||||
|
}
|
||||||
5
TeroStyle/OptionalEmailAddressValidator.qml
Normal file
5
TeroStyle/OptionalEmailAddressValidator.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
RegularExpressionValidator {
|
||||||
|
regularExpression: /^$|([\+!#$%&‘\*\–\/\=?\^_`\.{|}\~\-\_0-9A-Za-z]{1,185})@([0-9A-Za-z\.\-\_]{1,64})\.([a-zA-z]{2,5})/
|
||||||
|
}
|
||||||
5
TeroStyle/OptionalPhoneNumberValidator.qml
Normal file
5
TeroStyle/OptionalPhoneNumberValidator.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
RegularExpressionValidator {
|
||||||
|
regularExpression: /^$|([+0-9])([0-9\s]{1,17})/
|
||||||
|
}
|
||||||
5
TeroStyle/PhoneNumberValidator.qml
Normal file
5
TeroStyle/PhoneNumberValidator.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
RegularExpressionValidator {
|
||||||
|
regularExpression: /([+0-9])([0-9\s]{1,17})/
|
||||||
|
}
|
||||||
5
TeroStyle/PostcodeValidator.qml
Normal file
5
TeroStyle/PostcodeValidator.qml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
RegularExpressionValidator {
|
||||||
|
regularExpression: /([^$][0-9]{1,4})/
|
||||||
|
}
|
||||||
64
TeroStyle/QuickFilter.qml
Normal file
64
TeroStyle/QuickFilter.qml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtCore
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
required property ListModel model
|
||||||
|
|
||||||
|
signal selectedChanged(string name)
|
||||||
|
|
||||||
|
spacing: Dimensions.m
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
model: root.model
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: item
|
||||||
|
|
||||||
|
required property int index
|
||||||
|
required property var modelData
|
||||||
|
property bool hovered: false
|
||||||
|
property real padding: Dimensions.m
|
||||||
|
|
||||||
|
height: text.height + padding * 2
|
||||||
|
width: text.width + padding * 2
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
border.color: modelData.selected ? Colors.transparent : Colors.foreground
|
||||||
|
border.width: 2
|
||||||
|
color: modelData.selected || mouseArea.containsMouse ? Colors.primary : Colors.transparent
|
||||||
|
radius: parent.height
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
id: text
|
||||||
|
|
||||||
|
color: Colors.foreground
|
||||||
|
font: Typography.body
|
||||||
|
text: modelData.text
|
||||||
|
x: parent.padding
|
||||||
|
y: parent.padding
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
onPressed: {
|
||||||
|
if (item.modelData.selected)
|
||||||
|
return;
|
||||||
|
const model = root.model;
|
||||||
|
for (let i = 0; i < model.count; i++) {
|
||||||
|
model.setProperty(i, "selected", false);
|
||||||
|
}
|
||||||
|
model.setProperty(item.index, "selected", true);
|
||||||
|
selectedChanged(item.modelData.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
26
TeroStyle/SearchBar.qml
Normal file
26
TeroStyle/SearchBar.qml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: field
|
||||||
|
|
||||||
|
signal submitted(query: string)
|
||||||
|
|
||||||
|
Layout.preferredWidth: 300
|
||||||
|
placeholderText: qsTr("Suche")
|
||||||
|
|
||||||
|
Keys.onReturnPressed: {
|
||||||
|
field.submitted(field.text);
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
icon.source: "qrc:/images/MagnifyingGlass.svg"
|
||||||
|
isFieldButton: true
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
field.submitted(field.text)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
47
TeroStyle/TextField.qml
Normal file
47
TeroStyle/TextField.qml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Templates as T
|
||||||
|
|
||||||
|
T.TextField
|
||||||
|
{
|
||||||
|
id: control
|
||||||
|
|
||||||
|
background: Rectangle
|
||||||
|
{
|
||||||
|
id: background
|
||||||
|
color: Colors.mantle
|
||||||
|
radius: Dimensions.radius
|
||||||
|
border.width: !control.focus ? 1 : 2
|
||||||
|
border.color: Colors.interactive
|
||||||
|
height: control.implicitHeight
|
||||||
|
}
|
||||||
|
|
||||||
|
color: Colors.foreground
|
||||||
|
implicitHeight: Typography.body.pixelSize + topPadding + bottomPadding
|
||||||
|
placeholderTextColor: Colors.interactive
|
||||||
|
font: Typography.body
|
||||||
|
padding: Dimensions.m
|
||||||
|
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder
|
||||||
|
*/
|
||||||
|
Text {
|
||||||
|
x: control.leftPadding
|
||||||
|
y: control.topPadding
|
||||||
|
width: control.width - (control.leftPadding + control.rightPadding)
|
||||||
|
height: control.height - (control.topPadding + control.bottomPadding)
|
||||||
|
|
||||||
|
font: control.font
|
||||||
|
text: control.placeholderText
|
||||||
|
color: control.placeholderTextColor
|
||||||
|
verticalAlignment: control.verticalAlignment
|
||||||
|
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
|
||||||
|
elide: Text.ElideRight
|
||||||
|
renderType: control.renderType
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
56
TeroStyle/Typography.qml
Normal file
56
TeroStyle/Typography.qml
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
pragma Singleton
|
||||||
|
|
||||||
|
import QtCore
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
Item {
|
||||||
|
readonly property font body: ({
|
||||||
|
family: robotoCondensed.font,
|
||||||
|
pointSize: 16,
|
||||||
|
weight: Font.Medium,
|
||||||
|
letterSpacing: 0,
|
||||||
|
kerning: true
|
||||||
|
})
|
||||||
|
|
||||||
|
readonly property font small: ({
|
||||||
|
family: body.family,
|
||||||
|
pointSize: 14,
|
||||||
|
weight: Font.Medium,
|
||||||
|
letterSpacing: body.letterSpacing,
|
||||||
|
kerning: body.kerning
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
readonly property font smallBold: ({
|
||||||
|
family: small.family,
|
||||||
|
pointSize: small.pointSize,
|
||||||
|
weight: Font.Bold,
|
||||||
|
letterSpacing: small.letterSpacing,
|
||||||
|
kerning: small.kerning
|
||||||
|
})
|
||||||
|
|
||||||
|
readonly property font smaller: ({
|
||||||
|
family: body.family,
|
||||||
|
pointSize: 11,
|
||||||
|
weight: Font.DemiBold,
|
||||||
|
letterSpacing: body.letterSpacing,
|
||||||
|
kerning: body.kerning
|
||||||
|
})
|
||||||
|
readonly property font h1: ({
|
||||||
|
family: body.family,
|
||||||
|
pointSize: 38,
|
||||||
|
weight: body.weight,
|
||||||
|
letterSpacing: body.letterSpacing,
|
||||||
|
kerning: body.kerning
|
||||||
|
})
|
||||||
|
readonly property font h2: ({
|
||||||
|
family: body.family,
|
||||||
|
pointSize: 28,
|
||||||
|
weight: body.weight,
|
||||||
|
letterSpacing: body.letterSpacing,
|
||||||
|
kerning: body.kerning,
|
||||||
|
})
|
||||||
|
readonly property FontLoader robotoCondensed: FontLoader {
|
||||||
|
source: "qrc:/fonts/RobotoCondensed.otf"
|
||||||
|
}
|
||||||
|
}
|
||||||
20
TeroStyle/qmldir
Normal file
20
TeroStyle/qmldir
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
module TeroStyle
|
||||||
|
singleton Colors Colors.qml
|
||||||
|
singleton Dimensions Dimensions.qml
|
||||||
|
singleton Typography Typography.qml
|
||||||
|
BarButton BarButton.qml
|
||||||
|
Button Button.qml
|
||||||
|
ComboBox ComboBox.qml
|
||||||
|
EmailAddressValidator EmailAddressValidator.qml
|
||||||
|
Field Field.qml
|
||||||
|
H1 H1.qml
|
||||||
|
H2 H2.qml
|
||||||
|
Label Label.qml
|
||||||
|
NotEmptyValidator NotEmptyValidator.qml
|
||||||
|
OptionalEmailAddressValidator OptionalEmailAddressValidator.qml
|
||||||
|
PhoneNumberValidator PhoneNumberValidator.qml
|
||||||
|
OptionalPhoneNumberValidator OptionalPhoneNumberValidator.qml
|
||||||
|
PostcodeValidator PostcodeValidator.qml
|
||||||
|
QuickFilter QuickFilter.qml
|
||||||
|
SearchBar SearchBar.qml
|
||||||
|
TextField TextField.qml
|
||||||
88
Tero_CRM_Reinigungsunternehmen.txt
Normal file
88
Tero_CRM_Reinigungsunternehmen.txt
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
CRM für Objektbetreuung Reinigungsservice
|
||||||
|
|
||||||
|
|
||||||
|
Minimal Voraussetzung:
|
||||||
|
|
||||||
|
|
||||||
|
Mitarbeiter
|
||||||
|
- Dokumenten Management System (DMS)
|
||||||
|
- Arbeitszeitdokumentation
|
||||||
|
- Urlaubsplaner
|
||||||
|
- Arbeitnehmer anlegen
|
||||||
|
|
||||||
|
Nice To Have:
|
||||||
|
- WhatsApp
|
||||||
|
- Telefon
|
||||||
|
- Social Media Uploader
|
||||||
|
Dokumentenvorlagen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Kunden
|
||||||
|
- Kunden anlegen (Hausverwaltung Krefeld)
|
||||||
|
- Dokumenten Management System (DMS)
|
||||||
|
- Ansprechpartner anlegen
|
||||||
|
RG auch in CC Funktion
|
||||||
|
|
||||||
|
Nice To Have:
|
||||||
|
Dokumentenvorlagen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dashboard
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Abrechnung
|
||||||
|
- Rechnung schreiben (Zugferd Modus)
|
||||||
|
- Fixkostenerfassung
|
||||||
|
Rechnungsarchiv
|
||||||
|
Mahnfunktion
|
||||||
|
|
||||||
|
|
||||||
|
Objekt
|
||||||
|
- Objekt anlegen
|
||||||
|
- Ansprechpartner anlegen
|
||||||
|
- Dokumenten Management System (DMS)
|
||||||
|
Str. (Pflicht)
|
||||||
|
Hausnummer (Pflicht)
|
||||||
|
PLZ
|
||||||
|
Ort (Pflicht)
|
||||||
|
Parteien (Anzahl)
|
||||||
|
Stockwerke (Anzahl)
|
||||||
|
Zwischenetage (ja/nein)
|
||||||
|
Aufzug (ja/nein)
|
||||||
|
Fenster (ja/nein) anschließend Anzahl + ohne Leiter erreichbar (ja/nein)
|
||||||
|
Besonderheiten (Infofeld)
|
||||||
|
Kontaktdaten Hausmeister / Beirat
|
||||||
|
Reinigungsmittel zu finden? ( Wo ist es im Kellerraum, Dachgeschoss, 2 Tür von links?)
|
||||||
|
Foto Upload wäre toll ;-)
|
||||||
|
|
||||||
|
Leistungen
|
||||||
|
Treppenhausreinigung
|
||||||
|
Garten
|
||||||
|
siehe Homepage !!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Angebot
|
||||||
|
|
||||||
|
|
||||||
|
Auftrag
|
||||||
|
- Arbeitsauftrag anlegen
|
||||||
|
Pflegehinweise zum Objekt
|
||||||
|
BG Sicherheitsdatenblätter
|
||||||
|
Reinigungsmittel erhalten am ?
|
||||||
|
Preis ab Datum
|
||||||
|
Objektkontrolle (Wann wurde das Objekt das letzte Mal kontrolliert?) Ähnlich wie Preis mit Datum
|
||||||
|
Preise
|
||||||
|
Schlüssel
|
||||||
|
|
||||||
|
|
||||||
|
Auswertung
|
||||||
|
Stundenkalender
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1
backup.pyqrec
Normal file
1
backup.pyqrec
Normal file
@@ -0,0 +1 @@
|
|||||||
|
zIgY4d8ORJ0HZpG7y8/XeS84mKHFcvNaMmCxdirT6ebjApHlo5XVXspy3ENIEvrZczSDRugR0sAVVt8StqZ2gGAr42tIwFF9Uwl7YBMi72+iGIkwyIGX/Jw3OiHYubkXEooZLYX1MYPOC91ppVnZG0PA0IYdpDofq5inFfxpPBwMdcJxvtZPLhIX2y7Fn3m1/lsWe+e2EBwDGxnZjUjPMsRFMjswBv20EOHk46OuNFwlDyn+w9ZDoJfhF6HKYqNxnBnN90KEUygTYGWk.nfaytDW7Z0Nn2/5d22/ciQ==
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17">
|
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
|
||||||
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
|
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
|
||||||
<mxGraphModel dx="1434" dy="844" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
<mxGraphModel dx="2963" dy="1707" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||||
<root>
|
<root>
|
||||||
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
|
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
|
||||||
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
|
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-13" value="Databasemanager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
<mxCell id="_OjnZrDktrtFcgEA-KSX-13" value="Databasemanager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry x="50" y="40" width="170" height="90" as="geometry" />
|
<mxGeometry x="20" y="340" width="170" height="90" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-14" value="<div>- connection</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="_OjnZrDktrtFcgEA-KSX-13" vertex="1">
|
<mxCell id="_OjnZrDktrtFcgEA-KSX-14" value="<div>- connection</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="_OjnZrDktrtFcgEA-KSX-13" vertex="1">
|
||||||
<mxGeometry y="26" width="170" height="24" as="geometry" />
|
<mxGeometry y="26" width="170" height="24" as="geometry" />
|
||||||
@@ -16,32 +16,17 @@
|
|||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-16" value="+ instance(): connection" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="_OjnZrDktrtFcgEA-KSX-13" vertex="1">
|
<mxCell id="_OjnZrDktrtFcgEA-KSX-16" value="+ instance(): connection" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="_OjnZrDktrtFcgEA-KSX-13" vertex="1">
|
||||||
<mxGeometry y="58" width="170" height="32" as="geometry" />
|
<mxGeometry y="58" width="170" height="32" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-38" value="BusinessDao" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
|
||||||
<mxGeometry x="50" y="240" width="160" height="166" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-42" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="_OjnZrDktrtFcgEA-KSX-38" vertex="1">
|
|
||||||
<mxGeometry y="26" width="160" height="40" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-41" value="<div><span style="background-color: initial;">+ getBusiness()</span><br></div><div><span style="background-color: initial;">+ addBusiness()</span></div><div>+ updateBusiness()</div><div>+ delBusiness()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="_OjnZrDktrtFcgEA-KSX-38" vertex="1">
|
|
||||||
<mxGeometry y="66" width="160" height="100" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-43" value="BusinessModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
<mxCell id="_OjnZrDktrtFcgEA-KSX-43" value="BusinessModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry x="280" y="150" width="160" height="170" as="geometry" />
|
<mxGeometry x="240" y="40" width="160" height="270" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-45" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;connectable=1;allowArrows=1;recursiveResize=1;expand=0;" parent="_OjnZrDktrtFcgEA-KSX-43" vertex="1">
|
<mxCell id="_OjnZrDktrtFcgEA-KSX-45" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;connectable=1;allowArrows=1;recursiveResize=1;expand=0;" parent="_OjnZrDktrtFcgEA-KSX-43" vertex="1">
|
||||||
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-46" value="- getData()<div>+ rowCount()</div><div>+ columnCount()</div><div>+ Data()</div><div>+ headerData()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="_OjnZrDktrtFcgEA-KSX-43" vertex="1">
|
<mxCell id="_OjnZrDktrtFcgEA-KSX-46" value="- getData()<div>- getBusinessInfo()<br><div>+ rowCount()</div><div>+ columnCount()</div><div>+ Data()</div><div>+ headerData()</div></div><div>+ onRowClicked()</div><div>+ viewCriterion()</div><div>+ addBusiness()</div><div>-&nbsp; refreshView()</div><div>+ setContact()</div><div>+ updateTable()</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="_OjnZrDktrtFcgEA-KSX-43" vertex="1">
|
||||||
<mxGeometry y="80" width="160" height="90" as="geometry" />
|
<mxGeometry y="80" width="160" height="190" as="geometry" />
|
||||||
</mxCell>
|
|
||||||
<mxCell id="_OjnZrDktrtFcgEA-KSX-50" value="" style="endArrow=none;html=1;rounded=0;entryX=0.435;entryY=1.063;entryDx=0;entryDy=0;exitX=0.463;exitY=-0.027;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-38" target="_OjnZrDktrtFcgEA-KSX-16" edge="1">
|
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
||||||
<mxPoint x="390" y="460" as="sourcePoint" />
|
|
||||||
<mxPoint x="440" y="410" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xjCWurhqpCHEkLAYqff9-0" value="PermissionDao" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
<mxCell id="xjCWurhqpCHEkLAYqff9-0" value="PermissionDao" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry x="1330" y="50" width="180" height="220" as="geometry" />
|
<mxGeometry x="1200" y="540" width="180" height="220" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xjCWurhqpCHEkLAYqff9-1" value="<div>- id : int</div><div>- description : string</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xjCWurhqpCHEkLAYqff9-0" vertex="1">
|
<mxCell id="xjCWurhqpCHEkLAYqff9-1" value="<div>- id : int</div><div>- description : string</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xjCWurhqpCHEkLAYqff9-0" vertex="1">
|
||||||
<mxGeometry y="26" width="180" height="64" as="geometry" />
|
<mxGeometry y="26" width="180" height="64" as="geometry" />
|
||||||
@@ -52,70 +37,450 @@
|
|||||||
<mxCell id="xjCWurhqpCHEkLAYqff9-3" value="<div>+ getPermissions(User)</div><div>+ getPermission()</div><div>+ grantPermission()</div><div>+ setPermission()</div><div>+ revokePermission()</div><div>+ savePermission()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xjCWurhqpCHEkLAYqff9-0" vertex="1">
|
<mxCell id="xjCWurhqpCHEkLAYqff9-3" value="<div>+ getPermissions(User)</div><div>+ getPermission()</div><div>+ grantPermission()</div><div>+ setPermission()</div><div>+ revokePermission()</div><div>+ savePermission()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xjCWurhqpCHEkLAYqff9-0" vertex="1">
|
||||||
<mxGeometry y="98" width="180" height="122" as="geometry" />
|
<mxGeometry y="98" width="180" height="122" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-12" value="User" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-12" value="User" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry x="827" y="50" width="280" height="270" as="geometry" />
|
<mxGeometry x="870" y="540" width="280" height="270" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-13" value="- username : string<div>- password : string</div><div>- roleids : roleenum [ ]</div><div>- gecos : string</div><div>- enabled : bool</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-12">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-13" value="- username : string<div>- password : string</div><div>- roleids : roleenum [ ]</div><div>- gecos : string</div><div>- enabled : bool</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-12" vertex="1">
|
||||||
<mxGeometry y="26" width="280" height="84" as="geometry" />
|
<mxGeometry y="26" width="280" height="84" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-12">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-12" vertex="1">
|
||||||
<mxGeometry y="110" width="280" height="8" as="geometry" />
|
<mxGeometry y="110" width="280" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-15" value="+ getRole()<div>+ setRole()</div><div>+changePassword(oldpassword, newpassword)</div><div>+ getUsername()</div><div>+ getPassword()</div><div>+ getGecos()</div><div>(+ createRole(superuser, admin)????</div><div><br></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-12">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-15" value="+ getRole()<div>+ setRole()</div><div>+changePassword(oldpassword, newpassword)</div><div>+ getUsername()</div><div>+ getPassword()</div><div>+ getGecos()</div><div>(+ createRole(superuser, admin)????</div><div><br></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-12" vertex="1">
|
||||||
<mxGeometry y="118" width="280" height="152" as="geometry" />
|
<mxGeometry y="118" width="280" height="152" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-18" value="UserRoles" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-18" value="UserRoles" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry x="450" y="475" width="160" height="220" as="geometry" />
|
<mxGeometry x="1420" y="830" width="160" height="220" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-19" value="+ userrole : Role[ ]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-18">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-19" value="+ userrole : Role[ ]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-18" vertex="1">
|
||||||
<mxGeometry y="26" width="160" height="44" as="geometry" />
|
<mxGeometry y="26" width="160" height="44" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-20" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-18">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-20" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-18" vertex="1">
|
||||||
<mxGeometry y="70" width="160" height="8" as="geometry" />
|
<mxGeometry y="70" width="160" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-21" value="+ method(type): type" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-18">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-21" value="+ method(type): type" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-18" vertex="1">
|
||||||
<mxGeometry y="78" width="160" height="142" as="geometry" />
|
<mxGeometry y="78" width="160" height="142" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-22" value="Role" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-22" value="Role" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry x="827" y="430" width="230" height="220" as="geometry" />
|
<mxGeometry x="870" y="920" width="230" height="220" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-23" value="- roletype : string<div>- permissionids : permissionenmum [ ]</div><div>&nbsp;</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-22">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-23" value="- roletype : string<div>- permissionids : permissionenmum [ ]</div><div>&nbsp;</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-22" vertex="1">
|
||||||
<mxGeometry y="26" width="230" height="64" as="geometry" />
|
<mxGeometry y="26" width="230" height="64" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-24" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-22">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-24" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-22" vertex="1">
|
||||||
<mxGeometry y="90" width="230" height="8" as="geometry" />
|
<mxGeometry y="90" width="230" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-25" value="+ getPermission()<div>+ setPermission(superuser, admin)</div><div><br></div><div>+ getRoletype()</div><div>+ setRoletype(superuser, admin)<br><div><br></div></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-22">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-25" value="+ getPermission()<div>+ setPermission(superuser, admin)</div><div><br></div><div>+ getRoletype()</div><div>+ setRoletype(superuser, admin)<br><div><br></div></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-22" vertex="1">
|
||||||
<mxGeometry y="98" width="230" height="122" as="geometry" />
|
<mxGeometry y="98" width="230" height="122" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-27" value="Permission" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-27" value="Permission" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry x="1280" y="430" width="220" height="230" as="geometry" />
|
<mxGeometry x="1410" y="540" width="220" height="230" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-28" value="- permissions : permissionenmum [ ]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-27">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-28" value="- permissions : permissionenmum [ ]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-27" vertex="1">
|
||||||
<mxGeometry y="26" width="220" height="26" as="geometry" />
|
<mxGeometry y="26" width="220" height="26" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-29" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-27">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-29" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-27" vertex="1">
|
||||||
<mxGeometry y="52" width="220" height="8" as="geometry" />
|
<mxGeometry y="52" width="220" height="8" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-30" value="+ method(type): type" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="Yrs2Ar6oVTmmq3gZQ8Z4-27">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-30" value="+ method(type): type" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="Yrs2Ar6oVTmmq3gZQ8Z4-27" vertex="1">
|
||||||
<mxGeometry y="60" width="220" height="170" as="geometry" />
|
<mxGeometry y="60" width="220" height="170" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-31" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-44" value="" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;exitX=0.535;exitY=-0.018;exitDx=0;exitDy=0;exitPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="Yrs2Ar6oVTmmq3gZQ8Z4-22" edge="1">
|
||||||
|
<mxGeometry width="160" relative="1" as="geometry">
|
||||||
|
<mxPoint x="940" y="860" as="sourcePoint" />
|
||||||
|
<mxPoint x="993" y="811" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-0" value="AddressDao" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="460" y="40" width="160" height="130" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-1" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-0" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-2" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-0" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-3" value="- importPlz()<div>- importCountry()</div><div>+ getAddressData()</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-0" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="72" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-4" value="AddressModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="650" y="40" width="160" height="150" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-5" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-4" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-6" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-4" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-7" value="<div>+ rowCount()</div><div>+ data()</div><div>+ roleNames()</div><div>+ setData()</div><div>+getAddresses()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-4" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="92" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-8" value="BTypeDAO" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="460" y="280" width="160" height="130" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-9" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-8" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-10" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-8" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-11" value="<div>+ getBType()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-8" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="72" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-12" value="BTypeModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="650" y="280" width="160" height="130" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-13" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-12" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-12" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-15" value="+ rowCount()<div>+ data()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-12" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="72" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-16" value="ContactDAO" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="460" y="430" width="160" height="130" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-17" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-16" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-18" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-16" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-19" value="<div>+ getContacts()</div><div>+ addContact()</div><div>+ addObjectContact()</div><div>+ getContact()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-16" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="72" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-20" value="ContactModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="650" y="430" width="160" height="180" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-21" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-20" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-22" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-20" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-23" value="+ getContacts()<div>- getData()</div><div>+ addContact()</div><div>+ addObjectContact()</div><div>- getContact()</div><div>+ getContactDetails()</div><div>- getContactInfo()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-20" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="122" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-24" value="EmployeeDAO" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="470" y="660" width="160" height="130" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-25" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-24" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-26" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-24" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-27" value="<div>+ getEmployees()</div><div>+ getEmployee()</div><div>+ addEmployee()</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-24" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="72" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-28" value="EmployeeModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="650" y="660" width="160" height="220" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-29" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-28" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-30" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-28" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-31" value="+ addEmployee()<div>+ viewCriterion()</div><div>-&nbsp; refreshView()</div><div>- getData()</div><div>+ rowCount()</div><div>+ columnCount()</div><div>+ data()</div><div>+ headerData()</div><div>+ onRowClicked()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-28" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="162" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-32" value="ObjectDAO" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="470" y="900" width="160" height="130" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-33" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-32" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-34" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-32" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-35" value="<div>+ addObject()</div><div>+ getObjects()</div><div><br></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-32" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="72" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-36" value="ObjectModel" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="650" y="900" width="160" height="220" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-37" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-36" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-38" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-36" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-39" value="+ addObject()<div>-&nbsp; refreshView()</div><div>-&nbsp; getData()</div><div>+ rowCount()</div><div>+ columnCount()</div><div>+ viewCriterion()</div><div>+ data()</div><div>+ headerData()</div><div>+ onRowClicked()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-36" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="162" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-40" value="UserDAO" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="20" y="840" width="160" height="130" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-41" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-40" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-42" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-40" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-43" value="<div>+ createUser()</div><div>+ getUser()</div><div><br></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-40" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="72" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-48" value="UserManager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="220" y="840" width="160" height="240" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-49" value="<div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-48" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-50" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-48" vertex="1">
|
||||||
|
<mxGeometry y="50" width="160" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-51" value="<div>+ createUser()</div><div>-&nbsp; hashPassword()</div><div>+ checkAdmin()</div><div>+ getUser()</div><div>+ getUsers()</div><div>+ delUser()</div><div>+ updateUser()</div><div>+ disableUser()</div><div>+ login()</div><div>-&nbsp; checkPassword</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-48" vertex="1">
|
||||||
|
<mxGeometry y="58" width="160" height="182" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-57" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.402;entryY=1.001;entryDx=0;entryDy=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-13" target="v96xPLQoPeUk4bUV2WaN-62" edge="1">
|
||||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="210" y="270" as="sourcePoint" />
|
<mxPoint x="50" y="240" as="sourcePoint" />
|
||||||
<mxPoint x="280" y="270" as="targetPoint" />
|
<mxPoint x="103.36000000000013" y="205.29999999999995" as="targetPoint" />
|
||||||
|
<Array as="points" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-42" value="" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1.013;entryY=0.385;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="Yrs2Ar6oVTmmq3gZQ8Z4-30" target="Yrs2Ar6oVTmmq3gZQ8Z4-25">
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-59" value="Classname" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
<mxGeometry width="160" relative="1" as="geometry">
|
<mxGeometry x="40" y="40" width="160" height="170" as="geometry" />
|
||||||
<mxPoint x="870" y="690" as="sourcePoint" />
|
</mxCell>
|
||||||
<mxPoint x="1090" y="570" as="targetPoint" />
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-61" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-59" vertex="1">
|
||||||
|
<mxGeometry y="26" width="160" height="54" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-62" value="<div><span style="background-color: initial;">+ getBusiness()</span><br></div><div><span style="background-color: initial;">+ addBusiness()</span></div><div>+ getOneBusiness()</div><div>+ updateBusiness()</div><div>+ delBusiness()</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-59" vertex="1">
|
||||||
|
<mxGeometry y="80" width="160" height="90" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-63" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" target="v96xPLQoPeUk4bUV2WaN-59" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="240" y="83" as="sourcePoint" />
|
||||||
|
<mxPoint x="110" y="130" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Yrs2Ar6oVTmmq3gZQ8Z4-44" value="" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;exitX=0.535;exitY=-0.018;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="Yrs2Ar6oVTmmq3gZQ8Z4-22">
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-64" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1.001;exitY=0.088;exitDx=0;exitDy=0;exitPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-13" target="v96xPLQoPeUk4bUV2WaN-3" edge="1">
|
||||||
<mxGeometry width="160" relative="1" as="geometry">
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
<mxPoint x="897" y="370" as="sourcePoint" />
|
<mxPoint x="200" y="348" as="sourcePoint" />
|
||||||
<mxPoint x="950" y="321" as="targetPoint" />
|
<mxPoint x="110" y="250" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="410" y="348" />
|
||||||
|
<mxPoint x="410" y="134" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-65" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-1" target="v96xPLQoPeUk4bUV2WaN-5" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="920" y="280" as="sourcePoint" />
|
||||||
|
<mxPoint x="970" y="230" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-66" value="" style="endArrow=none;html=1;rounded=0;exitX=0.998;exitY=-0.03;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.375;entryDx=0;entryDy=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-14" target="v96xPLQoPeUk4bUV2WaN-11" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="250" y="360" as="sourcePoint" />
|
||||||
|
<mxPoint x="430" y="365" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-67" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-9" target="v96xPLQoPeUk4bUV2WaN-13" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="330" y="460" as="sourcePoint" />
|
||||||
|
<mxPoint x="380" y="410" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-68" value="" style="endArrow=none;html=1;rounded=0;exitX=1.003;exitY=0.724;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-14" target="v96xPLQoPeUk4bUV2WaN-17" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="250" y="530" as="sourcePoint" />
|
||||||
|
<mxPoint x="300" y="480" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="440" y="383" />
|
||||||
|
<mxPoint x="440" y="468" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-69" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-17" target="v96xPLQoPeUk4bUV2WaN-21" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="280" y="300" as="sourcePoint" />
|
||||||
|
<mxPoint x="350" y="470" as="targetPoint" />
|
||||||
|
<Array as="points" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-70" value="" style="endArrow=none;html=1;rounded=0;exitX=1.004;exitY=0.263;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-16" target="v96xPLQoPeUk4bUV2WaN-25" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="270" y="530" as="sourcePoint" />
|
||||||
|
<mxPoint x="320" y="480" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="430" y="406" />
|
||||||
|
<mxPoint x="430" y="698" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-71" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-25" target="v96xPLQoPeUk4bUV2WaN-29" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="270" y="530" as="sourcePoint" />
|
||||||
|
<mxPoint x="320" y="480" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-72" value="" style="endArrow=none;html=1;rounded=0;exitX=1.008;exitY=0.788;exitDx=0;exitDy=0;exitPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-16" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="270" y="530" as="sourcePoint" />
|
||||||
|
<mxPoint x="470" y="940" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="410" y="423" />
|
||||||
|
<mxPoint x="410" y="600" />
|
||||||
|
<mxPoint x="410" y="940" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-74" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-33" target="v96xPLQoPeUk4bUV2WaN-37" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="490" y="930" as="sourcePoint" />
|
||||||
|
<mxPoint x="540" y="880" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-75" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-40" target="_OjnZrDktrtFcgEA-KSX-16" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="430" y="660" as="sourcePoint" />
|
||||||
|
<mxPoint x="480" y="610" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-76" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-41" target="v96xPLQoPeUk4bUV2WaN-49" edge="1">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="360" y="620" as="sourcePoint" />
|
||||||
|
<mxPoint x="410" y="570" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-77" value="ConfigLoader" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="1100" y="40" width="170" height="470" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-78" value="<div><br></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-77" vertex="1">
|
||||||
|
<mxGeometry y="26" width="170" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-79" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-77" vertex="1">
|
||||||
|
<mxGeometry y="50" width="170" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-80" value="+ setConfig()<div>-&nbsp; initializeConfig()</div><div>-&nbsp; checkDbConnection()</div><div>-&nbsp; saveConfig()</div><div>-&nbsp; checkAdminUser()</div><div>+ addAdminUser()</div><div>-&nbsp; saveData()</div><div>+ getRecoveryKey()</div><div>-&nbsp; parseImport()</div><div>-&nbsp; invalidateEncryptionKey()</div><div>+ checkEncryptionKey()</div><div>-&nbsp; checkRecoveryPassword</div><div>+ importConfig()</div><div>-&nbsp; configLoad()</div><div>+ getConfig()</div><div>-&nbsp; setRecoveryPassword()</div><div>-&nbsp; setEncryptionKey()</div><div>+ backupConfig()</div><div>+ saveDbConf()</div><div>+ getDbConf()</div><div>+ saveCompanyInfo()</div><div>+ getCompanyInfo()</div><div>+ saveMiscConf()</div><div>+ systray()</div><div>+ backupEncryptkey()</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-77" vertex="1">
|
||||||
|
<mxGeometry y="58" width="170" height="412" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-89" value="PyqcrmFlags" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="40" y="610" width="170" height="150" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-90" value="<div>ADMIN: enum</div><div>USER: enum</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-89" vertex="1">
|
||||||
|
<mxGeometry y="26" width="170" height="44" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-91" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-89" vertex="1">
|
||||||
|
<mxGeometry y="70" width="170" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-93" value="PyqcrmAppliEmpyFlags" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="230" y="610" width="170" height="140" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-94" value="<div>ALL: enum</div><div>APPLICANT: enum</div><div>EMPLOYEE; enum</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-93" vertex="1">
|
||||||
|
<mxGeometry y="26" width="170" height="64" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-95" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-93" vertex="1">
|
||||||
|
<mxGeometry y="90" width="170" height="50" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-96" value="Databasemanager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
|
||||||
|
<mxGeometry x="870" y="40" width="170" height="90" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-97" value="<div>- connection</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-96" vertex="1">
|
||||||
|
<mxGeometry y="26" width="170" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-98" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="v96xPLQoPeUk4bUV2WaN-96" vertex="1">
|
||||||
|
<mxGeometry y="50" width="170" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="v96xPLQoPeUk4bUV2WaN-99" value="+ instance(): connection" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="v96xPLQoPeUk4bUV2WaN-96" vertex="1">
|
||||||
|
<mxGeometry y="58" width="170" height="32" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-0" value="PyqcrmFlags" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
||||||
|
<mxGeometry x="870" y="340" width="170" height="150" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-1" value="<div>ADMIN: enum</div><div>USER: enum</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="6xiAvg-kEoilwsfhhM0o-0">
|
||||||
|
<mxGeometry y="26" width="170" height="44" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-2" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="6xiAvg-kEoilwsfhhM0o-0">
|
||||||
|
<mxGeometry y="70" width="170" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-3" value="PyqcrmAppliEmpyFlags" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
||||||
|
<mxGeometry x="870" y="170" width="170" height="140" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-4" value="<div>ALL: enum</div><div>APPLICANT: enum</div><div>EMPLOYEE; enum</div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="6xiAvg-kEoilwsfhhM0o-3">
|
||||||
|
<mxGeometry y="26" width="170" height="64" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-5" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="6xiAvg-kEoilwsfhhM0o-3">
|
||||||
|
<mxGeometry y="90" width="170" height="50" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-6" value="" style="endArrow=none;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-89" target="v96xPLQoPeUk4bUV2WaN-40">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="420" y="900" as="sourcePoint" />
|
||||||
|
<mxPoint x="470" y="850" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="83" y="800" />
|
||||||
|
<mxPoint x="60" y="800" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-7" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-48" target="v96xPLQoPeUk4bUV2WaN-93">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="420" y="900" as="sourcePoint" />
|
||||||
|
<mxPoint x="470" y="850" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="300" y="800" />
|
||||||
|
<mxPoint x="315" y="800" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-8" value="" style="endArrow=none;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-93" target="v96xPLQoPeUk4bUV2WaN-40">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="420" y="900" as="sourcePoint" />
|
||||||
|
<mxPoint x="470" y="850" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="273" y="780" />
|
||||||
|
<mxPoint x="140" y="780" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-9" value="" style="endArrow=none;html=1;rounded=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-48" target="v96xPLQoPeUk4bUV2WaN-89">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="420" y="900" as="sourcePoint" />
|
||||||
|
<mxPoint x="470" y="850" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="260" y="800" />
|
||||||
|
<mxPoint x="168" y="800" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-10" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-78" target="v96xPLQoPeUk4bUV2WaN-97">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="600" y="440" as="sourcePoint" />
|
||||||
|
<mxPoint x="650" y="390" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-11" value="" style="endArrow=none;html=1;rounded=0;exitX=1.001;exitY=0.102;exitDx=0;exitDy=0;exitPerimeter=0;entryX=-0.002;entryY=0.624;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="6xiAvg-kEoilwsfhhM0o-0" target="v96xPLQoPeUk4bUV2WaN-80">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="600" y="440" as="sourcePoint" />
|
||||||
|
<mxPoint x="650" y="390" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-12" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=-0.001;exitY=0.316;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-80" target="6xiAvg-kEoilwsfhhM0o-4">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="600" y="440" as="sourcePoint" />
|
||||||
|
<mxPoint x="650" y="390" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-13" value="Vermasseln" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
|
||||||
|
<mxGeometry x="1350" y="40" width="170" height="140" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-14" value="<div><br></div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="6xiAvg-kEoilwsfhhM0o-13">
|
||||||
|
<mxGeometry y="26" width="170" height="24" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-15" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="6xiAvg-kEoilwsfhhM0o-13">
|
||||||
|
<mxGeometry y="50" width="170" height="8" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-16" value="+ oscarVermasseln()<div>+ entschluesseln()</div><div>-&nbsp; vermasslungsKobold()</div><div>+ userPasswordHash</div><div><br></div>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="6xiAvg-kEoilwsfhhM0o-13">
|
||||||
|
<mxGeometry y="58" width="170" height="82" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="6xiAvg-kEoilwsfhhM0o-17" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-78" target="6xiAvg-kEoilwsfhhM0o-14">
|
||||||
|
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||||
|
<mxPoint x="800" y="530" as="sourcePoint" />
|
||||||
|
<mxPoint x="850" y="480" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
BIN
doc/PYQCRM_DATENBANK.odt
Normal file
BIN
doc/PYQCRM_DATENBANK.odt
Normal file
Binary file not shown.
@@ -1,4 +0,0 @@
|
|||||||
# pyqcrm
|
|
||||||
|
|
||||||
CRM - Tero
|
|
||||||
Python + QML
|
|
||||||
@@ -1,29 +1,88 @@
|
|||||||
CRM für Objektbetreuung Reinigungsservice
|
CRM für Objektbetreuung Reinigungsservice
|
||||||
|
|
||||||
Aktueller Stand CRM Sebastian
|
|
||||||
|
Minimal Voraussetzung:
|
||||||
Umsetzung mit Python + QML
|
|
||||||
|
|
||||||
- Kunden anlegen
|
Mitarbeiter
|
||||||
- Abrufen und anzeigen vorhandender Daten aus der Datenbank
|
- Dokumenten Management System (DMS)
|
||||||
- GUI vorhanden
|
- Arbeitszeitdokumentation
|
||||||
|
- Urlaubsplaner
|
||||||
Minimal Voraussetzung:
|
- Arbeitnehmer anlegen
|
||||||
|
|
||||||
- Kunden anlegen (Hausverwaltung Krefeld)
|
Nice To Have:
|
||||||
- Objekt anlegen
|
- WhatsApp
|
||||||
- Ansprechpartner anlegen
|
- Telefon
|
||||||
- Arbeitnehmer anlegen
|
- Social Media Uploader
|
||||||
- Arbeitsauftrag anlegen
|
Dokumentenvorlagen
|
||||||
- Rechnung schreiben (Zugferd Modus)
|
|
||||||
- Dokumenten Managment System (DMS)
|
|
||||||
- Arbeitszeitdokumentation
|
|
||||||
- Urlaubsplaner
|
Kunden
|
||||||
|
- Kunden anlegen (Hausverwaltung Krefeld)
|
||||||
|
- Dokumenten Management System (DMS)
|
||||||
Nice To Have:
|
- Ansprechpartner anlegen
|
||||||
- WhatsApp
|
RG auch in CC Funktion
|
||||||
- Telefon
|
|
||||||
- Social Media Uploader
|
Nice To Have:
|
||||||
|
Dokumentenvorlagen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dashboard
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Abrechnung
|
||||||
|
- Rechnung schreiben (Zugferd Modus)
|
||||||
|
- Fixkostenerfassung
|
||||||
|
Rechnungsarchiv
|
||||||
|
Mahnfunktion
|
||||||
|
|
||||||
|
|
||||||
|
Objekt
|
||||||
|
- Objekt anlegen
|
||||||
|
- Ansprechpartner anlegen
|
||||||
|
- Dokumenten Management System (DMS)
|
||||||
|
Str. (Pflicht)
|
||||||
|
Hausnummer (Pflicht)
|
||||||
|
PLZ
|
||||||
|
Ort (Pflicht)
|
||||||
|
Parteien (Anzahl)
|
||||||
|
Stockwerke (Anzahl)
|
||||||
|
Zwischenetage (ja/nein)
|
||||||
|
Aufzug (ja/nein)
|
||||||
|
Fenster (ja/nein) anschließend Anzahl + ohne Leiter erreichbar (ja/nein)
|
||||||
|
Besonderheiten (Infofeld)
|
||||||
|
Kontaktdaten Hausmeister / Beirat
|
||||||
|
Reinigungsmittel zu finden? ( Wo ist es im Kellerraum, Dachgeschoss, 2 Tür von links?)
|
||||||
|
Foto Upload wäre toll ;-)
|
||||||
|
|
||||||
|
Leistungen
|
||||||
|
Treppenhausreinigung
|
||||||
|
Garten
|
||||||
|
siehe Homepage !!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Angebot
|
||||||
|
|
||||||
|
|
||||||
|
Auftrag
|
||||||
|
- Arbeitsauftrag anlegen
|
||||||
|
Pflegehinweise zum Objekt
|
||||||
|
BG Sicherheitsdatenblätter
|
||||||
|
Reinigungsmittel erhalten am ?
|
||||||
|
Preis ab Datum
|
||||||
|
Objektkontrolle (Wann wurde das Objekt das letzte Mal kontrolliert?) Ähnlich wie Preis mit Datum
|
||||||
|
Preise
|
||||||
|
Schlüssel
|
||||||
|
|
||||||
|
|
||||||
|
Auswertung
|
||||||
|
Stundenkalender
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
3600
doc/datenbank.drawio
3600
doc/datenbank.drawio
File diff suppressed because it is too large
Load Diff
@@ -1,953 +0,0 @@
|
|||||||
/*M!999999\- enable the sandbox mode */
|
|
||||||
-- MariaDB dump 10.19 Distrib 10.11.10-MariaDB, for Linux (x86_64)
|
|
||||||
--
|
|
||||||
-- Host: bearybot.selfhost.co Database: pyqcrm
|
|
||||||
-- ------------------------------------------------------
|
|
||||||
-- Server version 10.11.8-MariaDB-0ubuntu0.24.04.1
|
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
|
||||||
/*!40101 SET NAMES utf8mb4 */;
|
|
||||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
|
||||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
|
||||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
|
||||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
|
||||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
|
||||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `Entities`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `Entities`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `Entities` (
|
|
||||||
`entityid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`entity` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`entityid`),
|
|
||||||
UNIQUE KEY `Entities_UNIQUE` (`entity`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `Entities`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `Entities` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `Entities` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `Entities` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `address`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `address`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `address` (
|
|
||||||
`addressid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`country` varchar(50) DEFAULT NULL,
|
|
||||||
`address` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`addressid`),
|
|
||||||
UNIQUE KEY `address_unique` (`address`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `address`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `address` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `address` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `address` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `assignment`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `assignment`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `assignment` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `assignment_unique` (`contractid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_estonian_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `assignment`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `assignment` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `assignment` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `assignment` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `business`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `business`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `business` (
|
|
||||||
`businessid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(100) NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) DEFAULT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`homepage` varchar(255) DEFAULT NULL,
|
|
||||||
`director` varchar(100) DEFAULT NULL,
|
|
||||||
`contactpersonid` int(11) DEFAULT NULL,
|
|
||||||
`info` varchar(500) DEFAULT NULL,
|
|
||||||
`btid` int(11) NOT NULL DEFAULT 1,
|
|
||||||
PRIMARY KEY (`businessid`),
|
|
||||||
UNIQUE KEY `customer_unique` (`email`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `business`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `business` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `business` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `business` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `businesstype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `businesstype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `businesstype` (
|
|
||||||
`btypeID` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`btypeID`),
|
|
||||||
UNIQUE KEY `businesstype_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `businesstype`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `businesstype` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `businesstype` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `businesstype` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contact`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contact`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contact` (
|
|
||||||
`id` int(11) NOT NULL,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
UNIQUE KEY `contact_unique` (`id`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `contact`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `contact` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `contact` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `contact` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contactperson`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contactperson`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contactperson` (
|
|
||||||
`contactpersonid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`priorityid` int(11) DEFAULT NULL,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`position` varchar(50) DEFAULT NULL,
|
|
||||||
`salutation` varchar(10) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`birthday` date DEFAULT NULL,
|
|
||||||
`active` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
PRIMARY KEY (`contactpersonid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `contactperson`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `contactperson` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `contactperson` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `contactperson` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contract`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contract`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contract` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`tariffid` int(11) NOT NULL,
|
|
||||||
`officeid` int(11) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`contractid`),
|
|
||||||
UNIQUE KEY `contract_unique` (`jobdetailid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `contract`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `contract` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `contract` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `contract` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `employee`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `employee`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `employee` (
|
|
||||||
`employeeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`gender` varchar(30) DEFAULT NULL,
|
|
||||||
`maritalstatus` varchar(30) DEFAULT NULL,
|
|
||||||
`nationality` varchar(50) NOT NULL,
|
|
||||||
`birthday` date NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`identificationid` int(11) NOT NULL,
|
|
||||||
`jobstatusid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`employeeid`),
|
|
||||||
UNIQUE KEY `employee_unique` (`identificationid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `employee`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `employee` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `employee` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `employee` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identification`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identification`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identification` (
|
|
||||||
`identificationid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`number` varchar(50) NOT NULL,
|
|
||||||
`expiry` date NOT NULL,
|
|
||||||
`issued` date NOT NULL,
|
|
||||||
`authority` varchar(50) NOT NULL,
|
|
||||||
`typeid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`identificationid`),
|
|
||||||
UNIQUE KEY `identification_unique` (`number`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `identification`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `identification` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `identification` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `identification` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identificationtype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identificationtype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identificationtype` (
|
|
||||||
`typeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`type` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`typeid`),
|
|
||||||
UNIQUE KEY `identificationtype_unique` (`type`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `identificationtype`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `identificationtype` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `identificationtype` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `identificationtype` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `invoice`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `invoice`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `invoice` (
|
|
||||||
`invoiceid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`issued` date NOT NULL COMMENT 'Rechnungsdatum',
|
|
||||||
`entry` date NOT NULL COMMENT 'Buchungsdatum',
|
|
||||||
`contractid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`invoiceid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `invoice`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `invoice` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `invoice` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `invoice` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobdetail`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobdetail`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobdetail` (
|
|
||||||
`jobdetailid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`duration` decimal(10,0) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL,
|
|
||||||
`period` varchar(15) NOT NULL,
|
|
||||||
`personnel` int(11) NOT NULL DEFAULT 1 COMMENT 'number of employees',
|
|
||||||
`price` decimal(10,0) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobdetailid`),
|
|
||||||
UNIQUE KEY `jobdetail_unique` (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `jobdetail`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `jobdetail` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `jobdetail` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `jobdetail` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobstatus`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobstatus`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobstatus` (
|
|
||||||
`jobstatusid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(30) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobstatusid`),
|
|
||||||
UNIQUE KEY `jobstatus_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `jobstatus`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `jobstatus` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `jobstatus` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `jobstatus` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `logs`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `logs`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `logs` (
|
|
||||||
`logid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`recordid` int(11) DEFAULT NULL,
|
|
||||||
`operationtype` varchar(100) NOT NULL,
|
|
||||||
`message` varchar(100) NOT NULL,
|
|
||||||
`logdate` datetime NOT NULL DEFAULT current_timestamp(),
|
|
||||||
PRIMARY KEY (`logid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `logs`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `logs` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `logs` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `logs` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `medicalcare`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `medicalcare`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `medicalcare` (
|
|
||||||
`medicalcareid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`medicalcareid`),
|
|
||||||
UNIQUE KEY `medicalcare_unique` (`company`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `medicalcare`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `medicalcare` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `medicalcare` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `medicalcare` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `object`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `object`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `object` (
|
|
||||||
`objectid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `object`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `object` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `object` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `object` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offer`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offer`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offer` (
|
|
||||||
`offerid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`offerid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `offer`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `offer` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `offer` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `offer` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offers`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offers`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offers` (
|
|
||||||
`offerid` int(11) NOT NULL,
|
|
||||||
`contractid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle Angebot - Auftrag';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `offers`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `offers` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `offers` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `offers` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `office`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `office`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `office` (
|
|
||||||
`officeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`office` varchar(50) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
PRIMARY KEY (`officeid`),
|
|
||||||
UNIQUE KEY `office_unique` (`office`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kostenstelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `office`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `office` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `office` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `office` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `permissions`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `permissions`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `permissions` (
|
|
||||||
`permissionid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`permission` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`permissionid`),
|
|
||||||
UNIQUE KEY `berechtigungen_unique` (`permission`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `permissions`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `permissions` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `permissions` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `permissions` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `personalrole`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `personalrole`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `personalrole` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`roleid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `personalrole`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `personalrole` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `personalrole` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `personalrole` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `postcode`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `postcode`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `postcode` (
|
|
||||||
`postcodeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`postcode` varchar(15) NOT NULL,
|
|
||||||
`addressid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`postcodeid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `postcode`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `postcode` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `postcode` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `postcode` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `role`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `role`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `role` (
|
|
||||||
`roleid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`roleid`),
|
|
||||||
UNIQUE KEY `role_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `role`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `role` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `role` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `role` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `roles`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `roles`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `roles` (
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`permissionid` int(11) NOT NULL,
|
|
||||||
`entityid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `roles`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `roles` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `roles` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `roles` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `salestax`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `salestax`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `salestax` (
|
|
||||||
`salestaxid` varchar(20) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`salestaxid`),
|
|
||||||
UNIQUE KEY `salestax_unique` (`businessid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `salestax`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `salestax` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `salestax` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `salestax` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `service`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `service`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `service` (
|
|
||||||
`servicetypeid` int(11) NOT NULL,
|
|
||||||
`servicedescid` int(11) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `service`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `service` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `service` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `service` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicedesc`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicedesc`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicedesc` (
|
|
||||||
`servicedescid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(1000) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicedescid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `servicedesc`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `servicedesc` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `servicedesc` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `servicedesc` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicetype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicetype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicetype` (
|
|
||||||
`servicetypeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicetypeid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `servicetype`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `servicetype` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `servicetype` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `servicetype` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `socialsecurity`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `socialsecurity`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `socialsecurity` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`socialsecurityno` varchar(30) NOT NULL,
|
|
||||||
`medicalcareid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `socialsecurity_unique` (`employeeid`),
|
|
||||||
UNIQUE KEY `socialsecurity_unique_1` (`socialsecurityno`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `socialsecurity`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `socialsecurity` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `socialsecurity` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `socialsecurity` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `tariff`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `tariff`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `tariff` (
|
|
||||||
`tariffid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`tariff` decimal(10,0) NOT NULL COMMENT 'Festgelegter Stundensatz',
|
|
||||||
PRIMARY KEY (`tariffid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Stundensatz Tabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `tariff`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `tariff` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `tariff` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `tariff` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `timetrack`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `timetrack`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `timetrack` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`start` datetime NOT NULL,
|
|
||||||
`stop` datetime NOT NULL,
|
|
||||||
`vacation` tinyint(1) NOT NULL DEFAULT 0
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `timetrack`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `timetrack` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `timetrack` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `timetrack` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `users`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `users` (
|
|
||||||
`usersid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`username` varchar(50) NOT NULL,
|
|
||||||
`password` varchar(150) NOT NULL,
|
|
||||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`gecos` varchar(75) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`usersid`),
|
|
||||||
UNIQUE KEY `users_unique` (`username`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `users` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping routines for database 'pyqcrm'
|
|
||||||
--
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addPermission` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addPermission`(IN newpermission VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM permissions WHERE permission = newpermission) THEN
|
|
||||||
INSERT INTO permissions(permission) VALUES(newpermission);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addRole` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addRole`(IN newdescription VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM `role` WHERE description = newdescription) THEN
|
|
||||||
INSERT INTO `role`(description) VALUES(newdescription);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `createUser` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `createUser`(IN uname VARCHAR(35), IN password VARCHAR(150), IN gecos VARCHAR(75), IN admin BOOL)
|
|
||||||
BEGIN
|
|
||||||
DECLARE userrole INT;
|
|
||||||
SET userrole = 2;
|
|
||||||
IF admin = 1 THEN
|
|
||||||
SET userrole = 1;
|
|
||||||
END IF;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM users WHERE username = uname) THEN
|
|
||||||
INSERT INTO users(username, password, gecos, roleid) VALUES(uname, password, gecos, userrole);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getBusiness` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getBusiness`(IN businesstype VARCHAR(35))
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM business;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
|
||||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
|
||||||
|
|
||||||
-- Dump completed on 2024-11-21 15:31:16
|
|
||||||
@@ -1,995 +0,0 @@
|
|||||||
/*M!999999\- enable the sandbox mode */
|
|
||||||
-- MariaDB dump 10.19 Distrib 10.11.10-MariaDB, for Linux (x86_64)
|
|
||||||
--
|
|
||||||
-- Host: bearybot.selfhost.co Database: pyqcrm
|
|
||||||
-- ------------------------------------------------------
|
|
||||||
-- Server version 10.11.8-MariaDB-0ubuntu0.24.04.1
|
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
|
||||||
/*!40101 SET NAMES utf8mb4 */;
|
|
||||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
|
||||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
|
||||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
|
||||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
|
||||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
|
||||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `address`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `address`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `address` (
|
|
||||||
`addressid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`country` varchar(50) DEFAULT NULL,
|
|
||||||
`address` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`addressid`),
|
|
||||||
UNIQUE KEY `address_unique` (`address`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `address`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `address` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `address` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `address` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `assignment`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `assignment`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `assignment` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `assignment_unique` (`contractid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_estonian_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `assignment`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `assignment` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `assignment` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `assignment` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `business`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `business`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `business` (
|
|
||||||
`businessid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(100) NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) DEFAULT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`homepage` varchar(255) DEFAULT NULL,
|
|
||||||
`director` varchar(100) DEFAULT NULL,
|
|
||||||
`contactpersonid` int(11) DEFAULT NULL,
|
|
||||||
`info` varchar(500) DEFAULT NULL,
|
|
||||||
`btid` int(11) NOT NULL DEFAULT 1,
|
|
||||||
PRIMARY KEY (`businessid`),
|
|
||||||
UNIQUE KEY `customer_unique` (`email`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `business`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `business` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `business` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `business` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `businesstype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `businesstype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `businesstype` (
|
|
||||||
`btypeID` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`btypeID`),
|
|
||||||
UNIQUE KEY `businesstype_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `businesstype`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `businesstype` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `businesstype` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `businesstype` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contact`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contact`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contact` (
|
|
||||||
`id` int(11) NOT NULL,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
UNIQUE KEY `contact_unique` (`id`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `contact`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `contact` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `contact` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `contact` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contactperson`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contactperson`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contactperson` (
|
|
||||||
`contactpersonid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`priorityid` int(11) DEFAULT NULL,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`position` varchar(50) DEFAULT NULL,
|
|
||||||
`salutation` varchar(10) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`birthday` date DEFAULT NULL,
|
|
||||||
`active` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
PRIMARY KEY (`contactpersonid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `contactperson`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `contactperson` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `contactperson` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `contactperson` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contract`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contract`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contract` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`tariffid` int(11) NOT NULL,
|
|
||||||
`officeid` int(11) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`contractid`),
|
|
||||||
UNIQUE KEY `contract_unique` (`jobdetailid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `contract`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `contract` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `contract` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `contract` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `employee`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `employee`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `employee` (
|
|
||||||
`employeeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`gender` varchar(30) DEFAULT NULL,
|
|
||||||
`maritalstatus` varchar(30) DEFAULT NULL,
|
|
||||||
`nationality` varchar(50) NOT NULL,
|
|
||||||
`birthday` date NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`identificationid` int(11) NOT NULL,
|
|
||||||
`jobstatusid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`employeeid`),
|
|
||||||
UNIQUE KEY `employee_unique` (`identificationid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `employee`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `employee` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `employee` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `employee` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `entities`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `entities`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `entities` (
|
|
||||||
`entityid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`entity` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`entityid`),
|
|
||||||
UNIQUE KEY `Entities_UNIQUE` (`entity`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `entities`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `entities` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `entities` DISABLE KEYS */;
|
|
||||||
INSERT INTO `entities` VALUES
|
|
||||||
(1,'business'),
|
|
||||||
(3,'contactperson'),
|
|
||||||
(2,'employee'),
|
|
||||||
(4,'object');
|
|
||||||
/*!40000 ALTER TABLE `entities` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identification`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identification`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identification` (
|
|
||||||
`identificationid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`number` varchar(50) NOT NULL,
|
|
||||||
`expiry` date NOT NULL,
|
|
||||||
`issued` date NOT NULL,
|
|
||||||
`authority` varchar(50) NOT NULL,
|
|
||||||
`typeid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`identificationid`),
|
|
||||||
UNIQUE KEY `identification_unique` (`number`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `identification`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `identification` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `identification` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `identification` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identificationtype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identificationtype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identificationtype` (
|
|
||||||
`typeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`type` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`typeid`),
|
|
||||||
UNIQUE KEY `identificationtype_unique` (`type`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `identificationtype`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `identificationtype` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `identificationtype` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `identificationtype` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `invoice`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `invoice`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `invoice` (
|
|
||||||
`invoiceid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`issued` date NOT NULL COMMENT 'Rechnungsdatum',
|
|
||||||
`entry` date NOT NULL COMMENT 'Buchungsdatum',
|
|
||||||
`contractid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`invoiceid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `invoice`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `invoice` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `invoice` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `invoice` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobdetail`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobdetail`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobdetail` (
|
|
||||||
`jobdetailid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`duration` decimal(10,0) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL,
|
|
||||||
`period` varchar(15) NOT NULL,
|
|
||||||
`personnel` int(11) NOT NULL DEFAULT 1 COMMENT 'number of employees',
|
|
||||||
`price` decimal(10,0) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobdetailid`),
|
|
||||||
UNIQUE KEY `jobdetail_unique` (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `jobdetail`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `jobdetail` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `jobdetail` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `jobdetail` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobstatus`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobstatus`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobstatus` (
|
|
||||||
`jobstatusid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(30) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobstatusid`),
|
|
||||||
UNIQUE KEY `jobstatus_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `jobstatus`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `jobstatus` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `jobstatus` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `jobstatus` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `logs`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `logs`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `logs` (
|
|
||||||
`logid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`recordid` int(11) DEFAULT NULL,
|
|
||||||
`operationtype` varchar(100) NOT NULL,
|
|
||||||
`message` varchar(100) NOT NULL,
|
|
||||||
`logdate` datetime NOT NULL DEFAULT current_timestamp(),
|
|
||||||
PRIMARY KEY (`logid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `logs`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `logs` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `logs` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `logs` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `medicalcare`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `medicalcare`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `medicalcare` (
|
|
||||||
`medicalcareid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`medicalcareid`),
|
|
||||||
UNIQUE KEY `medicalcare_unique` (`company`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `medicalcare`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `medicalcare` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `medicalcare` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `medicalcare` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `object`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `object`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `object` (
|
|
||||||
`objectid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `object`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `object` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `object` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `object` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offer`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offer`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offer` (
|
|
||||||
`offerid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`offerid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `offer`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `offer` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `offer` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `offer` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offers`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offers`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offers` (
|
|
||||||
`offerid` int(11) NOT NULL,
|
|
||||||
`contractid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle Angebot - Auftrag';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `offers`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `offers` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `offers` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `offers` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `office`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `office`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `office` (
|
|
||||||
`officeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`office` varchar(50) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
PRIMARY KEY (`officeid`),
|
|
||||||
UNIQUE KEY `office_unique` (`office`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kostenstelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `office`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `office` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `office` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `office` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `permissions`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `permissions`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `permissions` (
|
|
||||||
`permissionid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`permission` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`permissionid`),
|
|
||||||
UNIQUE KEY `berechtigungen_unique` (`permission`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `permissions`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `permissions` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `permissions` DISABLE KEYS */;
|
|
||||||
INSERT INTO `permissions` VALUES
|
|
||||||
(4,'delete'),
|
|
||||||
(1,'read'),
|
|
||||||
(3,'update'),
|
|
||||||
(2,'write');
|
|
||||||
/*!40000 ALTER TABLE `permissions` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `personalrole`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `personalrole`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `personalrole` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`roleid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `personalrole`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `personalrole` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `personalrole` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `personalrole` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `postcode`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `postcode`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `postcode` (
|
|
||||||
`postcodeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`postcode` varchar(15) NOT NULL,
|
|
||||||
`addressid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`postcodeid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `postcode`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `postcode` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `postcode` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `postcode` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `role`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `role`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `role` (
|
|
||||||
`roleid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`roleid`),
|
|
||||||
UNIQUE KEY `role_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `role`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `role` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `role` DISABLE KEYS */;
|
|
||||||
INSERT INTO `role` VALUES
|
|
||||||
(1,'adminrole'),
|
|
||||||
(2,'userrole');
|
|
||||||
/*!40000 ALTER TABLE `role` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `roles`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `roles`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `roles` (
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`permissionid` int(11) NOT NULL,
|
|
||||||
`entityid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `roles`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `roles` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `roles` DISABLE KEYS */;
|
|
||||||
INSERT INTO `roles` VALUES
|
|
||||||
(1,1,1),
|
|
||||||
(1,2,1),
|
|
||||||
(1,3,1),
|
|
||||||
(1,4,1),
|
|
||||||
(1,1,2),
|
|
||||||
(1,2,2),
|
|
||||||
(1,3,2),
|
|
||||||
(1,4,2),
|
|
||||||
(1,1,3),
|
|
||||||
(1,2,3),
|
|
||||||
(1,3,3),
|
|
||||||
(1,4,3),
|
|
||||||
(1,1,4),
|
|
||||||
(1,2,4),
|
|
||||||
(1,3,4),
|
|
||||||
(1,4,4),
|
|
||||||
(2,1,1),
|
|
||||||
(2,2,1),
|
|
||||||
(2,3,1),
|
|
||||||
(2,1,2),
|
|
||||||
(2,2,2),
|
|
||||||
(2,3,2),
|
|
||||||
(2,1,3),
|
|
||||||
(2,2,3),
|
|
||||||
(2,3,3),
|
|
||||||
(2,1,4),
|
|
||||||
(2,2,4),
|
|
||||||
(2,3,4);
|
|
||||||
/*!40000 ALTER TABLE `roles` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `salestax`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `salestax`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `salestax` (
|
|
||||||
`salestaxid` varchar(20) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`salestaxid`),
|
|
||||||
UNIQUE KEY `salestax_unique` (`businessid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `salestax`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `salestax` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `salestax` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `salestax` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `service`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `service`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `service` (
|
|
||||||
`servicetypeid` int(11) NOT NULL,
|
|
||||||
`servicedescid` int(11) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `service`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `service` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `service` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `service` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicedesc`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicedesc`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicedesc` (
|
|
||||||
`servicedescid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(1000) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicedescid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `servicedesc`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `servicedesc` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `servicedesc` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `servicedesc` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicetype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicetype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicetype` (
|
|
||||||
`servicetypeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicetypeid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `servicetype`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `servicetype` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `servicetype` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `servicetype` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `socialsecurity`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `socialsecurity`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `socialsecurity` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`socialsecurityno` varchar(30) NOT NULL,
|
|
||||||
`medicalcareid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `socialsecurity_unique` (`employeeid`),
|
|
||||||
UNIQUE KEY `socialsecurity_unique_1` (`socialsecurityno`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `socialsecurity`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `socialsecurity` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `socialsecurity` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `socialsecurity` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `tariff`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `tariff`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `tariff` (
|
|
||||||
`tariffid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`tariff` decimal(10,0) NOT NULL COMMENT 'Festgelegter Stundensatz',
|
|
||||||
PRIMARY KEY (`tariffid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Stundensatz Tabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `tariff`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `tariff` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `tariff` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `tariff` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `timetrack`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `timetrack`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `timetrack` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`start` datetime NOT NULL,
|
|
||||||
`stop` datetime NOT NULL,
|
|
||||||
`vacation` tinyint(1) NOT NULL DEFAULT 0
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `timetrack`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `timetrack` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `timetrack` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `timetrack` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `users`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `users` (
|
|
||||||
`usersid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`username` varchar(50) NOT NULL,
|
|
||||||
`password` varchar(150) NOT NULL,
|
|
||||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`gecos` varchar(75) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`usersid`),
|
|
||||||
UNIQUE KEY `users_unique` (`username`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `users` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping routines for database 'pyqcrm'
|
|
||||||
--
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addPermission` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addPermission`(IN newpermission VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM permissions WHERE permission = newpermission) THEN
|
|
||||||
INSERT INTO permissions(permission) VALUES(newpermission);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addRole` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addRole`(IN newdescription VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM `role` WHERE description = newdescription) THEN
|
|
||||||
INSERT INTO `role`(description) VALUES(newdescription);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `createUser` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `createUser`(IN uname VARCHAR(35), IN password VARCHAR(150), IN gecos VARCHAR(75), IN admin BOOL)
|
|
||||||
BEGIN
|
|
||||||
DECLARE userrole INT;
|
|
||||||
SET userrole = 2;
|
|
||||||
IF admin = 1 THEN
|
|
||||||
SET userrole = 1;
|
|
||||||
END IF;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM users WHERE username = uname) THEN
|
|
||||||
INSERT INTO users(username, password, gecos, roleid) VALUES(uname, password, gecos, userrole);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getBusiness` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getBusiness`(IN businesstype VARCHAR(35))
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM business;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
|
||||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
|
||||||
|
|
||||||
-- Dump completed on 2024-11-26 13:49:32
|
|
||||||
@@ -1,833 +0,0 @@
|
|||||||
/*M!999999\- enable the sandbox mode */
|
|
||||||
-- MariaDB dump 10.19 Distrib 10.11.10-MariaDB, for Linux (x86_64)
|
|
||||||
--
|
|
||||||
-- Host: bearybot.selfhost.co Database: pyqcrm
|
|
||||||
-- ------------------------------------------------------
|
|
||||||
-- Server version 10.11.8-MariaDB-0ubuntu0.24.04.1
|
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
|
||||||
/*!40101 SET NAMES utf8mb4 */;
|
|
||||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
|
||||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
|
||||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
|
||||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
|
||||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
|
||||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `address`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `address`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `address` (
|
|
||||||
`addressid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`country` varchar(50) DEFAULT NULL,
|
|
||||||
`city` varchar(500) NOT NULL,
|
|
||||||
PRIMARY KEY (`addressid`),
|
|
||||||
UNIQUE KEY `address_unique` (`city`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `assignment`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `assignment`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `assignment` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `assignment_unique` (`contractid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_estonian_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `business`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `business`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `business` (
|
|
||||||
`businessid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(100) NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) DEFAULT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`homepage` varchar(255) DEFAULT NULL,
|
|
||||||
`director` varchar(100) DEFAULT NULL,
|
|
||||||
`contactpersonid` int(11) DEFAULT NULL,
|
|
||||||
`info` varchar(500) DEFAULT NULL,
|
|
||||||
`btid` int(11) DEFAULT 1,
|
|
||||||
`taxno` varchar(50) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`businessid`),
|
|
||||||
UNIQUE KEY `customer_unique` (`email`),
|
|
||||||
UNIQUE KEY `business_unique` (`taxno`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `businesstype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `businesstype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `businesstype` (
|
|
||||||
`btypeID` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`btypeID`),
|
|
||||||
UNIQUE KEY `businesstype_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contact`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contact`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contact` (
|
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
UNIQUE KEY `contact_unique` (`id`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contactperson`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contactperson`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contactperson` (
|
|
||||||
`contactpersonid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`priorityid` int(11) DEFAULT NULL,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`position` varchar(50) DEFAULT NULL,
|
|
||||||
`salutation` varchar(10) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`birthday` date DEFAULT NULL,
|
|
||||||
`active` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
PRIMARY KEY (`contactpersonid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contract`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contract`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contract` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`tariffid` int(11) NOT NULL,
|
|
||||||
`officeid` int(11) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`contractid`),
|
|
||||||
UNIQUE KEY `contract_unique` (`jobdetailid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Temporary table structure for view `customerinfo`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `customerinfo`;
|
|
||||||
/*!50001 DROP VIEW IF EXISTS `customerinfo`*/;
|
|
||||||
SET @saved_cs_client = @@character_set_client;
|
|
||||||
SET character_set_client = utf8;
|
|
||||||
/*!50001 CREATE VIEW `customerinfo` AS SELECT
|
|
||||||
1 AS `BusinessId`,
|
|
||||||
1 AS `Kundenname`,
|
|
||||||
1 AS `Straße`,
|
|
||||||
1 AS `PLZ`,
|
|
||||||
1 AS `Ort`,
|
|
||||||
1 AS `Anrede`,
|
|
||||||
1 AS `Ansprechpartner` */;
|
|
||||||
SET character_set_client = @saved_cs_client;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `employee`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `employee`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `employee` (
|
|
||||||
`employeeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`gender` varchar(30) DEFAULT NULL,
|
|
||||||
`maritalstatus` varchar(30) DEFAULT NULL,
|
|
||||||
`nationality` varchar(50) NOT NULL,
|
|
||||||
`birthday` date NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`identificationid` int(11) NOT NULL,
|
|
||||||
`jobstatusid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`employeeid`),
|
|
||||||
UNIQUE KEY `employee_unique` (`identificationid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `entities`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `entities`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `entities` (
|
|
||||||
`entityid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`entity` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`entityid`),
|
|
||||||
UNIQUE KEY `Entities_UNIQUE` (`entity`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identification`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identification`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identification` (
|
|
||||||
`identificationid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`number` varchar(50) NOT NULL,
|
|
||||||
`expiry` date NOT NULL,
|
|
||||||
`issued` date NOT NULL,
|
|
||||||
`authority` varchar(50) NOT NULL,
|
|
||||||
`typeid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`identificationid`),
|
|
||||||
UNIQUE KEY `identification_unique` (`number`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identificationtype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identificationtype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identificationtype` (
|
|
||||||
`typeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`type` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`typeid`),
|
|
||||||
UNIQUE KEY `identificationtype_unique` (`type`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `invoice`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `invoice`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `invoice` (
|
|
||||||
`invoiceid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`issued` date NOT NULL COMMENT 'Rechnungsdatum',
|
|
||||||
`entry` date NOT NULL COMMENT 'Buchungsdatum',
|
|
||||||
`contractid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`invoiceid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobdetail`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobdetail`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobdetail` (
|
|
||||||
`jobdetailid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`duration` decimal(10,0) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL,
|
|
||||||
`period` varchar(15) NOT NULL,
|
|
||||||
`personnel` int(11) NOT NULL DEFAULT 1 COMMENT 'number of employees',
|
|
||||||
`price` decimal(10,0) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobdetailid`),
|
|
||||||
UNIQUE KEY `jobdetail_unique` (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobstatus`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobstatus`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobstatus` (
|
|
||||||
`jobstatusid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(30) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobstatusid`),
|
|
||||||
UNIQUE KEY `jobstatus_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `logs`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `logs`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `logs` (
|
|
||||||
`logid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`recordid` int(11) DEFAULT NULL,
|
|
||||||
`operationtype` varchar(100) NOT NULL,
|
|
||||||
`message` varchar(100) NOT NULL,
|
|
||||||
`logdate` datetime NOT NULL DEFAULT current_timestamp(),
|
|
||||||
PRIMARY KEY (`logid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `medicalcare`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `medicalcare`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `medicalcare` (
|
|
||||||
`medicalcareid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`medicalcareid`),
|
|
||||||
UNIQUE KEY `medicalcare_unique` (`company`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `object`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `object`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `object` (
|
|
||||||
`objectid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offer`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offer`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offer` (
|
|
||||||
`offerid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`offerid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offers`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offers`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offers` (
|
|
||||||
`offerid` int(11) NOT NULL,
|
|
||||||
`contractid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle Angebot - Auftrag';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `office`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `office`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `office` (
|
|
||||||
`officeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`office` varchar(50) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
PRIMARY KEY (`officeid`),
|
|
||||||
UNIQUE KEY `office_unique` (`office`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kostenstelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `permissions`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `permissions`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `permissions` (
|
|
||||||
`permissionid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`permission` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`permissionid`),
|
|
||||||
UNIQUE KEY `berechtigungen_unique` (`permission`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `personalrole`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `personalrole`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `personalrole` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`roleid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `postcode`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `postcode`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `postcode` (
|
|
||||||
`postcodeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`postcode` varchar(15) NOT NULL,
|
|
||||||
`addressid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`postcodeid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `role`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `role`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `role` (
|
|
||||||
`roleid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`roleid`),
|
|
||||||
UNIQUE KEY `role_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `roles`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `roles`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `roles` (
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`permissionid` int(11) NOT NULL,
|
|
||||||
`entityid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `salestax`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `salestax`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `salestax` (
|
|
||||||
`salestaxid` varchar(20) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`salestaxid`),
|
|
||||||
UNIQUE KEY `salestax_unique` (`businessid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `service`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `service`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `service` (
|
|
||||||
`servicetypeid` int(11) NOT NULL,
|
|
||||||
`servicedescid` int(11) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicedesc`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicedesc`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicedesc` (
|
|
||||||
`servicedescid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(1000) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicedescid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicetype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicetype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicetype` (
|
|
||||||
`servicetypeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicetypeid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `socialsecurity`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `socialsecurity`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `socialsecurity` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`socialsecurityno` varchar(30) NOT NULL,
|
|
||||||
`medicalcareid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `socialsecurity_unique` (`employeeid`),
|
|
||||||
UNIQUE KEY `socialsecurity_unique_1` (`socialsecurityno`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `tariff`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `tariff`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `tariff` (
|
|
||||||
`tariffid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`tariff` decimal(10,0) NOT NULL COMMENT 'Festgelegter Stundensatz',
|
|
||||||
PRIMARY KEY (`tariffid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Stundensatz Tabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `timetrack`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `timetrack`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `timetrack` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`start` datetime NOT NULL,
|
|
||||||
`stop` datetime NOT NULL,
|
|
||||||
`vacation` tinyint(1) NOT NULL DEFAULT 0
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `users`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `users` (
|
|
||||||
`usersid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`username` varchar(50) NOT NULL,
|
|
||||||
`password` varchar(161) NOT NULL,
|
|
||||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`gecos` varchar(75) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`usersid`),
|
|
||||||
UNIQUE KEY `users_unique` (`username`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping routines for database 'pyqcrm'
|
|
||||||
--
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addBusiness` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addBusiness`(new_business JSON)
|
|
||||||
BEGIN
|
|
||||||
DECLARE v_company VARCHAR(100);
|
|
||||||
DECLARE v_street VARCHAR(100);
|
|
||||||
DECLARE v_postcode INT(11);
|
|
||||||
DECLARE v_phone VARCHAR(50);
|
|
||||||
DECLARE v_cell VARCHAR(50);
|
|
||||||
DECLARE v_email VARCHAR(255);
|
|
||||||
DECLARE v_homepage VARCHAR(255);
|
|
||||||
DECLARE v_director VARCHAR(100);
|
|
||||||
DECLARE v_contactperson VARCHAR(100);
|
|
||||||
DECLARE v_info VARCHAR(500);
|
|
||||||
DECLARE v_taxno VARCHAR(50);
|
|
||||||
DECLARE v_bt VARCHAR(50);
|
|
||||||
|
|
||||||
SET v_company = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.business'));
|
|
||||||
SET v_street = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.street'));
|
|
||||||
SET v_postcode = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.postcode'));
|
|
||||||
SET v_phone = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.telephone'));
|
|
||||||
SET v_cell = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.mobilephone'));
|
|
||||||
SET v_email = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.email'));
|
|
||||||
SET v_homepage = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.homepage'));
|
|
||||||
SET v_director = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.ceo'));
|
|
||||||
SET v_contactperson = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.'));
|
|
||||||
SET v_info = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.customerinfo'));
|
|
||||||
SET v_taxno = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.taxno'));
|
|
||||||
SET v_bt = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.typeid'));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- INSERT INTO business(company, street, postcodeid, phone, mobilephone, email,
|
|
||||||
-- homepage, director, contactperson, info, taxno, btid)
|
|
||||||
-- VALUES (v_company, v_street, v_postcodeid, v_phone,v_cell,
|
|
||||||
-- v_email,v_homepage, v_director, v_contactpersonid, v_info, v_taxno, v_bt);
|
|
||||||
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addPermission` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addPermission`(IN newpermission VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM permissions WHERE permission = newpermission) THEN
|
|
||||||
INSERT INTO permissions(permission) VALUES(newpermission);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addRole` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addRole`(IN newdescription VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM `role` WHERE description = newdescription) THEN
|
|
||||||
INSERT INTO `role`(description) VALUES(newdescription);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addZipCodes` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addZipCodes`(IN zipcode VARCHAR(15), IN town VARCHAR(500))
|
|
||||||
BEGIN
|
|
||||||
DECLARE zip_town INT;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM address WHERE city = town) THEN
|
|
||||||
INSERT INTO address(country, city) VALUES("Deutschland", town);
|
|
||||||
SET zip_town = LAST_INSERT_ID();
|
|
||||||
ELSE
|
|
||||||
SELECT addressid INTO zip_town FROM address WHERE city = town;
|
|
||||||
END IF;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM postcode WHERE postcode = zipcode) THEN
|
|
||||||
INSERT INTO postcode(postcode, addressid) VALUES(zipcode, zip_town);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `checkAdmin` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `checkAdmin`()
|
|
||||||
BEGIN
|
|
||||||
SELECT 1 FROM users WHERE roleid = 1 AND enabled = TRUE LIMIT 1;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `createUser` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `createUser`(IN uname VARCHAR(35), IN password VARCHAR(161), IN gecos VARCHAR(75), IN admin BOOL)
|
|
||||||
BEGIN
|
|
||||||
DECLARE userrole INT;
|
|
||||||
SET userrole = 2;
|
|
||||||
IF admin = 1 THEN
|
|
||||||
SET userrole = 1;
|
|
||||||
END IF;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM users WHERE username = uname) THEN
|
|
||||||
INSERT INTO users(username, password, gecos, roleid) VALUES(uname, password, gecos, userrole);
|
|
||||||
ELSE
|
|
||||||
SIGNAL SQLSTATE '45000' SET
|
|
||||||
MESSAGE_TEXT = 'Username already in use';
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getBusiness` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getBusiness`(IN businesstype VARCHAR(35))
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM business;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getCustomerView` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getCustomerView`()
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM customerinfo ORDER BY Kundenname ASC;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getUser` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getUser`( IN uname VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM users WHERE username = uname AND enabled = 1;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Final view structure for view `customerinfo`
|
|
||||||
--
|
|
||||||
|
|
||||||
/*!50001 DROP VIEW IF EXISTS `customerinfo`*/;
|
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
|
||||||
/*!50001 SET character_set_client = utf8mb4 */;
|
|
||||||
/*!50001 SET character_set_results = utf8mb4 */;
|
|
||||||
/*!50001 SET collation_connection = utf8mb4_general_ci */;
|
|
||||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
|
||||||
/*!50013 DEFINER=`pyqcrm`@`%` SQL SECURITY DEFINER */
|
|
||||||
/*!50001 VIEW `customerinfo` AS select `bt`.`businessid` AS `BusinessId`,coalesce(`bt`.`company`,'') AS `Kundenname`,coalesce(`bt`.`street`,'') AS `Straße`,coalesce(`pt`.`postcode`,'') AS `PLZ`,coalesce(`at`.`city`,'') AS `Ort`,coalesce(`ct`.`salutation`,'') AS `Anrede`,coalesce(concat(`ct`.`firstname`,' ',`ct`.`lastname`),'') AS `Ansprechpartner` from ((((`business` `bt` left join `postcode` `pt` on(`bt`.`postcodeid` = `pt`.`postcodeid`)) left join `address` `at` on(`pt`.`addressid` = `at`.`addressid`)) left join `contact` `cct` on(`cct`.`businessid` = `bt`.`businessid`)) left join `contactperson` `ct` on(`ct`.`contactpersonid` = `cct`.`contactpersonid`)) */;
|
|
||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
|
||||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
|
||||||
|
|
||||||
-- Dump completed on 2024-12-05 15:36:34
|
|
||||||
@@ -1,832 +0,0 @@
|
|||||||
/*M!999999\- enable the sandbox mode */
|
|
||||||
-- MariaDB dump 10.19 Distrib 10.11.10-MariaDB, for Linux (x86_64)
|
|
||||||
--
|
|
||||||
-- Host: bearybot.selfhost.co Database: pyqcrm
|
|
||||||
-- ------------------------------------------------------
|
|
||||||
-- Server version 10.11.8-MariaDB-0ubuntu0.24.04.1
|
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
|
||||||
/*!40101 SET NAMES utf8mb4 */;
|
|
||||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
|
||||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
|
||||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
|
||||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
|
||||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
|
||||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `address`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `address`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `address` (
|
|
||||||
`addressid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`country` varchar(50) DEFAULT NULL,
|
|
||||||
`city` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`addressid`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=7042 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `assignment`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `assignment`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `assignment` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `assignment_unique` (`contractid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_estonian_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `business`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `business`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `business` (
|
|
||||||
`businessid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(100) NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) DEFAULT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`homepage` varchar(255) DEFAULT NULL,
|
|
||||||
`director` varchar(100) DEFAULT NULL,
|
|
||||||
`contactpersonid` int(11) DEFAULT NULL,
|
|
||||||
`info` varchar(500) DEFAULT NULL,
|
|
||||||
`btid` int(11) DEFAULT 1,
|
|
||||||
`taxno` varchar(50) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`businessid`),
|
|
||||||
UNIQUE KEY `customer_unique` (`email`),
|
|
||||||
UNIQUE KEY `business_unique` (`taxno`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `businesstype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `businesstype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `businesstype` (
|
|
||||||
`btypeID` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`btypeID`),
|
|
||||||
UNIQUE KEY `businesstype_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contact`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contact`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contact` (
|
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
UNIQUE KEY `contact_unique` (`id`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contactperson`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contactperson`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contactperson` (
|
|
||||||
`contactpersonid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`priorityid` int(11) DEFAULT NULL,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`position` varchar(50) DEFAULT NULL,
|
|
||||||
`salutation` varchar(10) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`birthday` date DEFAULT NULL,
|
|
||||||
`active` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
PRIMARY KEY (`contactpersonid`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `contract`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `contract`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `contract` (
|
|
||||||
`contractid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`tariffid` int(11) NOT NULL,
|
|
||||||
`officeid` int(11) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`contractid`),
|
|
||||||
UNIQUE KEY `contract_unique` (`jobdetailid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Temporary table structure for view `customerinfo`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `customerinfo`;
|
|
||||||
/*!50001 DROP VIEW IF EXISTS `customerinfo`*/;
|
|
||||||
SET @saved_cs_client = @@character_set_client;
|
|
||||||
SET character_set_client = utf8;
|
|
||||||
/*!50001 CREATE VIEW `customerinfo` AS SELECT
|
|
||||||
1 AS `BusinessId`,
|
|
||||||
1 AS `Kundenname`,
|
|
||||||
1 AS `Straße`,
|
|
||||||
1 AS `PLZ`,
|
|
||||||
1 AS `Ort`,
|
|
||||||
1 AS `Anrede`,
|
|
||||||
1 AS `Ansprechpartner` */;
|
|
||||||
SET character_set_client = @saved_cs_client;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `employee`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `employee`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `employee` (
|
|
||||||
`employeeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`lastname` varchar(35) NOT NULL,
|
|
||||||
`firstname` varchar(35) NOT NULL,
|
|
||||||
`gender` varchar(30) DEFAULT NULL,
|
|
||||||
`maritalstatus` varchar(30) DEFAULT NULL,
|
|
||||||
`nationality` varchar(50) NOT NULL,
|
|
||||||
`birthday` date NOT NULL,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`phone` varchar(50) DEFAULT NULL,
|
|
||||||
`mobilephone` varchar(50) DEFAULT NULL,
|
|
||||||
`email` varchar(255) DEFAULT NULL,
|
|
||||||
`identificationid` int(11) NOT NULL,
|
|
||||||
`jobstatusid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`employeeid`),
|
|
||||||
UNIQUE KEY `employee_unique` (`identificationid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `entities`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `entities`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `entities` (
|
|
||||||
`entityid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`entity` varchar(35) NOT NULL,
|
|
||||||
PRIMARY KEY (`entityid`),
|
|
||||||
UNIQUE KEY `Entities_UNIQUE` (`entity`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identification`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identification`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identification` (
|
|
||||||
`identificationid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`number` varchar(50) NOT NULL,
|
|
||||||
`expiry` date NOT NULL,
|
|
||||||
`issued` date NOT NULL,
|
|
||||||
`authority` varchar(50) NOT NULL,
|
|
||||||
`typeid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`identificationid`),
|
|
||||||
UNIQUE KEY `identification_unique` (`number`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `identificationtype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `identificationtype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `identificationtype` (
|
|
||||||
`typeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`type` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`typeid`),
|
|
||||||
UNIQUE KEY `identificationtype_unique` (`type`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `invoice`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `invoice`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `invoice` (
|
|
||||||
`invoiceid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`issued` date NOT NULL COMMENT 'Rechnungsdatum',
|
|
||||||
`entry` date NOT NULL COMMENT 'Buchungsdatum',
|
|
||||||
`contractid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`invoiceid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobdetail`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobdetail`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobdetail` (
|
|
||||||
`jobdetailid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`duration` decimal(10,0) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL,
|
|
||||||
`period` varchar(15) NOT NULL,
|
|
||||||
`personnel` int(11) NOT NULL DEFAULT 1 COMMENT 'number of employees',
|
|
||||||
`price` decimal(10,0) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobdetailid`),
|
|
||||||
UNIQUE KEY `jobdetail_unique` (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `jobstatus`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `jobstatus`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `jobstatus` (
|
|
||||||
`jobstatusid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(30) NOT NULL,
|
|
||||||
PRIMARY KEY (`jobstatusid`),
|
|
||||||
UNIQUE KEY `jobstatus_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `logs`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `logs`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `logs` (
|
|
||||||
`logid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`recordid` int(11) DEFAULT NULL,
|
|
||||||
`operationtype` varchar(100) NOT NULL,
|
|
||||||
`message` varchar(100) NOT NULL,
|
|
||||||
`logdate` datetime NOT NULL DEFAULT current_timestamp(),
|
|
||||||
PRIMARY KEY (`logid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `medicalcare`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `medicalcare`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `medicalcare` (
|
|
||||||
`medicalcareid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`company` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`medicalcareid`),
|
|
||||||
UNIQUE KEY `medicalcare_unique` (`company`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `object`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `object`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `object` (
|
|
||||||
`objectid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`street` varchar(100) NOT NULL,
|
|
||||||
`postcodeid` int(11) NOT NULL,
|
|
||||||
`contactpersonid` int(11) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`objectid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offer`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offer`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offer` (
|
|
||||||
`offerid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`jobdetailid` int(11) NOT NULL,
|
|
||||||
`date` date NOT NULL,
|
|
||||||
PRIMARY KEY (`offerid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `offers`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `offers`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `offers` (
|
|
||||||
`offerid` int(11) NOT NULL,
|
|
||||||
`contractid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle Angebot - Auftrag';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `office`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `office`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `office` (
|
|
||||||
`officeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`office` varchar(50) NOT NULL COMMENT 'Kostenstelle',
|
|
||||||
PRIMARY KEY (`officeid`),
|
|
||||||
UNIQUE KEY `office_unique` (`office`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kostenstelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `permissions`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `permissions`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `permissions` (
|
|
||||||
`permissionid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`permission` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`permissionid`),
|
|
||||||
UNIQUE KEY `berechtigungen_unique` (`permission`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `personalrole`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `personalrole`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `personalrole` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`roleid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Kreuztabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `postcode`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `postcode`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `postcode` (
|
|
||||||
`postcodeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`postcode` varchar(15) NOT NULL,
|
|
||||||
`addressid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`postcodeid`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=8888 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `role`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `role`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `role` (
|
|
||||||
`roleid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`roleid`),
|
|
||||||
UNIQUE KEY `role_unique` (`description`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `roles`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `roles`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `roles` (
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`permissionid` int(11) NOT NULL,
|
|
||||||
`entityid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `salestax`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `salestax`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `salestax` (
|
|
||||||
`salestaxid` varchar(20) NOT NULL,
|
|
||||||
`businessid` int(11) NOT NULL,
|
|
||||||
PRIMARY KEY (`salestaxid`),
|
|
||||||
UNIQUE KEY `salestax_unique` (`businessid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `service`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `service`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `service` (
|
|
||||||
`servicetypeid` int(11) NOT NULL,
|
|
||||||
`servicedescid` int(11) NOT NULL,
|
|
||||||
`objectid` int(11) NOT NULL
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicedesc`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicedesc`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicedesc` (
|
|
||||||
`servicedescid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(1000) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicedescid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `servicetype`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `servicetype`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `servicetype` (
|
|
||||||
`servicetypeid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`description` varchar(50) NOT NULL,
|
|
||||||
PRIMARY KEY (`servicetypeid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `socialsecurity`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `socialsecurity`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `socialsecurity` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`socialsecurityno` varchar(30) NOT NULL,
|
|
||||||
`medicalcareid` int(11) NOT NULL,
|
|
||||||
UNIQUE KEY `socialsecurity_unique` (`employeeid`),
|
|
||||||
UNIQUE KEY `socialsecurity_unique_1` (`socialsecurityno`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `tariff`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `tariff`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `tariff` (
|
|
||||||
`tariffid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`tariff` decimal(10,0) NOT NULL COMMENT 'Festgelegter Stundensatz',
|
|
||||||
PRIMARY KEY (`tariffid`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Stundensatz Tabelle';
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `timetrack`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `timetrack`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `timetrack` (
|
|
||||||
`employeeid` int(11) NOT NULL,
|
|
||||||
`start` datetime NOT NULL,
|
|
||||||
`stop` datetime NOT NULL,
|
|
||||||
`vacation` tinyint(1) NOT NULL DEFAULT 0
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `users`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `users`;
|
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!40101 SET character_set_client = utf8 */;
|
|
||||||
CREATE TABLE `users` (
|
|
||||||
`usersid` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`username` varchar(50) NOT NULL,
|
|
||||||
`password` varchar(161) NOT NULL,
|
|
||||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
|
||||||
`roleid` int(11) NOT NULL,
|
|
||||||
`gecos` varchar(75) DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`usersid`),
|
|
||||||
UNIQUE KEY `users_unique` (`username`)
|
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping routines for database 'pyqcrm'
|
|
||||||
--
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addBusiness` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addBusiness`(new_business JSON)
|
|
||||||
BEGIN
|
|
||||||
DECLARE v_company VARCHAR(100);
|
|
||||||
DECLARE v_street VARCHAR(100);
|
|
||||||
DECLARE v_postcode INT(11);
|
|
||||||
DECLARE v_phone VARCHAR(50);
|
|
||||||
DECLARE v_cell VARCHAR(50);
|
|
||||||
DECLARE v_email VARCHAR(255);
|
|
||||||
DECLARE v_homepage VARCHAR(255);
|
|
||||||
DECLARE v_director VARCHAR(100);
|
|
||||||
DECLARE v_contactperson VARCHAR(100);
|
|
||||||
DECLARE v_info VARCHAR(500);
|
|
||||||
DECLARE v_taxno VARCHAR(50);
|
|
||||||
DECLARE v_bt VARCHAR(50);
|
|
||||||
|
|
||||||
SET v_company = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.business'));
|
|
||||||
SET v_street = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.street'));
|
|
||||||
SET v_postcode = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.postcode'));
|
|
||||||
SET v_phone = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.telephone'));
|
|
||||||
SET v_cell = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.mobilephone'));
|
|
||||||
SET v_email = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.email'));
|
|
||||||
SET v_homepage = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.homepage'));
|
|
||||||
SET v_director = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.ceo'));
|
|
||||||
SET v_contactperson = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.'));
|
|
||||||
SET v_info = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.customerinfo'));
|
|
||||||
SET v_taxno = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.taxno'));
|
|
||||||
SET v_bt = JSON_UNQUOTE(JSON_EXTRACT(new_business, '$.typeid'));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addPermission` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addPermission`(IN newpermission VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM permissions WHERE permission = newpermission) THEN
|
|
||||||
INSERT INTO permissions(permission) VALUES(newpermission);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addRole` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addRole`(IN newdescription VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM `role` WHERE description = newdescription) THEN
|
|
||||||
INSERT INTO `role`(description) VALUES(newdescription);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `addZipCodes` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `addZipCodes`(IN zipcode VARCHAR(15), IN town VARCHAR(500))
|
|
||||||
BEGIN
|
|
||||||
DECLARE zip_town INT;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM address WHERE city = town) THEN
|
|
||||||
INSERT INTO address(country, city) VALUES("Deutschland", town);
|
|
||||||
SET zip_town = LAST_INSERT_ID();
|
|
||||||
ELSE
|
|
||||||
SELECT addressid INTO zip_town FROM address WHERE city = town;
|
|
||||||
END IF;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM postcode WHERE postcode = zipcode) THEN
|
|
||||||
INSERT INTO postcode(postcode, addressid) VALUES(zipcode, zip_town);
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `checkAdmin` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `checkAdmin`()
|
|
||||||
BEGIN
|
|
||||||
SELECT 1 FROM users WHERE roleid = 1 AND enabled = TRUE LIMIT 1;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `createUser` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `createUser`(IN uname VARCHAR(35), IN password VARCHAR(161), IN gecos VARCHAR(75), IN admin BOOL)
|
|
||||||
BEGIN
|
|
||||||
DECLARE userrole INT;
|
|
||||||
SET userrole = 2;
|
|
||||||
IF admin = 1 THEN
|
|
||||||
SET userrole = 1;
|
|
||||||
END IF;
|
|
||||||
IF NOT EXISTS (SELECT 1 FROM users WHERE username = uname) THEN
|
|
||||||
INSERT INTO users(username, password, gecos, roleid) VALUES(uname, password, gecos, userrole);
|
|
||||||
ELSE
|
|
||||||
SIGNAL SQLSTATE '45000' SET
|
|
||||||
MESSAGE_TEXT = 'Username already in use';
|
|
||||||
END IF;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getBusiness` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getBusiness`(IN businesstype VARCHAR(35))
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM business;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getCustomerView` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getCustomerView`()
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM customerinfo ORDER BY Kundenname ASC;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
|
||||||
/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
|
|
||||||
/*!50003 DROP PROCEDURE IF EXISTS `getUser` */;
|
|
||||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
|
||||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
|
||||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
|
||||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
|
||||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
|
||||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
|
||||||
DELIMITER ;;
|
|
||||||
CREATE DEFINER=`pyqcrm`@`%` PROCEDURE `getUser`( IN uname VARCHAR(50))
|
|
||||||
BEGIN
|
|
||||||
SELECT * FROM users WHERE username = uname AND enabled = 1;
|
|
||||||
END ;;
|
|
||||||
DELIMITER ;
|
|
||||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
|
||||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
|
||||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
|
||||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Final view structure for view `customerinfo`
|
|
||||||
--
|
|
||||||
|
|
||||||
/*!50001 DROP VIEW IF EXISTS `customerinfo`*/;
|
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
|
||||||
/*!50001 SET character_set_client = utf8mb4 */;
|
|
||||||
/*!50001 SET character_set_results = utf8mb4 */;
|
|
||||||
/*!50001 SET collation_connection = utf8mb4_general_ci */;
|
|
||||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
|
||||||
/*!50013 DEFINER=`pyqcrm`@`%` SQL SECURITY DEFINER */
|
|
||||||
/*!50001 VIEW `customerinfo` AS select `bt`.`businessid` AS `BusinessId`,coalesce(`bt`.`company`,'') AS `Kundenname`,coalesce(`bt`.`street`,'') AS `Straße`,coalesce(`pt`.`postcode`,'') AS `PLZ`,coalesce(`at`.`city`,'') AS `Ort`,coalesce(`ct`.`salutation`,'') AS `Anrede`,coalesce(concat(`ct`.`firstname`,' ',`ct`.`lastname`),'') AS `Ansprechpartner` from ((((`business` `bt` left join `postcode` `pt` on(`bt`.`postcodeid` = `pt`.`postcodeid`)) left join `address` `at` on(`pt`.`addressid` = `at`.`addressid`)) left join `contact` `cct` on(`cct`.`businessid` = `bt`.`businessid`)) left join `contactperson` `ct` on(`ct`.`contactpersonid` = `cct`.`contactpersonid`)) */;
|
|
||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
|
||||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
|
||||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
|
||||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
|
||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
|
||||||
|
|
||||||
-- Dump completed on 2024-12-05 16:40:40
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user