You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by le...@apache.org on 2009/11/13 02:44:30 UTC

svn commit: r835701 - /ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java

Author: lektran
Date: Fri Nov 13 01:44:30 2009
New Revision: 835701

URL: http://svn.apache.org/viewvc?rev=835701&view=rev
Log:
Cleaned up the invoiceServiceItems service, no functional changes just removed unnecessary code and made more use of utility methods

Modified:
    ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java

Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java?rev=835701&r1=835700&r2=835701&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Fri Nov 13 01:44:30 2009
@@ -3191,26 +3191,18 @@
         GenericValue userLogin = (GenericValue) context.get("userLogin");
         String orderId = (String) context.get("orderId");
         Locale locale = (Locale) context.get("locale");
-
-        // need the order header
-        GenericValue orderHeader = null;
+        
+        OrderReadHelper orh = null;
         try {
-            orderHeader = delegator.findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId));
-        } catch (GenericEntityException e) {
+            orh = new OrderReadHelper(delegator, orderId);
+        } catch (IllegalArgumentException e) {
             Debug.logError(e, "ERROR: Unable to get OrderHeader for orderId : " + orderId, module);
             return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderErrorUnableToGetOrderHeaderForOrderId", UtilMisc.toMap("orderId",orderId), locale));
         }
 
-        // get all the items for the order
+        // get all the approved items for the order
         List<GenericValue> orderItems = null;
-        if (orderHeader != null) {
-            try {
-                orderItems = orderHeader.getRelated("OrderItem");
-            } catch (GenericEntityException e) {
-                Debug.logError(e, "ERROR: Unable to get OrderItem list for orderId : " + orderId, module);
-                return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderErrorUnableToGetOrderItemListForOrderId", UtilMisc.toMap("orderId",orderId), locale));
-            }
-        }
+        orderItems = orh.getOrderItemsByCondition(EntityCondition.makeCondition("statusId", "ITEM_APPROVED"));
 
         // find any service items
         List<GenericValue> serviceItems = FastList.newInstance();
@@ -3224,24 +3216,10 @@
                     Debug.logError(e, "ERROR: Unable to get Product from OrderItem", module);
                 }
                 if (product != null) {
-                    GenericValue productType = null;
-                    try {
-                        productType = product.getRelatedOne("ProductType");
-                    } catch (GenericEntityException e) {
-                        Debug.logError(e, "ERROR: Unable to get ProductType from Product", module);
-                    }
-
-                    if (productType != null) {
-                        String productTypeId = productType.getString("productTypeId");
-
-                        // check for service goods
-                        if (productTypeId != null && "SERVICE".equalsIgnoreCase(productTypeId)) {
-                            // we only invoice APPROVED items
-                            if ("ITEM_APPROVED".equals(item.getString("statusId"))) {
-                                serviceItems.add(item);
-                                serviceProducts.put(item, product);
-                            }
-                        }
+                    // check for service goods
+                    if ("SERVICE".equals(product.get("productTypeId"))) {
+                        serviceItems.add(item);
+                        serviceProducts.put(item, product);
                     }
                 }
             }
@@ -3249,19 +3227,12 @@
 
         // now process the service items
         if (UtilValidate.isNotEmpty(serviceItems)) {
-            // single list with all invoice items
-            List<GenericValue> itemsToInvoice = FastList.newInstance();
-            itemsToInvoice.addAll(serviceItems);
-
             // do something tricky here: run as a different user that can actually create an invoice, post transaction, etc
             Map<String, Object> invoiceResult = null;
             try {
-                GenericValue permUserLogin = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", "system"));
-                Map<String, Object> invoiceContext = UtilMisc.toMap("orderId", orderId, "billItems", itemsToInvoice, "userLogin", permUserLogin);
+                GenericValue permUserLogin = ServiceUtil.getUserLogin(dctx, context, "system");
+                Map<String, Object> invoiceContext = UtilMisc.toMap("orderId", orderId, "billItems", serviceItems, "userLogin", permUserLogin);
                 invoiceResult = dispatcher.runSync("createInvoiceForOrder", invoiceContext);
-            } catch (GenericEntityException e) {
-                Debug.logError(e, "ERROR: Unable to invoice service items", module);
-                return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderProblemWithInvoiceCreationServiceItems", locale));
             } catch (GenericServiceException e) {
                 Debug.logError(e, "ERROR: Unable to invoice service items", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderProblemWithInvoiceCreationServiceItems", locale));
@@ -3271,35 +3242,16 @@
             }
 
             // update the status of service goods to COMPLETED;
-            for(GenericValue item : itemsToInvoice) {
-                GenericValue productType = null;
-                GenericValue product = (GenericValue) serviceProducts.get(item);
-                boolean markComplete = false;
-                if (product != null) {
-                    try {
-                        productType = product.getRelatedOne("ProductType");
-                    } catch (GenericEntityException e) {
-                        Debug.logError(e, "ERROR: Unable to get ProductType from Product", module);
-                    }
-                    if (item != null && productType != null) {
-                        String productTypeId = productType.getString("productTypeId");
-                        if (productTypeId != null && "SERVICE".equalsIgnoreCase(productTypeId)) {
-                            markComplete = true;
-                        }
-                    }
-                }
-
-                if (markComplete) {
-                    Map<String, Object> statusCtx = FastMap.newInstance();
-                    statusCtx.put("orderId", item.getString("orderId"));
-                    statusCtx.put("orderItemSeqId", item.getString("orderItemSeqId"));
-                    statusCtx.put("statusId", "ITEM_COMPLETED");
-                    statusCtx.put("userLogin", userLogin);
-                    try {
-                        dispatcher.runSyncIgnore("changeOrderItemStatus", statusCtx);
-                    } catch (GenericServiceException e) {
-                        Debug.logError(e, "ERROR: Problem setting the status to COMPLETED : " + item, module);
-                    }
+            for(GenericValue item : serviceItems) {
+                Map<String, Object> statusCtx = FastMap.newInstance();
+                statusCtx.put("orderId", item.getString("orderId"));
+                statusCtx.put("orderItemSeqId", item.getString("orderItemSeqId"));
+                statusCtx.put("statusId", "ITEM_COMPLETED");
+                statusCtx.put("userLogin", userLogin);
+                try {
+                    dispatcher.runSyncIgnore("changeOrderItemStatus", statusCtx);
+                } catch (GenericServiceException e) {
+                    Debug.logError(e, "ERROR: Problem setting the status to COMPLETED : " + item, module);
                 }
             }
         }