From 5a3349bac7106d7f0e9535006681adc1210f2671 Mon Sep 17 00:00:00 2001
From: "a.schindlbeck" <a.schindlbeck@adito.de>
Date: Tue, 29 Sep 2020 15:03:48 +0200
Subject: [PATCH] #1063997 Favorites: Filter Product/Price by Favorites +
 Refactor

---
 .../favorite_filter/filterValuesProcess.js       |  2 +-
 .../favorite_filter/filterValuesProcess.js       |  2 +-
 .../favoriten_filter/filterValuesProcess.js      |  2 +-
 .../favorits_filter/filterValuesProcess.js       |  2 +-
 entity/Product_entity/Product_entity.aod         |  9 +++++++++
 .../favorite_filter/filterConditionProcess.js    | 11 +++++++++++
 .../favorite_filter/filterValuesProcess.js       |  5 +++++
 .../Productprice_entity/Productprice_entity.aod  | 16 +++++++++++++++-
 .../productprice_objecttype/valueProcess.js      |  3 +++
 .../favoritefilter/filterConditionProcess.js     | 11 +++++++++++
 .../favoritefilter/filterValuesProcess.js        |  4 ++++
 .../ProductpricePreview_view.aod                 |  6 ++++++
 process/Favorites_lib/process.js                 |  2 +-
 13 files changed, 69 insertions(+), 6 deletions(-)
 create mode 100644 entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
 create mode 100644 entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
 create mode 100644 entity/Productprice_entity/entityfields/productprice_objecttype/valueProcess.js
 create mode 100644 entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterConditionProcess.js
 create mode 100644 entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js

diff --git a/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
index 59afaeee93..371a5b567d 100644
--- a/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
+++ b/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
@@ -1,5 +1,5 @@
 import("system.result");
 import("Favorites_lib");
 
-result.object(FavoritesUtil.getUserNotificationGroups());
+result.object(FavoritesUtil.getUserFavoriteGroups());
 
diff --git a/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
index 59afaeee93..371a5b567d 100644
--- a/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
+++ b/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
@@ -1,5 +1,5 @@
 import("system.result");
 import("Favorites_lib");
 
-result.object(FavoritesUtil.getUserNotificationGroups());
+result.object(FavoritesUtil.getUserFavoriteGroups());
 
diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/favoriten_filter/filterValuesProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/favoriten_filter/filterValuesProcess.js
index 59afaeee93..371a5b567d 100644
--- a/entity/Organisation_entity/recordcontainers/db/filterextensions/favoriten_filter/filterValuesProcess.js
+++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/favoriten_filter/filterValuesProcess.js
@@ -1,5 +1,5 @@
 import("system.result");
 import("Favorites_lib");
 
-result.object(FavoritesUtil.getUserNotificationGroups());
+result.object(FavoritesUtil.getUserFavoriteGroups());
 
diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/favorits_filter/filterValuesProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/favorits_filter/filterValuesProcess.js
index abda1bae0c..0ebab765b8 100644
--- a/entity/Person_entity/recordcontainers/db/filterextensions/favorits_filter/filterValuesProcess.js
+++ b/entity/Person_entity/recordcontainers/db/filterextensions/favorits_filter/filterValuesProcess.js
@@ -1,4 +1,4 @@
 import("system.result");
 import("Favorites_lib");
 
-result.object(FavoritesUtil.getUserNotificationGroups());
\ No newline at end of file
+result.object(FavoritesUtil.getUserFavoriteGroups());
\ No newline at end of file
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index 01c9b42d47..5fbf1ca2f5 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -614,6 +614,15 @@
           <filterConditionProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
           <filtertype>BASIC</filtertype>
         </filterExtensionSet>
+        <filterExtension>
+          <name>Favorite_filter</name>
+          <title>Favoritegroup</title>
+          <contentType>TEXT</contentType>
+          <filterValuesProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js</filterValuesProcess>
+          <filterConditionProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js</filterConditionProcess>
+          <groupedRecordField></groupedRecordField>
+          <filtertype>BASIC</filtertype>
+        </filterExtension>
       </filterExtensions>
     </dbRecordContainer>
     <indexRecordContainer>
