Skip to content
Snippets Groups Projects
Commit 9f2196c2 authored by dsg03695's avatar dsg03695
Browse files

Merge into current main branch to keep the project up-to-date

parents 0064af02 d632ebd8
No related branches found
No related tags found
No related merge requests found
...@@ -19,4 +19,4 @@ ...@@ -19,4 +19,4 @@
<!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--enable this only when you definetly want to overwrite the existing data with demo records:-->
<!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>-->
</databaseChangeLog> </databaseChangeLog>
\ No newline at end of file
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<title>Company</title> <title>Company</title>
<consumer>Organisations</consumer> <consumer>Organisations</consumer>
<groupable v="true" /> <groupable v="true" />
<linkedContext>Person</linkedContext> <linkedContext>Organisation</linkedContext>
<state>READONLY</state> <state>READONLY</state>
<valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/contact_id/valueProcess.js</valueProcess> <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/contact_id/valueProcess.js</valueProcess>
<displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
...@@ -191,11 +191,38 @@ ...@@ -191,11 +191,38 @@
<name>RowId_param</name> <name>RowId_param</name>
<expose v="true" /> <expose v="true" />
</entityParameter> </entityParameter>
<entityActionGroup>
<name>setStatus</name>
<children>
<entityActionField>
<name>setActive</name>
<title>Set active</title>
<onActionProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/setstatus/children/setactive/onActionProcess.js</onActionProcess>
<isSelectionAction v="true" />
<iconId>VAADIN:THUMBS_UP</iconId>
<tooltip>Set status to active</tooltip>
</entityActionField>
<entityActionField>
<name>setInactive</name>
<title>Set inactive</title>
<onActionProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/setstatus/children/setinactive/onActionProcess.js</onActionProcess>
<isSelectionAction v="true" />
<iconId>VAADIN:THUMBS_DOWN</iconId>
<tooltip>Set status to inactive</tooltip>
</entityActionField>
</children>
</entityActionGroup>
<entityParameter>
<name>isDashletView_param</name>
<expose v="true" />
</entityParameter>
</entityFields> </entityFields>
<recordContainers> <recordContainers>
<dbRecordContainer> <dbRecordContainer>
<name>db</name> <name>db</name>
<alias>Data_alias</alias> <alias>Data_alias</alias>
<isRequireContainerFiltering v="false" />
<hasDependentRecords v="true" />
<fromClauseProcess>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <fromClauseProcess>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
<conditionProcess>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <conditionProcess>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
<linkInformation> <linkInformation>
......
import("KeywordRegistry_basic");
import("system.vars");
import("system.neon");
import("District_lib");
var arrIds = vars.get("$sys.selection");
DistrictUtils.setDistrictContactStatus(arrIds, $KeywordRegistry.contactStatus$active());
neon.openHome();
\ No newline at end of file
import("KeywordRegistry_basic");
import("system.vars");
import("system.neon");
import("District_lib");
var arrIds = vars.get("$sys.selection");
DistrictUtils.setDistrictContactStatus(arrIds, $KeywordRegistry.contactStatus$inactive());
neon.openHome();
import("KeywordRegistry_basic");
import("Employee_lib");
import("system.entities"); import("system.entities");
import("system.result"); import("system.result");
import("system.vars"); import("system.vars");
import("Sql_lib"); import("Sql_lib");
var isDashletView = vars.get("$param.isDashletView_param");
var organisationID = vars.get("$param.currentOrganisationId_param"); var organisationID = vars.get("$param.currentOrganisationId_param");
var cond = newWhere(); var cond = newWhere();
...@@ -18,4 +21,15 @@ if (organisationID) ...@@ -18,4 +21,15 @@ if (organisationID)
cond.and("DISTRICTCONTACT.CONTACT_ID", organisationID); cond.and("DISTRICTCONTACT.CONTACT_ID", organisationID);
} }
if(isDashletView)
{
var statusInReview = $KeywordRegistry.contactStatus$inReview();
var districtOrigin = $KeywordRegistry.districtOrigin$auto();
var currentContactId = EmployeeUtils.getCurrentContactId();
cond.and("DISTRICTCONTACT.STATUS", statusInReview);
cond.and("DISTRICTCONTACT.ORIGIN", districtOrigin);
cond.and("DISTRICTCONTACT.ADVISER_CONTACT_ID", currentContactId);
}
result.string(cond.toString()); result.string(cond.toString());
\ No newline at end of file
...@@ -3,6 +3,27 @@ ...@@ -3,6 +3,27 @@
<name>DistrictContactFilter_view</name> <name>DistrictContactFilter_view</name>
<majorModelMode>DISTRIBUTED</majorModelMode> <majorModelMode>DISTRIBUTED</majorModelMode>
<filterable v="true" /> <filterable v="true" />
<dashletConfigurations>
<neonDashletConfiguration>
<name>OwnDistrictContactsToCheck</name>
<title>My district assignments to check</title>
<description>Show my district assignments with status review</description>
<fragment>DistrictContact/filter</fragment>
<icon>VAADIN:GLOBE</icon>
<categories>
<neonDashletCategory>
<name>district</name>
<title>District</title>
</neonDashletCategory>
</categories>
<parameters>
<neonDashletParameter>
<name>isDashletView_param</name>
<value>true</value>
</neonDashletParameter>
</parameters>
</neonDashletConfiguration>
</dashletConfigurations>
<layout> <layout>
<boxLayout> <boxLayout>
<name>layout</name> <name>layout</name>
...@@ -11,6 +32,7 @@ ...@@ -11,6 +32,7 @@
<children> <children>
<tableViewTemplate> <tableViewTemplate>
<name>districtContacts</name> <name>districtContacts</name>
<favoriteActionGroup1>setStatus</favoriteActionGroup1>
<entityField>#ENTITY</entityField> <entityField>#ENTITY</entityField>
<linkedColumns /> <linkedColumns />
<fixedFilterFields /> <fixedFilterFields />
......
...@@ -60,13 +60,33 @@ ...@@ -60,13 +60,33 @@
</entry> </entry>
<entry> <entry>
<key>Assign all selected districts</key> <key>Assign all selected districts</key>
<value>Zuordnung für alle selektierten Gebiete</value> <value>Zuordnung für alle selektierten Gebiete</value>
</entry> </entry>
<entry> <entry>
<key>Assignment for all selected districts will start now!</key> <key>Assignment for all selected districts will start now!</key>
<value>Zuordnung für alle selektierten Gebiete wird jetzt gestartet</value> <value>Zuordnung für alle selektierten Gebiete wird jetzt gestartet</value>
</entry> </entry>
<entry> <entry>
<key>Assignment of all selected districts is completed!</key> <key>Assignment of all selected districts is completed!</key>
<value>Zuordnung für alle selektierten Gebiete abgeschlossen</value> <value>Zuordnung für alle selektierten Gebiete abgeschlossen</value>
</entry>
<entry>
<key>Set active</key>
<value>Aktiv setzen</value>
</entry>
<entry>
<key>Set inactive</key>
<value>Inaktiv setzen</value>
</entry>
<entry>
<key>Set status to active</key
<value>Status auf aktiv setzen</value>
</entry>
<entry>
<key>Set status to inactive</key>
<value>Status auf inaktiv setzen</value>
</entry>
<entry>
<key>My district assignments to check</key>
<value>Meine zu prüfenden Gebietszuweisungen</value>
</entry> </entry>
\ No newline at end of file
...@@ -51,4 +51,19 @@ ...@@ -51,4 +51,19 @@
</entry> </entry>
<entry> <entry>
<key>Assignment of all selected districts is completed!</key> <key>Assignment of all selected districts is completed!</key>
</entry>
<entry>
<key>Set active</key>
</entry>
<entry>
<key>Set inactive</key>
</entry>
<entry>
<key>Set status to active</key>
</entry>
<entry>
<key>Set status to inactive</key>
</entry>
<entry>
<key>My district assignments to check</key>
</entry> </entry>
\ No newline at end of file
...@@ -33,9 +33,9 @@ function DistrictUtils () {} ...@@ -33,9 +33,9 @@ function DistrictUtils () {}
DistrictUtils.getDistrictName = function (pDistrictId) DistrictUtils.getDistrictName = function (pDistrictId)
{ {
var districtName = newSelect("DISTRICT_NAME") var districtName = newSelect("DISTRICT_NAME")
.from("DISTRICT") .from("DISTRICT")
.where("DISTRICT.DISTRICTID", pDistrictId) .where("DISTRICT.DISTRICTID", pDistrictId)
.cell(true); .cell(true);
return(districtName) return(districtName)
} }
...@@ -51,9 +51,9 @@ DistrictUtils.getDistrictName = function (pDistrictId) ...@@ -51,9 +51,9 @@ DistrictUtils.getDistrictName = function (pDistrictId)
DistrictUtils.getDataFromDistrict = function (pDistrictId) DistrictUtils.getDataFromDistrict = function (pDistrictId)
{ {
var districtData = newSelect("DISTRICT_FILTER, PARENTDISTRICT_DISTRICTID") var districtData = newSelect("DISTRICT_FILTER, PARENTDISTRICT_DISTRICTID")
.from("DISTRICT") .from("DISTRICT")
.where("DISTRICT.DISTRICTID", pDistrictId) .where("DISTRICT.DISTRICTID", pDistrictId)
.arrayRow(); .arrayRow();
return(districtData); return(districtData);
} }
...@@ -68,10 +68,10 @@ DistrictUtils.getDataFromDistrict = function (pDistrictId) ...@@ -68,10 +68,10 @@ DistrictUtils.getDataFromDistrict = function (pDistrictId)
*/ */
DistrictUtils.getDataFromDistrictContact = function (pDistrictContactId) DistrictUtils.getDataFromDistrictContact = function (pDistrictContactId)
{ {
var arrData = newSelect("DISTRICT_ID, ADVISER_CONTACT_ID, CONTACT_ID") var arrData = newSelect("DISTRICT_ID, ADVISER_CONTACT_ID")
.from("DISTRICTCONTACT") .from("DISTRICTCONTACT")
.where("DISTRICTCONTACT.DISTRICTCONTACTID", pDistrictContactId) .where("DISTRICTCONTACT.DISTRICTCONTACTID", pDistrictContactId)
.arrayRow(); .arrayRow();
return(arrData); return(arrData);
} }
...@@ -93,12 +93,12 @@ DistrictUtils.assignDistrictOnServer = function (pArrDistrictIds, pUser) ...@@ -93,12 +93,12 @@ DistrictUtils.assignDistrictOnServer = function (pArrDistrictIds, pUser)
if (pUser === undefined) if (pUser === undefined)
pUser = EmployeeUtils.getCurrentUserId(); pUser = EmployeeUtils.getCurrentUserId();
var processConfig = process.createStartAsyncConfig() var processConfig = process.createStartAsyncConfig()
.setName("assignDistrict_serverProcess") .setName("assignDistrict_serverProcess")
.setLocalVariables({ .setLocalVariables({
arrDistrictIds : pArrDistrictIds.join(";"), arrDistrictIds : pArrDistrictIds.join(";"),
user : pUser || "" user : pUser || ""
}) })
.setUser(pUser) .setUser(pUser)
process.startAsync(processConfig); process.startAsync(processConfig);
} }
...@@ -131,21 +131,21 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId ...@@ -131,21 +131,21 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
if (!pContactId) if (!pContactId)
{ {
arrExistingIds = new SqlBuilder() arrExistingIds = new SqlBuilder()
.select("DISTRICTCONTACT.DISTRICTCONTACTID, DISTRICTCONTACT.CONTACT_ID, DISTRICTCONTACT.ADVISER_CONTACT_ID") .select("DISTRICTCONTACT.DISTRICTCONTACTID, DISTRICTCONTACT.CONTACT_ID, DISTRICTCONTACT.ADVISER_CONTACT_ID")
.from("DISTRICTCONTACT") .from("DISTRICTCONTACT")
.where("DISTRICTCONTACT.DISTRICT_ID", pDistrictId) .where("DISTRICTCONTACT.DISTRICT_ID", pDistrictId)
.and ("DISTRICTCONTACT.ORIGIN", $KeywordRegistry.districtOrigin$auto()) .and ("DISTRICTCONTACT.ORIGIN", $KeywordRegistry.districtOrigin$auto())
.and ("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$inReview(), SqlBuilder.NOT_EQUAL()) .and ("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$inReview(), SqlBuilder.NOT_EQUAL())
.table(); .table();
} }
//Einlesen aller Betreuer, die dem übergebenen Gebiet zugeordnet sind //Einlesen aller Betreuer, die dem übergebenen Gebiet zugeordnet sind
var arrResponsibleIds = new SqlBuilder() var arrResponsibleIds = new SqlBuilder()
.select("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID, DISTRICTRESPONSIBLE.ADVISER_ROLE, " + .select("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID, DISTRICTRESPONSIBLE.ADVISER_ROLE, " +
"DISTRICTRESPONSIBLE.ADVISER_STATUS, DISTRICTRESPONSIBLE.VALID_FROM, DISTRICTRESPONSIBLE.VALID_UNTIL") "DISTRICTRESPONSIBLE.ADVISER_STATUS, DISTRICTRESPONSIBLE.VALID_FROM, DISTRICTRESPONSIBLE.VALID_UNTIL")
.from("DISTRICTRESPONSIBLE") .from("DISTRICTRESPONSIBLE")
.where("DISTRICTRESPONSIBLE.DISTRICT_ID", pDistrictId) .where("DISTRICTRESPONSIBLE.DISTRICT_ID", pDistrictId)
.table(); .table();
//Aufbereiten des im JSON-Format übergebenen Filters in eine SQL-Condition //Aufbereiten des im JSON-Format übergebenen Filters in eine SQL-Condition
var appliedFilterCondition = JSON.parse(pAppliedFilter).filter; var appliedFilterCondition = JSON.parse(pAppliedFilter).filter;
...@@ -155,35 +155,35 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId ...@@ -155,35 +155,35 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
logging.log("sqlCondition: " + sqlCondition) logging.log("sqlCondition: " + sqlCondition)
//Einlesen der Contact-IDs zu den Firmen, die gemäß Filter diesem Gebiet zugeordnet sind //Einlesen der Contact-IDs zu den Firmen, die gemäß Filter diesem Gebiet zugeordnet sind
var arrOrgContactIds = new SqlBuilder() var arrOrgContactIds = new SqlBuilder()
.selectDistinct("CONTACT.CONTACTID") .selectDistinct("CONTACT.CONTACTID")
.from("ORGANISATION") .from("ORGANISATION")
.join("CONTACT", newWhere("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID").and("CONTACT.PERSON_ID is null")) .join("CONTACT", newWhere("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID").and("CONTACT.PERSON_ID is null"))
.leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID") .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID")
.leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID") .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID")
.whereIfSet(sqlCondition) .whereIfSet(sqlCondition)
.andIfSet("CONTACT.CONTACTID", pContactId) .andIfSet("CONTACT.CONTACTID", pContactId)
.arrayColumn(); .arrayColumn();
logging.log("arrOrgContactIds.length: " + arrOrgContactIds.length) logging.log("arrOrgContactIds.length: " + arrOrgContactIds.length)
var insertArray = []; var insertArray = [];
var colsInsert = [ var colsInsert = [
"DISTRICTCONTACTID", "DISTRICTCONTACTID",
"CONTACT_ID", "CONTACT_ID",
"DISTRICT_ID", "DISTRICT_ID",
"ADVISER_CONTACT_ID", "ADVISER_CONTACT_ID",
"ADVISER_ROLE", "ADVISER_ROLE",
"STATUS", "STATUS",
"VALID_FROM", "VALID_FROM",
"VALID_UNTIL", "VALID_UNTIL",
"ORIGIN", "ORIGIN",
"USER_NEW", "USER_NEW",
"DATE_NEW" "DATE_NEW"
]; ];
var updateArray = []; var updateArray = [];
var colsUpdate = [ var colsUpdate = [
"STATUS", "STATUS",
"USER_EDIT", "USER_EDIT",
"DATE_EDIT" "DATE_EDIT"
]; ];
//Anlegen der Firmen-Betreuer-Datensätze in der Tabelle DISTRICTCONTACT //Anlegen der Firmen-Betreuer-Datensätze in der Tabelle DISTRICTCONTACT
for (var i=0; i<arrOrgContactIds.length; i++) for (var i=0; i<arrOrgContactIds.length; i++)
...@@ -212,17 +212,17 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId ...@@ -212,17 +212,17 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
arrResponsibleIds[j][2] = $KeywordRegistry.contactStatus$active(); arrResponsibleIds[j][2] = $KeywordRegistry.contactStatus$active();
var valsInsert = [ var valsInsert = [
util.getNewUUID(), util.getNewUUID(),
arrOrgContactIds[i], arrOrgContactIds[i],
pDistrictId, pDistrictId,
arrResponsibleIds[j][0], arrResponsibleIds[j][0],
arrResponsibleIds[j][1], arrResponsibleIds[j][1],
arrResponsibleIds[j][2], arrResponsibleIds[j][2],
arrResponsibleIds[j][3], arrResponsibleIds[j][3],
arrResponsibleIds[j][4], arrResponsibleIds[j][4],
$KeywordRegistry.districtOrigin$auto(), $KeywordRegistry.districtOrigin$auto(),
vars.get("$sys.user"), vars.get("$sys.user"),
vars.get("$sys.date") vars.get("$sys.date")
]; ];
insertArray.push(["DISTRICTCONTACT", colsInsert, null, valsInsert]); insertArray.push(["DISTRICTCONTACT", colsInsert, null, valsInsert]);
} }
...@@ -235,20 +235,12 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId ...@@ -235,20 +235,12 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
if (arrExistingIds.length > 0) if (arrExistingIds.length > 0)
{ {
invalid = arrExistingIds.length; invalid = arrExistingIds.length;
for (var l=0; l<arrExistingIds.length; l++)
{ //die erste Spalte enthält die Ids der zu aktualisierenden Datensätze
var valsUpdate = [ var arrIds = arrExistingIds.map(function(value) { return value[0]; });
$KeywordRegistry.contactStatus$inReview(), DistrictUtils.setDistrictContactStatus (arrIds, $KeywordRegistry.contactStatus$inReview());
vars.get("$sys.user"),
vars.get("$sys.date")
];
var condition = newWhere("DISTRICTCONTACT.DISTRICTCONTACTID", arrExistingIds[l][0]);
updateArray.push(["DISTRICTCONTACT", colsUpdate, null, valsUpdate, condition.build()]);
}
db.updates(updateArray)
} }
return { return {
newAssigned : newAssigned, newAssigned : newAssigned,
invalid : invalid, invalid : invalid,
...@@ -349,9 +341,9 @@ DistrictUtils._getParentFilter = function (pParentDistrict_DistrictId, pPrevious ...@@ -349,9 +341,9 @@ DistrictUtils._getParentFilter = function (pParentDistrict_DistrictId, pPrevious
{ {
var parentDistrictFilter, grandParentDistrict; var parentDistrictFilter, grandParentDistrict;
[parentDistrictFilter, grandParentDistrict] = newSelect(["DISTRICT.DISTRICT_FILTER", "DISTRICT.PARENTDISTRICT_DISTRICTID"]) [parentDistrictFilter, grandParentDistrict] = newSelect(["DISTRICT.DISTRICT_FILTER", "DISTRICT.PARENTDISTRICT_DISTRICTID"])
.from("DISTRICT") .from("DISTRICT")
.where("DISTRICT.DISTRICTID", pParentDistrict_DistrictId) .where("DISTRICT.DISTRICTID", pParentDistrict_DistrictId)
.arrayRow(); .arrayRow();
parentDistrictFilter = JSON.parse(parentDistrictFilter); parentDistrictFilter = JSON.parse(parentDistrictFilter);
...@@ -370,6 +362,37 @@ DistrictUtils._getParentFilter = function (pParentDistrict_DistrictId, pPrevious ...@@ -370,6 +362,37 @@ DistrictUtils._getParentFilter = function (pParentDistrict_DistrictId, pPrevious
} }
/**
* This function will set the status of districtcontact datasets
* @param {Array} pArrIds <p>
* IDs of districtcontact<br>
* @param {String} pStatus <p>
* Status, for example $KeywordRegistry.contactStatus$active<br>
* @return {none} <p>
*/
DistrictUtils.setDistrictContactStatus = function (pArrIds, pStatus)
{
var updateArray = [];
var colsUpdate = [
"STATUS",
"USER_EDIT",
"DATE_EDIT"
];
var valsUpdate = [
pStatus,
vars.get("$sys.user"),
vars.get("$sys.date")
];
for (var i=0; i<pArrIds.length; i++)
{
var condition = newWhere("DISTRICTCONTACT.DISTRICTCONTACTID", pArrIds[i]);
updateArray.push(["DISTRICTCONTACT", colsUpdate, null, valsUpdate, condition.build()]);
}
db.updates(updateArray);
}
/** /**
* This function will assign a new organisation to all districts, which * This function will assign a new organisation to all districts, which
* - have the property "auto assignment" * - have the property "auto assignment"
...@@ -387,9 +410,9 @@ DistrictUtils.assignOrganisationToDistrict = function (pOrganisationId, pUserLog ...@@ -387,9 +410,9 @@ DistrictUtils.assignOrganisationToDistrict = function (pOrganisationId, pUserLog
//alle Filter ermitteln, die auf auto-assignment gleich true gesetzt sind //alle Filter ermitteln, die auf auto-assignment gleich true gesetzt sind
var allAutoDistricts = newSelect("DISTRICTID") var allAutoDistricts = newSelect("DISTRICTID")
.from("DISTRICT") .from("DISTRICT")
.where("DISTRICT.DISTRICT_AUTOADD", 1) .where("DISTRICT.DISTRICT_AUTOADD", 1)
.arrayColumn(); .arrayColumn();
//TODO: pUserLogin noch bis zum Schreiben von date_new durchschleusen //TODO: pUserLogin noch bis zum Schreiben von date_new durchschleusen
logging.log("pUerLogin: " + pUserLogin) logging.log("pUerLogin: " + pUserLogin)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment