Compare commits

10 Commits

Author SHA256 Message Date
75427b1326 Folder structure in Gui changed, window size to fullscreen, scrollview in AddCustomer 2025-05-14 09:54:51 +02:00
591216c9a8 Removed test hallo push in main.py 2025-05-14 09:22:53 +02:00
6ed9c47bbe Test hallo push in main.py 2025-05-14 09:22:06 +02:00
6e2eb95bd6 pushtest 2025-05-14 09:12:27 +02:00
5b16432767 A lot of changes going on 2025-05-13 16:40:48 +02:00
3ff830b3e2 new Diagrams 2025-05-09 10:59:11 +02:00
2dab5883e2 Merge branch 'main' into schnacke 2025-05-08 11:47:47 +02:00
0ee3a5f8b3 Need to 2025-04-28 13:46:21 +02:00
0e397619f4 Merge branch 'main' into schnacke
merge main
2025-03-25 13:41:40 +01:00
d4ed18aaf9 filter names changed 2025-03-25 13:41:01 +01:00
57 changed files with 6646 additions and 682 deletions

View File

@@ -1,120 +1,120 @@
import QtQuick // import QtQuick
import QtQuick.Layouts // import QtQuick.Layouts
import QtQuick.Controls // import QtQuick.Controls
import QtQuick.Dialogs // import QtQuick.Dialogs
import "../js/qmldict.js" as JsLib // import Js
ColumnLayout // ColumnLayout
{ // {
property var new_business: null // property var new_business: null
Layout.fillWidth: true // Layout.fillWidth: true
Layout.fillHeight: true // Layout.fillHeight: true
spacing: 15 // spacing: 15
Label // Label
{ // {
text: qsTr("Kunden anlegen") // text: qsTr("Kunden anlegen")
horizontalAlignment: Text.AlignHCenter // horizontalAlignment: Text.AlignHCenter
Layout.fillWidth: true // Layout.fillWidth: true
font.pixelSize: 35 // font.pixelSize: 35
} // }
CheckBox // CheckBox
{ // {
id: checkAddContact // id: checkAddContact
text: qsTr("Ansprechpartner hinzufügen") // text: qsTr("Ansprechpartner hinzufügen")
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
checked: false // checked: false
onCheckStateChanged: // onCheckStateChanged:
{ // {
checkFields() // checkFields()
} // }
} // }
RowLayout // RowLayout
{ // {
id: addCustomer // id: addCustomer
Layout.fillWidth: true // Layout.fillWidth: true
Layout.fillHeight: true // Layout.fillHeight: true
spacing: 45 // spacing: 45
Frame // Frame
{ // {
Layout.alignment: Qt.AlignTop // Layout.alignment: Qt.AlignTop
Layout.fillWidth: true // Layout.fillWidth: true
CustomerView // CustomerView
{ // {
id: customerView // id: customerView
width: parent.width // width: parent.width
} // }
} // }
AddContact // AddContact
{ // {
id: addContactFrame // id: addContactFrame
visible: checkAddContact.checked // visible: checkAddContact.checked
} // }
} // }
RowLayout // RowLayout
{ // {
Layout.fillHeight: true // Layout.fillHeight: true
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
Button // Button
{ // {
text: qsTr("Abbrechen") // text: qsTr("Abbrechen")
onClicked: contentStack.pop() // onClicked: contentStack.pop()
} // }
Button // Button
{ // {
id: saveBtn // id: saveBtn
text: qsTr("Speichern") // text: qsTr("Speichern")
enabled: false // enabled: false
onClicked: // onClicked:
{ // {
if (!checkAddContact.checked) // if (!checkAddContact.checked)
{ // {
new_business = JsLib.parseForm(customerView) // new_business = JsLib.parseForm(customerView)
business_model.addBusiness(new_business, 0) // business_model.addBusiness(new_business, 0)
contentStack.pop() // contentStack.pop()
} // }
else // else
{ // {
new_business = JsLib.parseForm(customerView) // new_business = JsLib.parseForm(customerView)
var new_contact = JsLib.parseForm(addContactFrame.contactGrid) // var new_contact = JsLib.parseForm(addContactFrame.contactGrid)
contact_model.addContact(new_contact) // contact_model.addContact(new_contact)
} // }
} // }
} // }
} // }
Item // Item
{ // {
id: spacer3 // id: spacer3
Layout.fillHeight: true // Layout.fillHeight: true
} // }
//Component.onCompleted: contact_model.contactIdReady.connect(onContactId) // //Component.onCompleted: contact_model.contactIdReady.connect(onContactId)
Connections // Connections
{ // {
target: contact_model // target: contact_model
function onContactIdReady() // function onContactIdReady()
{ // {
var con_id = arguments[0] // var con_id = arguments[0]
business_model.addBusiness(new_business, con_id) // business_model.addBusiness(new_business, con_id)
contentStack.pop() // contentStack.pop()
} // }
} // }
function checkFields() // function checkFields()
{ // {
if(checkAddContact.checked) // if(checkAddContact.checked)
{ // {
if(!customerView.checkBusinessField() || !addContactFrame.checkContactField()) // if(!customerView.checkBusinessField() || !addContactFrame.checkContactField())
saveBtn.enabled = false // saveBtn.enabled = false
else // else
saveBtn.enabled = true // saveBtn.enabled = true
} // }
else if (!customerView.checkBusinessField()) // else if (!customerView.checkBusinessField())
saveBtn.enabled = false // saveBtn.enabled = false
else // else
saveBtn.enabled = true // saveBtn.enabled = true
} // }
} // }

View File

@@ -2,7 +2,7 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Dialogs import QtQuick.Dialogs
import "../js/qmldict.js" as JsLib import Js
ColumnLayout ColumnLayout
{ {
@@ -70,8 +70,13 @@ ColumnLayout
text: qsTr("Speichern") text: qsTr("Speichern")
enabled: false enabled: false
onClicked: onClicked:
{ {
new_object = JsLib.parseForm(newObject) new_object = JsLib.parseForm(newObject)
// For Debugging
console.log(JSON.stringify(new_object))
//
new_object['lift'] = new_object['lift'] === 'Ja' ? 1 : 0 new_object['lift'] = new_object['lift'] === 'Ja' ? 1 : 0
new_object['mezzanin'] = new_object['mezzanin'] === 'Ja' ? 1 : 0 new_object['mezzanin'] = new_object['mezzanin'] === 'Ja' ? 1 : 0
object_model.addObject(new_object) object_model.addObject(new_object)

View File

@@ -51,6 +51,15 @@ GridLayout
placeholderText: qsTr("Hier Passwort eingeben") placeholderText: qsTr("Hier Passwort eingeben")
Layout.fillWidth: true Layout.fillWidth: true
property string name: "PYQCRM_USER_PASS" property string name: "PYQCRM_USER_PASS"
color: acceptableInput ? "black" : "red"
ToolTip.visible: hovered && !acceptableInput
ToolTip.text: "Passwort muss mind. 12 Zeichen lang sein und Groß-, Kleinbuchstaben, Zahlen sowie Sonderzeichen (!@#$%^&*()_+-=) enthalten."
validator: RegularExpressionValidator {
regularExpression: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=]).{12,}$/
}
} }
Label Label
{ {

View File

@@ -3,7 +3,7 @@ import QtQuick.Controls
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Dialogs import QtQuick.Dialogs
import QtCore import QtCore
import "../js/qmldict.js" as JsLib import Js

View File

@@ -0,0 +1,133 @@
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Dialogs
import Js
import Gui
ScrollView
{
id: scroll
width: parent.width
height: parent.height
ColumnLayout
{
property var new_business: null
height: Screen.desktopAvailableHeight
width: scroll.width
Layout.fillWidth: true
Layout.fillHeight: true
spacing: 15
Label
{
text: qsTr("Kunden anlegen")
horizontalAlignment: Text.AlignHCenter
Layout.fillWidth: true
font.pixelSize: 35
}
CheckBox
{
id: checkAddContact
text: qsTr("Ansprechpartner hinzufügen")
Layout.alignment: Qt.AlignRight
checked: false
onCheckStateChanged:
{
checkFields()
}
}
RowLayout
{
id: addCustomer
// Layout.fillWidth: true
// Layout.fillHeight: true
spacing: 45
Frame
{
Layout.alignment: Qt.AlignTop
Layout.fillWidth: true
CustomerView
{
id: customerView
width: parent.width
}
}
AddContact
{
id: addContactFrame
visible: checkAddContact.checked
}
}
RowLayout
{
Layout.fillHeight: true
Layout.alignment: Qt.AlignRight
Button
{
text: qsTr("Abbrechen")
onClicked: contentStack.pop()
}
Button
{
id: saveBtn
text: qsTr("Speichern")
enabled: true
onClicked:
{
if (!checkAddContact.checked)
{
new_business = JsLib.parseForm(customerView)
business_model.addBusiness(new_business, 0)
contentStack.pop()
}
else
{
new_business = JsLib.parseForm(customerView)
var new_contact = JsLib.parseForm(addContactFrame.contactGrid)
contact_model.addContact(new_contact)
}
}
}
}
Item
{
id: spacer3
Layout.fillHeight: true
}
//Component.onCompleted: contact_model.contactIdReady.connect(onContactId)
Connections
{
target: contact_model
function onContactIdReady()
{
var con_id = arguments[0]
business_model.addBusiness(new_business, con_id)
contentStack.pop()
}
}
function checkFields()
{
if(checkAddContact.checked)
{
if(!customerView.checkBusinessField() || !addContactFrame.checkContactField())
saveBtn.enabled = false
else
saveBtn.enabled = true
}
else if (!customerView.checkBusinessField())
saveBtn.enabled = false
else
saveBtn.enabled = true
}
}
}

View 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")
}
}

View 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
}
}

View 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
// }
}

View File

