svn commit: r568817 - in /ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis: OagisInventoryServices.java OagisShipmentServices.java

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

svn commit: r568817 - in /ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis: OagisInventoryServices.java OagisShipmentServices.java

jonesde
Author: jonesde
Date: Wed Aug 22 21:07:59 2007
New Revision: 568817

URL: http://svn.apache.org/viewvc?rev=568817&view=rev
Log:
Finished round trip test for fulfillment, return and notice of refurbishment complete for serialized inventory; this included a number of bug fixes, and fleshing out functionality in receiveInventoryProduct to handle InventoryItem updates, and of course changes to use that instead of just updating the InventoryItem and leaving out the ShipmentReceipt, ReturnItem, etc changes necessary; note that to see if return is totally received now looks at ShipmentReceipt records instead of InventoryItemDetail so it will work with serialized and non-serialized inventory

Modified:
    ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java
    ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java

Modified: ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java?rev=568817&r1=568816&r2=568817&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java (original)
+++ ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java Wed Aug 22 21:07:59 2007
@@ -857,37 +857,27 @@
                                     
                                     // TODOLATER: another fun thing to check: see if the serial number matches a serial number attached to the original return (if possible!)
                                     
+                                    //clone the context as it may be changed in the call
+                                    Map localRipCtx = FastMap.newInstance();
+                                    localRipCtx.putAll(ripCtx);
+                                    localRipCtx.put("quantityAccepted", new Double(1.0));
+                                    // always set this to 0, if needed we'll handle the rejected quantity separately
+                                    localRipCtx.put("quantityRejected", new Double(0.0));
+                                    localRipCtx.put("serialNumber", serialNum);
+                                    localRipCtx.put("productId", productId);
+                                    localRipCtx.put("returnItemSeqId", returnItemSeqId);
+                                    
                                     GenericValue inventoryItem = EntityUtil.getFirst(inventoryItemsBySerialNumber);
                                     if (inventoryItem != null) {
-                                        Map updateInvItmMap = FastMap.newInstance();
-                                        updateInvItmMap.put("inventoryItemId", inventoryItem.getString("inventoryItemId"));
-                                        updateInvItmMap.put("userLogin", userLogin);
-                                        updateInvItmMap.put("statusId", invItemStatusId);
-                                        String inventoryItemProductId = inventoryItem.getString("productId");
-                                        if (!inventoryItemProductId.equals(productId)) {
-                                            // got a new productId for the serial number; this may happen for refurbishment, etc
-                                            updateInvItmMap.put("productId",productId);
-                                        }
-                                        dispatcher.runSync("updateInventoryItem", updateInvItmMap);
-                                        invItemIds.add(UtilMisc.toMap("inventoryItemId", inventoryItem.getString("inventoryItemId")));
-                                    } else {
-                                        //clone the context as it may be changed in the call
-                                        Map localRipCtx = FastMap.newInstance();
-                                        localRipCtx.putAll(ripCtx);
-                                        localRipCtx.put("quantityAccepted", new Double(1.0));
-                                        // always set this to 0, if needed we'll handle the rejected quantity separately
-                                        localRipCtx.put("quantityRejected", new Double(0.0));
-                                        localRipCtx.put("serialNumber", serialNum);
-                                        localRipCtx.put("productId", productId);
-                                        localRipCtx.put("returnItemSeqId", returnItemSeqId);
-                                        
-                                        Map ripResult = dispatcher.runSync("receiveInventoryProduct", localRipCtx);
-                                        if (ServiceUtil.isError(ripResult)) {
-                                            String errMsg = ServiceUtil.getErrorMessage(ripResult);
-                                            errorMapList.add(UtilMisc.toMap("reasonCode", "ReceiveInventoryServiceError", "description", errMsg));
-                                        }
-                                        invItemIds.add(ripResult.get("inventoryItemId"));
+                                        localRipCtx.put("inventoryItemId", inventoryItem.getString("inventoryItemId"));
                                     }
