diff --git a/entity/District_entity/District_entity.aod b/entity/District_entity/District_entity.aod index f625fd4d882411987228728cd02a98a17c7c8715..a469cee1fb639cec9b8d3f561baf78477d8a45df 100644 --- a/entity/District_entity/District_entity.aod +++ b/entity/District_entity/District_entity.aod @@ -6,6 +6,7 @@ <icon>VAADIN:GLOBE</icon> <title>District definition</title> <contentTitleProcess>%aditoprj%/entity/District_entity/contentTitleProcess.js</contentTitleProcess> + <iconIdProcess>%aditoprj%/entity/District_entity/iconIdProcess.js</iconIdProcess> <titlePlural></titlePlural> <recordContainer>db</recordContainer> <entityFields> @@ -15,14 +16,12 @@ <entityField> <name>DISTRICT_NAME</name> <title>Name</title> - <groupable v="true" /> <mandatory v="true" /> </entityField> <entityField> <name>DISTRICT_NUMBER</name> <title>{$DISTRICT_NUMBER}</title> <contentType>TEXT</contentType> - <groupable v="true" /> <valueProcess>%aditoprj%/entity/District_entity/entityfields/district_number/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/District_entity/entityfields/district_number/displayValueProcess.js</displayValueProcess> <onValidation>%aditoprj%/entity/District_entity/entityfields/district_number/onValidation.js</onValidation> @@ -38,14 +37,16 @@ <entityField> <name>DISTRICT_STATUS</name> <title>Status</title> - <groupable v="true" /> + <contentType>BOOLEAN</contentType> <mandatory v="true" /> <dropDownProcess>%aditoprj%/entity/District_entity/entityfields/district_status/dropDownProcess.js</dropDownProcess> <selectionMode>SINGLE</selectionMode> + <valueProcess>%aditoprj%/entity/District_entity/entityfields/district_status/valueProcess.js</valueProcess> </entityField> <entityField> <name>PARENTDISTRICT_DISTRICTID</name> <title>{$DISTRICT_PARENT_DISTRICT}</title> + <consumer>ParentDistricts</consumer> <displayValueProcess>%aditoprj%/entity/District_entity/entityfields/parentdistrict_districtid/displayValueProcess.js</displayValueProcess> <onValueChangeTypes> <element>MASK</element> @@ -62,20 +63,17 @@ <entityField> <name>customerCounting</name> <title>Customer counting</title> - <groupable v="true" /> <valueProcess>%aditoprj%/entity/District_entity/entityfields/customercounting/valueProcess.js</valueProcess> </entityField> <entityField> <name>totalTurnover</name> <title>{$DISTRICT_TOTAL_TURNOVER}</title> - <groupable v="true" /> <valueProcess>%aditoprj%/entity/District_entity/entityfields/totalturnover/valueProcess.js</valueProcess> </entityField> <entityField> <name>ISO3</name> <title>Language</title> <consumer>Languages</consumer> - <groupable v="true" /> <displayValueProcess>%aditoprj%/entity/District_entity/entityfields/iso3/displayValueProcess.js</displayValueProcess> </entityField> <entityProvider> @@ -91,6 +89,12 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + <children> + <entityParameter> + <name>ExcludedDistrictIds_param</name> + <expose v="false" /> + </entityParameter> + </children> </entityProvider> <entityConsumer> <name>Languages</name> @@ -128,7 +132,6 @@ </entityField> <entityField> <name>DATE_EDIT</name> - <groupable v="false" /> <valueProcess>%aditoprj%/entity/District_entity/entityfields/date_edit/valueProcess.js</valueProcess> </entityField> <entityConsumer> @@ -206,6 +209,42 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityConsumer> + <name>ParentDistricts</name> + <dependency> + <name>dependency</name> + <entityName>#ENTITY</entityName> + <fieldName>ValidParentDistricts</fieldName> + </dependency> + <children> + <entityParameter> + <name>ExcludedDistrictIds_param</name> + <valueProcess>%aditoprj%/entity/District_entity/entityfields/parentdistricts/children/excludeddistrictids_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityProvider> + <name>ValidParentDistricts</name> + <documentation>%aditoprj%/entity/District_entity/entityfields/validparentdistricts/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>8b0738a4-e4cd-4f9e-8df1-f499046c81bf</name> + <entityName>District_entity</entityName> + <fieldName>ParentDistricts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>DistrictsByContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> + </entityProvider> + <entityParameter> + <name>ExcludedDistrictIds_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> @@ -229,78 +268,86 @@ <dbRecordFieldMapping> <name>DATE_EDIT.value</name> <recordfield>DISTRICT.DATE_EDIT</recordfield> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DATE_NEW.value</name> <recordfield>DISTRICT.DATE_NEW</recordfield> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DISTRICT_FILTER.value</name> <recordfield>DISTRICT.DISTRICT_FILTER</recordfield> - <isLookupFilter v="true" /> + <isFilterable v="false" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DISTRICT_INFO.value</name> <recordfield>DISTRICT.DISTRICT_INFO</recordfield> - <isLookupFilter v="true" /> + <isFilterable v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DISTRICT_NAME.value</name> <recordfield>DISTRICT.DISTRICT_NAME</recordfield> + <isFilterable v="true" /> <isLookupFilter v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DISTRICT_NUMBER.value</name> <recordfield>DISTRICT.DISTRICT_NUMBER</recordfield> + <isFilterable v="true" /> <isLookupFilter v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DISTRICT_STATUS.value</name> <recordfield>DISTRICT.DISTRICT_STATUS</recordfield> - <isLookupFilter v="true" /> + <isFilterable v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DISTRICTID.value</name> <recordfield>DISTRICT.DISTRICTID</recordfield> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ISO3.value</name> <recordfield>DISTRICT.ISO3</recordfield> - <isLookupFilter v="true" /> + <isFilterable v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PARENTDISTRICT_DISTRICTID.value</name> <recordfield>DISTRICT.PARENTDISTRICT_DISTRICTID</recordfield> - <isLookupFilter v="true" /> + <isFilterable v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>USER_EDIT.value</name> <recordfield>DISTRICT.USER_EDIT</recordfield> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>USER_NEW.value</name> <recordfield>DISTRICT.USER_NEW</recordfield> - <isLookupFilter v="true" /> + <isFilterable v="false" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>appliedFilter.value</name> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>customerCounting.value</name> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>parentFilter.value</name> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>totalTurnover.value</name> - <isLookupFilter v="true" /> + <isLookupFilter v="false" /> </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> diff --git a/entity/District_entity/entityfields/district_status/valueProcess.js b/entity/District_entity/entityfields/district_status/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..06be75dc391630efc92dffbff413d7b9fa2100ab --- /dev/null +++ b/entity/District_entity/entityfields/district_status/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string("0"); \ No newline at end of file diff --git a/entity/District_entity/entityfields/parentdistrict/children/excludeddistrictids_param/valueProcess.js b/entity/District_entity/entityfields/parentdistrict/children/excludeddistrictids_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..bbd0a18395ba576ce8b33e4064dc211a92becd04 --- /dev/null +++ b/entity/District_entity/entityfields/parentdistrict/children/excludeddistrictids_param/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); + +var uid = vars.get("$field.DISTRICTID"); +var res = JSON.stringify([uid]); +result.string(res); \ No newline at end of file diff --git a/entity/District_entity/entityfields/parentdistrict_districtid/displayValueProcess.js b/entity/District_entity/entityfields/parentdistrict_districtid/displayValueProcess.js index a90a11a8f75217e38b2801567c29527b5b3b8191..07a7c92ba405f856fdf699a7dbfa94a512025ac7 100644 --- a/entity/District_entity/entityfields/parentdistrict_districtid/displayValueProcess.js +++ b/entity/District_entity/entityfields/parentdistrict_districtid/displayValueProcess.js @@ -1,8 +1,8 @@ +import("Context_lib"); import("system.vars"); import("system.result"); -import("Sql_lib"); var parentDistrictId = vars.get("$field.PARENTDISTRICT_DISTRICTID"); -var parentDistrictName = newSelect("DISTRICT.DISTRICT_NAME").from("DISTRICT").where("DISTRICT.DISTRICTID", parentDistrictId).cell(); +var parentDistrictName = ContextUtils.loadContentTitle("District_entity", parentDistrictId); result.string(parentDistrictName); \ No newline at end of file diff --git a/entity/District_entity/entityfields/parentdistricts/children/excludeddistrictids_param/valueProcess.js b/entity/District_entity/entityfields/parentdistricts/children/excludeddistrictids_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..bbd0a18395ba576ce8b33e4064dc211a92becd04 --- /dev/null +++ b/entity/District_entity/entityfields/parentdistricts/children/excludeddistrictids_param/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); + +var uid = vars.get("$field.DISTRICTID"); +var res = JSON.stringify([uid]); +result.string(res); \ No newline at end of file diff --git a/entity/District_entity/entityfields/totalturnover/valueProcess.js b/entity/District_entity/entityfields/totalturnover/valueProcess.js index d63350d1cb18c577a222613ef77f6dd22f8d36fa..a73247c1abfa2741041c920fcfbfacf2ee0107c2 100644 --- a/entity/District_entity/entityfields/totalturnover/valueProcess.js +++ b/entity/District_entity/entityfields/totalturnover/valueProcess.js @@ -1,27 +1,35 @@ +import("system.text"); +import("Sql_lib"); +import("system.SQLTYPES"); +import("Date_lib"); import("system.logging"); import("system.vars"); import("system.result"); import("system.entities"); import("system.neon"); +import("system.db"); +var districtTurnover; var appliedFilter = vars.get("$field.DISTRICT_FILTER"); -var conf, rows, districtTurnover = 0; - if (appliedFilter) { appliedFilter = JSON.parse(appliedFilter).filter; appliedFilter = JSON.stringify(appliedFilter); - - conf = entities.createConfigForLoadingRows() - .entity("Organisation_entity") - .fields(["TurnoverCurrentYear"]) - .filter(appliedFilter); - - rows = entities.getRows(conf); - - for (i = 0; i < rows.length; i++) { - appliedFilter += Number(rows[i].TurnoverCurrentYear); - } + + districtTurnover = newSelect("sum(NET)") + .from("SALESORDER") + .join("CONTACT", "CONTACT.CONTACTID = SALESORDER.CONTACT_ID") + .join("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID") + .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID") + .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID") + .where("SALESORDER.SALESORDERDATE", DateUtils.getCurrentYear(), SqlBuilder.YEAR_EQUALS(), SQLTYPES.INTEGER) + .and(db.toFilterCondition(appliedFilter, "Organisation_entity")) + .cell(); } +if (districtTurnover) + text.formatDouble(districtTurnover, "#,##0.00"); +else + districtTurnover = "0"; + result.string(districtTurnover); \ No newline at end of file diff --git a/entity/District_entity/entityfields/validparentdistricts/documentation.adoc b/entity/District_entity/entityfields/validparentdistricts/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..6882425fd29087db57588d866d85d4d10963d838 --- /dev/null +++ b/entity/District_entity/entityfields/validparentdistricts/documentation.adoc @@ -0,0 +1 @@ +Provides a list of districts that can be set as parent district for one specific district entry. \ No newline at end of file diff --git a/entity/District_entity/iconIdProcess.js b/entity/District_entity/iconIdProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c0e2f3aee79df633566818ff042f326b00f4ecdd --- /dev/null +++ b/entity/District_entity/iconIdProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string("TEXT:" + (vars.getString("$field.DISTRICT_NAME")).trim()); \ No newline at end of file diff --git a/entity/District_entity/recordcontainers/db/cacheKeyProcess.js b/entity/District_entity/recordcontainers/db/cacheKeyProcess.js index e977dd02e2e0331cc9c24b5a6fda165cdb8746d5..d5c69b8e25a7c6b1288aa4eaad221a6621ed5860 100644 --- a/entity/District_entity/recordcontainers/db/cacheKeyProcess.js +++ b/entity/District_entity/recordcontainers/db/cacheKeyProcess.js @@ -1,9 +1,5 @@ import("CachedRecordContainer_lib"); import("system.result"); - -var cacheKey; - -cacheKey = CachedRecordContainerUtils.getCommonKey("$param.DistrictsByContactId_param"); - +var cacheKey = CachedRecordContainerUtils.getCommonKey("$param.DistrictsByContactId_param", "$param.ExcludedDistrictIds_param"); result.string(cacheKey); \ No newline at end of file diff --git a/entity/District_entity/recordcontainers/db/conditionProcess.js b/entity/District_entity/recordcontainers/db/conditionProcess.js index 481f5dbd2cf800ab317abe600a9717341ae21559..550838ae029373b7934da4637623f0dcfc9505c8 100644 --- a/entity/District_entity/recordcontainers/db/conditionProcess.js +++ b/entity/District_entity/recordcontainers/db/conditionProcess.js @@ -2,9 +2,8 @@ import("system.result"); import("system.vars"); import("Sql_lib"); - var onlyResponsibleParam = vars.get("$param.DistrictsByContactId_param"); - +var cond = newWhere(); if (onlyResponsibleParam) { var responsibleDistricts = newSelect("DISTRICTRESPONSIBLE.DISTRICT_ID") @@ -12,7 +11,15 @@ if (onlyResponsibleParam) .where("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID", onlyResponsibleParam) .arrayColumn(); - var cond = newWhere("DISTRICT.DISTRICTID", responsibleDistricts, SqlBuilder.IN()); - - result.string(cond.toString()); -} \ No newline at end of file + cond.and("DISTRICT.DISTRICTID", responsibleDistricts, SqlBuilder.IN()); +} + + +var excludedDistrictIds = vars.get("$param.ExcludedDistrictIds_param"); +if (excludedDistrictIds) +{ + excludedDistrictIds = JSON.parse(excludedDistrictIds); + cond.andIfSet("DISTRICT.DISTRICTID", excludedDistrictIds, SqlBuilder.NOT_IN()); +} + +result.string(cond.toString()); \ No newline at end of file diff --git a/neonContext/District/District.aod b/neonContext/District/District.aod index f595315a283bb53432ac96e6083e65a450ca5496..78099d98a22fffa01fd478bdfb484a17398e70ab 100644 --- a/neonContext/District/District.aod +++ b/neonContext/District/District.aod @@ -8,6 +8,7 @@ <filterView>DistrictFilter_view</filterView> <editView>DistrictEdit_view</editView> <previewView>DistrictPreview_view</previewView> + <lookupView>DistrictFilter_view</lookupView> <entity>District_entity</entity> <references> <neonViewReference> diff --git a/neonView/DistrictFilter_view/DistrictFilter_view.aod b/neonView/DistrictFilter_view/DistrictFilter_view.aod index d9ab4d5e1e5a07d9a54f2e13504089ab9f994681..55eac41d3591ccfe862d13dd14d7dba7229bf7e2 100644 --- a/neonView/DistrictFilter_view/DistrictFilter_view.aod +++ b/neonView/DistrictFilter_view/DistrictFilter_view.aod @@ -15,9 +15,10 @@ <hideContentSearch v="false" /> <showChildrenCount v="false" /> <entityField>#ENTITY</entityField> - <linkedColumns /> - <defaultGroupFields /> - <fixedFilterFields /> + <linkedColumns> + <element>DISTRICT_NAME</element> + <element>DISTRICT_NUMBER</element> + </linkedColumns> <columns> <neonTreeTableColumn> <name>9f8e99dc-cfb3-4038-b949-27571f787db2</name> diff --git a/neonView/OrganisationMain_view/OrganisationMain_view.aod b/neonView/OrganisationMain_view/OrganisationMain_view.aod index 24ea1854e8e08fdbfd35e58001e1c7d6787ecb26..f02268bc9b94a2cfe6a345b1665156e2a754699e 100644 --- a/neonView/OrganisationMain_view/OrganisationMain_view.aod +++ b/neonView/OrganisationMain_view/OrganisationMain_view.aod @@ -60,6 +60,11 @@ <entityField>Documents</entityField> <view>DocumentFilter_view</view> </neonViewReference> + <neonViewReference> + <name>db26269b-32ae-47da-ba22-41e0a5952103</name> + <entityField>#ENTITY</entityField> + <view>OrganisationDistrictResponsibles_view</view> + </neonViewReference> <neonViewReference> <name>0686ad7e-8dc7-4b10-9df2-bf066ae3a310</name> <entityField>LogHistories</entityField> @@ -70,10 +75,5 @@ <entityField>SelfDuplicatesUncached</entityField> <view>OrganisationFilter_view</view> </neonViewReference> - <neonViewReference> - <name>db26269b-32ae-47da-ba22-41e0a5952103</name> - <entityField>#ENTITY</entityField> - <view>OrganisationDistrictResponsibles_view</view> - </neonViewReference> </children> </neonView>