svn commit: r1825300 - in /ofbiz/ofbiz-framework/trunk/applications/accounting: src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java template/invoice/InvoiceReportItems.fo.ftl

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1825300 - in /ofbiz/ofbiz-framework/trunk/applications/accounting: src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java template/invoice/InvoiceReportItems.fo.ftl

nmalin
Author: nmalin
Date: Sun Feb 25 10:33:33 2018
New Revision: 1825300

URL: http://svn.apache.org/viewvc?rev=1825300&view=rev
Log:
Improved: Resolve invoiceItem description from InvoiceWorker (OFBIZ-10240)
To help the invoiceItem description resolution, I created a worker in InvoiceWorker to resolve it like this :
 1 take the item description field
 2 if tax associate, resolve the taxAuthorityRateProduct description
 3 if product associate, call content wrapper to resolve PRODUCT_NAME or take the brandName
 4 take the item Type line description

Modified:
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java
    ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportItems.fo.ftl

Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java?rev=1825300&r1=1825299&r2=1825300&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java Sun Feb 25 10:33:33 2018
@@ -26,10 +26,12 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
 import org.apache.ofbiz.base.util.Debug;
+import org.apache.ofbiz.base.util.StringUtil;
 import org.apache.ofbiz.base.util.UtilDateTime;
 import org.apache.ofbiz.base.util.UtilMisc;
 import org.apache.ofbiz.base.util.UtilNumber;
@@ -44,6 +46,8 @@ import org.apache.ofbiz.entity.condition
 import org.apache.ofbiz.entity.util.EntityQuery;
 import org.apache.ofbiz.entity.util.EntityUtil;
 import org.apache.ofbiz.entity.util.EntityUtilProperties;
+import org.apache.ofbiz.product.product.ProductContentWrapper;
+import org.apache.ofbiz.service.LocalDispatcher;
 
 /**
  * InvoiceWorker - Worker methods of invoices
@@ -113,6 +117,50 @@ public final class InvoiceWorker {
         return quantity.multiply(amount).setScale(decimals, rounding);
     }
 
+    /**
+     * Method to return the invoice item description with following step
+     * 1. take the item description field
+     * 2. if tax associate, resolve the taxAuthorityRateProduct description
+     * 3. if product associate, call content wrapper to resolve PRODUCT_NAME or take the brandName
+     * 4. take the item Type line description
+     * @param dispatcher
+     * @param invoiceItem
+     * @param locale
+     * @return the item description
+     * @throws GenericEntityException
+     */
+    public static String getInvoiceItemDescription(LocalDispatcher dispatcher, GenericValue invoiceItem, Locale locale) throws GenericEntityException {
+        Delegator delegator = invoiceItem.getDelegator();
+        String description = invoiceItem.getString("description");
+        if (UtilValidate.isEmpty(description)) {
+            String taxAuthorityRateSeqId = invoiceItem.getString("taxAuthorityRateSeqId");
+            if (UtilValidate.isNotEmpty(taxAuthorityRateSeqId)) {
+                GenericValue taxRate = invoiceItem.getRelatedOne("TaxAuthorityRateProduct", true);
+                if (taxRate != null) {
+                    description = (String) taxRate.get("description", locale);
+                }
+            }
+        }
+        if (UtilValidate.isEmpty(description)) {
+            String productId = invoiceItem.getString("productId");
+            if (UtilValidate.isNotEmpty(productId)) {
+                GenericValue product = EntityQuery.use(delegator).from("Product").where("productId", productId).cache().queryOne();
+                ProductContentWrapper productContentWrapper = new ProductContentWrapper(dispatcher, product, locale, "text/html");
+                StringUtil.StringWrapper stringWrapper = productContentWrapper.get("PRODUCT_NAME", "html");
+                if (stringWrapper != null) {
+                    description = stringWrapper.toString();
+                }
+                if (UtilValidate.isEmpty(description)) {
+                    description = product.getString("brandName");
+                }
+            }
+        }
+        if (UtilValidate.isEmpty(description)) {
+            description = (String) invoiceItem.getRelatedOne("InvoiceItemType", true).get("description",locale);
+        }
+        return description;
+    }
+
     /** Method to get the taxable invoice item types as a List of invoiceItemTypeIds.  These are identified in Enumeration with enumTypeId TAXABLE_INV_ITM_TY. */
     public static List<String> getTaxableInvoiceItemTypeIds(Delegator delegator) throws GenericEntityException {
         List<String> typeIds = new LinkedList<>();

Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportItems.fo.ftl
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportItems.fo.ftl?rev=1825300&r1=1825299&r2=1825300&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportItems.fo.ftl (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportItems.fo.ftl Sun Feb 25 10:33:33 2018
@@ -110,13 +110,7 @@ under the License.
                     </#if>
                 </#if>
             </#if>
-            <#if invoiceItem.description?has_content>
-                <#assign description=invoiceItem.description>
-            <#elseif taxRate?has_content & taxRate.get("description",locale)?has_content>
-                <#assign description=taxRate.get("description",locale)>
-            <#elseif itemType.get("description",locale)?has_content>
-                <#assign description=itemType.get("description",locale)>
-            </#if>
+            <#assign description = Static["org.apache.ofbiz.accounting.invoice.InvoiceWorker"].getInvoiceItemDescription(dispatcher, invoiceItem, locale)>
 
             <#if newShipmentId?? & newShipmentId != currentShipmentId>
                 <#-- the shipment id is printed at the beginning for each