@@ -0,0 +1,293 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
GridLayout
{
id: customerView
columns: 4
Layout.fillWidth: true
Layout.fillHeight: true
rowSpacing: 9
property alias businesstxt: firmenName
property alias street: streetid
property alias postcodetxt: postcode
property alias citytxt: city
Label
{
id: lblFirmenName
text: qsTr("Firmenname*")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
TextField
{
property string name: "business"
id: firmenName
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
onTextChanged: checkFields()
Layout.columnSpan: 3
}
Label
{
text: qsTr("Land")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
visible: false
}
ComboBox
{
property string name: "country"
id: country
Layout.fillWidth: true
editable: true
// onEditTextChanged: checkFields()
// onCurrentTextChanged: checkFields()
model: address_model
textRole: "country"
popup.height: 300
currentIndex: 37
Layout.columnSpan: 3
visible: false
}
Label
{
text: qsTr("PLZ")
Layout.alignment: Qt.AlignRight
}
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
Layout.columnSpan: 3
validator: RegularExpressionValidator
{
regularExpression: /([0-9]{1,5})/
}
}
Label
{
text: qsTr("Ort")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
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
Layout.columnSpan: 3
}
Label
{
text: qsTr("Straße*")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
TextField
{
property string name: "street"
id: streetid
Layout.fillWidth: true
onTextChanged: checkFields()
}
Label
{
text: qsTr("Nr.*")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
TextField
{
property string name: "houseno"
id: housenoid
Layout.fillWidth: true
onTextChanged: checkFields()
validator: RegularExpressionValidator
{
regularExpression: /([0-9a-zA-Z\-]{1,6})/
}
}
Label
{
text: qsTr("Telefon")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
TextField
{
property string name: "telephone"
id: telephone
Layout.fillWidth: true
Layout.columnSpan: 3
validator: RegularExpressionValidator
{
regularExpression: /([+0-9]{1})([0-9]{1,17})/
}
}
Label
{
text: qsTr("Mobil")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
TextField
{
property string name: "cellphone"
id: cellphone
Layout.fillWidth: true
Layout.columnSpan: 3
validator: RegularExpressionValidator
{
regularExpression: /([+0-9]{1})([0-9]{1,17})/
}
}
Label
{
text: qsTr("E-Mail")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "email"
id: email
Layout.fillWidth: true
placeholderText: qsTr("beispiel@domain.de")
Layout.columnSpan: 3
validator: RegularExpressionValidator
{
regularExpression: /([\+!#$%&\*\\/\=?\^_`\.{|}\~\-\_0-9A-Za-z]{1,185})@([0-9A-Za-z\.\-\_]{1,64})\.([a-zA-z]{2,5})/
}
}
Label
{
text: qsTr("Homepage")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "homepage"
id: homepage
Layout.fillWidth: true
Layout.columnSpan: 3
placeholderText: "www.oschkarischtverhaftetwegensexy.jinx"
}
Label
{
text: qsTr("Geschäftsführer")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "ceo"
id: ceo
Layout.fillWidth: true
Layout.columnSpan: 3
}
Label
{
text: qsTr("USt-IdNr")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "taxno"
id: taxno
Layout.fillWidth: true
Layout.columnSpan: 3
}
Label
{
text: qsTr("Typ")
Layout.alignment: Qt.AlignRight
}
ComboBox
{
property string name: "typeid"
id: typeid
Layout.fillWidth: true
editable: false
model: business_type
textRole: "display"
Layout.columnSpan: 3
}
Label
{
text: qsTr("Info")
Layout.alignment: Qt.AlignRight | Qt.AlignTop
}
ScrollView
{
id: infoView
Layout.fillWidth: true
Layout.preferredHeight: 100
Layout.columnSpan: 3
ScrollBar.horizontal: ScrollBar
{
policy: ScrollBar.AlwaysOn
}
TextArea
{
property string name: "customerinfo"
id: customerInfo
implicitWidth: parent.width
wrapMode: TextEdit.Wrap
background: Rectangle
{
color: customerInfo.palette.base
border.color: customerInfo.activeFocus? customerInfo.palette.highlight: customerInfo.palette.base
}
}
}
function checkBusinessField()
{
if (!firmenName.text.trim() || !streetid.text.trim())
{
return false
}
else
{
if (!postcode.editText.trim() || !postcode.currentText || !city.editText.trim() || !city.currentText)
return false
else
return true
}
}
}

View 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
}
}

1
Gui/Customer/qmldir Normal file
View File

@@ -0,0 +1 @@
module Customer

View File

@@ -1,271 +1,271 @@
import QtQuick // import QtQuick
import QtQuick.Controls // import QtQuick.Controls
import QtQuick.Layouts // import QtQuick.Layouts
GridLayout // GridLayout
{ // {
id: customerView // id: customerView
columns: 4 // columns: 4
Layout.fillWidth: true // Layout.fillWidth: true
Layout.fillHeight: true // Layout.fillHeight: true
rowSpacing: 9 // rowSpacing: 9
property alias businesstxt: firmenName // property alias businesstxt: firmenName
property alias street: streetid // property alias street: streetid
property alias postcodetxt: postcode // property alias postcodetxt: postcode
property alias citytxt: city // property alias citytxt: city
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"
id: firmenName // id: firmenName
Layout.fillWidth: true // Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter // Layout.alignment: Qt.AlignVCenter
onTextChanged: checkFields() // onTextChanged: checkFields()
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()
} // }
Label // Label
{ // {
text: qsTr("Nr.*") // text: qsTr("Nr.*")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter // Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
} // }
TextField // TextField
{ // {
property string name: "houseno" // property string name: "houseno"
id: housenoid // id: housenoid
Layout.fillWidth: true // Layout.fillWidth: true
onTextChanged: checkFields() // onTextChanged: checkFields()
validator: RegularExpressionValidator // validator: RegularExpressionValidator
{ // {
regularExpression: /([0-9a-zA-Z\-]{1,6})/ // regularExpression: /([0-9a-zA-Z\-]{1,6})/
} // }
} // }
Label // Label
{ // {
text: qsTr("PLZ") // text: qsTr("PLZ")
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
} // }
ComboBox // ComboBox
{ // {
property string name: "postcode" // property string name: "postcode"
id: postcode // id: postcode
Layout.fillWidth: true // Layout.fillWidth: true
editable: true // editable: true
onCurrentTextChanged: checkFields() // onCurrentTextChanged: checkFields()
onEditTextChanged: checkFields() // onEditTextChanged: checkFields()
onActivated: currentValue // onActivated: currentValue
model: address_model // model: address_model
textRole: "display" // textRole: "display"
popup.height: 300 // popup.height: 300
currentIndex: -1 // currentIndex: -1
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex // onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
Layout.columnSpan: 3 // Layout.columnSpan: 3
validator: RegularExpressionValidator // validator: RegularExpressionValidator
{ // {
regularExpression: /([0-9]{1,5})/ // regularExpression: /([0-9]{1,5})/
} // }
} // }
Label // Label
{ // {
text: qsTr("Ort") // text: qsTr("Ort")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter // Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
} // }
ComboBox // ComboBox
{ // {
property string name: "city" // property string name: "city"
id: city // id: city
Layout.fillWidth: true // Layout.fillWidth: true
editable: true // editable: true
onEditTextChanged: checkFields() // onEditTextChanged: checkFields()
onCurrentTextChanged: checkFields() // onCurrentTextChanged: checkFields()
model: address_model // model: address_model
textRole: "city" // textRole: "city"
popup.height: 300 // popup.height: 300
currentIndex: -1 // currentIndex: -1
Layout.columnSpan: 3 // Layout.columnSpan: 3
} // }
Label // Label
{ // {
text: qsTr("Telefon") // text: qsTr("Telefon")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter // Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
} // }
TextField // TextField
{ // {
property string name: "telephone" // property string name: "telephone"
id: telephone // id: telephone
Layout.fillWidth: true // Layout.fillWidth: true
Layout.columnSpan: 3 // Layout.columnSpan: 3
validator: RegularExpressionValidator // validator: RegularExpressionValidator
{ // {
regularExpression: /([+0-9]{1})([0-9]{1,17})/ // regularExpression: /([+0-9]{1})([0-9]{1,17})/
} // }
} // }
Label // Label
{ // {
text: qsTr("Mobil") // text: qsTr("Mobil")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter // Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
} // }
TextField // TextField
{ // {
property string name: "cellphone" // property string name: "cellphone"
id: cellphone // id: cellphone
Layout.fillWidth: true // Layout.fillWidth: true
Layout.columnSpan: 3 // Layout.columnSpan: 3
validator: RegularExpressionValidator // validator: RegularExpressionValidator
{ // {
regularExpression: /([+0-9]{1})([0-9]{1,17})/ // regularExpression: /([+0-9]{1})([0-9]{1,17})/
} // }
} // }
Label // Label
{ // {
text: qsTr("E-Mail") // text: qsTr("E-Mail")
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
} // }
TextField // TextField
{ // {
property string name: "email" // property string name: "email"
id: email // id: email
Layout.fillWidth: true // Layout.fillWidth: true
placeholderText: qsTr("beispiel@domain.de") // placeholderText: qsTr("beispiel@domain.de")
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})/
} // }
} // }
Label // Label
{ // {
text: qsTr("Homepage") // text: qsTr("Homepage")
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
} // }
TextField // TextField
{ // {
property string name: "homepage" // property string name: "homepage"
id: homepage // id: homepage
Layout.fillWidth: true // Layout.fillWidth: true
Layout.columnSpan: 3 // Layout.columnSpan: 3
placeholderText: "www.oschkarischtverhaftetwegensexy.jinx" // placeholderText: "www.oschkarischtverhaftetwegensexy.jinx"
} // }
Label // Label
{ // {
text: qsTr("Geschäftsführer") // text: qsTr("Geschäftsführer")
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
} // }
TextField // TextField
{ // {
property string name: "ceo" // property string name: "ceo"
id: ceo // id: ceo
Layout.fillWidth: true // Layout.fillWidth: true
Layout.columnSpan: 3 // Layout.columnSpan: 3
} // }
Label // Label
{ // {
text: qsTr("USt-IdNr") // text: qsTr("USt-IdNr")
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
} // }
TextField // TextField
{ // {
property string name: "taxno" // property string name: "taxno"
id: taxno // id: taxno
Layout.fillWidth: true // Layout.fillWidth: true
Layout.columnSpan: 3 // Layout.columnSpan: 3
} // }
Label // Label
{ // {
text: qsTr("Typ") // text: qsTr("Typ")
Layout.alignment: Qt.AlignRight // Layout.alignment: Qt.AlignRight
} // }
ComboBox // ComboBox
{ // {
property string name: "typeid" // property string name: "typeid"
id: typeid // id: typeid
Layout.fillWidth: true // Layout.fillWidth: true
editable: false // editable: false
model: business_type // model: business_type
textRole: "display" // textRole: "display"
Layout.columnSpan: 3 // Layout.columnSpan: 3
} // }
Label // Label
{ // {
text: qsTr("Info") // text: qsTr("Info")
Layout.alignment: Qt.AlignRight | Qt.AlignTop // Layout.alignment: Qt.AlignRight | Qt.AlignTop
} // }
ScrollView // ScrollView
{ // {
id: infoView // id: infoView
Layout.fillWidth: true // Layout.fillWidth: true
Layout.preferredHeight: 100 // Layout.preferredHeight: 100
Layout.columnSpan: 3 // Layout.columnSpan: 3
ScrollBar.horizontal: ScrollBar // ScrollBar.horizontal: ScrollBar
{ // {
policy: ScrollBar.AlwaysOn // policy: ScrollBar.AlwaysOn
} // }
TextArea // TextArea
{ // {
property string name: "customerinfo" // property string name: "customerinfo"
id: customerInfo // id: customerInfo
implicitWidth: parent.width // implicitWidth: parent.width
wrapMode: TextEdit.Wrap // wrapMode: TextEdit.Wrap
background: Rectangle // background: Rectangle
{ // {
color: customerInfo.palette.base // color: customerInfo.palette.base
border.color: customerInfo.activeFocus? customerInfo.palette.highlight: customerInfo.palette.base // border.color: customerInfo.activeFocus? customerInfo.palette.highlight: customerInfo.palette.base
} // }
} // }
} // }
function checkBusinessField() // function checkBusinessField()
{ // {
if (!firmenName.text.trim() || !streetid.text.trim()) // if (!firmenName.text.trim() || !streetid.text.trim())
{ // {
return false // return false
} // }
else // else
{ // {
if (!postcode.editText.trim() || !postcode.currentText || !city.editText.trim() || !city.currentText) // if (!postcode.editText.trim() || !postcode.currentText || !city.editText.trim() || !city.currentText)
return false // return false
else // else
return true // return true
} // }
} // }
} // }

View File

