[ofbiz-framework] branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed created (now 2ff8190)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
29 messages Options
12
Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 27/28: Improved: instructions to upgrade due to datamodel changes (OFBIZ-11719) (#162)

jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 9c540826486499ea1d0a206acbf2af424078ead3
Author: Pierre Smits <[hidden email]>
AuthorDate: Tue May 26 13:51:05 2020 +0200

    Improved: instructions to upgrade due to datamodel changes (OFBIZ-11719) (#162)
---
 applications/datamodel/DATAMODEL_CHANGES.adoc | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/applications/datamodel/DATAMODEL_CHANGES.adoc b/applications/datamodel/DATAMODEL_CHANGES.adoc
index ca21746..44e017f 100644
--- a/applications/datamodel/DATAMODEL_CHANGES.adoc
+++ b/applications/datamodel/DATAMODEL_CHANGES.adoc
@@ -43,7 +43,18 @@ The following file contains information about the data model changes in the Apac
 |Entity                 |Field   |Action |IsPK |Revision
 | GlXbrlClass | parentGlXbrlClassId | Added | No | 36a123a
 |=======================================================
+If in the list above fields are mentioned where 'IsPK' = yes, we advice to follow steps below for a successful upgrade:
 
+. Stop your OFBiz implementation
+. Go to the entity definition in the appropriate entitymodel.xml file
+. Disable temporarily the prim-key reference of the added field, and save the file
+. Restart the OFBiz implementation
+. Check with your RDBMS client that the new field is present in the table
+. Add values for the field in the table (if appropriate)
+. Stop the OFBiz implementation
+. Go back to the definition in the appropriate entitymodel.xml file
+. Enable the temporary disabled prim-key reference of the added field, and save the file
+. Check with your RDBMS client that the new field is part of the primary key defintion of the table
 
 === Migration Scripts
 1.  Migration service migrateProductPromoCodeEmail is implemented to migrate the

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 20/28: Improved: Added UI labels for success/error messages for humanres, marketing, order component. (OFBIZ-7696) Thanks Deepak Nigam for reporting and Sourabh Punyani for the patch.

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 8a290d3a0e4c3b981cdc33a81d06a6da4c1017b6
Author: Suraj Khurana <[hidden email]>
AuthorDate: Sun May 24 13:03:03 2020 +0530

    Improved: Added UI labels for success/error messages for humanres, marketing, order component.
    (OFBIZ-7696)
    Thanks Deepak Nigam for reporting and Sourabh Punyani for the patch.
---
 applications/humanres/config/HumanResErrorUiLabels.xml       |  9 +++++++++
 applications/humanres/minilang/HumanResEvents.xml            |  6 +++---
 applications/marketing/config/MarketingUiLabels.xml          |  9 +++++++++
 .../minilang/marketing/contact/ContactListServices.xml       | 12 +++++++++---
 applications/order/config/OrderErrorUiLabels.xml             |  3 +++
 applications/order/minilang/order/OrderServices.xml          |  2 +-
 6 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/applications/humanres/config/HumanResErrorUiLabels.xml b/applications/humanres/config/HumanResErrorUiLabels.xml
index f521936..7829a38 100644
--- a/applications/humanres/config/HumanResErrorUiLabels.xml
+++ b/applications/humanres/config/HumanResErrorUiLabels.xml
@@ -51,4 +51,13 @@
     <property key="HRRequiredFieldMissingTrainingClassTypeId">
         <value xml:lang="en">Required Field Missing : Training Class Type Id.</value>
     </property>
+    <property key="HumanResHolidayNameMissing">
+        <value xml:lang="en">The Holiday Name is missing.</value>
+    </property>
+    <property key="HumanResFromDateMissing">
+        <value xml:lang="en">The FromDate is missing</value>
+    </property>
+    <property key="HumanResFromDateAlreadyExist">
+        <value xml:lang="en">This FromDate : ${parameters.estimatedStartDate} already exist.</value>
+    </property>
 </resource>
\ No newline at end of file
diff --git a/applications/humanres/minilang/HumanResEvents.xml b/applications/humanres/minilang/HumanResEvents.xml
index 21ae3c9..6d6187e 100644
--- a/applications/humanres/minilang/HumanResEvents.xml
+++ b/applications/humanres/minilang/HumanResEvents.xml
@@ -57,13 +57,13 @@
     <simple-method method-name="createPublicHoliday" short-description="Create Public Holiday">
         <if-empty field="parameters.workEffortName">            
             <add-error>
-                <fail-message message="The Holiday Name is missing."/>
+                <fail-property resource="HumanResErrorUiLabels" property="HumanResHolidayNameMissing"/>
             </add-error>
             <check-errors/>
         </if-empty>    
         <if-empty field="parameters.estimatedStartDate">
             <add-error>
-                <fail-message message="The FromDate is missing"/>
+                <fail-property resource="HumanResErrorUiLabels" property="HumanResFromDateMissing"/>
             </add-error>
             <check-errors/>
         </if-empty>
@@ -82,7 +82,7 @@
             </call-service>
             <else>
                 <add-error>
-                    <fail-message message="This FromDate : ${parameters.estimatedStartDate} already exist."/>
+                    <fail-property resource="HumanResErrorUiLabels" property="HumanResFromDateAlreadyExist"/>
                 </add-error>
                 <check-errors/>
             </else>
diff --git a/applications/marketing/config/MarketingUiLabels.xml b/applications/marketing/config/MarketingUiLabels.xml
index db4c218..937c473 100644
--- a/applications/marketing/config/MarketingUiLabels.xml
+++ b/applications/marketing/config/MarketingUiLabels.xml
@@ -856,6 +856,15 @@
         <value xml:lang="de">Der bevorzugte Kontaktmechanismus für Party [${partyId}] konnte nicht gefunden werden</value>
         <value xml:lang="en">Could not find the preferred contact mechanism for party [${parameters.partyId}]</value>
     </property>
+    <property key="MarketingContactListInvalidVerifyCode">
+        <value xml:lang="en">Invalid verify code for the ${contactList.contactListName}</value>
+    </property>
+    <property key="MarketingContactListAnotherEmailNotExist">
+        <value xml:lang="en">The email address (${parameters.email}) does not have the Other Email Address as contact purpose</value>
+    </property>
+    <property key="MarketingContactListPermissionError">
+        <value xml:lang="en">Security Error: to run sendContactListPartyVerifyEmail you must have the MARKETING_VIEW or MARKETING_ADMIN permissions</value>
+    </property>
     <property key="MarketingContactMechNotRightForContactList">
         <value xml:lang="de">Der bevorzugte Kontaktmechanismus [${preferredContactMechType.description}] ist vom falschen Typ für die Liste [${listContactMechType.description}].</value>
         <value xml:lang="en">The preferred contact mechanism [${preferredContactMechType.description}] was not of the right type for the list [${listContactMechType.description}].</value>
diff --git a/applications/marketing/minilang/marketing/contact/ContactListServices.xml b/applications/marketing/minilang/marketing/contact/ContactListServices.xml
index 5dac862..0bb7117 100644
--- a/applications/marketing/minilang/marketing/contact/ContactListServices.xml
+++ b/applications/marketing/minilang/marketing/contact/ContactListServices.xml
@@ -172,7 +172,9 @@ under the License.
             <set field="updateContactListPartyMap.baseLocation" from-field="parameters.baseLocation"/>
             <call-service service-name="updateContactListParty" in-map-name="updateContactListPartyMap"/>
             <else>
-                <add-error><fail-message message="Invalid verify code for the ${contactList.contactListName}"/></add-error>
+                <add-error>
+                    <fail-property resource="MarketingUiLabels.xml" property="MarketingContactListInvalidVerifyCode"/>
+                </add-error>
                 <check-errors/>
             </else>
         </if-not-empty>
@@ -226,7 +228,9 @@ under the License.
                     <set field="updateContactListPartyMap.baseLocation" from-field="parameters.baseLocation"/>
                     <call-service service-name="updateContactListParty" in-map-name="updateContactListPartyMap"/>
                     <else>
-                        <add-error><fail-message message="The email address (${parameters.email}) does not have the Other Email Address as contact purpose."/></add-error>
+                        <add-error>
+                            <fail-property resource="MarketingUiLabels.xml" property="MarketingContactListAnotherEmailNotExist"/>
+                        </add-error>
                         <check-errors/>
                     </else>
                 </if-not-empty>
@@ -545,7 +549,9 @@ under the License.
                     <not><if-has-permission permission="MARKETING" action="_VIEW"/></not>
                 </and>
             </condition>
-            <then><add-error><fail-message message="Security Error: to run sendContactListPartyVerifyEmail you must have the MARKETING_VIEW or MARKETING_ADMIN permissions."/></add-error></then>
+            <then><add-error>
+                <fail-property resource="MarketingUiLabels.xml" property="MarketingContactListPermissionError"/>
+            </add-error></then>
         </if>
         <check-errors/>
 
diff --git a/applications/order/config/OrderErrorUiLabels.xml b/applications/order/config/OrderErrorUiLabels.xml
index d093fef..941e334 100644
--- a/applications/order/config/OrderErrorUiLabels.xml
+++ b/applications/order/config/OrderErrorUiLabels.xml
@@ -4570,6 +4570,9 @@
         <value xml:lang="zh">服务没有执行</value>
         <value xml:lang="zh-TW">服務沒有執行</value>
     </property>
+    <property key="OrderServiceOrderItemShipGroupAssocNotExist">
+        <value xml:lang="en">The orderItemShipGroupAssoc qualified by orderId=${parameters.orderId} orderItemSeqId=${parameters.orderItemSeqId} shipGroupSeqId=${parameters.fromGroupIndex} does not exist</value>
+    </property>
     <property key="OrderSetCurrencyError">
         <value xml:lang="ar">حدد خطأ العملة : </value>
         <value xml:lang="de">Fehler beim Auswählen der Währung : </value>
diff --git a/applications/order/minilang/order/OrderServices.xml b/applications/order/minilang/order/OrderServices.xml
index f318825..6906b73 100644
--- a/applications/order/minilang/order/OrderServices.xml
+++ b/applications/order/minilang/order/OrderServices.xml
@@ -1300,7 +1300,7 @@ under the License.
         </entity-one>
         <if-empty field="orderItemShipGroupAssoc">
             <add-error>
-                <fail-message message="The orderItemShipGroupAssoc qualified by orderId=${parameters.orderId} orderItemSeqId=${parameters.orderItemSeqId} shipGroupSeqId=${parameters.fromGroupIndex} does not exist"/>
+                <fail-property resource="OrderErrorUiLabels" property="OrderServiceOrderItemShipGroupAssocNotExist"/>
             </add-error>
         </if-empty>
         <check-errors/>

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 21/28: Improved: Converted createDownloadContent, updateDownloadContent services from mini-lang to groovy. (OFBIZ-11372)(OFBIZ-11373) Thanks Devanshu Vyas for reporting, Harman Kaur and Rahul for initial patch, Pawan for review.

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 0caf66d514bafd5d3d2eacde2bc68ea439aa7f47
Author: Suraj Khurana <[hidden email]>
AuthorDate: Mon May 25 13:37:16 2020 +0530

    Improved: Converted createDownloadContent,updateDownloadContent services from mini-lang to groovy.
    (OFBIZ-11372)(OFBIZ-11373)
    Thanks Devanshu Vyas for reporting, Harman Kaur and Rahul for initial patch, Pawan for review.
---
 .../groovyScripts/content/ContentServices.groovy     | 20 +++++++++++++++++++-
 .../content/minilang/content/ContentServices.xml     | 19 -------------------
 applications/content/servicedef/services.xml         |  4 ++--
 3 files changed, 21 insertions(+), 22 deletions(-)

diff --git a/applications/content/groovyScripts/content/ContentServices.groovy b/applications/content/groovyScripts/content/ContentServices.groovy
index fef62e4..c9680dd 100644
--- a/applications/content/groovyScripts/content/ContentServices.groovy
+++ b/applications/content/groovyScripts/content/ContentServices.groovy
@@ -18,7 +18,7 @@
  */
 
 import java.sql.Timestamp
-
+
 import org.apache.ofbiz.common.UrlServletHelper
 import org.apache.ofbiz.entity.condition.EntityCondition
 import org.apache.ofbiz.entity.condition.EntityOperator
@@ -340,4 +340,22 @@ def setContentStatus() {
         return failure("No Content is not available in the system with content ID - " + parameters.contentId)
     }
     return resultMap
+}
+def createDownloadContent() {
+    Map serviceResult = success()
+    result = runService("createOtherDataResource", [dataResourceContent : parameters.file])
+    if (ServiceUtil.isError(result)) return result
+    Map serviceCtx = dispatcher.dispatchContext.makeValidContext("createContent", ModelService.IN_PARAM, parameters)
+    serviceCtx.dataResourceId = result.dataResourceId
+    result = runService("createContent", serviceCtx)
+    if (ServiceUtil.isError(result)) return result
+    serviceResult.contentId = result.contentId
+    return serviceResult;
+}
+def updateDownloadContent() {
+    Map result = success()
+    if(parameters.fileDataResourceId) {
+        result = runService("updateOtherDataResource", [dataResourceId: parameters.fileDataResourceId, dataResourceContent: parameters.file])
+    }
+    return result
 }
\ No newline at end of file
diff --git a/applications/content/minilang/content/ContentServices.xml b/applications/content/minilang/content/ContentServices.xml
index d920e1d..3ff187f 100644
--- a/applications/content/minilang/content/ContentServices.xml
+++ b/applications/content/minilang/content/ContentServices.xml
@@ -209,25 +209,6 @@
 
         <field-to-result field="createBodyAssoc.contentId" result-name="contentId"/>
     </simple-method>
-
-    <simple-method method-name="createDownloadContent" short-description="Create Download as Content">
-        <set-service-fields service-name="createContent" map="parameters" to-map="createDownloadContent"/>
-        <set from-field="parameters.file" field="createDownload.dataResourceContent"/>
-        <call-service service-name="createOtherDataResource" in-map-name="createDownload">
-            <result-to-field result-name="dataResourceId" field="createDownloadContent.dataResourceId"/>
-        </call-service>
-        <call-service service-name="createContent" in-map-name="createDownloadContent">
-            <result-to-result result-name="contentId"/>
-        </call-service>
-    </simple-method>
-    <simple-method method-name="updateDownloadContent" short-description="Update Download Content">
-        <if-not-empty field="parameters.fileDataResourceId">
-            <set from-field="parameters.fileDataResourceId" field="updateFile.dataResourceId"/>
-            <set from-field="parameters.file" field="updateFile.dataResourceContent"/>
-            <call-service service-name="updateOtherDataResource" in-map-name="updateFile"/>
-        </if-not-empty>
-    </simple-method>
-
     <simple-method method-name="createSimpleTextContent" short-description="Create Simple Text Content">
         <set-service-fields service-name="createContent" map="parameters" to-map="createSimpleTextContent"/>
         <set value="DOCUMENT" field="createSimpleTextContent.contentTypeId"/>
diff --git a/applications/content/servicedef/services.xml b/applications/content/servicedef/services.xml
index 43fede2..71a6b6c 100644
--- a/applications/content/servicedef/services.xml
+++ b/applications/content/servicedef/services.xml
@@ -143,7 +143,7 @@
         <attribute name="htmlBody" type="String" mode="IN" optional="true" allow-html="any"/>
     </service>
 
-    <service name="createDownloadContent" engine="simple" location="component://content/minilang/content/ContentServices.xml" invoke="createDownloadContent">
+    <service name="createDownloadContent" engine="simple" location="component://content/groovyScripts/content/ContentServices.groovy" invoke="createDownloadContent">
         <permission-service service-name="contentManagerPermission" main-action="CREATE"/>
         <auto-attributes mode="IN" entity-name="Content" optional="true"/>
         <attribute name="file" type="String" mode="IN" optional="false">
@@ -153,7 +153,7 @@
         </attribute>
         <override name="contentId" mode="INOUT"/>
     </service>
-    <service name="updateDownloadContent" engine="simple" location="component://content/minilang/content/ContentServices.xml" invoke="updateDownloadContent">
+    <service name="updateDownloadContent" engine="simple" location="component://content/groovyScripts/content/ContentServices.groovy" invoke="updateDownloadContent">
         <permission-service service-name="contentManagerPermission" main-action="UPDATE"/>
         <attribute name="fileDataResourceId" type="String" mode="IN" optional="true"/>
         <attribute name="file" type="String" mode="IN" optional="true"/>

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 22/28: Improved: downgrades tasks.checkstyleMain.maxErrors to stop failures in Buildbot

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 260ae0fb4f65c5c1d28db388658c6f10c290bcb6
Author: Jacques Le Roux <[hidden email]>
AuthorDate: Sun May 24 12:37:41 2020 +0200

    Improved: downgrades tasks.checkstyleMain.maxErrors to stop failures in Buildbot
---
 build.gradle | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.gradle b/build.gradle
index ebbbce1..e6ef484 100644
--- a/build.gradle
+++ b/build.gradle
@@ -286,7 +286,7 @@ checkstyle {
     // the sum of errors found last time it was changed after using the
     // ‘checkstyle’ tool present in the framework and in the official
     // plugins.
-    tasks.checkstyleMain.maxErrors = 37096
+    tasks.checkstyleMain.maxErrors = 37101
     // Currently there are a lot of errors so we need to temporarily
     // hide them to avoid polluting the terminal output.
     showViolations = false

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 25/28: Fixed: organisation tree in humanres doesn't show person names (OFBIZ-11677) (#121)

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 4f07148ed0fe5fd566f97259d1f2d9e735dc7b10
Author: Pierre Smits <[hidden email]>
AuthorDate: Mon May 25 16:12:16 2020 +0200

    Fixed: organisation tree in humanres doesn't show person names (OFBIZ-11677) (#121)
   
    * Fixed: Tree on main page of the humanres component doesn't show names of persons
   
    (OFBIZ-11677)
   
    When parties are assigned to employee positions their names aren't shown in the tree
    fixed: the function that retrieves the person record of the assigned party was using
    the wrong variable in the query, resulting in a null being returned. Corrected the variable
    added/improved: retrieval of the middleName value of the person record, added it to the title
    improved: ordering of the names making up the title.
    improved: applying proper case to variable names
   
    * Fixed: Tree on main page of the humanres component doesn't show names of persons
   
    (OFBIZ-11677)
   
    invoking PartyHelper.getPartyName instead of custom code
    code clean-up
   
    Thanks to Pawan Verma for the review and the suggestion
---
 .../org/apache/ofbiz/humanres/HumanResEvents.java  | 114 ++++-----------------
 1 file changed, 20 insertions(+), 94 deletions(-)

diff --git a/applications/humanres/src/main/java/org/apache/ofbiz/humanres/HumanResEvents.java b/applications/humanres/src/main/java/org/apache/ofbiz/humanres/HumanResEvents.java
index 610babf..3d58a87 100644
--- a/applications/humanres/src/main/java/org/apache/ofbiz/humanres/HumanResEvents.java
+++ b/applications/humanres/src/main/java/org/apache/ofbiz/humanres/HumanResEvents.java
@@ -35,6 +35,7 @@ import org.apache.ofbiz.entity.GenericValue;
 import org.apache.ofbiz.entity.condition.EntityCondition;
 import org.apache.ofbiz.entity.condition.EntityOperator;
 import org.apache.ofbiz.entity.util.EntityQuery;
+import org.apache.ofbiz.party.party.PartyHelper;
 
 public class HumanResEvents {
     public static final String MODULE = HumanResEvents.class.getName();
@@ -48,7 +49,7 @@ public class HumanResEvents {
         String additionParam = request.getParameter("additionParam");
         String hrefString = request.getParameter("hrefString");
         String hrefString2 = request.getParameter("hrefString2");
-
+        List<Map<String,Object>> categoryList = new ArrayList<>();
         Map<String, Object> paramMap = new HashMap<>();
         paramMap.put("delegator", delegator);
         paramMap.put("partyId", partyId);
@@ -57,8 +58,6 @@ public class HumanResEvents {
         paramMap.put("hrefString", hrefString);
         paramMap.put("hrefString2", hrefString2);
 
-        List<Map<String,Object>> categoryList = new ArrayList<>();
-
         //check employee position
         try {
             categoryList.addAll(getCurrentEmployeeDetails(paramMap));
@@ -66,10 +65,9 @@ public class HumanResEvents {
             Debug.logError(e, MODULE);
             return "error";
         }
-
         try {
             GenericValue partyGroup = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne();
-            if (partyGroup != null) {
+            if (partyGroup != null) {    
                 paramMap.put("partyGroup", partyGroup);
                 /* get the child departments of company or party */
                 categoryList.addAll(getChildComps(paramMap));
@@ -86,17 +84,15 @@ public class HumanResEvents {
     }
 
     private static List<Map<String, Object>> getCurrentEmployeeDetails(Map<String, Object> params) throws GenericEntityException{
-
         Delegator delegator = (Delegator) params.get("delegator");
+        List<Map<String, Object>> responseList = new ArrayList<>();
+        long emplPosCount;
         String partyId = (String) params.get("partyId");
         String onclickFunction = (String) params.get("onclickFunction");
         String additionParam = (String) params.get("additionParam");
         String hrefString = (String) params.get("hrefString");
         String hrefString2 = (String) params.get("hrefString2");
-
-        List<Map<String, Object>> responseList = new ArrayList<>();
-
-        long emplPosCount;
+        String title = null;
         try {
             emplPosCount = EntityQuery.use(delegator).from("EmplPosition")
                     .where("emplPositionId", partyId).queryCount();
@@ -108,46 +104,23 @@ public class HumanResEvents {
                 if (UtilValidate.isNotEmpty(emlpfillCtxs)) {
                     for (GenericValue emlpfillCtx : emlpfillCtxs ) {
                         String memberId = emlpfillCtx.getString("partyId");
-                        GenericValue memCtx = EntityQuery.use(delegator).from("Person").where("partyId", partyId).queryOne();
-                        String title = null;
-                        if (UtilValidate.isNotEmpty(memCtx)) {
-                            String firstname = memCtx.getString("firstName");
-                            String lastname = memCtx.getString("lastName");
-                            if (UtilValidate.isEmpty(lastname)) {
-                                lastname = "";
-                            }
-                            if (UtilValidate.isEmpty(firstname)) {
-                                firstname = "";
-                            }
-                            title = firstname +" "+ lastname;
-                        }
-                        GenericValue memGroupCtx = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne();
-                        if (UtilValidate.isNotEmpty(memGroupCtx)) {
-                            title = memGroupCtx.getString("groupName");
-                        }
-
+                        title = PartyHelper.getPartyName(delegator, memberId, false);
                         Map<String,Object> josonMap = new HashMap<>();
                         Map<String,Object> dataMap = new HashMap<>();
                         Map<String,Object> dataAttrMap = new HashMap<>();
                         Map<String,Object> attrMap = new HashMap<>();
-
-                        dataAttrMap.put("onClick", onclickFunction + "('" + memberId + additionParam + "')");
-
                         String hrefStr = hrefString + memberId;
                         if (UtilValidate.isNotEmpty(hrefString2)) {
                             hrefStr = hrefStr + hrefString2;
                         }
-                        dataAttrMap.put("href", hrefStr);
-
                         attrMap.put("rel", "P");
                         attrMap.put("id", memberId);
-
+                        dataAttrMap.put("onClick", onclickFunction + "('" + memberId + additionParam + "')");
+                        dataAttrMap.put("href", hrefStr);
                         dataMap.put("title", title);
                         dataMap.put("attr", dataAttrMap);
-
                         josonMap.put("attr",attrMap);
                         josonMap.put("data", dataMap);
-
                         responseList.add(josonMap) ;
                     }
                 }
@@ -156,49 +129,36 @@ public class HumanResEvents {
             Debug.logError(e, MODULE);
             throw new GenericEntityException(e);
         }
-
         return responseList;
     }
 
     private static List<Map<String, Object>> getChildComps(Map<String, Object> params) throws GenericEntityException{
-
         Delegator delegator = (Delegator) params.get("delegator");
+        Map<String , Object> partyGroup = UtilGenerics.cast(params.get("partyGroup"));
+        List<Map<String, Object>> resultList = new ArrayList<>();
+        List<GenericValue> childOfComs = null;
         String onclickFunction = (String) params.get("onclickFunction");
         String additionParam = (String) params.get("additionParam");
         String hrefString = (String) params.get("hrefString");
         String hrefString2 = (String) params.get("hrefString2");
-
-        Map<String , Object> partyGroup = UtilGenerics.cast(params.get("partyGroup"));
-        List<Map<String, Object>> resultList = new ArrayList<>();
-        List<GenericValue> childOfComs = null;
-
         try {
             childOfComs = EntityQuery.use(delegator).from("PartyRelationship")
                     .where("partyIdFrom", partyGroup.get("partyId"),
                             "partyRelationshipTypeId", "GROUP_ROLLUP")
                             .filterByDate().queryList();
             if (UtilValidate.isNotEmpty(childOfComs)) {
-
                 for (GenericValue childOfCom : childOfComs ) {
-                    Object catId = null;
+                    String catId = null;
+                    String childPartyId = null;
                     String catNameField = null;
                     String title = null;
-
                     Map<String, Object> josonMap = new HashMap<>();
                     Map<String, Object> dataMap = new HashMap<>();
                     Map<String, Object> dataAttrMap = new HashMap<>();
                     Map<String, Object> attrMap = new HashMap<>();
-
-                    catId = childOfCom.get("partyIdTo");
-
-                    //Department or Sub department
-                    GenericValue childContext = EntityQuery.use(delegator).from("PartyGroup").where("partyId", catId).queryOne();
-                    if (UtilValidate.isNotEmpty(childContext)) {
-                        catNameField = (String) childContext.get("groupName");
-                        title = catNameField;
-                        josonMap.put("title",title);
-
-                    }
+                    catId = childOfCom.getString("partyIdTo");
+                    title = PartyHelper.getPartyName(delegator,catId, false);
+                    josonMap.put("title",title);
                     //Check child existing
                     List<GenericValue> childOfSubComs = EntityQuery.use(delegator).from("PartyRelationship")
                             .where("partyIdFrom", catId,
@@ -209,39 +169,18 @@ public class HumanResEvents {
                     if (UtilValidate.isNotEmpty(childOfSubComs) || UtilValidate.isNotEmpty(isPosition)) {
                         josonMap.put("state", "closed");
                     }
-
-                    //Employee
-                    GenericValue emContext = EntityQuery.use(delegator).from("Person").where("partyId", catId).queryOne();
-                    if (UtilValidate.isNotEmpty(emContext)) {
-                        String firstname = (String) emContext.get("firstName");
-                        String lastname = (String) emContext.get("lastName");
-                        if (UtilValidate.isEmpty(lastname)) {
-                            lastname = "";
-                        }
-                        if (UtilValidate.isEmpty(firstname)) {
-                            firstname = "";
-                        }
-                        title = firstname +" "+ lastname;
-                    }
-
                     dataAttrMap.put("onClick", onclickFunction + "('" + catId + additionParam + "')");
-
                     String hrefStr = hrefString + catId;
                     if (UtilValidate.isNotEmpty(hrefString2)) {
                         hrefStr = hrefStr + hrefString2;
                     }
+                    attrMap.put("rel", "Y");
+                    attrMap.put("id", catId);
                     dataAttrMap.put("href", hrefStr);
-
                     dataMap.put("attr", dataAttrMap);
                     dataMap.put("title", title);
-
-                    attrMap.put("rel", "Y");
-                    attrMap.put("id", catId);
-
-
                     josonMap.put("attr",attrMap);
                     josonMap.put("data", dataMap);
-
                     resultList.add(josonMap);
                 }  
             }
@@ -249,35 +188,28 @@ public class HumanResEvents {
             Debug.logError(e, MODULE);
             throw new GenericEntityException(e);
         }
-
         return resultList;
-
     }
 
     private static List<Map<String, Object>> getEmployeeInComp(Map<String, Object> params) throws GenericEntityException{
         List<GenericValue> isEmpls = null;
         Delegator delegator = (Delegator) params.get("delegator");
         String partyId = (String) params.get("partyId");
-
         List<Map<String, Object>> resultList = new ArrayList<>();
-
         try {
             isEmpls = EntityQuery.use(delegator).from("EmplPosition")
                     .where(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, partyId),
                             EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "EMPL_POS_INACTIVE"))
                             .filterByDate("actualFromDate", "actualThruDate")
                             .queryList();
-
             if (UtilValidate.isNotEmpty(isEmpls)) {
                 for (GenericValue childOfEmpl : isEmpls ) {
                     Map<String, Object> emplMap = new HashMap<>();
                     Map<String, Object> emplAttrMap = new HashMap<>();
                     Map<String, Object> empldataMap = new HashMap<>();
                     Map<String, Object> emplDataAttrMap = new HashMap<>();
-
                     String emplId = (String) childOfEmpl.get("emplPositionId");
                     String typeId = (String) childOfEmpl.get("emplPositionTypeId");
-
                     //check child
                     List<GenericValue> emlpfCtxs = EntityQuery.use(delegator).from("EmplPositionFulfillment")
                             .where("emplPositionId", emplId)
@@ -285,27 +217,22 @@ public class HumanResEvents {
                     if (UtilValidate.isNotEmpty(emlpfCtxs)) {
                         emplMap.put("state", "closed");
                     }
-
                     GenericValue emplContext = EntityQuery.use(delegator).from("EmplPositionType").where("emplPositionTypeId", typeId).queryOne();
                     String title = null;
                     if (UtilValidate.isNotEmpty(emplContext)) {
                         title = (String) emplContext.get("description") + " " +"["+ emplId +"]";
                     }
-
                     String hrefStr = "emplPositionView?emplPositionId=" + emplId;
                     emplAttrMap.put("href", hrefStr);
+                    emplAttrMap.put("title", title);
                     emplAttrMap.put("onClick", "callEmplDocument" + "('" + emplId + "')");
-
                     empldataMap.put("title", title);
                     empldataMap.put("attr", emplAttrMap);
-
                     emplDataAttrMap.put("id", emplId);
                     emplDataAttrMap.put("rel", "N");
-
                     emplMap.put("data", empldataMap);
                     emplMap.put("attr",emplDataAttrMap);
                     emplMap.put("title",title);
-
                     resultList.add(emplMap);
                 }
             }
@@ -313,7 +240,6 @@ public class HumanResEvents {
             Debug.logError(e, MODULE);
             throw new GenericEntityException(e);
         }
-
         return resultList;
     }
 }

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 28/28: Improved: removes useless "@deprecated No replacement" comments in Java code

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 2ff819043d5c0c21532aad4bef8324f766e8f96b
Author: Jacques Le Roux <[hidden email]>
AuthorDate: Wed May 27 09:26:43 2020 +0200

    Improved: removes useless "@deprecated No replacement" comments in Java code
   
    This follows a discussion on dev ML 5 days ago.
    Those comments are useless because they are all related to Minilang and Minilang
    is deprecated as a whole.
---
 .../org/apache/ofbiz/minilang/method/MethodOperation.java    |  4 +---
 .../src/main/java/org/apache/ofbiz/security/Security.java    | 12 ------------
 2 files changed, 1 insertion(+), 15 deletions(-)

diff --git a/framework/minilang/src/main/java/org/apache/ofbiz/minilang/method/MethodOperation.java b/framework/minilang/src/main/java/org/apache/ofbiz/minilang/method/MethodOperation.java
index d92ddea..8c27a38 100644
--- a/framework/minilang/src/main/java/org/apache/ofbiz/minilang/method/MethodOperation.java
+++ b/framework/minilang/src/main/java/org/apache/ofbiz/minilang/method/MethodOperation.java
@@ -47,9 +47,7 @@ public abstract class MethodOperation extends MiniLangElement {
      * @throws MiniLangException */
     public abstract boolean exec(MethodContext methodContext) throws MiniLangException;
 
-    /** Create a string representation of the operation, using the current context.
-     * @deprecated No replacement.
-     */
+    /** Create a string representation of the operation, using the current context.*/
     @Deprecated
     public String expandedString(MethodContext methodContext) {
         return FlexibleStringExpander.expandString(toString(), methodContext.getEnvMap());
diff --git a/framework/security/src/main/java/org/apache/ofbiz/security/Security.java b/framework/security/src/main/java/org/apache/ofbiz/security/Security.java
index f005729..507be35 100644
--- a/framework/security/src/main/java/org/apache/ofbiz/security/Security.java
+++ b/framework/security/src/main/java/org/apache/ofbiz/security/Security.java
@@ -36,17 +36,9 @@ import org.apache.ofbiz.entity.GenericValue;
  */
 public interface Security {
 
-    /**
-     *
-     * @deprecated No replacement.
-     */
     @Deprecated
     public Delegator getDelegator();
 
-    /**
-    *
-    * @deprecated No replacement.
-    */
     @Deprecated
     public void setDelegator(Delegator delegator);
 
@@ -56,8 +48,6 @@ public interface Security {
      * @param userLoginId The userLoginId to find security groups by
      * @return An iterator made from the Collection either cached or retrieved from the database through the
      *            UserLoginSecurityGroup Delegator.
-     *
-     * @deprecated No replacement.
      */
     @Deprecated
     public Iterator<GenericValue> findUserLoginSecurityGroupByUserLoginId(String userLoginId);
@@ -70,8 +60,6 @@ public interface Security {
      * @param groupId The ID of the group
      * @param permission The name of the permission
      * @return boolean specifying whether or not a SecurityGroupPermission row exists
-     *
-     * @deprecated No replacement.
      */
     @Deprecated
     public boolean securityGroupPermissionExists(String groupId, String permission);

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 23/28: Improved: quote menu

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit ae3f166177c23649f977a5a2d928e081b03ddaf9
Author: Pierre Smits <[hidden email]>
AuthorDate: Wed May 20 08:51:26 2020 +0200

    Improved: quote menu
   
    (OFBIZ-11715)
   
    updated: QuoteTabBar - simplified labels
    updated: moved 'Edit quote' menu item to QuoteSubTabBar
    updated: reordering of menu-items of QuoteTabBar
    updated: various UiLabels used by menu-items in QuoteTabBar
---
 applications/order/config/OrderUiLabels.xml       | 16 ++---
 applications/order/widget/ordermgr/OrderMenus.xml | 74 ++++++++++-------------
 framework/common/config/CommonUiLabels.xml        | 10 ++-
 3 files changed, 49 insertions(+), 51 deletions(-)

diff --git a/applications/order/config/OrderUiLabels.xml b/applications/order/config/OrderUiLabels.xml
index dddda46..8bc0fdc 100644
--- a/applications/order/config/OrderUiLabels.xml
+++ b/applications/order/config/OrderUiLabels.xml
@@ -8260,16 +8260,16 @@
         <value xml:lang="zh-TW">係數值</value>
     </property>
     <property key="OrderOrderQuoteCoefficients">
-        <value xml:lang="de">Angebotskoeffizienten</value>
-        <value xml:lang="de-CH">Offertkoeffizienten</value>
-        <value xml:lang="en">Quote Coefficients</value>
+        <value xml:lang="de">Koeffizienten</value>
+        <value xml:lang="de-CH">Koeffizienten</value>
+        <value xml:lang="en">Coefficients</value>
         <value xml:lang="es">Coeficientes</value>
-        <value xml:lang="fr">Coefficients du devis</value>
-        <value xml:lang="it">Coefficienti Preventivo</value>
+        <value xml:lang="fr">Coefficients</value>
+        <value xml:lang="it">Coefficienti</value>
         <value xml:lang="ja">見積係数</value>
-        <value xml:lang="nl">Offerte coefficiënten</value>
-        <value xml:lang="pt-BR">Coeficientes de cotação</value>
-        <value xml:lang="ro">Coeficienti Oferta</value>
+        <value xml:lang="nl">coefficiënten</value>
+        <value xml:lang="pt-BR">Coeficientes</value>
+        <value xml:lang="ro">Coeficienti</value>
         <value xml:lang="ru">Коэффициенты предложения</value>
         <value xml:lang="th">ตัวลข</value>
         <value xml:lang="vi">Hệ số Báo giá</value>
diff --git a/applications/order/widget/ordermgr/OrderMenus.xml b/applications/order/widget/ordermgr/OrderMenus.xml
index cf74511..d98e9c9 100644
--- a/applications/order/widget/ordermgr/OrderMenus.xml
+++ b/applications/order/widget/ordermgr/OrderMenus.xml
@@ -132,31 +132,12 @@ under the License.
     </menu>
 
     <menu name="QuoteTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">
-        <menu-item name="ViewQuote" title="${uiLabelMap.OrderViewQuote}">
+        <menu-item name="ViewQuote" title="${uiLabelMap.CommonQuote}">
             <link target="ViewQuote">
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-
-        <menu-item name="EditQuote" title="${uiLabelMap.OrderOrderQuote}">
-            <condition>
-                <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
-            </condition>
-            <link target="EditQuote">
-                <parameter param-name="quoteId" from-field="quote.quoteId"/>
-            </link>
-        </menu-item>
-
-        <menu-item name="ListQuoteRoles" title="${uiLabelMap.OrderOrderQuoteRoles}">
-            <condition>
-                <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
-            </condition>
-            <link target="ListQuoteRoles">
-                <parameter param-name="quoteId" from-field="quote.quoteId"/>
-            </link>
-        </menu-item>
-
-        <menu-item name="ListQuoteItems" title="${uiLabelMap.OrderOrderQuoteItems}">
+        <menu-item name="ListQuoteItems" title="${uiLabelMap.CommonItems}">
             <condition>
                 <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
             </condition>
@@ -164,17 +145,7 @@ under the License.
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-
-        <menu-item name="ListQuoteNotes" title="${uiLabelMap.OrderOrderQuoteNotes}">
-            <condition>
-                <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
-            </condition>
-            <link target="ListQuoteNotes">
-                <parameter param-name="quoteId" from-field="quote.quoteId"/>
-            </link>
-        </menu-item>
-
-        <menu-item name="ListQuoteAttributes" title="${uiLabelMap.OrderOrderQuoteAttributes}">
+        <menu-item name="ListQuoteAttributes" title="${uiLabelMap.CommonAttributes}">
             <condition>
                 <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
             </condition>
@@ -182,7 +153,6 @@ under the License.
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-
         <menu-item name="ListQuoteCoefficients" title="${uiLabelMap.OrderOrderQuoteCoefficients}">
             <condition>
                 <and>
@@ -194,8 +164,7 @@ under the License.
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-
-        <menu-item name="ManageQuotePrices" title="${uiLabelMap.OrderOrderQuotePrices}">
+        <menu-item name="ManageQuotePrices" title="${uiLabelMap.CommonPrices}">
             <condition>
                 <and>
                     <if-has-permission permission="ORDERMGR" action="_QUOTE_PRICE"/>
@@ -206,8 +175,7 @@ under the License.
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-
-        <menu-item name="ListQuoteAdjustments" title="${uiLabelMap.OrderOrderQuoteAdjustments}">
+        <menu-item name="ListQuoteAdjustments" title="${uiLabelMap.CommonAdjustments}">
             <condition>
                 <and>
                     <if-has-permission permission="ORDERMGR" action="_QUOTE_PRICE"/>
@@ -218,8 +186,7 @@ under the License.
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-
-        <menu-item name="ViewQuoteProfit" title="${uiLabelMap.OrderViewQuoteProfit}">
+        <menu-item name="ViewQuoteProfit" title="${uiLabelMap.CommonProfit}">
             <condition>
                 <if-has-permission permission="ORDERMGR" action="_QUOTE_PRICE"/>
             </condition>
@@ -227,8 +194,7 @@ under the License.
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-
-        <menu-item name="QuoteWorkEfforts" title="${uiLabelMap.OrderOrderQuoteWorkEfforts}">
+        <menu-item name="QuoteWorkEfforts" title="${uiLabelMap.CommonWorkEfforts}">
             <condition>
                 <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
             </condition>
@@ -236,7 +202,23 @@ under the License.
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
             </link>
         </menu-item>
-        <menu-item name="QuoteTerms" title="${uiLabelMap.OrderOrderQuoteTerms}">
+        <menu-item name="ListQuoteNotes" title="${uiLabelMap.CommonNotes}">
+            <condition>
+                <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
+            </condition>
+            <link target="ListQuoteNotes">
+                <parameter param-name="quoteId" from-field="quote.quoteId"/>
+            </link>
+        </menu-item>
+        <menu-item name="ListQuoteRoles" title="${uiLabelMap.CommonRoles}">
+            <condition>
+                <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
+            </condition>
+            <link target="ListQuoteRoles">
+                <parameter param-name="quoteId" from-field="quote.quoteId"/>
+            </link>
+        </menu-item>
+        <menu-item name="QuoteTerms" title="${uiLabelMap.PartyTerms}">
             <condition>
                 <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
             </condition>
@@ -248,6 +230,14 @@ under the License.
 
     <menu name="QuoteSubTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml"
         menu-container-style="button-bar button-style-2">
+        <menu-item name="EditQuote" title="${uiLabelMap.CommonEdit}">
+            <condition>
+                <if-compare operator="equals" value="QUO_CREATED" field="quote.statusId"/>
+            </condition>
+            <link target="EditQuote">
+                <parameter param-name="quoteId" from-field="quote.quoteId"/>
+            </link>
+        </menu-item>
         <menu-item name="quoteReport" title="${uiLabelMap.CommonPdf}">
             <link target="QuoteReport" target-window="_BLANK">
                 <parameter param-name="quoteId" from-field="quote.quoteId"/>
diff --git a/framework/common/config/CommonUiLabels.xml b/framework/common/config/CommonUiLabels.xml
index b761ce9..41e5547 100644
--- a/framework/common/config/CommonUiLabels.xml
+++ b/framework/common/config/CommonUiLabels.xml
@@ -895,6 +895,14 @@
         <value xml:lang="zh-CN">應用</value>
         <value xml:lang="zh-TW">應用程式</value>
     </property>
+    <property key="CommonApplication">
+        <value xml:lang="de">Anwendung</value>
+        <value xml:lang="en">Applications</value>
+        <value xml:lang="fr">Application</value>
+        <value xml:lang="hi-IN">एप्प्लिकेशन्स</value>
+        <value xml:lang="it">Applicazione</value>
+        <value xml:lang="nl">Toepassing</value>
+    </property>
     <property key="CommonApply">
         <value xml:lang="ar">تطبيق</value>
         <value xml:lang="cs">Použít</value>
@@ -13323,7 +13331,7 @@
         <value xml:lang="zh">人工服务</value>
     </property>
     <property key="CommonWorkEfforts">
-        <value xml:lang="en">Work Effort</value>
+        <value xml:lang="en">Work Efforts</value>
         <value xml:lang="nl">Activiteiten</value>
         <value xml:lang="zh">人工服务</value>
     </property>

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 26/28: Documented: datamodel markdown migration to asciidoc (OFBIZ-11574)

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit db463e7517450e54a32b63fef834ff209a39eeb1
Author: Aditya Sharma <[hidden email]>
AuthorDate: Mon May 25 19:46:04 2020 +0530

    Documented: datamodel markdown migration to asciidoc (OFBIZ-11574)
   
    * Documented: datamodel markdown migration to asciidoc
    (OFBIZ-11574)
   
    - DATAMODEL_CHANGE migration to asciidoc and add a included in
    developer_manual
    - Readme migration to asciidoc
   
    * Documented: theme/README.md change theme/README.adoc but with very
    simple content
    (OFBIZ-11574)
   
    README.md  has been migrated to asciidoc as doc/themes.adoc previously
    but remove README.md has been forgot.
    In this commit README.md is removed and a new README.adoc is created
    with only a brief component definition and link to the theme
    documentation (and developer-manual which included theme.adoc)
   
    * Documented: datamodel markdown migration to asciidoc
    (OFBIZ-11574)
   
    Added new field parentGlXbrlClassId taking reference from DATAMODEL_CHANGES.md which was added with OFBIZ-10613 and missing in adoc file
   
    Co-authored-by: holivier <[hidden email]>
---
 applications/datamodel/DATAMODEL_CHANGES.adoc | 416 ++++++++++++++++++++++++++
 applications/datamodel/DATAMODEL_CHANGES.md   | 402 -------------------------
 applications/datamodel/README.adoc            |  36 +++
 applications/datamodel/README.md              |  14 -
 docs/asciidoc/developer-manual.adoc           |   2 +
 themes/README.adoc                            |  28 ++
 themes/README.md                              | 314 -------------------
 7 files changed, 482 insertions(+), 730 deletions(-)

diff --git a/applications/datamodel/DATAMODEL_CHANGES.adoc b/applications/datamodel/DATAMODEL_CHANGES.adoc
new file mode 100644
index 0000000..ca21746
--- /dev/null
+++ b/applications/datamodel/DATAMODEL_CHANGES.adoc
@@ -0,0 +1,416 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+= Data Model Changes
+The Apache OFBiz® Project
+Release 17.12
+
+Apache OFBiz follows *The Universal Data Model* by **Len Silverston**, with a grain of salt.
+
+The following file contains information about the data model changes in the Apache OFBiz.
+ The detailed description of migration scripts specified here can be found at
+ https://cwiki.apache.org/confluence/x/LoBr[Revisions Requiring Data Migration - upgrade ofbiz] page.
+
+== Changes with OFBiz Trunk (Upcoming Branch)
+
+=== Entity Changes
+*Added 1 new entity*
+
+1. ProdPromoCodeContactMech
+
+*Removed/Deprecate 1 entity*
+
+1. ProductPromoCodeEmail
+
+=== Field Changes
+[cols="<,^,^,^,>",options="header",]
+|=======================================================
+|Entity                 |Field   |Action |IsPK |Revision
+| GlXbrlClass | parentGlXbrlClassId | Added | No | 36a123a
+|=======================================================
+
+
+=== Migration Scripts
+1.  Migration service migrateProductPromoCodeEmail is implemented to migrate the
+    ProductPromoCodeEmail entity to ProductPromoCodeContactMech. +
+    (More detail at https://issues.apache.org/jira/browse/OFBIZ-5426[OFBIZ-5426])
+
+== Changes with OFBiz 17
+Field types `id-ne`, `id-long-ne` & `id-vlong-ne` has been removed. Use `id`, `id-long` and `id-vlong`
+instead (detailed description at https://issues.apache.org/jira/browse/OFBIZ-9351[OFBIZ-9351]).
+
+
+=== Entity Changes
+No changes
+
+=== Field Changes
+[cols="<,^,^,^,>",options="header",]
+|=======================================================
+|Entity                 |Field   |Action |IsPK |Revision
+|MarketingCampaignPrice |fromDate |Added |Yes |R1805961
+|MarketingCampaignPrice |thruDate |Added |No |R1805961
+|MarketingCampaignPromo |fromDate |Added |Yes |R1805961
+|MarketingCampaignPromo |thruDate |Added |No |R1805961
+|MarketingCampaignRole |fromDate |Added |Yes |R1805961
+|MarketingCampaignRole |thruDate |Added |No |R1805961
+|Product |manufacturerPartyId |Removed |No |R1804408
+|SecurityGroupPermission |fromDate |Added |Yes |R1812383
+|SecurityGroupPermission |thruDate |Added |No |R1812383
+|=======================================================
+
+=== Migration Scripts
+1.  Updated sql-type for date-time and time field in fieldtypemysql.xml file at commit R1793300 +
+    __Update msyql sql-type for datetime field-type to support Fractional Seconds in Time Values
+    Please upgrade mysql to at least 5.6.4 or higher.__ +
+    After upgrade run `generateMySqlFileWithAlterTableForTimestamps` service, groupName is required field for
+    this service. +
+    It will generate sql file with alter query statement for date-time and time field
+    at location `$\{ofbiz.home}/runtime/tempfiles/.sql` +
+    You can use execute sql statement from any of the mysql batch command.
+
+
+== Changes between OFBiz 9 to OFBiz 16
+
+=== Entity Changes
+*Added 77 new entities*
+
+1.  JobRequisition
+2.  ProductAverageCostType
+3.  WorkEffortSurveyAppl
+4.  WorkEffortIcalData
+5.  WebSiteContactList
+6.  WebAnalyticsType
+7.  WebAnalyticsConfig
+8.  UserLoginSecurityQuestion
+9.  UomGroup
+10. TrainingRequest
+11. ThirdPartyLogin
+12. TestFieldType
+13. TestingSubtype
+14. TestingStatus
+15. TestingRemoveAll
+16. TestingItem
+17. TestingCrypto
+18. SystemProperty
+19. ShipmentGatewayUsps
+20. ShipmentGatewayUps
+21. ShipmentGatewayFedex
+22. ShipmentGatewayDhl
+23. ShipmentGatewayConfig
+24. ShipmentGatewayConfigType
+25. ReturnContactMech
+26. QuoteNote
+27. ProductPromoContent
+28. ProductPromoContentType
+29. ProductGroupOrder
+30. ProductCostComponentCalc
+31. CostComponentCalc
+32. PayPalPaymentMethod
+33. PaymentGroupType
+34. PaymentGroup
+35. PaymentGroupMember
+36. PaymentGatewayConfig
+37. PaymentGatewayConfigType
+38. PaymentGatewayWorldPay
+39. PaymentGatewaySecurePay
+40. PaymentGatewaySagePay
+41. PaymentGatewayOrbital
+42. PaymentGatewayEway
+43. PaymentGatewayCyberSource
+44. PaymentGatewayAuthorizeNet
+45. PaymentGatewayIDEAL
+46. PaymentContentType
+47. PaymentContent
+48. OAuth2LinkedIn
+49. OAuth2GitHub
+50. JobManagerLock
+51. JobInterviewType
+52. JobInterview
+53. JavaResource
+54. InvoiceNote
+55. InvoiceItemAssocType
+56. InvoiceItemAssoc
+57. InvoiceContentType
+58. InvoiceContent
+59. GlAccountCategoryType
+60. GlAccountCategoryMember
+61. GlAccountCategory
+62. GitHubUser
+63. FixedAssetTypeGlAccount
+64. FacilityContent
+65. ExcelImportHistory
+66. EmplLeaveReasonType
+67. EbayShippingMethod
+68. EbayConfig
+69. CountryAddressFormat
+70. ContentSearchResult
+71. ContentSearchConstraint
+72. ContentKeyword
+73. CheckAccount
+74. AgreementFacilityAppl
+75. AgreementContentType
+76. AgreementContent
+
+*Removed 8 entities*
+
+1.  DepreciationMethod
+2.  FixedAssetMaintMeter
+3.  OagisMessageErrorInfo
+4.  OagisMessageInfo
+5.  SalesOpportunityTrackingCode
+6.  SimpleSalesTaxLookup
+7.  TestBlob
+8.  WorkEffortAssignmentRate
+
+
+=== Field Changes
+[cols="<,^,^,^,^",options="header",]
+|=================================================================
+|Entity              |Field           |Action |IsPK |Revision
+|AcctgTransAttribute |attrDescription |Added  |No   |NA
+|AcctgTransEntry |inventoryItemId |Added |No |NA
+|AcctgTransTypeAttr |description |Added |No |NA
+|BenefitType |parentTypeId |Added |No |NA
+|BenefitType |hasTable |Added |No |NA
+|BudgetAttribute |attrDescription |Added |No |NA
+|BudgetItemAttribute |attrDescription |Added |No |NA
+|BudgetItemTypeAttr |description |Added |No |NA
+|BudgetStatus |changeByUserLoginId |Added |No |NA
+|BudgetTypeAttr |description |Added |No |NA
+|CommunicationEventRole |statusId |Added |No |NA
+|CommunicationEventType |contactMechTypeId |Added |No |NA
+|ContactListCommStatus |partyId |Added |No |NA
+|ContactListCommStatus |messageId |Added |No |NA
+|ContactListCommStatus |changeByUserLoginId |Added |No |NA
+|ContactMechAttribute |attrDescription |Added |No |NA
+|ContactMechTypeAttr |description |Added |No |NA
+|DeductionType |parentTypeId |Added |No |NA
+|DeductionType |hasTable |Added |No |NA
+|DocumentAttribute |attrDescription |Added |No |NA
+|DocumentTypeAttr |description |Added |No |NA
+|EmploymentApp |approverPartyId |Added |No |NA
+|EmploymentApp |jobRequisitionId |Added |No |NA
+|EmploymentAppSourceType |parentTypeId |Added |No |NA
+|EmploymentAppSourceType |hasTable |Added |No |NA
+|EmplPositionClassType |parentTypeId |Added |No |NA
+|EmplPositionClassType |hasTable |Added |No |NA
+|EmplPositionType |parentTypeId |Added |No |NA
+|EmplPositionType |hasTable |Added |No |NA
+|EmplPositionType |partyId |Removed |No |NA
+|EmplPositionType |roleTypeId |Removed |No |NA
+|FinAccountAttribute |attrDescription |Added |No |NA
+|FinAccountTransAttribute |attrDescription |Added |No |NA
+|FinAccountTrans |glReconciliationId |Added |No |NA
+|FinAccountTrans |statusId |Added |No |NA
+|FinAccountTransTypeAttr |description |Added |No |NA
+|FinAccountTypeAttr |description |Added |No |NA
+|FinAccountStatus |changeByUserLoginId |Added |No |NA
+|FixedAsset |acquireOrderId |Added |No |NA
+|FixedAsset |acquireOrderItemSeqId |Added |No |NA
+|FixedAssetAttribute |attrDescription |Added |No |NA
+|FixedAssetTypeAttr |description |Added |No |NA
+|GlAccount |externalId |Added |No |NA
+|GlAccount |openingBalance |Added |No |NA
+|GlReconciliation |createdDate |Added |No |NA
+|GlReconciliation |lastModifiedDate |Added |No |NA
+|GlReconciliation |statusId |Added |No |NA
+|GlReconciliation |openingBalance |Added |No |NA
+|InventoryItemAttribute |attrDescription |Added |No |NA
+|InventoryItemStatus |changeByUserLoginId |Added |No |NA
+|InventoryItemTypeAttr |description |Added |No |NA
+|InvoiceAttribute |attrDescription |Added |No |NA
+|InvoiceItemAttribute |attrDescription |Added |No |NA
+|InvoiceItemTypeAttr |description |Added |No |NA
+|InvoiceStatus |changeByUserLoginId |Added |No |NA
+|InvoiceTypeAttr |description |Added |No |NA
+|InvoiceTermAttribute |attrDescription |Added |No |NA
+|JobSandbox |currentRetryCount |Added |No |NA
+|JobSandbox |tempExprId |Added |No |NA
+|JobSandbox |currentRecurrenceCount |Added |No |NA
+|JobSandbox |maxRecurrenceCount |Added |No |NA
+|JobSandbox |jobResult |Added |No |NA
+|OrderAdjustment |amountAlreadyIncluded |Added |No |NA
+|OrderAdjustment |isManual |Added |No |NA
+|OrderAdjustment |oldPercentage |Added |No |NA
+|OrderAdjustment |oldAmountPerQuantity |Added |No |NA
+|OrderAdjustment |lastModifiedDate |Added |No |NA
+|OrderAdjustment |lastModifiedByUserLogin |Added |No |NA
+|OrderAdjustmentAttribute |attrDescription |Added |No |NA
+|OrderAdjustmentTypeAttr |description |Added |No |NA
+|OrderAttribute |attrDescription |Added |No |NA
+|OrderItem |supplierProductId |Added |No |NA
+|OrderItem |cancelBackOrderDate |Added |No |NA
+|OrderItem |changeByUserLoginId |Added |No |NA
+|OrderItemAttribute |attrDescription |Added |No |NA
+|OrderItemShipGroup |facilityId |Added |No |NA
+|OrderItemShipGroup |estimatedShipDate |Added |No |NA
+|OrderItemShipGroup |estimatedDeliveryDate |Added |No |NA
+|OrderItemShipGrpInvRes |priority |Added |No |NA
+|OrderItemShipGrpInvRes |oldPickStartDate |Added |No |NA
+|OrderItemTypeAttr |description |Added |No |NA
+|OrderTermAttribute |attrDescription |Added |No |NA
+|OrderPaymentPreference |track2 |Added |No |NA
+|OrderPaymentPreference |swipedFlag |Added |No |NA
+|OrderPaymentPreference |lastModifiedDate |Added |No |NA
+|OrderPaymentPreference |lastModifiedByUserLogin |Added |No |NA
+|OrderShipment |shipGroupSeqId |Added |No |NA
+|OrderTypeAttr |description |Added |No |NA
+|PartyAcctgPreference |orderSequenceEnumId |Removed |No |NA
+|PartyAcctgPreference |quoteSequenceEnumId |Removed |No |NA
+|PartyAcctgPreference |invoiceSequenceEnumId |Removed |No |NA
+|PartyAcctgPreference |oldOrderSequenceEnumId |Added |No |NA
+|PartyAcctgPreference |oldQuoteSequenceEnumId |Added |No |NA
+|PartyAcctgPreference |oldInvoiceSequenceEnumId |Added |No |NA
+|PartyAcctgPreference |orderSeqCustMethId |Added |No |NA
+|PartyQual |infoString |Removed |No |NA
+|PartyQual |institutionInternalId |Removed |No |NA
+|PartyQual |institutionPartyId |Removed |No |NA
+|PartyQual |partyQualId |Removed |No |NA
+|PartyRate |percentageUsed |Added |No |NA
+|PartyRate |rate |Removed |No |NA
+|PartyResume |contentId |Added |No |NA
+|PaymentAttribute |attrDescription |Added |No |NA
+|PaymentGatewayResponse |gatewayCvResult |Added |No |NA
+|PaymentMethod |finAccountId |Added |No |NA
+|PaymentTypeAttr |description |Added |No |NA
+|PerfRatingType |parentTypeId |Added |No |NA
+|PerfRatingType |hasTable |Added |No |NA
+|PerfReview |payHistoryRoleTypeIdTo |Removed |No |NA
+|PerfReview |payHistoryRoleTypeIdFrom |Removed |No |NA
+|PerfReview |payHistoryPartyIdTo |Removed |No |NA
+|PerfReview |payHistoryPartyIdFrom |Removed |No |NA
+|PerfReview |payHistoryFromDate |Removed |No |NA
+|PerfReviewItemType |parentTypeId |Added |No |NA
+|PerfReviewItemType |hasTable |Added |No |NA
+|PersonTraining |trainingRequestId |Added |No |NA
+|PersonTraining |workEffortId |Added |No |NA
+|PersonTraining |approverId |Added |No |NA
+|PersonTraining |approvalStatus |Added |No |NA
+|PersonTraining |reason |Added |No |NA
+|PostalAddress |houseNumber |Added |No |NA
+|PostalAddress |houseNumberExt |Added |No |NA
+|PostalAddress |cityGeoId |Added |No |NA
+|PostalAddress |municipalityGeoId |Added |No |NA
+|PostalAddress |geoPointId |Added |No |NA
+|PosTerminal |terminalName |Added |No |NA
+|PosTerminalInternTx |reasonEnumId |Added |No |NA
+|Product |releaseDate |Added |No |NA
+|Product |originalImageUrl |Added |No |NA
+|Product |inventoryItemTypeId |Added |No |NA
+|Product |shippingWeight |Added |No |NA
+|Product |productWeight |Added |No |NA
+|Product |diameterUomId |Added |No |NA
+|Product |productDiameter |Added |No |NA
+|Product |virtualVariantMethodEnum |Added |No |NA
+|Product |defaultShipmentBoxTypeId |Added |No |NA
+|Product |lotIdFilledIn |Added |No |NA
+|Product |orderDecimalQuantity |Added |No |NA
+|Product |weight |Removed |No |NA
+|Product |taxCategory |Removed |No |NA
+|Product |taxVatCode |Removed |No |NA
+|Product |taxDutyCode |Removed |No |NA
+|ProductAttribute |attrDescription |Added |No |NA
+|ProductAverageCost |productAverageCostTypeId |Added |No |NA
+|ProductAverageCost |facilityId |Added |No |NA
+|ProductContent |sequenceNum |Added |No |NA
+|ProductKeyword |keywordTypeId |Added |No |NA
+|ProductKeyword |statusId |Added |No |NA
+|ProductRole |sequenceNum |Added |No |NA
+|ProductStore |balanceResOnOrderCreation |Added |No |NA
+|ProductStore |defaultTimeZoneString |Added |No |NA
+|ProductStore |oldStyleSheet |Added |No |NA
+|ProductStore |oldHeaderLogo |Added |No |NA
+|ProductStore |oldHeaderRightBackground |Added |No |NA
+|ProductStore |oldHeaderMiddleBackground |Added |No |NA
+|ProductStore |styleSheet |Removed |No |NA
+|ProductStore |headerLogo |Removed |No |NA
+|ProductStore |headerRightBackground |Removed |No |NA
+|ProductStore |headerMiddleBackground |Removed |No |NA
+|ProductStorePaymentSetting |paymentCustomMethodId |Added |No |NA
+|ProductStorePaymentSetting |paymentGatewayConfigId |Added |No |NA
+|ProductStoreShipmentMeth |shipmentCustomMethodId |Added |No |NA
+|ProductStoreShipmentMeth |shipmentGatewayConfigId |Added |No |NA
+|ProductStoreShipmentMeth |allowancePercent |Added |No |NA
+|ProductStoreShipmentMeth |minimumPrice |Added |No |NA
+|ProductTypeAttribute |attrDescription |Added |No |NA
+|QuoteAdjustment |lastModifiedDate |Added |No |NA
+|QuoteAdjustment |lastModifiedByUserLogin |Added |No |NA
+|QuoteAttribute |attrDescription |Added |No |NA
+|QuoteItem |leadTimeDays |Added |No |NA
+|QuoteRole |fromDate |Added |Yes |NA
+|QuoteRole |thruDate |Added |No |NA
+|QuoteTerm |termDays |Added |No |NA
+|QuoteTerm |textValue |Added |No |NA
+|QuoteTerm |description |Added |No |NA
+|QuoteTermAttribute |attrDescription |Added |No |NA
+|QuoteTypeAttr |description |Added |No |NA
+|RequirementAttribute |changeByUserLoginId |Added |No |NA
+|RequirementStatus |changeByUserLoginId |Added |No |NA
+|ResponsibilityType |parentTypeId |Added |No |NA
+|ResponsibilityType |hasTable |Added |No |NA
+|ReturnAdjustment |createdByUserLoginId |Added |No |NA
+|ReturnAdjustment |lastModifiedDate |Added |No |NA
+|ReturnAdjustment |lastModifiedByUserLogin |Added |No |NA
+|ReturnHeader |supplierRmaId |Added |No |NA
+|ReturnItemResponse |finAccountTransId |Added |No |NA
+|ReturnStatus |changeByUserLoginId |Added |No |NA
+|SalaryStep |fromDate |Added |Yes |NA
+|SalaryStep |thruDate |Added |No |NA
+|SalaryStep |createdByUserLoginId |Added |No |NA
+|SalaryStep |lastModifiedByUserLogin |Added |No |NA
+|SalesOpportunity |nextStepDate |Added |No |NA
+|ServiceSemaphore |lockedByInstanceId |Added |No |NA
+|ShoppingListItem |modifiedPrice |Added |No |NA
+|SkillType |parentTypeId |Added |No |NA
+|SkillType |hasTable |Added |No |NA
+|SupplierProduct |shippingPrice |Added |No |NA
+|SupplierProduct |supplierCommissionPerc |Removed |No |NA
+|TaxAuthorityRateProduct |isTaxInShippingPrice |Added |No |NA
+|TerminationType |parentTypeId |Added |No |NA
+|TerminationType |hasTable |Added |No |NA
+|TestingNodeMember |extendFromDate |Added |No |NA
+|TestingNodeMember |extendThruDate |Added |No |NA
+|TimeEntry |planHour |Added |No |NA
+|Timesheet |approvedByUserLoginId |Added |No |NA
+|TrainingClassType |parentTypeId |Added |No |NA
+|TrainingClassType |hasTable |Added |No |NA
+|UnemploymentClaim |thruDate |Added |No |NA
+|UserLogin |externalAuthId |Added |No |NA
+|UserLogin |userLdapDn |Added |No |NA
+|UserLogin |disabledBy |Added |No |NA
+|ValueLinkKey |createdByUserLogin |Added |No |NA
+|WebSite |visualThemeSetId |Added |No |NA
+|WebSite |hostedPathAlias |Added |No |NA
+|WebSite |isDefault |Added |No |NA
+|WebSite |displayMaintenancePage |Added |No |NA
+|WebSitePathAlias |fromDate |Added |Yes |R1738588
+|WebSitePathAlias |thruDate |Added |No |R1738588
+|WorkEffort |tempExprId |Added |No |NA
+|WorkEffort |sequenceNum |Added |No |NA
+|WorkEffortAttribute |attrDescription |Added |No |NA
+|WorkEffortAssocAttribute |attrDescription |Added |No |NA
+|WorkEffortAssocTypeAttr |description |Added |No |NA
+|WorkEffortContactMech |fromDate |Added |Yes |NA
+|WorkEffortContactMech |thruDate |Added |No |NA
+|WorkEffortFixedAssetAssign |availabilityStatusId |Added |No |NA
+|WorkEffortPartyAssignment |assignedByUserLoginId |Added |No |NA
+|WorkEffortPurposeType |parentTypeId |Added |No |NA
+|WorkEffortStatus |reason |Added |No |NA
+|WorkEffortTypeAttr |description |Added |No |NA
+|WorkOrderItemFulfillment |shipGroupSeqId |Added |No |NA
+|=================================================================
diff --git a/applications/datamodel/DATAMODEL_CHANGES.md b/applications/datamodel/DATAMODEL_CHANGES.md
deleted file mode 100644
index 9836db0..0000000
--- a/applications/datamodel/DATAMODEL_CHANGES.md
+++ /dev/null
@@ -1,402 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-Apache OFBiz® Data Model Changes
-=============
-Apache OFBiz follows **The Universal Data Model** by **Len Silverston**, with a grain of salt.
-
-The following file contains information about the data model changes in the Apache OFBiz.
-The detailed description of migration scripts specified here can be found at [Revisions Requiring Data Migration - upgrade ofbiz](https://cwiki.apache.org/confluence/x/LoBr) page.
-
-# Changes with OFBiz Trunk (Upcoming Branch)
-
-## Entity Changes
-**Added 1 new entity**
-1. ProdPromoCodeContactMech
-
-**Removed/Deprecate 1 entity**
-1. ProductPromoCodeEmail
-
-## Field Changes
-
-| Entity  | Field  | Action | IsPK | Revision |
-|:------------- |:---------------:|:---------------:|:---------------:| -------------:|
-| GlXbrlClass | parentGlXbrlClassId | Added | No | 36a123a |
-
-
-## Migration Scripts
-1. Migration service migrateProductPromoCodeEmail is implemented to migrate the ProductPromoCodeEmail entity to ProductPromoCodeContactMech. (More detail at [OFBIZ-5426](https://issues.apache.org/jira/browse/OFBIZ-5426))
-
-# Changes with OFBiz 17
-Field types "id-ne", "id-long-ne" & "id-vlong-ne" has been removed. Use "id", "id-long" and "id-vlong" instead (detailed description at [OFBIZ-9351](https://issues.apache.org/jira/browse/OFBIZ-9351)).
-
-## Entity Changes
-No changes
-
-## Field Changes
-
-| Entity  | Field  | Action | IsPK | Revision |
-|:------------- |:---------------:|:---------------:|:---------------:| -------------:|
-| MarketingCampaignPrice | fromDate | Added | Yes | R1805961 |
-| MarketingCampaignPrice | thruDate | Added | No | R1805961 |
-| MarketingCampaignPromo | fromDate | Added | Yes | R1805961 |
-| MarketingCampaignPromo | thruDate | Added | No | R1805961 |
-| MarketingCampaignRole | fromDate | Added | Yes | R1805961 |
-| MarketingCampaignRole | thruDate | Added | No | R1805961 |
-| Product | manufacturerPartyId | Removed | No| R1804408 |
-| SecurityGroupPermission | fromDate | Added | Yes | R1812383 |
-| SecurityGroupPermission | thruDate | Added | No | R1812383 |
-
-## Migration Scripts
-1. Updated sql-type for date-time and time field in fieldtypemysql.xml file
-R1793300 "Update msyql sql-type for datetime field-type to support Fractional Seconds in Time Values
-Please upgrade mysql to at least 5.6.4 or higher.
-After upgrade run 'generateMySqlFileWithAlterTableForTimestamps' service, groupName is required field for this service,
-It will generate sql file with alter query statement for date-time and time field at location "${ofbiz.home}/runtime/tempfiles/<groupName>.sql"
-You can use execute sql statement from any of the mysql batch command.
-
-# Changes between OFBiz 9 to OFBiz 16
-
-## Entity Changes
-**Added 77 new entities**
-
-1. JobRequisition
-2. ProductAverageCostType
-3. WorkEffortSurveyAppl
-4. WorkEffortIcalData
-5. WebSiteContactList
-6. WebAnalyticsType
-7. WebAnalyticsConfig
-8. UserLoginSecurityQuestion
-9. UomGroup
-10. TrainingRequest
-11. ThirdPartyLogin
-12. TestFieldType
-13. TestingSubtype
-14. TestingStatus
-15. TestingRemoveAll
-16. TestingItem
-17. TestingCrypto
-18. SystemProperty
-19. ShipmentGatewayUsps
-20. ShipmentGatewayUps
-21. ShipmentGatewayFedex
-22. ShipmentGatewayDhl
-23. ShipmentGatewayConfig
-24. ShipmentGatewayConfigType
-25. ReturnContactMech
-26. QuoteNote
-27. ProductPromoContent
-28. ProductPromoContentType
-29. ProductGroupOrder
-30. ProductCostComponentCalc
-31. CostComponentCalc
-32. PayPalPaymentMethod
-33. PaymentGroupType
-34. PaymentGroup
-35. PaymentGroupMember
-36. PaymentGatewayConfig
-37. PaymentGatewayConfigType
-38. PaymentGatewayWorldPay
-39. PaymentGatewaySecurePay
-40. PaymentGatewaySagePay
-41. PaymentGatewayOrbital
-42. PaymentGatewayEway
-43. PaymentGatewayCyberSource
-44. PaymentGatewayAuthorizeNet
-45. PaymentGatewayIDEAL
-46. PaymentContentType
-47. PaymentContent
-48. OAuth2LinkedIn
-49. OAuth2GitHub
-50. JobManagerLock
-51. JobInterviewType
-52. JobInterview
-53. JavaResource
-54. InvoiceNote
-55. InvoiceItemAssocType
-56. InvoiceItemAssoc
-57. InvoiceContentType
-58. InvoiceContent
-59. GlAccountCategoryType
-60. GlAccountCategoryMember
-61. GlAccountCategory
-62. GitHubUser
-63. FixedAssetTypeGlAccount
-64. FacilityContent
-65. ExcelImportHistory
-66. EmplLeaveReasonType
-67. EbayShippingMethod
-68. EbayConfig
-69. CountryAddressFormat
-70. ContentSearchResult
-71. ContentSearchConstraint
-72. ContentKeyword
-73. CheckAccount
-74. AgreementFacilityAppl
-75. AgreementContentType
-76. AgreementContent
-
-**Removed 8 entities**
-
-1. DepreciationMethod
-2. FixedAssetMaintMeter
-3. OagisMessageErrorInfo
-4. OagisMessageInfo
-5. SalesOpportunityTrackingCode
-6. SimpleSalesTaxLookup
-7. TestBlob
-8. WorkEffortAssignmentRate
-
-
-## Field Changes
-
-| Entity  | Field  | Action | IsPK | Revision |
-|:------------- |:---------------:|:---------------:|:---------------:|:---------------:|
-| AcctgTransAttribute | attrDescription | Added | No | NA |
-| AcctgTransEntry | inventoryItemId | Added | No | NA |
-| AcctgTransTypeAttr | description | Added | No | NA |
-| BenefitType | parentTypeId | Added | No | NA |
-| BenefitType | hasTable | Added | No | NA |
-| BudgetAttribute | attrDescription | Added | No | NA |
-| BudgetItemAttribute | attrDescription | Added | No | NA |
-| BudgetItemTypeAttr | description | Added | No | NA |
-| BudgetStatus | changeByUserLoginId | Added | No | NA |
-| BudgetTypeAttr | description | Added | No | NA |
-| CommunicationEventRole | statusId | Added | No | NA |
-| CommunicationEventType | contactMechTypeId | Added | No | NA |
-| ContactListCommStatus | partyId | Added | No | NA |
-| ContactListCommStatus | messageId | Added | No | NA |
-| ContactListCommStatus | changeByUserLoginId | Added | No | NA |
-| ContactMechAttribute | attrDescription | Added | No | NA |
-| ContactMechTypeAttr | description | Added | No | NA |
-| DeductionType | parentTypeId | Added | No | NA |
-| DeductionType | hasTable | Added | No | NA |
-| DocumentAttribute | attrDescription | Added | No | NA |
-| DocumentTypeAttr | description | Added | No | NA |
-| EmploymentApp | approverPartyId | Added | No | NA |
-| EmploymentApp | jobRequisitionId | Added | No | NA |
-| EmploymentAppSourceType | parentTypeId | Added | No | NA |
-| EmploymentAppSourceType | hasTable | Added | No | NA |
-| EmplPositionClassType | parentTypeId | Added | No | NA |
-| EmplPositionClassType | hasTable | Added | No | NA |
-| EmplPositionType | parentTypeId | Added | No | NA |
-| EmplPositionType | hasTable | Added | No | NA |
-| EmplPositionType | partyId | Removed | No | NA |
-| EmplPositionType | roleTypeId | Removed | No | NA |
-| FinAccountAttribute | attrDescription | Added | No | NA |
-| FinAccountTransAttribute | attrDescription | Added | No | NA |
-| FinAccountTrans | glReconciliationId | Added | No | NA |
-| FinAccountTrans | statusId | Added | No | NA |
-| FinAccountTransTypeAttr | description | Added | No | NA |
-| FinAccountTypeAttr | description | Added | No | NA |
-| FinAccountStatus | changeByUserLoginId | Added | No | NA |
-| FixedAsset | acquireOrderId | Added | No | NA |
-| FixedAsset | acquireOrderItemSeqId | Added | No | NA |
-| FixedAssetAttribute | attrDescription | Added | No | NA |
-| FixedAssetTypeAttr | description | Added | No | NA |
-| GlAccount | externalId | Added | No | NA |
-| GlAccount | openingBalance | Added | No | NA |
-| GlReconciliation | createdDate | Added | No | NA |
-| GlReconciliation | lastModifiedDate | Added | No | NA |
-| GlReconciliation | statusId | Added | No | NA |
-| GlReconciliation | openingBalance | Added | No | NA |
-| InventoryItemAttribute | attrDescription | Added | No | NA |
-| InventoryItemStatus | changeByUserLoginId | Added | No | NA |
-| InventoryItemTypeAttr | description | Added | No | NA |
-| InvoiceAttribute | attrDescription | Added | No | NA |
-| InvoiceItemAttribute | attrDescription | Added | No | NA |
-| InvoiceItemTypeAttr | description | Added | No | NA |
-| InvoiceStatus | changeByUserLoginId | Added | No | NA |
-| InvoiceTypeAttr | description | Added | No | NA |
-| InvoiceTermAttribute | attrDescription | Added | No | NA |
-| JobSandbox | currentRetryCount | Added | No | NA |
-| JobSandbox | tempExprId | Added | No | NA |
-| JobSandbox | currentRecurrenceCount | Added | No | NA |
-| JobSandbox | maxRecurrenceCount | Added | No | NA |
-| JobSandbox | jobResult | Added | No | NA |
-| OrderAdjustment | amountAlreadyIncluded | Added | No | NA |
-| OrderAdjustment | isManual | Added | No | NA |
-| OrderAdjustment | oldPercentage | Added | No | NA |
-| OrderAdjustment | oldAmountPerQuantity | Added | No | NA |
-| OrderAdjustment | lastModifiedDate | Added | No | NA |
-| OrderAdjustment | lastModifiedByUserLogin | Added | No | NA |
-| OrderAdjustmentAttribute | attrDescription | Added | No | NA |
-| OrderAdjustmentTypeAttr | description | Added | No | NA |
-| OrderAttribute | attrDescription | Added | No | NA |
-| OrderItem | supplierProductId | Added | No | NA |
-| OrderItem | cancelBackOrderDate | Added | No | NA |
-| OrderItem | changeByUserLoginId | Added | No | NA |
-| OrderItemAttribute | attrDescription | Added | No | NA |
-| OrderItemShipGroup | facilityId | Added | No | NA |
-| OrderItemShipGroup | estimatedShipDate | Added | No | NA |
-| OrderItemShipGroup | estimatedDeliveryDate | Added | No | NA |
-| OrderItemShipGrpInvRes | priority | Added | No | NA |
-| OrderItemShipGrpInvRes | oldPickStartDate | Added | No | NA |
-| OrderItemTypeAttr | description | Added | No | NA |
-| OrderTermAttribute | attrDescription | Added | No | NA |
-| OrderPaymentPreference | track2 | Added | No | NA |
-| OrderPaymentPreference | swipedFlag | Added | No | NA |
-| OrderPaymentPreference | lastModifiedDate | Added | No | NA |
-| OrderPaymentPreference | lastModifiedByUserLogin | Added | No | NA |
-| OrderShipment | shipGroupSeqId | Added | No | NA |
-| OrderTypeAttr | description | Added | No | NA |
-| PartyAcctgPreference | orderSequenceEnumId | Removed | No | NA |
-| PartyAcctgPreference | quoteSequenceEnumId | Removed | No | NA |
-| PartyAcctgPreference | invoiceSequenceEnumId | Removed | No | NA |
-| PartyAcctgPreference | oldOrderSequenceEnumId | Added | No | NA |
-| PartyAcctgPreference | oldQuoteSequenceEnumId | Added | No | NA |
-| PartyAcctgPreference | oldInvoiceSequenceEnumId | Added | No | NA |
-| PartyAcctgPreference | orderSeqCustMethId | Added | No | NA |
-| PartyQual | infoString | Removed | No | NA |
-| PartyQual | institutionInternalId | Removed | No | NA |
-| PartyQual | institutionPartyId | Removed | No | NA |
-| PartyQual | partyQualId | Removed | No | NA |
-| PartyRate | percentageUsed | Added | No | NA |
-| PartyRate | rate | Removed | No | NA |
-| PartyResume | contentId | Added | No | NA |
-| PaymentAttribute | attrDescription | Added | No | NA |
-| PaymentGatewayResponse | gatewayCvResult | Added | No | NA |
-| PaymentMethod | finAccountId | Added | No | NA |
-| PaymentTypeAttr | description | Added | No | NA |
-| PerfRatingType | parentTypeId | Added | No | NA |
-| PerfRatingType | hasTable | Added | No | NA |
-| PerfReview | payHistoryRoleTypeIdTo | Removed | No | NA |
-| PerfReview | payHistoryRoleTypeIdFrom | Removed | No | NA |
-| PerfReview | payHistoryPartyIdTo | Removed | No | NA |
-| PerfReview | payHistoryPartyIdFrom | Removed | No | NA |
-| PerfReview | payHistoryFromDate | Removed | No | NA |
-| PerfReviewItemType | parentTypeId | Added | No | NA |
-| PerfReviewItemType | hasTable | Added | No | NA |
-| PersonTraining | trainingRequestId | Added | No | NA |
-| PersonTraining | workEffortId | Added | No | NA |
-| PersonTraining | approverId | Added | No | NA |
-| PersonTraining | approvalStatus | Added | No | NA |
-| PersonTraining | reason | Added | No | NA |
-| PostalAddress | houseNumber | Added | No | NA |
-| PostalAddress | houseNumberExt | Added | No | NA |
-| PostalAddress | cityGeoId | Added | No | NA |
-| PostalAddress | municipalityGeoId | Added | No | NA |
-| PostalAddress | geoPointId | Added | No | NA |
-| PosTerminal | terminalName | Added | No | NA |
-| PosTerminalInternTx | reasonEnumId | Added | No | NA |
-| Product | releaseDate | Added | No | NA |
-| Product | originalImageUrl | Added | No | NA |
-| Product | inventoryItemTypeId | Added | No | NA |
-| Product | shippingWeight | Added | No | NA |
-| Product | productWeight | Added | No | NA |
-| Product | diameterUomId | Added | No | NA |
-| Product | productDiameter | Added | No | NA |
-| Product | virtualVariantMethodEnum | Added | No | NA |
-| Product | defaultShipmentBoxTypeId | Added | No | NA |
-| Product | lotIdFilledIn | Added | No | NA |
-| Product | orderDecimalQuantity | Added | No | NA |
-| Product | weight | Removed | No | NA |
-| Product | taxCategory | Removed | No | NA |
-| Product | taxVatCode | Removed | No | NA |
-| Product | taxDutyCode | Removed | No | NA |
-| ProductAttribute | attrDescription | Added | No | NA |
-| ProductAverageCost | productAverageCostTypeId | Added | No | NA |
-| ProductAverageCost | facilityId | Added | No | NA |
-| ProductContent | sequenceNum | Added | No | NA |
-| ProductKeyword | keywordTypeId | Added | No | NA |
-| ProductKeyword | statusId | Added | No | NA |
-| ProductRole | sequenceNum | Added | No | NA |
-| ProductStore | balanceResOnOrderCreation | Added | No | NA |
-| ProductStore | defaultTimeZoneString | Added | No | NA |
-| ProductStore | oldStyleSheet | Added | No | NA |
-| ProductStore | oldHeaderLogo | Added | No | NA |
-| ProductStore | oldHeaderRightBackground | Added | No | NA |
-| ProductStore | oldHeaderMiddleBackground | Added | No | NA |
-| ProductStore | styleSheet | Removed | No | NA |
-| ProductStore | headerLogo | Removed | No | NA |
-| ProductStore | headerRightBackground | Removed | No | NA |
-| ProductStore | headerMiddleBackground | Removed | No | NA |
-| ProductStorePaymentSetting | paymentCustomMethodId | Added | No | NA |
-| ProductStorePaymentSetting | paymentGatewayConfigId | Added | No | NA |
-| ProductStoreShipmentMeth | shipmentCustomMethodId | Added | No | NA |
-| ProductStoreShipmentMeth | shipmentGatewayConfigId | Added | No | NA |
-| ProductStoreShipmentMeth | allowancePercent | Added | No | NA |
-| ProductStoreShipmentMeth | minimumPrice | Added | No | NA |
-| ProductTypeAttribute | attrDescription | Added | No | NA |
-| QuoteAdjustment | lastModifiedDate | Added | No | NA |
-| QuoteAdjustment | lastModifiedByUserLogin | Added | No | NA |
-| QuoteAttribute | attrDescription | Added | No | NA |
-| QuoteItem | leadTimeDays | Added | No | NA |
-| QuoteRole | fromDate | Added | Yes | NA |
-| QuoteRole | thruDate | Added | No | NA |
-| QuoteTerm | termDays | Added | No | NA |
-| QuoteTerm | textValue | Added | No | NA |
-| QuoteTerm | description | Added | No | NA |
-| QuoteTermAttribute | attrDescription | Added | No | NA |
-| QuoteTypeAttr | description | Added | No | NA |
-| RequirementAttribute | changeByUserLoginId | Added | No | NA |
-| RequirementStatus | changeByUserLoginId | Added | No | NA |
-| ResponsibilityType | parentTypeId | Added | No | NA |
-| ResponsibilityType | hasTable | Added | No | NA |
-| ReturnAdjustment | createdByUserLoginId | Added | No | NA |
-| ReturnAdjustment | lastModifiedDate | Added | No | NA |
-| ReturnAdjustment | lastModifiedByUserLogin | Added | No | NA |
-| ReturnHeader | supplierRmaId | Added | No | NA |
-| ReturnItemResponse | finAccountTransId | Added | No | NA |
-| ReturnStatus | changeByUserLoginId | Added | No | NA |
-| SalaryStep | fromDate | Added | Yes | NA |
-| SalaryStep | thruDate | Added | No | NA |
-| SalaryStep | createdByUserLoginId | Added | No | NA |
-| SalaryStep | lastModifiedByUserLogin | Added | No | NA |
-| SalesOpportunity | nextStepDate | Added | No | NA |
-| ServiceSemaphore | lockedByInstanceId | Added | No | NA |
-| ShoppingListItem | modifiedPrice | Added | No | NA |
-| SkillType | parentTypeId | Added | No | NA |
-| SkillType | hasTable | Added | No | NA |
-| SupplierProduct | shippingPrice | Added | No | NA |
-| SupplierProduct | supplierCommissionPerc | Removed | No | NA |
-| TaxAuthorityRateProduct | isTaxInShippingPrice | Added | No | NA |
-| TerminationType | parentTypeId | Added | No | NA |
-| TerminationType | hasTable | Added | No | NA |
-| TestingNodeMember | extendFromDate | Added | No | NA |
-| TestingNodeMember | extendThruDate | Added | No | NA |
-| TimeEntry | planHour | Added | No | NA |
-| Timesheet | approvedByUserLoginId | Added | No | NA |
-| TrainingClassType | parentTypeId | Added | No | NA |
-| TrainingClassType | hasTable | Added | No | NA |
-| UnemploymentClaim | thruDate | Added | No | NA |
-| UserLogin | externalAuthId | Added | No | NA |
-| UserLogin | userLdapDn | Added | No | NA |
-| UserLogin | disabledBy | Added | No | NA |
-| ValueLinkKey | createdByUserLogin | Added | No | NA |
-| WebSite | visualThemeSetId | Added | No | NA |
-| WebSite | hostedPathAlias | Added | No | NA |
-| WebSite | isDefault | Added | No | NA |
-| WebSite | displayMaintenancePage | Added | No | NA |
-| WebSitePathAlias| fromDate | Added | Yes | R1738588 |
-| WebSitePathAlias| thruDate | Added | No | R1738588 |
-| WorkEffort | tempExprId | Added | No | NA |
-| WorkEffort | sequenceNum | Added | No | NA |
-| WorkEffortAttribute | attrDescription | Added | No | NA |
-| WorkEffortAssocAttribute | attrDescription | Added | No | NA |
-| WorkEffortAssocTypeAttr | description | Added | No | NA |
-| WorkEffortContactMech | fromDate | Added | Yes | NA |
-| WorkEffortContactMech | thruDate | Added | No | NA |
-| WorkEffortFixedAssetAssign | availabilityStatusId | Added | No | NA |
-| WorkEffortPartyAssignment | assignedByUserLoginId | Added | No | NA |
-| WorkEffortPurposeType | parentTypeId | Added | No | NA |
-| WorkEffortStatus | reason | Added | No | NA |
-| WorkEffortTypeAttr | description | Added | No | NA |
-| WorkOrderItemFulfillment | shipGroupSeqId | Added | No | NA |
diff --git a/applications/datamodel/README.adoc b/applications/datamodel/README.adoc
new file mode 100644
index 0000000..7d37a7d
--- /dev/null
+++ b/applications/datamodel/README.adoc
@@ -0,0 +1,36 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+= Datamodel component
+The Apache OFBiz® Project
+Release 17.12
+
+This OFBiz component contains all entity definitions used in the various components in the base and plugins stack.
+
+== more information
+For more information about this component visit the product page in the OFBiz WIKI,
+which can be found at https://cwiki.apache.org/confluence/display/OFBIZ/Datamodel
+
+For information about datamodel change read documentation DATAMODEL_CHANGES.adoc.
+It's included in Developer manual > chapter Entity Engine
+
+== issues
+JIRA issues related to this component can be found at https://issues.apache.org/jira/browse/OFBIZ/component/12330107
+
+== commits
+Committed revisions can be viewed at https://svn.apache.org/viewvc/ofbiz/trunk/applications/datamodel/
diff --git a/applications/datamodel/README.md b/applications/datamodel/README.md
deleted file mode 100644
index c042237..0000000
--- a/applications/datamodel/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-<img src="http://ofbiz.apache.org/images/OFBiz-logo.png" alt="Apache OFBiz" />
-
-# Datamodel component
-This OFBiz component contains all entity definitions used in the various components in the base and plugins stack.
-
-## more information
-For more information about this component visit the product page in the OFBiz WIKI,
-which can be found at https://cwiki.apache.org/confluence/display/OFBIZ/Datamodel
-
-## issues
-JIRA issues related to this component can be found at https://issues.apache.org/jira/browse/OFBIZ/component/12330107
-
-## commits
-Committed revisions can be viewed at https://svn.apache.org/viewvc/ofbiz/trunk/applications/datamodel/
\ No newline at end of file
diff --git a/docs/asciidoc/developer-manual.adoc b/docs/asciidoc/developer-manual.adoc
index 740fd97..56118ef 100644
--- a/docs/asciidoc/developer-manual.adoc
+++ b/docs/asciidoc/developer-manual.adoc
@@ -217,6 +217,8 @@ include::../../framework/webapp/src/docs/asciidoc/webapp.adoc[leveloffset=+1]
 
 === Supported databases
 
+include::../../applications/datamodel/DATAMODEL_CHANGES.adoc[leveloffset=+2]
+
 == Service Engine
 
 === Declaration and Implementation
diff --git a/themes/README.adoc b/themes/README.adoc
new file mode 100644
index 0000000..e159ee3
--- /dev/null
+++ b/themes/README.adoc
@@ -0,0 +1,28 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+////
+= Apache OFBiz Themes
+The Apache OFBiz® Project
+Release 17.12
+
+This OFBiz component contains all elements needed to manage theming in OFBiz.
+
+== more information
+All detailled documtation are in file `../docs/themes.adoc` +
+This detailled documentation is included in Developer manual > chapter Widget System
+
diff --git a/themes/README.md b/themes/README.md
deleted file mode 100644
index 0582954..0000000
--- a/themes/README.md
+++ /dev/null
@@ -1,314 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-Apache OFBiz Themes
-====================
-
-# What is a theme
-A Theme is an ofbiz component that defines all elements necessary to render all information generated by the screen engine through an embedded technology.
-Currently themes presents in Apache OFBiz use html5/jquery/css to do that.
-
-To realize that, a theme can define some properties, among them some can be necessary. It can define its own ftl macro to render the different modelScreen elements and can define its own screen decorator to prepare the final user screen structure for the technology used by the theme.
-
-# How to define it
-A theme is a standard component, present in the directory themes or plugins with a file definition present on widget/Theme.xml and support the [widget-theme.xsd](http://ofbiz.apache.org/dtds/widget-theme.xsd)
-
-To offer the possibility for end users to select the theme through the "Select Theme Screen", the theme need to load the entity VisualTheme and one or more entries related to this theme.
-
-# Structure of Theme.xml
-The theme definition file help OFBiz to know what specific rendering the Theme want to use.
-It's composed by two definition elements and four optional blocks
-
-## Main definition
-The First mandatory element is one or several visualThemeId related to the theme
-Defined like that
-```xml
-    <visual-themes>
-        <visual-theme id="MY_THEME"/>
-    </visual-themes>
-```
-You need to define in the database an entry in VisualTheme Entity for each visual-theme id defined.
-```xml
-<entity-engine-xml>
-    <VisualTheme visualThemeId="MY_THEME" visualThemeSetId="BACKOFFICE" description="My theme - Example (based on flatgrey)"/>
-</entity-engine-xml>
-```
->_Note_: a theme component can load one or more visual theme id. Usually only one is present.
-
-The second important (but not mandatory) element is **implements**
-```xml
-   <extends location="component://common-theme/widget/Theme.xml"/>
-```
-This element indicates that your theme copies from the extend theme all information not present in its file definition.
-If this element isn't present in your theme, you will need to define all information present in common-theme to be sure that OFBiz misses nothing for a correct run. Otherwise some functionnalities can be broken...
->_Note_: It's highly recommended to extend the common-theme to be sure that your theme works correctly and to surcharge only what you need.
-
-The four following blocks are optionnal if you define an extends theme
-## General properties
-This block contains all properties that the screen engine can use to prepare the rendering and that the theme can implement
-```xml
-    <widget-properties><!--Transversal properties relative to ofbiz widget component-->
-        <default-view-size value="20"/>
-        <autocompleter
-                default-view-size="10"
-                default-min-lenght="2"
-                default-delay="300"
-                display-return-field="true"/>
-        <lookup
-                position="topleft"
-                width="640"
-                height="500"/>
-        <layered-modal
-                width="800"
-                height="600"/>
-    </widget-properties>
-```
-
-## Theme's specific properties
-This block contains all properties specific to this theme. In general these are some properties present on ftl template, that are initialized by the theme and can be surchaged by another theme through the extends elements.
-```xml
-        <property name="jgrowlPosition" value="center" type="String"/><!--possible value: top-left, top-right, bottom-left, bottom-right, center-->
-        <property name="jgrowlWidth" value="800" type="Integer"/>
-        <property name="jgrowlHeight" value="" type="Integer"/>
-        <property name="jgrowlSpeed" value="100" type="Integer"/>
-```
-## Ftl macro library
-This block defines for each technology implemented by the screen engine where it can find the macro library for each model (Screen, Form, Tree, Menu)
-```xml
-   <templates><!-- Freemarker template use by this theme to render widget model-->
-        <template name="screen" type="html" content-type="UTF-8" encoding="none" encoder="html" compress="false">
-            <template-file widget="screen" location="component://common-theme/template/macro/HtmlScreenMacroLibrary.ftl"/>
-            <template-file widget="form" location="component://common-theme/template/macro/HtmlFormMacroLibrary.ftl"/>
-            <template-file widget="tree" location="component://common-theme/template/macro/HtmlTreeMacroLibrary.ftl"/>
-            <template-file widget="menu" location="component://common-theme/template/macro/HtmlMenuMacroLibrary.ftl"/>
-        </template>
-        ...
-   </templates>
-```
->_Note_: If you want surcharge some macros, you can just create the desired macros and import the others from common-theme (at the top of file) like that : ```<#include "component://common-theme/template/macro/HtmlFormMacroLibrary.ftl"/>```
-
-## Screen library
-This block defines where OFBiz can find all official screens definitions in framework/common
-
-Normally, you don't need to change this file except if you need to define a default screen style that doesn't exist  OOTB. If you need to extend an existing one, you have to do it in the theme directory.
-
-To define a new default screen style, you have to add it in this file, and point to the screen decorator in common-theme to define your default screen style as the default one.
-
-```xml
-     <common-screens><!--list all common screen and decorator global to each application that each theme can be surcharge or not and use the screen present on common theme-->
-        <structural-decorator default-location="component://common-theme/widget/CommonScreens.xml">
-            <screen name="GlobalDecorator"/>
-            ...
-        </structural-decorator>
-        <embed-decorator default-location="component://common-theme/widget/CommonScreens.xml">
-            <screen name="FindScreenDecorator"/>
-        </embed-decorator>
-        <general-screen default-location="component://common-theme/widget/CommonScreens.xml">
-            <screen name="geoChart"/>
-            ...
-        </general-screen>
-    </common-screens>
-```
-Screens are separated in three types :
-* structural-decorator : contains all decorators that organise the screens structures
-* embed-decorator : decorator used only on sub screens
-* general-screen : list all generic inter applications screens
-# The common-theme
-This is the root theme that contains all information to ensure a good basic theme for OFBiz.
-Currently it keeps all old themes system for backward compatibility with ftl template managed by the entity **VisualThemeResource**
-
-# Create your own theme
-As a theme is a component, you can create a new theme like a plugin.
-
-After creating a component, you can add the two minimal information :
-
-* Theme.xml file in **plugins/my-theme/widget/** with minimal information :
-```xml
-<theme name="my-theme"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-theme.xsd">
-    <visual-themes>
-        <visual-theme id="MY_THEME" display-name="My Theme"/>
-    </visual-themes>
-</theme>
-```
-
-
-* your data file to add your visual theme in **plugins/my-theme/data/**
-```xml
-<entity-engine-xml>
-    <VisualTheme visualThemeId="MY_THEME" visualThemeSetId="BACKOFFICE"/>
-</entity-engine-xml>
-```
-The presence of VisualTheme entity helps to indicate which theme is available in your instance, specially helpful for tenant installations.
-
-To display your theme in OFBiz theme library, you can complete the information on each visual theme like
-```
-<theme name="my-theme"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-theme.xsd">
-    <visual-themes>
-        <visual-theme id="MY_THEME" display-name="My Theme">
-            <description>My new funny theme under nice tecnno</description>
-            <screenshot location="/mytheme/screenshot1.png"/>
-            <screenshot location="/mytheme/screenshot2.png"/>
-        </visual-theme>
-    </visual-themes>
-</theme>
-```
-
->_Note_: **display-name** and **description** support the flexibleStringExpander syntax
-
-## extends common-theme
-This is a first step to understand how the theme system works. With your new theme, you can try to surchage different elements.
-To start, extends the common-theme :
-```xml
-<theme name="my-theme"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-theme.xsd">
-    <visual-themes>
-        <visual-theme id="MY_THEME" display-name="My Theme">
-            <description>My new funny theme under nice tecnno</description>
-            <screenshot location="/mytheme/screenshot1.png"/>
-        </visual-theme>
-    </visual-themes>
-    <extends location="component://common-theme/widget/Theme.xml"/>
-</theme>
-```
-Now your theme should be operational, but without particularity.
-
-You can surcharge a ftl macro, to do this create your own ftl macro file in **plugins/my-theme/templates/macro/HtmlFormMacroLibrary.ftl** with
-
-```ftl
-<#include "component://common-theme/template/macro/HtmlFormMacroLibrary.ftl"/>
-
-<#macro renderDisplayField type imageLocation idName description title class alert inPlaceEditorUrl="" inPlaceEditorParams="">
-    <#if description?has_content>
-    *###*${description?replace("\n", "<br />")}**<#t/>
-    <#else>
-        *#&nbsp;#*<#t/>
-    </#if>
-</#macro>
-```
-Now indicate to your theme that you want use this library
-```xml
-<theme name="my-theme"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-theme.xsd">
-    <visual-themes>
-        <visual-theme id="MY_THEME" display-name="My Theme">
-            <description>My new funny theme under nice tecnno</description>
-            <screenshot location="/mytheme/screenshot1.png"/>
-        </visual-theme>
-    </visual-themes>
-    <extends location="component://common-theme/widget/Theme.xml"/>
-    <templates>
-        <template name="screen" type="html" content-type="UTF-8" encoding="none" encoder="html" compress="false">
-            <template-file widget="form" location="component://my-theme/template/macro/HtmlFormMacroLibrary.ftl"/>
-        </template>
-    </templates>
-</theme>
-```
-and check the result when you select your theme. The result isn't really interesting but it's to understand how it works.
-
-## create from scratch
-TODO...
-
-# Backware compatibility with OFBiz 16.11 and above
-## How themes worked before
-Before the theme management by model definition, all configurations have been present in the database through entity **VisualTheme** and **VisualThemeRessource**.
-These ressources were loaded in a **layoutProperties** variable and used directly by decorator screens and ftl templates.
-
-## Now with the common-theme
-All this logic is still present in the common-theme template to keep backward compatibility, but the VisualThemeRessource is now useless and properties have been migrated to the Theme definition in the part **theme-properties**
-### Example with BlueLight
-The blue light theme has been these properties in VisualThemeRessource :
-
-```xml
-    <VisualTheme visualThemeId="BLUELIGHT" visualThemeSetId="BACKOFFICE" description="BlueLight Theme: breadcrumbs, drop-down menus and rounded corners"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_NAME" resourceValue="BLUELIGHT" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_IMAGE_URL" resourceValue="/images/ofbiz_logo.png" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_SHORTCUT_ICON" resourceValue="/images/ofbiz.ico" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_SCREENSHOT" resourceValue="/bluelight/screenshot.jpg" sequenceId="01"/>
-
-    <!-- CSS references -->
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_STYLESHEET" resourceValue="/bluelight/style.css" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HELPSTYLESHEET" resourceValue="/bluelight/help.css" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_DOCBOOKSTYLESHEET" resourceValue="/bluelight/webapp/bluelight/docbook.css" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_STYLESHEET" resourceValue="/common/js/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.css" sequenceId="02"/>
-
-    <!-- Javascript references -->
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/jquery-1.11.0.min.js" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/jquery-migrate-1.2.1.js" sequenceId="02"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/ui/js/jquery-ui-1.10.3.min.js" sequenceId="03"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/plugins/asmselect/jquery.asmselect-1.0.4a-beta.js" sequenceId="05"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/plugins/datetimepicker/jquery-ui-timepicker-addon.min-1.4.3.js" sequenceId="07"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/plugins/fjTimer/jquerytimer-min.js" sequenceId="09"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/plugins/mask/jquery.mask-1.14.13.min.js" sequenceId="10"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/plugins/jeditable/jquery.jeditable-1.7.3.js" sequenceId="11"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/jquery/plugins/validate/jquery.validate.min.js" sequenceId="12"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/plugins/OpenLayers-2.13.1.js" sequenceId="13"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/util/OfbizUtil.js" sequenceId="15"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/util/fieldlookup.js" sequenceId="16"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/plugins/date/date.format-1.2.3-min.js" sequenceId="17"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/plugins/date/date.timezone-min.js" sequenceId="18"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/util/miscAjaxFunctions.js" sequenceId="19"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/util/selectMultipleRelatedValues.js" sequenceId="20"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/util/util.js" sequenceId="21"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/common/js/plugins/date/FromThruDateCheck.js" sequenceId="22"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_JAVASCRIPT" resourceValue="/bluelight/dropdown.js" sequenceId="30"/>
-
-    <!-- ftl references -->
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_HDR_TMPLT_LOC" resourceValue="component://bluelight/template/Header.ftl" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_FTR_TMPLT_LOC" resourceValue="component://bluelight/template/Footer.ftl" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_NAV_OPEN_TMPLT" resourceValue="component://bluelight/template/AppBarOpen.ftl" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_NAV_CLOSE_TMPLT" resourceValue="component://bluelight/template/AppBarClose.ftl" sequenceId="01"/>
-    <VisualThemeResource visualThemeId="BLUELIGHT" resourceTypeEnumId="VT_MSG_TMPLT_LOC" resourceValue="component://bluelight/template/Messages.ftl" sequenceId="01"/>
-```
-Now it's just
-```xml
-    <VisualTheme visualThemeId="BLUELIGHT" visualThemeSetId="BACKOFFICE"/>
-```
-And on theme definition
-
-```xml
-    <theme-properties>
-        <!--javascript lib-->
-        <property name="VT_HDR_JAVASCRIPT['add']" value="/bluelight/dropdown.js" sequenceId="30"/>
-        <!--Css style-->
-        <property name="VT_STYLESHEET['add']" value="/bluelight/style.css"/>
-        <property name="VT_HELPSTYLESHEET['add']" value="/bluelight/help.css"/>
-        <property name="VT_DOCBOOKSTYLESHEET['add']" value="/bluelight/webapp/bluelight/docbook.css"/>
-        <!--template location-->
-        <property name="VT_HDR_TMPLT_LOC" value="component://bluelight/template/Header.ftl"/>
-        <property name="VT_FTR_TMPLT_LOC" value="component://bluelight/template/Footer.ftl"/>
-        <property name="VT_NAV_OPEN_TMPLT" value="component://bluelight/template/AppBarOpen.ftl"/>
-        <property name="VT_NAV_CLOSE_TMPLT" value="component://bluelight/template/AppBarClose.ftl"/>
-        <property name="VT_MSG_TMPLT_LOC" value="component://bluelight/template/Messages.ftl"/>
-    </theme-properties>
-```
-Values with **/images/...** have been moved to the common-theme that bluelight extends, the theme definition keeps only what the theme adds to the extended theme.
-
->_Note_ property name supports the FlexibleMapAccessor syntax, so you can continue to populate a list (VT_STYLESHEET['add']), reset a list (VT_STYLESHEET[]) or add an element on the top list (VT_STYLESHEET[+0]) because some time the order libraries loading is important
-
-### Migrate you own theme
-Easily, create you Theme.xml and move your VisualThemeResource in **theme-properties** like in the BlueLight example above.
-Maybe you will need to update your template because the modelTheme return ressources not always as list. So :
-`<property name="VT_HDR_TMPLT_LOC" value="component://bluelight/template/Header.ftl"/>` -> return a String with `component://bluelight/template/Header.ftl`
-`<property name="VT_STYLESHEET['add'] value="..."` -> return a List<String>
-

Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] 24/28: Improved: Improved: Changed lineSplit value to 150. (OFBIZ-11737) Earlier it was 120, as per discussion over ML we decided to make it 150 instead.

jleroux@apache.org
In reply to this post by jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch ecomify-OFBIZ-11468_Convert_ShipmentReceiptServices-squashed
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 7603d5ce8a2bcc1353a15debfe214f8c04f60752
Author: Suraj Khurana <[hidden email]>
AuthorDate: Mon May 25 17:24:30 2020 +0530

    Improved: Improved: Changed lineSplit value to 150.
    (OFBIZ-11737)
    Earlier it was 120, as per discussion over ML we decided to make it 150 instead.
---
 build.gradle                     | 2 +-
 config/checkstyle/checkstyle.xml | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/build.gradle b/build.gradle
index e6ef484..759327c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -286,7 +286,7 @@ checkstyle {
     // the sum of errors found last time it was changed after using the
     // ‘checkstyle’ tool present in the framework and in the official
     // plugins.
-    tasks.checkstyleMain.maxErrors = 37101
+    tasks.checkstyleMain.maxErrors = 27599
     // Currently there are a lot of errors so we need to temporarily
     // hide them to avoid polluting the terminal output.
     showViolations = false
diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
index 527945a..af7b1dc 100644
--- a/config/checkstyle/checkstyle.xml
+++ b/config/checkstyle/checkstyle.xml
@@ -22,7 +22,7 @@ under the License.
           "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
           "https://checkstyle.org/dtds/configuration_1_3.dtd">
 <!-- This configuration corresponds to the OFBiz coding conventions
-     which are simply “Sun Coding Standards” + “120 characters line length” -->
+     which are simply “Sun Coding Standards” + “150 characters line length” -->
 <module name="Checker">
     <module name="BeforeExecutionExclusionFileFilter">
         <property name="fileNamePattern" value="module\-info\.java$"/>
@@ -40,9 +40,9 @@ under the License.
        <property name="maximum" value="0"/>
        <property name="message" value="Line has trailing spaces."/>
     </module>
-        <module name="LineLength">
-            <property name="max" value="120"/>
-        </module>
+    <module name="LineLength">
+        <property name="max" value="150"/>
+    </module>
 
     <module name="TreeWalker">
         <!-- Naming conventions -->

12