+
+                                    Map ripResult = dispatcher.runSync("receiveInventoryProduct", localRipCtx);
+                                    if (ServiceUtil.isError(ripResult)) {
+                                        String errMsg = ServiceUtil.getErrorMessage(ripResult);
+                                        errorMapList.add(UtilMisc.toMap("reasonCode", "ReceiveInventoryServiceError", "description", errMsg));
+                                    }
+                                    invItemIds.add(ripResult.get("inventoryItemId"));
                                 }
                             } else {
                                 String inventoryItemTypeId = "NON_SERIAL_INV_ITEM";
@@ -982,25 +972,26 @@
                             String productId = (String) returnQuantityByProductIdEntry.getKey();
                             double returnQuantity = ((Double) returnQuantityByProductIdEntry.getValue()).doubleValue();
                             
-                            double inventoryQuantity = 0;
+                            double receivedQuantity = 0;
                             // note no facilityId because we don't really care where the return items were received
-                            List inventoryItemDetailList = delegator.findByAnd("InventoryItemAndDetail", UtilMisc.toMap("productId", productId, "returnId", returnId));
+                            List shipmentReceiptList = delegator.findByAnd("ShipmentReceipt", UtilMisc.toMap("productId", productId, "returnId", returnId));
                             // NOTE only consider those with a quantityOnHandDiff > 0 so we just look at how many have been received, not what was actually done with them
-                            Iterator inventoryItemDetailIter = inventoryItemDetailList.iterator();
-                            while (inventoryItemDetailIter.hasNext()) {
-                                GenericValue inventoryItemDetail = (GenericValue) inventoryItemDetailIter.next();
-                                Double quantityOnHandDiff = inventoryItemDetail.getDouble("quantityOnHandDiff");
-                                if (quantityOnHandDiff != null && quantityOnHandDiff.doubleValue() > 0) {
-                                    inventoryQuantity += quantityOnHandDiff.doubleValue();
+                            Iterator shipmentReceiptIter = shipmentReceiptList.iterator();
+                            while (shipmentReceiptIter.hasNext()) {
+                                GenericValue shipmentReceipt = (GenericValue) shipmentReceiptIter.next();
+                                Double quantityAccepted = shipmentReceipt.getDouble("quantityAccepted");
+                                if (quantityAccepted != null && quantityAccepted.doubleValue() > 0) {
+                                    receivedQuantity += quantityAccepted.doubleValue();
                                 }
                             }
                             
-                            if (inventoryQuantity < returnQuantity) {
+                            if (receivedQuantity < returnQuantity) {
                                 fullReturnReceived = false;
                                 break;
-                            } else if (inventoryQuantity > returnQuantity) {
+                            } else if (receivedQuantity > returnQuantity) {
                                 // TODOLATER: we received MORE than expected... what to do about that?!?
-                                String warnMsg = "Received more [" + inventoryQuantity + "] than were expected on return [" + returnQuantity + "] for Return ID [" + returnId + "] and Product ID [" + productId + "]";
+                                String warnMsg = "Received more [" + receivedQuantity + "] than were expected on return [" + returnQuantity + "] for Return ID [" + returnId + "] and Product ID [" + productId + "]";
+                                warnMsg = warnMsg + "; still completing return, but something should be done with these extras!";
                                 Debug.logWarning(warnMsg, module);
                                 // even with that, allow it to go through and complete the return
                             }

Modified: ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java?rev=568817&r1=568816&r2=568817&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java (original)
+++ ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java Wed Aug 22 21:07:59 2007
@@ -352,14 +352,14 @@
                                                     EntityOperator.AND, new EntityExpr("productId", EntityOperator.IN, productIdSet));
                                             List inventoryItemsBySerialNumber = delegator.findByCondition("InventoryItem", bySerialNumberCondition, null, null);
                                             if (OagisServices.requireSerialNumberExist.booleanValue()) {
-                                                if (inventoryItemsBySerialNumber.size() > 0) {
-                                                    String errMsg = "Referenced serial numbers must already exist, but serial number [" + serialNumber + "] was not found.";
+                                                if (inventoryItemsBySerialNumber.size() == 0) {
+                                                    String errMsg = "Referenced serial numbers must already exist, but serial number [" + serialNumber + "] was not found. Product ID(s) considered are: " + productIdSet;
                                                     errorMapList.add(UtilMisc.toMap("description", errMsg, "reasonCode", "SerialNumberRequiredButNotFound"));
                                                     continue;
                                                 }
                                             } else {
-                                                if (inventoryItemsBySerialNumber.size() == 0) {
-                                                    String errMsg = "Referenced serial numbers must NOT already exist, but serial number [" + serialNumber + "] already exists.";
+                                                if (inventoryItemsBySerialNumber.size() > 0) {
+                                                    String errMsg = "Referenced serial numbers must NOT already exist, but serial number [" + serialNumber + "] already exists. Product ID(s) considered are: " + productIdSet;
                                                     errorMapList.add(UtilMisc.toMap("description", errMsg, "reasonCode", "SerialNumberRequiredNotExistButFound"));
                                                     continue;
                                                 }