@@ -1,8 +1,7 @@
import QtQuick import QtQuick
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Layouts import QtQuick.Layouts
import "../../js/qmldict.js" as JsLib import Js
ColumnLayout { ColumnLayout {
id: colPar id: colPar
@@ -46,7 +45,7 @@ ColumnLayout {
Layout.fillWidth: true Layout.fillWidth: true
Layout.horizontalStretchFactor: 1 Layout.horizontalStretchFactor: 1
ApplicantPersonalData { EmployeePersonalData {
id: personalData id: personalData
implicitWidth: parent.width implicitWidth: parent.width
@@ -61,14 +60,14 @@ ColumnLayout {
Layout.alignment: Qt.AlignTop Layout.alignment: Qt.AlignTop
implicitWidth: parent.width implicitWidth: parent.width
ApplicantBankData { EmployeeBankData {
id: bankAccount id: bankAccount
} }
ApplicantNationalInsurance { EmployeeNationalInsurance {
id: nationalInsurance id: nationalInsurance
} }
ApplicantVarious { EmployeeVarious {
id: applicantVarious id: applicantVarious
} }

View File

@@ -3,7 +3,8 @@ import QtQuick.Controls.impl
import QtQuick.Layouts import QtQuick.Layouts
import TeroStyle import TeroStyle
ColumnLayout { ColumnLayout
{
readonly property int fieldM: 235 readonly property int fieldM: 235
readonly property int fieldS: 110 readonly property int fieldS: 110
readonly property bool valid: city.acceptableInput && email.acceptableInput && firstname.acceptableInput && lastname.acceptableInput && mobile.acceptableInput && phone.acceptableInput && postcode.acceptableInput && formofaddress.acceptableInput && title.acceptableInput readonly property bool valid: city.acceptableInput && email.acceptableInput && firstname.acceptableInput && lastname.acceptableInput && mobile.acceptableInput && phone.acceptableInput && postcode.acceptableInput && formofaddress.acceptableInput && title.acceptableInput

View File

@@ -31,7 +31,7 @@ ColumnLayout {
BarButton { BarButton {
ButtonGroup.group: mainNav ButtonGroup.group: mainNav
icon.source: "qrc:/images/UserGroup-Outline.svg" icon.source: "qrc:/images/UserGroup-Outline.svg"
target: "/Gui/CustomersTable.qml" target: "/Gui/Customer/CustomersTable.qml"
text: qsTr("Kunden") text: qsTr("Kunden")
visible: !onSubPage visible: !onSubPage
} }
@@ -52,7 +52,7 @@ ColumnLayout {
BarButton { BarButton {
ButtonGroup.group: mainNav ButtonGroup.group: mainNav
icon.source: "qrc:/images/RectangleStack-Outline.svg" icon.source: "qrc:/images/RectangleStack-Outline.svg"
target: "/Gui/OffersTable.qml" target: "/Gui/Offers/OffersTable.qml"
text: qsTr("Angebote") text: qsTr("Angebote")
visible: !onSubPage visible: !onSubPage
} }

View File

@@ -1,7 +1,7 @@
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import "../js/qmldict.js" as JsLib import Js
Frame Frame
{ {

View File

@@ -45,23 +45,18 @@ ColumnLayout
selected: true selected: true
} }
ListElement { ListElement {
name: "Interessent" name: "Aktiv"
text: qsTr("Interessent") text: qsTr("Aktiv")
selected: false selected: false
} }
ListElement { ListElement {
name: "Kunde" name: "Ehemalig"
text: qsTr("Kunde") text: qsTr("Ehemalig")
selected: false selected: false
} }
ListElement { ListElement {
name: "Lieferant" name: "Angebote"
text: qsTr("Lieferant") text: qsTr("Angebote")
selected: false
}
ListElement {
name: "Erledigt"
text: qsTr("Erledigt")
selected: false selected: false
} }
} }

View File

@@ -52,37 +52,6 @@ GridLayout
//// New grid row //// 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 Label
{ {
text: qsTr("PLZ") text: qsTr("PLZ")
@@ -102,7 +71,11 @@ GridLayout
textRole: "display" textRole: "display"
popup.height: 300 popup.height: 300
currentIndex: -1 currentIndex: -1
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex onCurrentIndexChanged:
{
city.currentIndex = postcode.currentIndex
}
validator: RegularExpressionValidator validator: RegularExpressionValidator
{ {
@@ -131,6 +104,41 @@ GridLayout
currentIndex: -1 currentIndex: -1
} }
Label
{
text: qsTr("Straße")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
ComboBox
{
property string name: "street"
id: street
model: object_model
textRole: "StreetInPostcode"
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
// onTextChanged: checkFields()
}
Label
{
text: qsTr("Nr.*")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
ComboBox
{
property string name: "houseno"
id: houseno
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
// onTextChanged: checkFields()
}
// New grid row
//New Grid //New Grid
Label Label
{ {
@@ -185,7 +193,22 @@ GridLayout
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignVCenter
} }
Item
{
Layout.columnSpan: 2
}
//New Grid
Label
{
text: qsTr("Leistungen:")
Layout.alignment: Qt.AlignRight
font: Typography.h2
}
Item
{
Layout.columnSpan: 3
}
Item Item
{ {

View File

@@ -2,7 +2,8 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Dialogs import QtQuick.Dialogs
import "../js/qmldict.js" as JsLib import Js
ColumnLayout ColumnLayout
{ {
@@ -27,16 +28,13 @@ ColumnLayout
Layout.fillHeight: true Layout.fillHeight: true
spacing: 45 spacing: 45
Frame
{
Layout.alignment: Qt.AlignTop
Layout.fillWidth: true
AddNewOffer AddNewOffer
{ {
id: newOffer id: newOffer
width: parent.width width: parent.width
} }
}
} }
@@ -51,16 +49,17 @@ ColumnLayout
} }
Button Button
{ {
property var new_object: null
id: saveBtn id: saveBtn
text: qsTr("Speichern") text: qsTr("Speichern")
enabled: false // enabled: false
onClicked: onClicked:
{ {
// new_object = JsLib.parseForm(newObject) // new_object = JsLib.parseForm(newObject)
// new_object['lift'] = new_object['lift'] === 'Ja' ? 1 : 0 // new_object['lift'] = new_object['lift'] === 'Ja' ? 1 : 0
// new_object['mezzanin'] = new_object['mezzanin'] === 'Ja' ? 1 : 0 // new_object['mezzanin'] = new_object['mezzanin'] === 'Ja' ? 1 : 0
// object_model.addObject(new_object) // object_model.addObject(new_object)
} }
} }
} }

View File

@@ -3,35 +3,38 @@ import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import Qt.labs.qmlmodels import Qt.labs.qmlmodels
ColumnLayout { ColumnLayout
function viewOffers(criterion) { {
anchors.fill: parent
spacing: Dimensions.l
function viewOffers(criterion)
{
//offer_model.viewCriterion(criterion) //offer_model.viewCriterion(criterion)
} }
anchors.fill: parent RowLayout
spacing: Dimensions.l {
RowLayout {
Layout.fillWidth: true Layout.fillWidth: true
spacing: Dimensions.l spacing: Dimensions.l
SearchBar
SearchBar { {
id: searchBar id: searchBar
} }
QuickFilter { QuickFilter {
model: ListModel { model: ListModel {
ListElement { ListElement {
name: "Alle" name: "Alle"
selected: true
text: qsTr("Alle") text: qsTr("Alle")
selected: true
} }
ListElement { ListElement
{
name: "Offen" name: "Offen"
selected: false
text: qsTr("Offen") text: qsTr("Offen")
selected: false
} }
ListElement { ListElement
{
name: "Abgeschlossen" name: "Abgeschlossen"
selected: false selected: false
text: qsTr("Abgeschlossen") text: qsTr("Abgeschlossen")
@@ -47,20 +50,18 @@ ColumnLayout {
business_model.viewCriterion(name); business_model.viewCriterion(name);
} }
} }
Button { Button
{
id: addOfferBtn id: addOfferBtn
text: qsTr("Angebote Hinzufügen")
icon.source: "qrc:/images/PlusCircle.svg"
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
flat: true flat: true
icon.source: "qrc:/images/PlusCircle.svg"
text: qsTr("Angebote Hinzufügen")
onClicked: contentStack.push("AddOffer.qml") onClicked: contentStack.push("AddOffer.qml")
} }
} }
Item { Item {
id: spacer id: spacer
Layout.fillHeight: true Layout.fillHeight: true
} }
} }

1
Gui/Offers/qmldir Normal file
View File

@@ -0,0 +1 @@
module Offers

View File

@@ -18,13 +18,13 @@ ApplicationWindow {
} }
font: Typography.body font: Typography.body
height: Screen.height * .85 height: Screen.desktopAvailableHeight
palette.window: Colors.mantle palette.window: Colors.mantle
palette.placeholderText: Colors.interactive palette.placeholderText: Colors.interactive
palette.text: Colors.foreground palette.text: Colors.foreground
title: "TERO Personal" title: "TERO Personal"
visible: true visible: true
width: Screen.width * .75 width: Screen.desktopAvailableWidth
Component.onCompleted: { Component.onCompleted: {
systray.activated.connect(showWindow); systray.activated.connect(showWindow);

View File

@@ -1,2 +1,3 @@
module gui module gui
Navigation 1.0 Navigation.qml Navigation 1.0 Navigation.qml
AddContact 1.0 AddContact.qml

70
Js/qmldict.js Normal file
View File

@@ -0,0 +1,70 @@
.pragma library
function firstConf(tabs)
{
let pyqcrm_conf = {};
pyqcrm_conf[tabs.name] = {}
for (var i = 0; i < tabs.children.length; i++)
{
if (tabs.children[i].name)
{
if (!tabs.children[i].text.trim())
return false
if (pyqcrm_conf[tabs.name][tabs.children[i].name] !== "DB_PASS")
pyqcrm_conf[tabs.name] [tabs.children[i].name] = tabs.children[i].text.trim()
else
pyqcrm_conf[tabs.name] [tabs.children[i].name] = tabs.children[i].text
}
}
return pyqcrm_conf
}
function parseForm(...form)
{
let data_form = {};
for (var i = 0; i < form.length; i++)
{
for (var j = 0; j < form[i].children.length; j++)
{
if (form[i].children[j].toString().startsWith("Combo"))
{
if(form[i].children[j].editText)
{
data_form[form[i].children[j].name] = form[i].children[j].editText
}
else
{
data_form[form[i].children[j].name] = form[i].children[j].currentText
}
}
else if (form[i].children[j].toString().startsWith("TextField"))
{
data_form[form[i].children[j].name] = form[i].children[j].text.trim()
}
else if (form[i].children[j].toString().startsWith("Scroll"))
{
data_form[form[i].children[j].contentChildren[0].name] = form[i].children[j].contentChildren[0].text.trim()
}
else if (form[i].children[j].toString().startsWith("CheckBox"))
{
data_form[form[i].children[j].name] = form[i].children[j].checked
}
else if (form[i].children[j].toString().startsWith("SpinBox"))
{
data_form[form[i].children[j].name] = form[i].children[j].value
}
// else if (form[i].children[j].toString().startsWith("QQuickContentItem"))
// {
// console.log(form[i].children[j].children.children)
// for (var k = 0; k < form[i].children[j].length; k++)
// {
// console.log(form[i].children[j].name)
// }
// }
}
}
return data_form
}

2
Js/qmldir Normal file
View File

@@ -0,0 +1,2 @@
module Js
JsLib 1.0 JsLib.js

5
TeroStyle/pushtest.qml Normal file
View File

@@ -0,0 +1,5 @@
import QtQuick
Item {
}

View File

@@ -0,0 +1,192 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36" version="27.0.2">
<diagram name="Seite-1" id="riPTszubbY08c-Ci63mD">
<mxGraphModel dx="2951" dy="1541" 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>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="NvYeTt0xDQWk2u7kX_r0-1" value="" style="ellipse;html=1;shape=startState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1">
<mxGeometry x="420" y="35" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-2" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" source="NvYeTt0xDQWk2u7kX_r0-1" parent="1" target="NvYeTt0xDQWk2u7kX_r0-3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="300" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-3" value="Check Country" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="500" y="20" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-4" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="520" y="125" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-5" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-3" target="NvYeTt0xDQWk2u7kX_r0-4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="550" y="525" as="sourcePoint" />
<mxPoint x="600" y="475" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-6" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-4" target="NvYeTt0xDQWk2u7kX_r0-9">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="550" y="475" as="sourcePoint" />
<mxPoint x="740" y="205" as="targetPoint" />
<Array as="points">
<mxPoint x="680" y="165" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-8" value="Check City" style="rounded=1;whiteSpace=wrap;html=1;direction=east;" vertex="1" parent="1">
<mxGeometry x="399.5" y="345" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-9" value="addCountry" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="620" y="225" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-10" value="[exists]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="460" y="135" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-11" value="[not exists]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="610" y="135" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-12" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="419.5" y="445" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-13" value="addCity" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="539.5" y="535" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-14" value="Check Postcode" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="259.25" y="645" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-15" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-12" target="NvYeTt0xDQWk2u7kX_r0-13">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.5" y="565" as="sourcePoint" />
<mxPoint x="600" y="530" as="targetPoint" />
<Array as="points">
<mxPoint x="599.5" y="485" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-16" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-12">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.5" y="565" as="sourcePoint" />
<mxPoint x="319.5" y="545" as="targetPoint" />
<Array as="points">
<mxPoint x="319.5" y="485" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-17" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-8" target="NvYeTt0xDQWk2u7kX_r0-12">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.5" y="605" as="sourcePoint" />
<mxPoint x="699.5" y="555" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-19" value="[exists]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="329.5" y="455" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-20" value="[not exists]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="529.5" y="455" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-21" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="279.25" y="745" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-22" value="addPostcode" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="399.5" y="845" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-24" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-21" target="NvYeTt0xDQWk2u7kX_r0-22">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="509.25" y="865" as="sourcePoint" />
<mxPoint x="559.25" y="815" as="targetPoint" />
<Array as="points">
<mxPoint x="459.25" y="785" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-21" target="NvYeTt0xDQWk2u7kX_r0-39">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="509.25" y="865" as="sourcePoint" />
<mxPoint x="179.25" y="855" as="targetPoint" />
<Array as="points">
<mxPoint x="179.25" y="785" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-26" value="[exists]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="189.25" y="755" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-27" value="[not exists]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="389.25" y="755" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-28" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-14" target="NvYeTt0xDQWk2u7kX_r0-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.25" y="985" as="sourcePoint" />
<mxPoint x="699.25" y="935" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-30" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1">
<mxGeometry x="159.5" y="1085" width="41" height="40" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-31" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="420" y="215" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-4" target="NvYeTt0xDQWk2u7kX_r0-31">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="550" y="355" as="sourcePoint" />
<mxPoint x="600" y="305" as="targetPoint" />
<Array as="points">
<mxPoint x="460" y="165" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-33" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-9" target="NvYeTt0xDQWk2u7kX_r0-31">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="540" y="255" as="sourcePoint" />
<mxPoint x="600" y="305" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-31" target="NvYeTt0xDQWk2u7kX_r0-8">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="719.5" y="225" as="sourcePoint" />
<mxPoint x="699.5" y="285" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-36" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="279.5" y="525" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-37" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-13" target="NvYeTt0xDQWk2u7kX_r0-36">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.5" y="875" as="sourcePoint" />
<mxPoint x="699.5" y="825" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-38" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-36" target="NvYeTt0xDQWk2u7kX_r0-14">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.5" y="935" as="sourcePoint" />
<mxPoint x="699.5" y="885" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-39" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="140" y="835" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-40" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-22" target="NvYeTt0xDQWk2u7kX_r0-39">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.5" y="765" as="sourcePoint" />
<mxPoint x="699.5" y="715" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-41" value="addID&#39;s to Adress" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="120" y="955" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-42" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-39" target="NvYeTt0xDQWk2u7kX_r0-41">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.25" y="865" as="sourcePoint" />
<mxPoint x="699.25" y="815" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="NvYeTt0xDQWk2u7kX_r0-43" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="NvYeTt0xDQWk2u7kX_r0-41" target="NvYeTt0xDQWk2u7kX_r0-30">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="649.5" y="755" as="sourcePoint" />
<mxPoint x="699.5" y="705" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,135 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" version="27.0.1">
<diagram name="Seite-1" id="Gl2dKcRXzwIEfQ6TcyUq">
<mxGraphModel dx="1425" dy="763" 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>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="GylxGBc_4kwvuqjtwPvo-1" value="" style="ellipse;html=1;shape=startState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1">
<mxGeometry x="50" y="80" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-2" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;" edge="1" source="GylxGBc_4kwvuqjtwPvo-1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="170" y="95" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-3" value="addOffer" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="170" y="65" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-4" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-3" target="GylxGBc_4kwvuqjtwPvo-5">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="210" as="sourcePoint" />
<mxPoint x="380" y="95" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-5" value="enterData" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="354" y="65" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-6" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-11" target="GylxGBc_4kwvuqjtwPvo-12">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="210" as="sourcePoint" />
<mxPoint x="270" y="160" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-8" value="" style="endArrow=open;dashed=1;html=1;rounded=0;endFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-5">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="500" y="110" as="sourcePoint" />
<mxPoint x="540" y="95" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-9" value="OfferData" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="540" y="65" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-10" value="" style="endArrow=open;dashed=1;html=1;rounded=0;endFill=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-9">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="484" y="105" as="sourcePoint" />
<mxPoint x="600" y="180" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-11" value="ValidateData" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="540" y="180" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-12" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="560" y="290" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-13" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-12" target="GylxGBc_4kwvuqjtwPvo-5">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="360" as="sourcePoint" />
<mxPoint x="500" y="310" as="targetPoint" />
<Array as="points">
<mxPoint x="720" y="330" />
<mxPoint x="720" y="30" />
<mxPoint x="414" y="30" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-14" value="[data not valid]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="630" y="300" width="90" height="30" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-15" value="saveData" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="354" y="300" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-16" value="" style="endArrow=classic;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="1" source="GylxGBc_4kwvuqjtwPvo-12" target="GylxGBc_4kwvuqjtwPvo-15">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="360" as="sourcePoint" />
<mxPoint x="500" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-18" value="" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="190" y="290" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-15" target="GylxGBc_4kwvuqjtwPvo-18">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="360" as="sourcePoint" />
<mxPoint x="500" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-20" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-18" target="GylxGBc_4kwvuqjtwPvo-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="360" as="sourcePoint" />
<mxPoint x="500" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-21" value="ErrorMessage" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="170" y="160" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="360" as="sourcePoint" />
<mxPoint x="370" y="190" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-23" value="successMessage" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="170" y="460" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-24" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-18" target="GylxGBc_4kwvuqjtwPvo-23">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="360" as="sourcePoint" />
<mxPoint x="500" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-25" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1">
<mxGeometry x="215" y="585" width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-26" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="GylxGBc_4kwvuqjtwPvo-23" target="GylxGBc_4kwvuqjtwPvo-25">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="360" as="sourcePoint" />
<mxPoint x="500" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-27" value="[data valid]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="480" y="300" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-28" value="[error saving]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="205" y="250" width="85" height="30" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-29" value="[saving]" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-90;" vertex="1" parent="1">
<mxGeometry x="205" y="400" width="85" height="30" as="geometry" />
</mxCell>
<mxCell id="GylxGBc_4kwvuqjtwPvo-33" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.flowchart.or;" vertex="1" parent="1">
<mxGeometry x="370" y="170" width="40" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,103 @@
<mxfile host="app.diagrams.net" modified="2020-06-30T06:41:58.039Z" agent="5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" etag="eN_aVuXlrJnozz_3bGs0" version="13.3.5">
<diagram id="R2lEEEUBdFMjLlhIrx00" name="Page-1">
<mxGraphModel dx="1223" dy="797" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0" extFonts="Permanent Marker^https://fonts.googleapis.com/css?family=Permanent+Marker">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="C-vyLk0tnHw3VtMMgP7b-1" value="" style="edgeStyle=entityRelationEdgeStyle;endArrow=ERzeroToMany;startArrow=ERone;endFill=1;startFill=0;" parent="1" source="C-vyLk0tnHw3VtMMgP7b-24" target="C-vyLk0tnHw3VtMMgP7b-6" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="340" y="720" as="sourcePoint" />
<mxPoint x="440" y="620" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-12" value="" style="edgeStyle=entityRelationEdgeStyle;endArrow=ERzeroToMany;startArrow=ERone;endFill=1;startFill=0;" parent="1" source="C-vyLk0tnHw3VtMMgP7b-3" target="C-vyLk0tnHw3VtMMgP7b-17" edge="1">
<mxGeometry width="100" height="100" relative="1" as="geometry">
<mxPoint x="400" y="180" as="sourcePoint" />
<mxPoint x="460" y="205" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-2" value="Orders" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;" parent="1" vertex="1">
<mxGeometry x="450" y="120" width="250" height="130" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-3" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="C-vyLk0tnHw3VtMMgP7b-2" vertex="1">
<mxGeometry y="30" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-4" value="PK" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;" parent="C-vyLk0tnHw3VtMMgP7b-3" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-5" value="order_id int NOT NULL " style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;" parent="C-vyLk0tnHw3VtMMgP7b-3" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-6" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="C-vyLk0tnHw3VtMMgP7b-2" vertex="1">
<mxGeometry y="60" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-7" value="FK1" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;" parent="C-vyLk0tnHw3VtMMgP7b-6" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-8" value="customer_id int NOT NULL" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;" parent="C-vyLk0tnHw3VtMMgP7b-6" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-9" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="C-vyLk0tnHw3VtMMgP7b-2" vertex="1">
<mxGeometry y="90" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-10" value="" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;" parent="C-vyLk0tnHw3VtMMgP7b-9" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-11" value="order_date date NOT NULL" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;" parent="C-vyLk0tnHw3VtMMgP7b-9" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-13" value="Shipments" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;" parent="1" vertex="1">
<mxGeometry x="450" y="280" width="250" height="130" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-14" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="C-vyLk0tnHw3VtMMgP7b-13" vertex="1">
<mxGeometry y="30" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-15" value="PK" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;" parent="C-vyLk0tnHw3VtMMgP7b-14" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-16" value="shipment_id int NOT NULL " style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;" parent="C-vyLk0tnHw3VtMMgP7b-14" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-17" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="C-vyLk0tnHw3VtMMgP7b-13" vertex="1">
<mxGeometry y="60" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-18" value="FK1" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;" parent="C-vyLk0tnHw3VtMMgP7b-17" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-19" value="order_id int NOT NULL" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;" parent="C-vyLk0tnHw3VtMMgP7b-17" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-20" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="C-vyLk0tnHw3VtMMgP7b-13" vertex="1">
<mxGeometry y="90" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-21" value="" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;" parent="C-vyLk0tnHw3VtMMgP7b-20" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-22" value="shipment_date date NOT NULL" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;" parent="C-vyLk0tnHw3VtMMgP7b-20" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-23" value="Customers" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;" parent="1" vertex="1">
<mxGeometry x="120" y="120" width="250" height="100" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-24" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="C-vyLk0tnHw3VtMMgP7b-23" vertex="1">
<mxGeometry y="30" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-25" value="PK" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;" parent="C-vyLk0tnHw3VtMMgP7b-24" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-26" value="customer_id int NOT NULL " style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;" parent="C-vyLk0tnHw3VtMMgP7b-24" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-27" value="" style="shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="C-vyLk0tnHw3VtMMgP7b-23" vertex="1">
<mxGeometry y="60" width="250" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-28" value="" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;" parent="C-vyLk0tnHw3VtMMgP7b-27" vertex="1">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="C-vyLk0tnHw3VtMMgP7b-29" value="customer_name char(50) NOT NULL" style="shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;" parent="C-vyLk0tnHw3VtMMgP7b-27" vertex="1">
<mxGeometry x="30" width="220" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

320
doc/ER-Offer.drawio Normal file
View File

@@ -0,0 +1,320 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" version="27.0.2">
<diagram name="Seite-1" id="-Jvt9mGG8Li5CNeMcOU4">
<mxGraphModel dx="2066" dy="1107" 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>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="r5czroBNAvCpoAouLHI1-1" value="Street" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="60" y="800" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-2" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-3" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-2">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-4" value="streetID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-2">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-5" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-6" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-5">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-7" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-5">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-14" value="City" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="370" y="80" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-15" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-14">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-16" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-15">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-17" value="cityID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-15">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-18" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-14">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-19" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-18">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-20" value="name" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-18">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-27" value="Country" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="80" y="90" width="180" height="150" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-28" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-27">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-29" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-28">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-30" value="countryID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-28">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-31" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-27">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-32" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-31">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-33" value="country" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-31">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-34" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-27">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-35" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-34">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-36" value="countryshort" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-34">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-37" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-27">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-38" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-37">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-39" value="nationality" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-37">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-40" value="Country/City/Postcode" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="260" y="290" width="180" height="150" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-41" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-40">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-42" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-41">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-43" value="ccpID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-41">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-44" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-40">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-45" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-44">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-46" value="countryID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-44">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-47" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-40">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-48" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-47">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-49" value="cityID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-47">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-50" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-40">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-51" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-50">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-52" value="postcodeID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-50">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-53" value="House" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="480" y="800" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-54" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-53">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-55" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-54">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-56" value="houseID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-54">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-57" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-53">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-58" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-57">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-59" value="number" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-57">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-66" value="Postcode" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="520" y="230" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-67" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-66">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-68" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-67">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-69" value="postcodeID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-67">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-70" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-66">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-71" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-70">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-72" value="number" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-70">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-79" value="Street/House" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="260" y="650" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-80" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-79">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-81" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-80">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-82" value="streetHouseID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-80">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-83" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-79">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-84" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-83">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-85" value="streetID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-83">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-86" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-79">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-87" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-86">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-88" value="houseID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-86">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-92" value="FullAddress" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="260" y="470" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-93" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-92">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-94" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-93">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-95" value="fullAddressID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-93">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-96" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-92">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-97" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-96">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-98" value="ccpID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-96">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-99" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="r5czroBNAvCpoAouLHI1-92">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-100" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-99">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="r5czroBNAvCpoAouLHI1-101" value="streetHouseID" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="r5czroBNAvCpoAouLHI1-99">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -1,6 +1,6 @@
<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"> <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="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"> <mxGraphModel dx="1185" dy="683" 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" />
@@ -290,8 +290,8 @@
<mxPoint x="250" y="530" as="sourcePoint" /> <mxPoint x="250" y="530" as="sourcePoint" />
<mxPoint x="300" y="480" as="targetPoint" /> <mxPoint x="300" y="480" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="440" y="383" /> <mxPoint x="450" y="383" />
<mxPoint x="440" y="468" /> <mxPoint x="450" y="468" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
@@ -307,8 +307,8 @@
<mxPoint x="270" y="530" as="sourcePoint" /> <mxPoint x="270" y="530" as="sourcePoint" />
<mxPoint x="320" y="480" as="targetPoint" /> <mxPoint x="320" y="480" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="430" y="406" /> <mxPoint x="440" y="406" />
<mxPoint x="430" y="698" /> <mxPoint x="440" y="700" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
@@ -323,9 +323,9 @@
<mxPoint x="270" y="530" as="sourcePoint" /> <mxPoint x="270" y="530" as="sourcePoint" />
<mxPoint x="470" y="940" as="targetPoint" /> <mxPoint x="470" y="940" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="410" y="423" /> <mxPoint x="430" y="420" />
<mxPoint x="410" y="600" /> <mxPoint x="430" y="600" />
<mxPoint x="410" y="940" /> <mxPoint x="430" y="940" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
@@ -389,25 +389,25 @@
<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"> <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" /> <mxGeometry y="58" width="170" height="32" as="geometry" />
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="870" y="340" width="170" height="150" as="geometry" /> <mxGeometry x="870" y="340" width="170" height="150" as="geometry" />
</mxCell> </mxCell>
<mxCell id="6xiAvg-kEoilwsfhhM0o-1" value="&lt;div&gt;ADMIN: enum&lt;/div&gt;&lt;div&gt;USER: enum&lt;/div&gt;" 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"> <mxCell id="6xiAvg-kEoilwsfhhM0o-1" value="&lt;div&gt;ADMIN: enum&lt;/div&gt;&lt;div&gt;USER: enum&lt;/div&gt;" 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="6xiAvg-kEoilwsfhhM0o-0" vertex="1">
<mxGeometry y="26" width="170" height="44" as="geometry" /> <mxGeometry y="26" width="170" height="44" as="geometry" />
</mxCell> </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"> <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;" parent="6xiAvg-kEoilwsfhhM0o-0" vertex="1">
<mxGeometry y="70" width="170" height="80" as="geometry" /> <mxGeometry y="70" width="170" height="80" as="geometry" />
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="870" y="170" width="170" height="140" as="geometry" /> <mxGeometry x="870" y="170" width="170" height="140" as="geometry" />
</mxCell> </mxCell>
<mxCell id="6xiAvg-kEoilwsfhhM0o-4" value="&lt;div&gt;ALL: enum&lt;/div&gt;&lt;div&gt;APPLICANT: enum&lt;/div&gt;&lt;div&gt;EMPLOYEE; enum&lt;/div&gt;" 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"> <mxCell id="6xiAvg-kEoilwsfhhM0o-4" value="&lt;div&gt;ALL: enum&lt;/div&gt;&lt;div&gt;APPLICANT: enum&lt;/div&gt;&lt;div&gt;EMPLOYEE; enum&lt;/div&gt;" 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="6xiAvg-kEoilwsfhhM0o-3" vertex="1">
<mxGeometry y="26" width="170" height="64" as="geometry" /> <mxGeometry y="26" width="170" height="64" as="geometry" />
</mxCell> </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"> <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;" parent="6xiAvg-kEoilwsfhhM0o-3" vertex="1">
<mxGeometry y="90" width="170" height="50" as="geometry" /> <mxGeometry y="90" width="170" height="50" as="geometry" />
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-89" target="v96xPLQoPeUk4bUV2WaN-40" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="900" as="sourcePoint" /> <mxPoint x="420" y="900" as="sourcePoint" />
<mxPoint x="470" y="850" as="targetPoint" /> <mxPoint x="470" y="850" as="targetPoint" />
@@ -417,7 +417,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-48" target="v96xPLQoPeUk4bUV2WaN-93" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="900" as="sourcePoint" /> <mxPoint x="420" y="900" as="sourcePoint" />
<mxPoint x="470" y="850" as="targetPoint" /> <mxPoint x="470" y="850" as="targetPoint" />
@@ -427,7 +427,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-93" target="v96xPLQoPeUk4bUV2WaN-40" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="900" as="sourcePoint" /> <mxPoint x="420" y="900" as="sourcePoint" />
<mxPoint x="470" y="850" as="targetPoint" /> <mxPoint x="470" y="850" as="targetPoint" />
@@ -437,7 +437,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-48" target="v96xPLQoPeUk4bUV2WaN-89" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="900" as="sourcePoint" /> <mxPoint x="420" y="900" as="sourcePoint" />
<mxPoint x="470" y="850" as="targetPoint" /> <mxPoint x="470" y="850" as="targetPoint" />
@@ -447,42 +447,77 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-78" target="v96xPLQoPeUk4bUV2WaN-97" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="440" as="sourcePoint" /> <mxPoint x="600" y="440" as="sourcePoint" />
<mxPoint x="650" y="390" as="targetPoint" /> <mxPoint x="650" y="390" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="6xiAvg-kEoilwsfhhM0o-0" target="v96xPLQoPeUk4bUV2WaN-80" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="440" as="sourcePoint" /> <mxPoint x="600" y="440" as="sourcePoint" />
<mxPoint x="650" y="390" as="targetPoint" /> <mxPoint x="650" y="390" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-80" target="6xiAvg-kEoilwsfhhM0o-4" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="440" as="sourcePoint" /> <mxPoint x="600" y="440" as="sourcePoint" />
<mxPoint x="650" y="390" as="targetPoint" /> <mxPoint x="650" y="390" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="1350" y="40" width="170" height="140" as="geometry" /> <mxGeometry x="1350" y="40" width="170" height="140" as="geometry" />
</mxCell> </mxCell>
<mxCell id="6xiAvg-kEoilwsfhhM0o-14" value="&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" 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"> <mxCell id="6xiAvg-kEoilwsfhhM0o-14" value="&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" 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="6xiAvg-kEoilwsfhhM0o-13" vertex="1">
<mxGeometry y="26" width="170" height="24" as="geometry" /> <mxGeometry y="26" width="170" height="24" as="geometry" />
</mxCell> </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"> <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;" parent="6xiAvg-kEoilwsfhhM0o-13" vertex="1">
<mxGeometry y="50" width="170" height="8" as="geometry" /> <mxGeometry y="50" width="170" height="8" as="geometry" />
</mxCell> </mxCell>
<mxCell id="6xiAvg-kEoilwsfhhM0o-16" value="+ oscarVermasseln()&lt;div&gt;+ entschluesseln()&lt;/div&gt;&lt;div&gt;-&amp;nbsp; vermasslungsKobold()&lt;/div&gt;&lt;div&gt;+ userPasswordHash&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" 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"> <mxCell id="6xiAvg-kEoilwsfhhM0o-16" value="+ oscarVermasseln()&lt;div&gt;+ entschluesseln()&lt;/div&gt;&lt;div&gt;-&amp;nbsp; vermasslungsKobold()&lt;/div&gt;&lt;div&gt;+ userPasswordHash&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" 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="6xiAvg-kEoilwsfhhM0o-13" vertex="1">
<mxGeometry y="58" width="170" height="82" as="geometry" /> <mxGeometry y="58" width="170" height="82" as="geometry" />
</mxCell> </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"> <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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="v96xPLQoPeUk4bUV2WaN-78" target="6xiAvg-kEoilwsfhhM0o-14" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="800" y="530" as="sourcePoint" /> <mxPoint x="800" y="530" as="sourcePoint" />
<mxPoint x="850" y="480" as="targetPoint" /> <mxPoint x="850" y="480" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-1" value="OfferDAO" 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="460" y="1169" width="160" height="170" as="geometry" />
</mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-3" 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="oFnCSLyNU9wu8QDSkbbI-1">
<mxGeometry y="26" width="160" height="54" as="geometry" />
</mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-4" value="+ addOffer()&lt;div&gt;+ getOffer()&lt;/div&gt;&lt;div&gt;+ deleteOffer()&lt;/div&gt;&lt;div&gt;+ updateOffer()&lt;/div&gt;" 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="oFnCSLyNU9wu8QDSkbbI-1">
<mxGeometry y="80" width="160" height="90" as="geometry" />
</mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-5" value="OfferModel" 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="650" y="1169" width="160" height="250" as="geometry" />
</mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-7" 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="oFnCSLyNU9wu8QDSkbbI-5">
<mxGeometry y="26" width="160" height="54" as="geometry" />
</mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-8" value="&lt;div&gt;+ addOffer()&lt;/div&gt;&lt;div&gt;+ deleteOffer()&lt;/div&gt;&lt;div&gt;+ updateOffer()&lt;br&gt;&lt;div&gt;-&amp;nbsp; refreshView()&lt;/div&gt;&lt;div&gt;-&amp;nbsp; getData()&lt;/div&gt;&lt;div&gt;+ rowCount()&lt;/div&gt;&lt;div&gt;+ columnCount()&lt;/div&gt;&lt;div&gt;+ viewCriterion()&lt;/div&gt;&lt;div&gt;+ data()&lt;/div&gt;&lt;div&gt;+ headerData()&lt;/div&gt;&lt;div&gt;+ onRowClicked()&lt;/div&gt;&lt;/div&gt;" 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="oFnCSLyNU9wu8QDSkbbI-5">
<mxGeometry y="80" width="160" height="170" as="geometry" />
</mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-9" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="620" y="1210" as="sourcePoint" />
<mxPoint x="650" y="1210" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oFnCSLyNU9wu8QDSkbbI-10" value="" style="endArrow=none;html=1;rounded=0;exitX=0.865;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;endFill=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="_OjnZrDktrtFcgEA-KSX-16">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="760" y="800" as="sourcePoint" />
<mxPoint x="460" y="1210" as="targetPoint" />
<Array as="points">
<mxPoint x="167" y="450" />
<mxPoint x="420" y="450" />
<mxPoint x="420" y="1210" />
</Array>
</mxGeometry>
</mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>
</diagram> </diagram>

View File

@@ -0,0 +1,184 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" version="26.2.14">
<diagram name="Seite-1" id="Wrq0Xm_iZAiwaSdTmyxs">
<mxGraphModel dx="1425" dy="763" 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>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="t-EcJqArzlBj0utZR-UU-21" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="60" y="240" width="360" height="210" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-1" value="Andre" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1">
<mxGeometry x="70" y="150" width="20" height="60" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-2" value="UI" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="140" y="150" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-3" value="OFFER" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="340" y="150" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-4" value="CONTRACT" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="540" y="150" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-6" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.317;entryY=0.9;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="t-EcJqArzlBj0utZR-UU-22">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="950" as="sourcePoint" />
<mxPoint x="80" y="450" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-7" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="960" as="sourcePoint" />
<mxPoint x="200" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-8" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="960" as="sourcePoint" />
<mxPoint x="400" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-9" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="960" as="sourcePoint" />
<mxPoint x="600" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-10" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="300" as="sourcePoint" />
<mxPoint x="200" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-11" value="addOffer(data)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="90" y="270" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-12" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="300" as="sourcePoint" />
<mxPoint x="400" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-14" value="addOffer(data)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="250" y="270" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-16" value="" style="endArrow=none;dashed=1;html=1;rounded=0;startArrow=classic;startFill=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="420" as="sourcePoint" />
<mxPoint x="200" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-22" value="alt" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="60" y="240" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-23" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=-0.001;exitY=0.132;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="t-EcJqArzlBj0utZR-UU-21" target="t-EcJqArzlBj0utZR-UU-22">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="90" y="270" as="sourcePoint" />
<mxPoint x="300" y="330" as="targetPoint" />
<Array as="points">
<mxPoint x="120" y="268" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-25" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=-0.004;entryY=0.475;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.995;exitY=0.478;exitDx=0;exitDy=0;exitPerimeter=0;dashPattern=8 8;strokeWidth=2;" edge="1" parent="1" source="t-EcJqArzlBj0utZR-UU-21" target="t-EcJqArzlBj0utZR-UU-21">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="380.0033333333333" as="sourcePoint" />
<mxPoint x="480" y="446.67" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-26" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="390" as="sourcePoint" />
<mxPoint x="200" y="390" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-27" value="addOffer(data)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="90" y="360" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-28" value="wrongData" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="100" y="390" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-29" value="" style="endArrow=none;dashed=1;html=1;rounded=0;startArrow=classic;startFill=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="330" as="sourcePoint" />
<mxPoint x="400" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-31" value="offerAdded" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="220" y="300" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-32" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="540" as="sourcePoint" />
<mxPoint x="200" y="540" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-33" value="addContract(data)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="510" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.982;exitY=0.986;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="t-EcJqArzlBj0utZR-UU-33">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="380" as="sourcePoint" />
<mxPoint x="400" y="540" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-35" value="addOffer(data)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="250" y="510" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-36" value="" style="endArrow=none;dashed=1;html=1;rounded=0;startArrow=classic;startFill=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="580" as="sourcePoint" />
<mxPoint x="400" y="580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-37" value="offer(data)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="260" y="550" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-38" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="610" as="sourcePoint" />
<mxPoint x="600" y="610" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-40" value="addContract(data)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="360" y="580" width="190" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-41" value="" style="endArrow=none;dashed=1;html=1;rounded=0;startArrow=classic;startFill=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="650" as="sourcePoint" />
<mxPoint x="600" y="650" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-42" value="contractAdded()" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="620" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-44" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="720" as="sourcePoint" />
<mxPoint x="200" y="720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-45" value="offerAccept(data)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="690" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-46" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="720" as="sourcePoint" />
<mxPoint x="600" y="720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-47" value="addContract(data)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="280" y="690" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-49" value="" style="endArrow=none;dashed=1;html=1;rounded=0;startArrow=classic;startFill=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="80" y="770" as="sourcePoint" />
<mxPoint x="600" y="770" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="t-EcJqArzlBj0utZR-UU-50" value="contractAdded()" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="740" width="60" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -1,6 +1,6 @@
<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"> <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 name="Seite-1" id="krh1Wum05D0y0HCIq7V8"> <diagram name="Seite-1" id="krh1Wum05D0y0HCIq7V8">
<mxGraphModel dx="3267" dy="1406" 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="2555" dy="996" 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="0" /> <mxCell id="0" />
<mxCell id="1" parent="0" /> <mxCell id="1" parent="0" />
@@ -78,35 +78,6 @@
<mxCell id="Ya_982ONw7_15APAzA8q-34" value="1" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="1" connectable="0" vertex="1"> <mxCell id="Ya_982ONw7_15APAzA8q-34" value="1" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="1" connectable="0" vertex="1">
<mxGeometry x="535" y="180.00000000000006" as="geometry" /> <mxGeometry x="535" y="180.00000000000006" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-81" value="servicedesc" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="1410" y="249" width="180" height="90" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-82" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="Ya_982ONw7_15APAzA8q-81" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-83" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-82" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-84" value="servicedescid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-82" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-85" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="Ya_982ONw7_15APAzA8q-81" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-86" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-85" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-87" value="description" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-85" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-105" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="wp44KSVxnTE4gDC1YKSh-240" edge="1"> <mxCell id="Ya_982ONw7_15APAzA8q-105" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="wp44KSVxnTE4gDC1YKSh-240" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="163" as="sourcePoint" /> <mxPoint x="560" y="163" as="sourcePoint" />
@@ -147,7 +118,7 @@
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-176" value="offer" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1"> <mxCell id="Ya_982ONw7_15APAzA8q-176" value="offer" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="900" y="880" width="180" height="120" as="geometry" /> <mxGeometry x="900" y="880" width="180" height="90" as="geometry" />
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-177" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="Ya_982ONw7_15APAzA8q-176" vertex="1"> <mxCell id="Ya_982ONw7_15APAzA8q-177" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="Ya_982ONw7_15APAzA8q-176" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" /> <mxGeometry y="30" width="180" height="30" as="geometry" />
@@ -162,76 +133,26 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-180" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="Ya_982ONw7_15APAzA8q-176" vertex="1"> <mxCell id="Ya_982ONw7_15APAzA8q-220" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BsNFRahTXGiPdYppKmQY-26" edge="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-181" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-180" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-182" value="jobdetailid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-180" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-205" value="offers" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="900" y="720" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-206" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="Ya_982ONw7_15APAzA8q-205" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-207" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-206" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-208" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-206" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-209" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="Ya_982ONw7_15APAzA8q-205" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-210" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-209" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-211" value="offerid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-209" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-212" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="Ya_982ONw7_15APAzA8q-205" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-213" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-212" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-214" value="contractid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="Ya_982ONw7_15APAzA8q-212" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-220" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="Ya_982ONw7_15APAzA8q-209" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1150.9999999999995" y="669.9999999999998" as="sourcePoint" /> <mxPoint x="1150.9999999999995" y="669.9999999999998" as="sourcePoint" />
<mxPoint x="1004.9100000000002" y="790" as="targetPoint" /> <mxPoint x="1080" y="725" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="1150" y="725" /> <mxPoint x="1150" y="725" />
<mxPoint x="1110" y="725" /> <mxPoint x="1110" y="725" />
<mxPoint x="1110" y="795" /> <mxPoint x="1110" y="781" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-221" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="Ya_982ONw7_15APAzA8q-176" target="Ya_982ONw7_15APAzA8q-212" edge="1"> <mxCell id="Ya_982ONw7_15APAzA8q-221" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Ya_982ONw7_15APAzA8q-177" target="BsNFRahTXGiPdYppKmQY-23" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1000" y="860" as="sourcePoint" /> <mxPoint x="1000" y="860" as="sourcePoint" />
<mxPoint x="1080" y="840" as="targetPoint" /> <mxPoint x="990" y="820" as="targetPoint" />
<Array as="points">
<mxPoint x="870" y="925" />
<mxPoint x="870" y="840" />
<mxPoint x="870" y="751" />
</Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-256" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="1" vertex="1"> <mxCell id="Ya_982ONw7_15APAzA8q-256" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="1" vertex="1">
@@ -353,18 +274,10 @@
<mxPoint x="15" y="41" as="offset" /> <mxPoint x="15" y="41" as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-276" value="1" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="1" connectable="0" vertex="1">
<mxGeometry x="1331" y="815" as="geometry">
<mxPoint x="12" y="-46" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-277" value="1" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="1" connectable="0" vertex="1">
<mxGeometry x="1410" y="765" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-278" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="Ya_982ONw7_15APAzA8q-245" edge="1"> <mxCell id="Ya_982ONw7_15APAzA8q-278" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="Ya_982ONw7_15APAzA8q-245" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1150" y="960" as="sourcePoint" /> <mxPoint x="1150" y="960" as="sourcePoint" />
<mxPoint x="1240" y="760" as="targetPoint" /> <mxPoint x="1240" y="730" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="1130" y="955" /> <mxPoint x="1130" y="955" />
<mxPoint x="1130" y="810" /> <mxPoint x="1130" y="810" />
@@ -372,9 +285,6 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-279" value="1" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="1" connectable="0" vertex="1">
<mxGeometry x="1240" y="780" as="geometry" />
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-280" value="N" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="1" connectable="0" vertex="1"> <mxCell id="Ya_982ONw7_15APAzA8q-280" value="N" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="1" connectable="0" vertex="1">
<mxGeometry x="1130" y="940" as="geometry"> <mxGeometry x="1130" y="940" as="geometry">
<mxPoint x="15" y="41" as="offset" /> <mxPoint x="15" y="41" as="offset" />
@@ -582,7 +492,7 @@
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-57" value="service" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-57" value="service" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="1" vertex="1">
<mxGeometry x="1400" y="50" width="180" height="150" as="geometry" /> <mxGeometry x="1400" y="50" width="180" height="120" as="geometry" />
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-58" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="RGG-I-Th0KsJHSMTwLBq-57" vertex="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-58" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="RGG-I-Th0KsJHSMTwLBq-57" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" /> <mxGeometry y="30" width="180" height="30" as="geometry" />
@@ -597,23 +507,10 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-61" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="RGG-I-Th0KsJHSMTwLBq-57" vertex="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-64" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="RGG-I-Th0KsJHSMTwLBq-57" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" /> <mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-62" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="RGG-I-Th0KsJHSMTwLBq-61" vertex="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-65" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="RGG-I-Th0KsJHSMTwLBq-64" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-63" value="servicetypeid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="RGG-I-Th0KsJHSMTwLBq-61" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-64" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="RGG-I-Th0KsJHSMTwLBq-57" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-65" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="RGG-I-Th0KsJHSMTwLBq-64" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
@@ -624,9 +521,9 @@
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-67" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="RGG-I-Th0KsJHSMTwLBq-57" vertex="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-67" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="RGG-I-Th0KsJHSMTwLBq-57" vertex="1">
<mxGeometry y="120" width="180" height="30" as="geometry" /> <mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-68" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="RGG-I-Th0KsJHSMTwLBq-67" vertex="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-68" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="RGG-I-Th0KsJHSMTwLBq-67" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
@@ -636,19 +533,19 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-70" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="RGG-I-Th0KsJHSMTwLBq-61" target="Ya_982ONw7_15APAzA8q-69" edge="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-70" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="BsNFRahTXGiPdYppKmQY-7" target="Ya_982ONw7_15APAzA8q-69" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1340" y="150" as="sourcePoint" /> <mxPoint x="1580" y="125" as="sourcePoint" />
<mxPoint x="1390" y="100" as="targetPoint" /> <mxPoint x="1390" y="100" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="1640" y="125" /> <mxPoint x="1610" y="324" />
<mxPoint x="1640" y="433" /> <mxPoint x="1610" y="433" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="RGG-I-Th0KsJHSMTwLBq-71" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Ya_982ONw7_15APAzA8q-82" target="RGG-I-Th0KsJHSMTwLBq-64" edge="1"> <mxCell id="RGG-I-Th0KsJHSMTwLBq-71" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="RGG-I-Th0KsJHSMTwLBq-67" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1290" y="260" as="sourcePoint" /> <mxPoint x="1590" y="294" as="sourcePoint" />
<mxPoint x="1340" y="210" as="targetPoint" /> <mxPoint x="1340" y="210" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="1610" y="294" /> <mxPoint x="1610" y="294" />
@@ -661,7 +558,7 @@
<mxPoint x="1020" y="130" as="sourcePoint" /> <mxPoint x="1020" y="130" as="sourcePoint" />
<mxPoint x="1308" y="84" as="targetPoint" /> <mxPoint x="1308" y="84" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="1360" y="185" /> <mxPoint x="1360" y="155" />
<mxPoint x="1360" y="65" /> <mxPoint x="1360" y="65" />
</Array> </Array>
</mxGeometry> </mxGeometry>
@@ -735,13 +632,13 @@
<mxCell id="5CqAkLydmV_yxfNIBBfD-14" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="1" vertex="1"> <mxCell id="5CqAkLydmV_yxfNIBBfD-14" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="1" vertex="1">
<mxGeometry x="1160" y="690" width="180" height="30" as="geometry" /> <mxGeometry x="1160" y="690" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="5CqAkLydmV_yxfNIBBfD-17" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="5CqAkLydmV_yxfNIBBfD-2" edge="1"> <mxCell id="5CqAkLydmV_yxfNIBBfD-17" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="5CqAkLydmV_yxfNIBBfD-2" edge="1" target="HT5lYA2dYPyrPS9nyiQT-178">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1190" y="820" as="sourcePoint" /> <mxPoint x="1190" y="820" as="sourcePoint" />
<mxPoint x="1330.9999999999995" y="684.9999999999998" as="targetPoint" /> <mxPoint x="1330.9999999999995" y="684.9999999999998" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="1360" y="433" /> <mxPoint x="1360" y="433" />
<mxPoint x="1360" y="685" /> <mxPoint x="1360" y="625" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
@@ -1066,7 +963,7 @@
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="5CqAkLydmV_yxfNIBBfD-100" value="date" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=1;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxCell id="5CqAkLydmV_yxfNIBBfD-100" value="date" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=1;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="930" y="970" width="150" height="30" as="geometry"> <mxGeometry x="930" y="940" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
@@ -1177,13 +1074,13 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="-nb5psitBYwo0NIamKds-33" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" edge="1" source="Ya_982ONw7_15APAzA8q-260"> <mxCell id="-nb5psitBYwo0NIamKds-33" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Ya_982ONw7_15APAzA8q-260" edge="1" target="HT5lYA2dYPyrPS9nyiQT-181">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1420" y="740.0000000000001" as="sourcePoint" /> <mxPoint x="1420" y="740.0000000000001" as="sourcePoint" />
<mxPoint x="1330" y="740" as="targetPoint" /> <mxPoint x="1330" y="740" as="targetPoint" />
<Array as="points"> <Array as="points">
<mxPoint x="1370" y="835" /> <mxPoint x="1360" y="835" />
<mxPoint x="1370" y="740" /> <mxPoint x="1360" y="655" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
@@ -1658,28 +1555,28 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-27" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="AkoRetE9dPsFytqfa5Kx-27"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-27" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="AkoRetE9dPsFytqfa5Kx-27" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" /> <mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-28" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="7H4gm8Qbcmcg-KG3YoOF-27"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-28" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="7H4gm8Qbcmcg-KG3YoOF-27" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-29" value="addressid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="7H4gm8Qbcmcg-KG3YoOF-27"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-29" value="addressid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="7H4gm8Qbcmcg-KG3YoOF-27" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-21" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="AkoRetE9dPsFytqfa5Kx-27"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-21" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="AkoRetE9dPsFytqfa5Kx-27" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" /> <mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-22" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="7H4gm8Qbcmcg-KG3YoOF-21"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-22" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="7H4gm8Qbcmcg-KG3YoOF-21" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-23" value="houseid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="7H4gm8Qbcmcg-KG3YoOF-21"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-23" value="houseid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="7H4gm8Qbcmcg-KG3YoOF-21" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
@@ -1697,7 +1594,7 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="AkoRetE9dPsFytqfa5Kx-45" value="" style="endArrow=none;html=1;rounded=0;exitX=-0.002;exitY=0.678;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1" source="HT5lYA2dYPyrPS9nyiQT-315"> <mxCell id="AkoRetE9dPsFytqfa5Kx-45" value="" style="endArrow=none;html=1;rounded=0;exitX=-0.002;exitY=0.678;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="HT5lYA2dYPyrPS9nyiQT-315" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="710" as="sourcePoint" /> <mxPoint x="600" y="710" as="sourcePoint" />
<mxPoint x="480" y="510" as="targetPoint" /> <mxPoint x="480" y="510" as="targetPoint" />
@@ -2215,7 +2112,7 @@
<mxGeometry x="1151" y="550" width="180" height="210" as="geometry" /> <mxGeometry x="1151" y="550" width="180" height="210" as="geometry" />
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-171" value="contract" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-190" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-171" value="contract" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-190" vertex="1">
<mxGeometry width="180" height="210" as="geometry" /> <mxGeometry width="180" height="180" as="geometry" />
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-172" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="HT5lYA2dYPyrPS9nyiQT-171" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-172" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" parent="HT5lYA2dYPyrPS9nyiQT-171" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" /> <mxGeometry y="30" width="180" height="30" as="geometry" />
@@ -2230,21 +2127,8 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-175" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="HT5lYA2dYPyrPS9nyiQT-171" vertex="1">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-176" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-175" vertex="1">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-177" value="jobdetailid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-175" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-178" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="HT5lYA2dYPyrPS9nyiQT-171" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-178" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="HT5lYA2dYPyrPS9nyiQT-171" vertex="1">
<mxGeometry y="90" width="180" height="30" as="geometry" /> <mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-179" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-178" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-179" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-178" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
@@ -2257,7 +2141,7 @@
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-181" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="HT5lYA2dYPyrPS9nyiQT-171" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-181" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="HT5lYA2dYPyrPS9nyiQT-171" vertex="1">
<mxGeometry y="120" width="180" height="30" as="geometry" /> <mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-182" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-181" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-182" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-181" vertex="1">
<mxGeometry width="30" height="30" as="geometry"> <mxGeometry width="30" height="30" as="geometry">
@@ -2277,11 +2161,6 @@
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-186" value="startdate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=1;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-184" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-187" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="HT5lYA2dYPyrPS9nyiQT-190" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-187" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" parent="HT5lYA2dYPyrPS9nyiQT-190" vertex="1">
<mxGeometry y="180" width="180" height="30" as="geometry" /> <mxGeometry y="180" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
@@ -2290,11 +2169,19 @@
<mxRectangle width="30" height="30" as="alternateBounds" /> <mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-189" value="enddate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=1;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-187" vertex="1"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-186" value="startdate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=1;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-190" vertex="1">
<mxGeometry x="30" width="150" height="30" as="geometry"> <mxGeometry x="30" y="120" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-189" value="enddate" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=1;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" parent="HT5lYA2dYPyrPS9nyiQT-190" vertex="1">
<mxGeometry x="30" y="150" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="Ya_982ONw7_15APAzA8q-279" value="1" style="resizable=0;html=1;whiteSpace=wrap;align=right;verticalAlign=bottom;" parent="HT5lYA2dYPyrPS9nyiQT-190" connectable="0" vertex="1">
<mxGeometry x="90" y="200" as="geometry" />
</mxCell>
<mxCell id="HT5lYA2dYPyrPS9nyiQT-197" value="" style="group" parent="1" vertex="1" connectable="0"> <mxCell id="HT5lYA2dYPyrPS9nyiQT-197" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="870" y="20" width="180" height="211" as="geometry" /> <mxGeometry x="870" y="20" width="180" height="211" as="geometry" />
</mxCell> </mxCell>
@@ -3275,7 +3162,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-1" 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;" edge="1" parent="1" source="HT5lYA2dYPyrPS9nyiQT-199" target="HT5lYA2dYPyrPS9nyiQT-348"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-1" 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="1" source="HT5lYA2dYPyrPS9nyiQT-199" target="HT5lYA2dYPyrPS9nyiQT-348" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-266" y="560" as="sourcePoint" /> <mxPoint x="-266" y="560" as="sourcePoint" />
<mxPoint x="414" y="1158" as="targetPoint" /> <mxPoint x="414" y="1158" as="targetPoint" />
@@ -3285,7 +3172,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-2" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="HT5lYA2dYPyrPS9nyiQT-366" target="HT5lYA2dYPyrPS9nyiQT-417"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-2" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=1;entryDx=0;entryDy=0;" parent="1" source="HT5lYA2dYPyrPS9nyiQT-366" target="HT5lYA2dYPyrPS9nyiQT-417" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="1110" as="sourcePoint" /> <mxPoint x="200" y="1110" as="sourcePoint" />
<mxPoint x="500" y="880" as="targetPoint" /> <mxPoint x="500" y="880" as="targetPoint" />
@@ -3409,7 +3296,7 @@
<mxRectangle width="150" height="30" as="alternateBounds" /> <mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-3" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.994;entryY=0.967;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="HT5lYA2dYPyrPS9nyiQT-388" target="HT5lYA2dYPyrPS9nyiQT-418"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-3" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.994;entryY=0.967;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="HT5lYA2dYPyrPS9nyiQT-388" target="HT5lYA2dYPyrPS9nyiQT-418" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1360" y="290" as="sourcePoint" /> <mxPoint x="1360" y="290" as="sourcePoint" />
<mxPoint x="1360" y="180" as="targetPoint" /> <mxPoint x="1360" y="180" as="targetPoint" />
@@ -3421,7 +3308,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-4" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="HT5lYA2dYPyrPS9nyiQT-2" target="HT5lYA2dYPyrPS9nyiQT-36"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-4" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="HT5lYA2dYPyrPS9nyiQT-2" target="HT5lYA2dYPyrPS9nyiQT-36" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-300" y="1470" as="sourcePoint" /> <mxPoint x="-300" y="1470" as="sourcePoint" />
<mxPoint x="-250" y="1420" as="targetPoint" /> <mxPoint x="-250" y="1420" as="targetPoint" />
@@ -3431,13 +3318,13 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-5" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="HT5lYA2dYPyrPS9nyiQT-30"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-5" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="HT5lYA2dYPyrPS9nyiQT-30" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-300" y="1110" as="sourcePoint" /> <mxPoint x="-300" y="1110" as="sourcePoint" />
<mxPoint x="-560" y="1215" as="targetPoint" /> <mxPoint x="-560" y="1215" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-6" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="HT5lYA2dYPyrPS9nyiQT-253"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-6" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="HT5lYA2dYPyrPS9nyiQT-253" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-300" y="1110" as="sourcePoint" /> <mxPoint x="-300" y="1110" as="sourcePoint" />
<mxPoint x="-380" y="1230" as="targetPoint" /> <mxPoint x="-380" y="1230" as="targetPoint" />
@@ -3447,13 +3334,13 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-7" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="HT5lYA2dYPyrPS9nyiQT-276"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-7" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="HT5lYA2dYPyrPS9nyiQT-276" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-590" y="1130" as="sourcePoint" /> <mxPoint x="-590" y="1130" as="sourcePoint" />
<mxPoint x="-560" y="1060" as="targetPoint" /> <mxPoint x="-560" y="1060" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-8" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.006;entryY=0.924;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="Ya_982ONw7_15APAzA8q-301" target="HT5lYA2dYPyrPS9nyiQT-253"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-8" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=-0.006;entryY=0.924;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="Ya_982ONw7_15APAzA8q-301" target="HT5lYA2dYPyrPS9nyiQT-253" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-590" y="1130" as="sourcePoint" /> <mxPoint x="-590" y="1130" as="sourcePoint" />
<mxPoint x="-540" y="1080" as="targetPoint" /> <mxPoint x="-540" y="1080" as="targetPoint" />
@@ -3463,7 +3350,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-9" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="HT5lYA2dYPyrPS9nyiQT-289"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-9" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="HT5lYA2dYPyrPS9nyiQT-289" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-380" y="299" as="sourcePoint" /> <mxPoint x="-380" y="299" as="sourcePoint" />
<mxPoint x="330" y="420" as="targetPoint" /> <mxPoint x="330" y="420" as="targetPoint" />
@@ -3473,13 +3360,13 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-30" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="HT5lYA2dYPyrPS9nyiQT-312"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-30" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="HT5lYA2dYPyrPS9nyiQT-312" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="790" y="685" as="sourcePoint" /> <mxPoint x="790" y="685" as="sourcePoint" />
<mxPoint x="760" y="540" as="targetPoint" /> <mxPoint x="760" y="540" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-31" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="AkoRetE9dPsFytqfa5Kx-31"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-31" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="AkoRetE9dPsFytqfa5Kx-31" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="790" y="850" as="sourcePoint" /> <mxPoint x="790" y="850" as="sourcePoint" />
<mxPoint x="250" y="870" as="targetPoint" /> <mxPoint x="250" y="870" as="targetPoint" />
@@ -3489,7 +3376,7 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="7H4gm8Qbcmcg-KG3YoOF-32" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="7H4gm8Qbcmcg-KG3YoOF-21"> <mxCell id="7H4gm8Qbcmcg-KG3YoOF-32" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="7H4gm8Qbcmcg-KG3YoOF-21" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="480" y="720" as="sourcePoint" /> <mxPoint x="480" y="720" as="sourcePoint" />
<mxPoint x="530" y="470" as="targetPoint" /> <mxPoint x="530" y="470" as="targetPoint" />
@@ -3500,6 +3387,103 @@
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-3" value="servicedesc" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="1410" y="249" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-4" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-3">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-5" value="PK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-4">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-6" value="servicedescid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-4">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-7" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-3">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-8" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-7">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-9" value="servicetypeid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-7">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-10" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-3">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-11" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-10">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-12" value="description" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-10">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-16" value="offers" style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;html=1;" vertex="1" parent="1">
<mxGeometry x="900" y="645" width="180" height="151" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-17" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-16">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-18" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-17">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-19" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;fontStyle=5;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-17">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-20" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-16">
<mxGeometry y="60" width="180" height="31" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-21" value="FK" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-20">
<mxGeometry width="30" height="31" as="geometry">
<mxRectangle width="30" height="31" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-22" value="jobdetailid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-20">
<mxGeometry x="30" width="150" height="31" as="geometry">
<mxRectangle width="150" height="31" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-23" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-16">
<mxGeometry y="91" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-24" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-23">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-25" value="offerid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-23">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-26" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom=0;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-16">
<mxGeometry y="121" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-27" value="" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;editable=1;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-26">
<mxGeometry width="30" height="30" as="geometry">
<mxRectangle width="30" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="BsNFRahTXGiPdYppKmQY-28" value="contractid" style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;whiteSpace=wrap;html=1;" vertex="1" parent="BsNFRahTXGiPdYppKmQY-26">
<mxGeometry x="30" width="150" height="30" as="geometry">
<mxRectangle width="150" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>
</diagram> </diagram>

View File

@@ -0,0 +1,40 @@
/*M!999999\- enable the sandbox mode */
-- MariaDB dump 10.19 Distrib 10.11.11-MariaDB, for Linux (x86_64)
--
-- Host: bearybot.selfhost.co Database: pyqcrm
-- ------------------------------------------------------
-- Server version 10.11.11-MariaDB-0ubuntu0.24.04.2-log
/*!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 = utf8mb4 */;
CREATE TABLE `address` (
`addressid` int(11) NOT NULL AUTO_INCREMENT,
`countryid` int(11) NOT NULL,
`cityid` int(11) NOT NULL,
`postcodeid` int(11) NOT NULL,
PRIMARY KEY (`addressid`),
KEY `address_country_FK` (`countryid`)
) ENGINE=InnoDB AUTO_INCREMENT=6956 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Temporary table structure for view `addressesview`
--
DROP TABLE IF EXISTS `addressesview`;

View File

@@ -0,0 +1,40 @@
/*M!999999\- enable the sandbox mode */
-- MariaDB dump 10.19 Distrib 10.11.11-MariaDB, for Linux (x86_64)
--
-- Host: bearybot.selfhost.co Database: pyqcrm
-- ------------------------------------------------------
-- Server version 10.11.11-MariaDB-0ubuntu0.24.04.2-log
/*!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 = utf8mb4 */;
CREATE TABLE `address` (
`addressid` int(11) NOT NULL AUTO_INCREMENT,
`countryid` int(11) NOT NULL,
`cityid` int(11) NOT NULL,
`postcodeid` int(11) NOT NULL,
PRIMARY KEY (`addressid`),
KEY `address_country_FK` (`countryid`)
) ENGINE=InnoDB AUTO_INCREMENT=6956 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Temporary table structure for view `addressesview`
--
DROP TABLE IF EXISTS `addressesview`;

View File

@@ -0,0 +1,40 @@
/*M!999999\- enable the sandbox mode */
-- MariaDB dump 10.19 Distrib 10.11.11-MariaDB, for Linux (x86_64)
--
-- Host: bearybot.selfhost.co Database: pyqcrm
-- ------------------------------------------------------
-- Server version 10.11.11-MariaDB-0ubuntu0.24.04.2-log
/*!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 = utf8mb4 */;
CREATE TABLE `address` (
`addressid` int(11) NOT NULL AUTO_INCREMENT,
`countryid` int(11) NOT NULL,
`cityid` int(11) NOT NULL,
`postcodeid` int(11) NOT NULL,
PRIMARY KEY (`addressid`),
KEY `address_country_FK` (`countryid`)
) ENGINE=InnoDB AUTO_INCREMENT=6956 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Temporary table structure for view `addressesview`
--
DROP TABLE IF EXISTS `addressesview`;

View File

@@ -0,0 +1,40 @@
/*M!999999\- enable the sandbox mode */
-- MariaDB dump 10.19 Distrib 10.11.11-MariaDB, for Linux (x86_64)
--
-- Host: bearybot.selfhost.co Database: pyqcrm
-- ------------------------------------------------------
-- Server version 10.11.11-MariaDB-0ubuntu0.24.04.2-log
/*!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 = utf8mb4 */;
CREATE TABLE `address` (
`addressid` int(11) NOT NULL AUTO_INCREMENT,
`countryid` int(11) NOT NULL,
`cityid` int(11) NOT NULL,
`postcodeid` int(11) NOT NULL,
PRIMARY KEY (`addressid`),
KEY `address_country_FK` (`countryid`)
) ENGINE=InnoDB AUTO_INCREMENT=6956 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Temporary table structure for view `addressesview`
--
DROP TABLE IF EXISTS `addressesview`;

File diff suppressed because it is too large Load Diff

1
doc/postleitzahl.json Normal file

File diff suppressed because one or more lines are too long

1
doc/staaten.json Normal file

File diff suppressed because one or more lines are too long

1
doc/states.json Normal file

File diff suppressed because one or more lines are too long

View File

@@ -14,11 +14,11 @@ class AddressDAO:
def __importPlz(self): def __importPlz(self):
with open("pfad zur datei", "r") as plz: with open("/home/dstoppek/Coden/Projekte/pyqcrm/doc/postleitzahl.json", "r") as plz:
postcodes = json.load(plz) postcodes = json.load(plz)
irgendwas = "" country = "Deutschland"
try: try:
for i in postcodes: for i in postcodes:
test =i["plz_name"].split(",") test =i["plz_name"].split(",")
@@ -28,8 +28,8 @@ class AddressDAO:
town = town.strip() town = town.strip()
if town: if town:
print(f"PROCESSING {i['name']} {town}") print(f"PROCESSING {i['name']} {town}")
self.__cur.callproc("addZipCodes", (i["name"], town, irgendwas,)) self.__cur.callproc("importLocation", (country, town, i["name"],))
#self.__cur.callproc("addZipCodes", ("56271", "Kleinmaischeid", irgendwas,))
except mariadb.OperationalError as e: except mariadb.OperationalError as e:
print(f"Database Error: {e}") print(f"Database Error: {e}")
finally: finally:
@@ -37,7 +37,7 @@ class AddressDAO:
print("FINISHED")# print("FINISHED")#
def __importCountry(self): def __importCountry(self):
with open("pfad zur datei", "r") as country: with open("/home/dstoppek/Coden/Projekte/pyqcrm/doc/staaten.json", "r") as country:
countries = json.load(country) countries = json.load(country)
old = "" old = ""
try: try:
@@ -78,3 +78,4 @@ class AddressDAO:
print(str(e)) print(str(e))

View File

@@ -14,9 +14,12 @@ class AddressModel(QAbstractListModel):
def data(self, index, role = Qt.DisplayRole): def data(self, index, role = Qt.DisplayRole):
row = index.row() row = index.row()
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
data = self.__address_data[row][2] data = self.__address_data[row][5]
return data return data
elif role == PyqcrmDataRoles.CITY_ROLE: elif role == PyqcrmDataRoles.CITY_ROLE:
data = self.__address_data[row][4]
return data
elif role == PyqcrmDataRoles.COUNTRY_ROLE:
data = self.__address_data[row][3] data = self.__address_data[row][3]
return data return data
return None return None
@@ -25,6 +28,7 @@ class AddressModel(QAbstractListModel):
return { return {
Qt.DisplayRole: b"display", Qt.DisplayRole: b"display",
PyqcrmDataRoles.CITY_ROLE: b"city", PyqcrmDataRoles.CITY_ROLE: b"city",
PyqcrmDataRoles.COUNTRY_ROLE: b"country"
} }
def setData(self): def setData(self):

View File

@@ -75,7 +75,7 @@ class BusinessModel(QAbstractTableModel):
self.__business_dao.newBusinessAdded.connect(self.__refreshView) self.__business_dao.newBusinessAdded.connect(self.__refreshView)
self.__conf = ConfigLoader().getConfig() self.__conf = ConfigLoader().getConfig()
self.__key = self.__conf['pyqcrm']['ENCRYPTION_KEY'] self.__key = self.__conf['pyqcrm']['ENCRYPTION_KEY']
self.__getData() # self.__getData()
def __getData(self, criterion = "Alle"): def __getData(self, criterion = "Alle"):
self.beginResetModel() self.beginResetModel()

View File

@@ -50,14 +50,15 @@ class ContactDAO(QObject):
self.newObjectContactAdded.emit(False) self.newObjectContactAdded.emit(False)
def getContact(self, contact_id, enc_key = None): def getContact(self, contact_id, enc_key = None):
try: # try:
if self.__cur: # if self.__cur:
self.__cur.callproc("getCustomerContact", (contact_id, enc_key,)) # self.__cur.callproc("getCustomerContact", (contact_id, enc_key,))
#self.__all_cols = [desc[0] for desc in self.__cur.description] # #self.__all_cols = [desc[0] for desc in self.__cur.description]
return self.__cur.fetchall() #, self.__all_cols # return self.__cur.fetchall() #, self.__all_cols
else: # else:
return None #, None # return None #, None
except mariadb.Error as e: # except mariadb.Error as e:
print(str(e)) # print(str(e))
pass

View File

@@ -1,6 +1,7 @@
from PySide6.QtCore import QAbstractTableModel, QModelIndex, Qt, Slot, Signal from PySide6.QtCore import QAbstractTableModel, QModelIndex, Qt, Slot, Signal
from .ObjectDAO import ObjectDAO from .ObjectDAO import ObjectDAO
from ..ConfigLoader import ConfigLoader from ..ConfigLoader import ConfigLoader
from ..PyqcrmDataRoles import PyqcrmDataRoles
import re import re
import json import json
@@ -66,8 +67,16 @@ class ObjectModel(QAbstractTableModel):
if object_col > 4 and tr: if object_col > 4 and tr:
tr = re.sub("Keine Angabe ","", tr) tr = re.sub("Keine Angabe ","", tr)
return tr return tr
elif role == PyqcrmDataRoles.STREET_IN_POSTCODE:
pass
return None return None
def roleNames(self):
return {
Qt.DisplayRole: b"display",
PyqcrmDataRoles.STREET_IN_POSTCODE: b"StreetInPostcode",
}
def headerData(self, section, orientation, role = Qt.DisplayRole): def headerData(self, section, orientation, role = Qt.DisplayRole):
if orientation == Qt.Horizontal and role == Qt.DisplayRole: if orientation == Qt.Horizontal and role == Qt.DisplayRole:
self.__col_name = self.__visible_columns[section + self.__col_skip] self.__col_name = self.__visible_columns[section + self.__col_skip]

View File

@@ -5,5 +5,7 @@ from enum import IntEnum
class PyqcrmDataRoles(IntEnum): class PyqcrmDataRoles(IntEnum):
CITY_ROLE = Qt.UserRole + 100 CITY_ROLE = Qt.UserRole + 100
STREET_IN_POSTCODE = CITY_ROLE + 1
COUNTRY_ROLE = CITY_ROLE + 100

View File

@@ -2,6 +2,7 @@
from Crypto.Cipher import AES from Crypto.Cipher import AES
from base64 import b64encode, b64decode from base64 import b64encode, b64decode
import platform import platform
import bcrypt
from Crypto.Hash import SHA256, SHA3_512 from Crypto.Hash import SHA256, SHA3_512
from Crypto.Protocol.KDF import PBKDF2 from Crypto.Protocol.KDF import PBKDF2
from Crypto.Random import get_random_bytes from Crypto.Random import get_random_bytes

10
main.py
View File

@@ -58,12 +58,12 @@ def initializeProgram():
if DbManager().getConnection(): if DbManager().getConnection():
db_con = True db_con = True
user = UserManager() user = UserManager()
business_model = BusinessModel() # business_model = BusinessModel()
address_model = AddressModel() address_model = AddressModel()
business_type = BTypeModel() # business_type = BTypeModel()
contact_model = ContactModel() # contact_model = ContactModel()
employee_model = EmployeeModel() # employee_model = EmployeeModel()
object_model = ObjectModel() # object_model = ObjectModel()
publishContext() publishContext()

View File

@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 15.0.0, 2025-02-05T15:48:35. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{6c31db7b-2c94-4111-b0dc-25005cece3f8}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.LineEndingBehavior">0</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<value type="bool" key="AutoTest.ApplyFilter">false</value>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">4</value>
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Python 3.13.1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Python 3.13.1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{bd928902-6673-464d-b976-4a1ba0e13d34}</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/dstoppek/anaconda3/envs/pyqcrm</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Python.PysideBuildStep</value>
<value type="QString" key="Python.PySideProjectTool">/home/dstoppek/anaconda3/envs/pyqcrm/bin/pyside6-project</value>
<value type="QString" key="Python.PySideUic">/home/dstoppek/anaconda3/envs/pyqcrm/bin/pyside6-uic</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Python 3.13.1 virtuelle Umgebung</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Python.PySideBuildConfiguration</value>
<value type="QString" key="python">/home/dstoppek/anaconda3/envs/pyqcrm/bin/python</value>
<value type="QString" key="venv">/home/dstoppek/anaconda3/envs/pyqcrm</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph dwarf,4096 -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">main.py</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">PythonEditor.RunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/dstoppek/Coden/Projekte/pyqcrm/main.py</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="QString" key="PythonEditor.RunConfiguation.Script">/home/dstoppek/Coden/Projekte/pyqcrm/main.py</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/dstoppek/Coden/Projekte/pyqcrm</value>
<value type="QString" key="RunConfiguration.X11Forwarding">:0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

29
qml.qrc
View File

@@ -9,7 +9,6 @@
<file>Gui/AddCustomer.qml</file> <file>Gui/AddCustomer.qml</file>
<file>Gui/Dashboard.qml</file> <file>Gui/Dashboard.qml</file>
<file>Gui/main.qml</file> <file>Gui/main.qml</file>
<file>js/qmldict.js</file>
<file>Gui/CustomerView.qml</file> <file>Gui/CustomerView.qml</file>
<file>Gui/NoDbConnection.qml</file> <file>Gui/NoDbConnection.qml</file>
<file>Gui/Notifications.qml</file> <file>Gui/Notifications.qml</file>
@@ -36,14 +35,13 @@
<file>Gui/BackupSettings.qml</file> <file>Gui/BackupSettings.qml</file>
<file>Gui/MiscConf.qml</file> <file>Gui/MiscConf.qml</file>
<file>Gui/UtilityDialogs.qml</file> <file>Gui/UtilityDialogs.qml</file>
<file>Gui/OffersTable.qml</file>
<file>Gui/Employees/AddApplicant.qml</file> <file>Gui/Employees/AddApplicant.qml</file>
<file>Gui/Employees/AddEmployee.qml</file> <file>Gui/Employees/AddEmployee.qml</file>
<file>Gui/Employees/ApplicantPersonalData.qml</file> <file>Gui/Employees/EmployeePersonalData.qml</file>
<file>Gui/Employees/ApplicantBankData.qml</file> <file>Gui/Employees/EmployeeBankData.qml</file>
<file>Gui/Employees/ApplicantForm.qml</file> <file>Gui/Employees/ApplicantForm.qml</file>
<file>Gui/Employees/ApplicantNationalInsurance.qml</file> <file>Gui/Employees/EmployeeNationalInsurance.qml</file>
<file>Gui/Employees/ApplicantVarious.qml</file> <file>Gui/Employees/EmployeeVarious.qml</file>
<file>Gui/Employees/EmployeeDetails.qml</file> <file>Gui/Employees/EmployeeDetails.qml</file>
<file>Gui/Employees/EmployeesTable.qml</file> <file>Gui/Employees/EmployeesTable.qml</file>
<file>Gui/Employees/qmldir</file> <file>Gui/Employees/qmldir</file>
@@ -67,9 +65,22 @@
<file>TeroStyle/SearchBar.qml</file> <file>TeroStyle/SearchBar.qml</file>
<file>TeroStyle/TextField.qml</file> <file>TeroStyle/TextField.qml</file>
<file>TeroStyle/Typography.qml</file> <file>TeroStyle/Typography.qml</file>
<file>Gui/AddOffer.qml</file> <file>Gui/qmldir</file>
<file>Gui/AddNewOffer.qml</file> <file>Gui/test.qml</file>
<file>Gui/Offers/OffersTable.qml</file>
<file>Gui/Offers/qmldir</file>
<file>Gui/Offers/AddOffer.qml</file>
<file>Gui/Offers/AddNewOffer.qml</file>
<file>Js/qmldir</file>
<file>Js/JsLib.js</file>
<file>Js/qmldict.js</file>
<file>Gui/Customer/AddCustomer.qml</file>
<file>Gui/Customer/CustomerContactDetails.qml</file>
<file>Gui/Customer/CustomerDetails.qml</file>
<file>Gui/Customer/CustomerDetailsView.qml</file>
<file>Gui/Customer/CustomersTable.qml</file>
<file>Gui/Customer/CustomerView.qml</file>
<file>Gui/Customer/qmldir</file>
</qresource> </qresource>
<qresource prefix="/Common"/>
<qresource prefix="/TeroStyle"/> <qresource prefix="/TeroStyle"/>
</RCC> </RCC>

View File

@@ -7,3 +7,5 @@ mariadb
soundfile soundfile
sounddevice sounddevice
reportlab reportlab
tomlkit
bcrypt