diff --git a/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js b/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
new file mode 100644
index 0000000000..2db1e9e36c
--- /dev/null
+++ b/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
@@ -0,0 +1,11 @@
+import("Favorites_lib");
+import("system.result");
+import("Sql_lib");
+
+var favoFilterCond = newWhere();
+var rowIds = FavoritesUtil.getRowIdsOfFavoriteGroup();
+
+for(i = 0; i < rowIds.length; i++)
+    favoFilterCond.or("PRODUCT.PRODUCTID", rowIds[i], SqlBuilder.EQUAL());
+
+result.string(favoFilterCond.toString());
\ No newline at end of file
diff --git a/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
new file mode 100644
index 0000000000..371a5b567d
--- /dev/null
+++ b/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Favorites_lib");
+
+result.object(FavoritesUtil.getUserFavoriteGroups());
+
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index 88bf091386..61bf5454ab 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -9,7 +9,7 @@
     <element>Product_entity</element>
   </siblings>
   <onValidation>%aditoprj%/entity/Productprice_entity/onValidation.js</onValidation>
-  <useFavorites v="false" />
+  <useFavorites v="true" />
   <titlePlural>Prices</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -234,6 +234,10 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>PRODUCTPRICE_OBJECTTYPE</name>
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/productprice_objecttype/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -329,6 +333,16 @@
           <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <filterExtensions>
+        <filterExtension>
+          <name>FavoriteFilter</name>
+          <title>Favoritegroup</title>
+          <contentType>TEXT</contentType>
+          <filterValuesProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js</filterValuesProcess>
+          <filterConditionProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterConditionProcess.js</filterConditionProcess>
+          <filtertype>BASIC</filtertype>
+        </filterExtension>
+      </filterExtensions>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Productprice_entity/entityfields/productprice_objecttype/valueProcess.js b/entity/Productprice_entity/entityfields/productprice_objecttype/valueProcess.js
new file mode 100644
index 0000000000..4296d2e68b
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/productprice_objecttype/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("Productprice");
\ No newline at end of file
diff --git a/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterConditionProcess.js b/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterConditionProcess.js
new file mode 100644
index 0000000000..c657ebe1ac
--- /dev/null
+++ b/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterConditionProcess.js
@@ -0,0 +1,11 @@
+import("Favorites_lib");
+import("system.result");
+import("Sql_lib");
+
+var favoFilterCond = newWhere();
+var rowIds = FavoritesUtil.getRowIdsOfFavoriteGroup();
+
+for(i = 0; i < rowIds.length; i++)
+    favoFilterCond.or("PRODUCTPRICE.PRODUCTPRICEID", rowIds[i], SqlBuilder.EQUAL());
+
+result.string(favoFilterCond.toString());
\ No newline at end of file
diff --git a/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js b/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js
new file mode 100644
index 0000000000..0ebab765b8
--- /dev/null
+++ b/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Favorites_lib");
+
+result.object(FavoritesUtil.getUserFavoriteGroups());
\ No newline at end of file
diff --git a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod
index bf1fad13d5..bb51611211 100644
--- a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod
+++ b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod
@@ -16,6 +16,12 @@
       <subtitleField>PRODUCT_ID</subtitleField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
+    <favoriteViewTemplate>
+      <name>Favorites</name>
+      <objectType>PRODUCTPRICE_OBJECTTYPE</objectType>
+      <rowId>PRODUCTPRICEID</rowId>
+      <entityField>#ENTITY</entityField>
+    </favoriteViewTemplate>
     <genericViewTemplate>
       <name>PriceInfo</name>
       <showDrawer v="true" />
diff --git a/process/Favorites_lib/process.js b/process/Favorites_lib/process.js
index 7d1efcc674..04ae6f9b9e 100644
--- a/process/Favorites_lib/process.js
+++ b/process/Favorites_lib/process.js
@@ -7,7 +7,7 @@ import("Sql_lib");
 
 function FavoritesUtil(){}
 
-FavoritesUtil.getUserNotificationGroups = function()
+FavoritesUtil.getUserFavoriteGroups = function()
 {
     var allTypes = [];
     var alias = favorite.getFavoritesAlias();
-- 
GitLab