svn commit: r799171 - /ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/util/UtilAccounting.java

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

svn commit: r799171 - /ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/util/UtilAccounting.java

apatel-2
Author: apatel
Date: Thu Jul 30 05:23:03 2009
New Revision: 799171

URL: http://svn.apache.org/viewvc?rev=799171&view=rev
Log:
Adding Utility methods to figure out Invoice types. Patch from OFBIZ-2769. Thanks Rishi, Chirag.

Modified:
    ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/util/UtilAccounting.java

Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/util/UtilAccounting.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/util/UtilAccounting.java?rev=799171&r1=799170&r2=799171&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/util/UtilAccounting.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/util/UtilAccounting.java Thu Jul 30 05:23:03 2009
@@ -261,4 +261,60 @@
     public static boolean isExpenseAccount(GenericValue account) throws GenericEntityException {
         return isAccountClass(account, "EXPENSE");
     }
+    
+    /**
+     * Recurses up invoice type tree via parentTypeId to see if input invoice type ID is in tree.
+     */
+    private static boolean isInvoiceTypeRecurse(GenericValue invoiceType, String inputTypeId) throws GenericEntityException {
+
+        // first check the invoiceTypeId and parentTypeId against inputTypeId
+        String invoiceTypeId = invoiceType.getString("invoiceTypeId");
+        String parentTypeId = invoiceType.getString("parentTypeId");
+        if (parentTypeId == null || invoiceTypeId.equals(parentTypeId)) {
+            return false;
+        }
+        if (parentTypeId.equals(inputTypeId)) {
+            return true;
+        }
+
+        // otherwise, we have to go to the grandparent (recurse)
+        return isInvoiceTypeRecurse(invoiceType.getRelatedOne("ParentInvoiceType"), inputTypeId);
+    }
+    
+    /**
+     * Checks if a invoice is of a specified InvoiceType.invoiceTypeId. Return false if invoice is null. It's better to use
+     * more specific calls like isPurchaseInvoice().
+     */
+    public static boolean isInvoiceType(GenericValue invoice, String inputTypeId) throws GenericEntityException {
+        if (invoice == null) {
+            return false;
+        }
+
+        GenericValue invoiceType = invoice.getRelatedOneCache("InvoiceType");
+        if (invoiceType == null) {
+            throw new GenericEntityException("Cannot find InvoiceType for invoiceId " + invoice.getString("invoiceId"));
+        }
+
+        String invoiceTypeId = invoiceType.getString("invoiceTypeId");
+        if (inputTypeId.equals(invoiceTypeId)) {
+            return true;
+        }
+
+        // recurse up tree
+        return isInvoiceTypeRecurse(invoiceType, inputTypeId);
+    }
+
+
+    public static boolean isPurchaseInvoice(GenericValue invoice) throws GenericEntityException {
+        return isInvoiceType(invoice, "PURCHASE_INVOICE");
+    }
+
+    public static boolean isSalesInvoice(GenericValue invoice) throws GenericEntityException {
+        return isInvoiceType(invoice, "SALES_INVOICE");
+    }
+
+    public static boolean isTemplate(GenericValue invoice) throws GenericEntityException {
+        return isInvoiceType(invoice, "TEMPLATE");
+    }
+
 }