From e4335c90c53c7236faa6cab116c5f8472a5985b3 Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Mon, 29 Apr 2019 10:57:26 +0200 Subject: [PATCH] address: do not validate mandatory if fields are empty --- entity/Address_entity/Address_entity.aod | 9 +++----- .../entityfields/address/mandatoryProcess.js | 13 +++++++++++- .../entityfields/city/mandatoryProcess.js | 13 +++++++++++- .../contact_id/mandatoryProcess.js | 15 +++++++++++++ .../entityfields/country/mandatoryProcess.js | 15 +++++++++++++ .../entityfields/state/mandatoryProcess.js | 13 +++++++++++- .../entityfields/zip/mandatoryProcess.js | 13 +++++++++++- process/Entity_lib/process.js | 21 +++++++++++++++++++ 8 files changed, 102 insertions(+), 10 deletions(-) create mode 100644 entity/Address_entity/entityfields/contact_id/mandatoryProcess.js create mode 100644 entity/Address_entity/entityfields/country/mandatoryProcess.js diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod index 511c4edff3..2855ca7414 100644 --- a/entity/Address_entity/Address_entity.aod +++ b/entity/Address_entity/Address_entity.aod @@ -28,6 +28,7 @@ <documentation>%aditoprj%/entity/Address_entity/entityfields/addr_type/documentation.adoc</documentation> <title>Addresstype</title> <consumer>KeywordAddressTypes</consumer> + <valueProcess>%aditoprj%/entity/Address_entity/entityfields/addr_type/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Address_entity/entityfields/addr_type/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -49,6 +50,7 @@ <title>Country</title> <consumer>Countries</consumer> <mandatory v="true" /> + <mandatoryProcess>%aditoprj%/entity/Address_entity/entityfields/country/mandatoryProcess.js</mandatoryProcess> <valueProcess>%aditoprj%/entity/Address_entity/entityfields/country/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Address_entity/entityfields/country/displayValueProcess.js</displayValueProcess> </entityField> @@ -63,6 +65,7 @@ <entityField> <name>CONTACT_ID</name> <mandatory v="true" /> + <mandatoryProcess>%aditoprj%/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js</mandatoryProcess> <valueProcess>%aditoprj%/entity/Address_entity/entityfields/contact_id/valueProcess.js</valueProcess> </entityField> <entityField> @@ -337,12 +340,6 @@ </entityParameter> </children> </entityConsumer> - <entityParameter> - <name>ReloadWorkaround_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <description>PARAMETER</description> - </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Address_entity/entityfields/address/mandatoryProcess.js b/entity/Address_entity/entityfields/address/mandatoryProcess.js index e1e8e5fe1e..e3fe2aaca0 100644 --- a/entity/Address_entity/entityfields/address/mandatoryProcess.js +++ b/entity/Address_entity/entityfields/address/mandatoryProcess.js @@ -1,4 +1,15 @@ +import("Entity_lib"); import("system.result"); import("AddressEntity_lib"); -result.string(AddressEntityValidation.isMandatoryField()); \ No newline at end of file +result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([ + "$field.ADDR_TYPE", + "$field.ADDRESS", + "$field.BUILDINGNO", + "$field.ZIP", + "$field.CITY", + "$field.COUNTRY", + "$field.STATE", + "$field.REGION", + "$field.ADDRIDENTIFIER" + ], AddressEntityValidation.isMandatoryField())); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/city/mandatoryProcess.js b/entity/Address_entity/entityfields/city/mandatoryProcess.js index e1e8e5fe1e..e3fe2aaca0 100644 --- a/entity/Address_entity/entityfields/city/mandatoryProcess.js +++ b/entity/Address_entity/entityfields/city/mandatoryProcess.js @@ -1,4 +1,15 @@ +import("Entity_lib"); import("system.result"); import("AddressEntity_lib"); -result.string(AddressEntityValidation.isMandatoryField()); \ No newline at end of file +result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([ + "$field.ADDR_TYPE", + "$field.ADDRESS", + "$field.BUILDINGNO", + "$field.ZIP", + "$field.CITY", + "$field.COUNTRY", + "$field.STATE", + "$field.REGION", + "$field.ADDRIDENTIFIER" + ], AddressEntityValidation.isMandatoryField())); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js b/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js new file mode 100644 index 0000000000..9f96f58a0f --- /dev/null +++ b/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js @@ -0,0 +1,15 @@ +import("Entity_lib"); +import("system.result"); +import("AddressEntity_lib"); + +result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([ + "$field.ADDR_TYPE", + "$field.ADDRESS", + "$field.BUILDINGNO", + "$field.ZIP", + "$field.CITY", + "$field.COUNTRY", + "$field.STATE", + "$field.REGION", + "$field.ADDRIDENTIFIER" + ], true)); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/country/mandatoryProcess.js b/entity/Address_entity/entityfields/country/mandatoryProcess.js new file mode 100644 index 0000000000..9f96f58a0f --- /dev/null +++ b/entity/Address_entity/entityfields/country/mandatoryProcess.js @@ -0,0 +1,15 @@ +import("Entity_lib"); +import("system.result"); +import("AddressEntity_lib"); + +result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([ + "$field.ADDR_TYPE", + "$field.ADDRESS", + "$field.BUILDINGNO", + "$field.ZIP", + "$field.CITY", + "$field.COUNTRY", + "$field.STATE", + "$field.REGION", + "$field.ADDRIDENTIFIER" + ], true)); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/state/mandatoryProcess.js b/entity/Address_entity/entityfields/state/mandatoryProcess.js index e1e8e5fe1e..e3fe2aaca0 100644 --- a/entity/Address_entity/entityfields/state/mandatoryProcess.js +++ b/entity/Address_entity/entityfields/state/mandatoryProcess.js @@ -1,4 +1,15 @@ +import("Entity_lib"); import("system.result"); import("AddressEntity_lib"); -result.string(AddressEntityValidation.isMandatoryField()); \ No newline at end of file +result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([ + "$field.ADDR_TYPE", + "$field.ADDRESS", + "$field.BUILDINGNO", + "$field.ZIP", + "$field.CITY", + "$field.COUNTRY", + "$field.STATE", + "$field.REGION", + "$field.ADDRIDENTIFIER" + ], AddressEntityValidation.isMandatoryField())); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/zip/mandatoryProcess.js b/entity/Address_entity/entityfields/zip/mandatoryProcess.js index d12bb3e05d..e3fe2aaca0 100644 --- a/entity/Address_entity/entityfields/zip/mandatoryProcess.js +++ b/entity/Address_entity/entityfields/zip/mandatoryProcess.js @@ -1,4 +1,15 @@ +import("Entity_lib"); import("system.result"); import("AddressEntity_lib"); -result.string(AddressEntityValidation.isMandatoryField()); +result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([ + "$field.ADDR_TYPE", + "$field.ADDRESS", + "$field.BUILDINGNO", + "$field.ZIP", + "$field.CITY", + "$field.COUNTRY", + "$field.STATE", + "$field.REGION", + "$field.ADDRIDENTIFIER" + ], AddressEntityValidation.isMandatoryField())); \ No newline at end of file diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js index 6db3b2deba..5c7dfbf781 100644 --- a/process/Entity_lib/process.js +++ b/process/Entity_lib/process.js @@ -1,3 +1,4 @@ +import("system.logging"); import("system.result"); import("system.neon"); import("system.vars"); @@ -47,6 +48,26 @@ ProcessHandlingUtils.initialParamToResult = function(pParamVarName) } +ProcessHandlingUtils.getMandatoryIgnoreAllEmpty = function(pFields, pIsMandatory) +{ + var allEmpty = true; + logging.log("-------------") + pFields.forEach(function(pField) { + logging.log(pField + " " + vars.getString(pField)) + if (vars.getString(pField)) + { + + allEmpty = false; + } + }); + logging.log(allEmpty) + logging.log(pIsMandatory) + logging.log(!allEmpty && pIsMandatory) + + logging.log("-------------") + return !allEmpty && pIsMandatory; +} + /** * Workaround for detecting field changes of fields not managed by record containers. * Should be fixed in the future: Ticket 1030023 -- GitLab