You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by as...@apache.org on 2009/09/18 08:04:03 UTC

svn commit: r816473 - in /ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay: EbayOrderServices.java ImportOrdersFromEbay.java

Author: ashish
Date: Fri Sep 18 06:04:03 2009
New Revision: 816473

URL: http://svn.apache.org/viewvc?rev=816473&view=rev
Log:
Now here comes the another update on combining GetOrders & GetSellerTransactions request.
Things are looking pretty good now as we are able to display transactions & orders on the same page.
Also we are able to create Orders for "Ebay Orders" & "Ebay Transactions".


Modified:
    ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
    ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java

Modified: ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java?rev=816473&r1=816472&r2=816473&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java (original)
+++ ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java Fri Sep 18 06:04:03 2009
@@ -62,7 +62,7 @@
     private static final String module = EbayOrderServices.class.getName();
     private static boolean isGetSellerTransactionsCall = false;
     private static boolean isGetOrdersCall = false;
-    private static List orderList = FastList.newInstance();
+    private static List orderList = new ArrayList();
     private static List getSellerTransactionsContainingOrderList = new ArrayList(); 
     private static List<String> orderImportSuccessMessageList = FastList.newInstance();
     private static List<String> orderImportFailureMessageList = FastList.newInstance();
@@ -73,6 +73,7 @@
         Locale locale = (Locale) context.get("locale");
         orderImportSuccessMessageList.clear();
         orderImportFailureMessageList.clear();
+        orderList.clear();
         Map<String, Object> result = FastMap.newInstance();
         try {
             Map<String, Object> eBayConfigResult = EbayHelper.buildEbayConfig(context, delegator);
@@ -94,7 +95,6 @@
                 if (getOrdersSuccessMsg != null) {
                     isGetOrdersCall = true;
                     result = checkOrders(delegator, dispatcher, locale, context, getOrdersSuccessMsg);
-                    context.remove("isGetOrdersRequest");
                 }
             }
         } catch (Exception e) {
@@ -228,15 +228,17 @@
         StringBuffer errorMessage = new StringBuffer();
         Map<String, Object> result = FastMap.newInstance();
         GenericValue userLogin = (GenericValue) context.get("userLogin");
-        if (isGetSellerTransactionsCall) {
+        if (isGetSellerTransactionsCall && !isGetOrdersCall) {
             List getSellerTransactionList = readGetSellerTransactionResponse(responseMsg, locale, (String) context.get("productStoreId"), delegator, dispatcher, errorMessage, userLogin);
             if (UtilValidate.isNotEmpty(getSellerTransactionList)) {
                 orderList.addAll(getSellerTransactionList);
             }
+            isGetSellerTransactionsCall = false;
             return ServiceUtil.returnSuccess();
         } else if (isGetOrdersCall) {
             List getOrdersList = readGetOrdersResponse(responseMsg, locale, (String) context.get("productStoreId"), delegator, dispatcher, errorMessage, userLogin);
             orderList.addAll(getOrdersList);
+            isGetOrdersCall = false;
         }
         if (orderList == null || orderList.size() == 0) {
             Debug.logError("No orders found", module);
@@ -759,10 +761,10 @@
                             // retrieve item
                             List orderItemList = new ArrayList();
                             String itemId = "";
-                            Map<String, Object> orderItemCtx = FastMap.newInstance();
                             List item = UtilXml.childElementList(transactionElement, "Item");
                             Iterator itemElemIter = item.iterator();
                             while (itemElemIter.hasNext()) {
+                                Map<String, Object> orderItemCtx = FastMap.newInstance();
                                 Element itemElement = (Element)itemElemIter.next();
                                 itemId = UtilXml.childElementValue(itemElement, "ItemID", "");
                                 orderItemCtx.put("paymentMethods", UtilXml.childElementValue(itemElement, "PaymentMethods", ""));
@@ -816,6 +818,7 @@
                             orderCtx.put("ebayUserIdBuyer", buyerCtx.get("ebayUserIdBuyer").toString());
                             
                             // Now finally put the root map in the fetched orders list.
+                            orderCtx.put("userLogin", userLogin);
                             fetchedOrders.add(orderCtx);
                         }
                     }
@@ -903,7 +906,6 @@
                 return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "ordersImportFromEbay.paymentIsStillNotReceived", locale));
             }
  
-            //List orderItemList = (List) context.get("orderItemList");
             List orderItemList = (List) context.get("orderItemList");
             Iterator orderItemIter = orderItemList.iterator();
             while (orderItemIter.hasNext()) {
@@ -956,7 +958,6 @@
                     }
                 }
             }
-
             // order has to be created ?
             if (create) {
                 Debug.logInfo("Importing new order from eBay", module);
@@ -1095,9 +1096,12 @@
             String productMissingMsg = "The product having ID (" + productId + ") is misssing in the system.";
             orderImportFailureMessageList.add(productMissingMsg);
         }
-        
         BigDecimal qty = new BigDecimal(orderItem.get("quantity").toString());
-        BigDecimal price = new BigDecimal(orderItem.get("transactionPrice").toString());
+        String itemPrice = (String) orderItem.get("transactionPrice");
+        if (UtilValidate.isEmpty(itemPrice)) {
+            itemPrice = (String) orderItem.get("amount");
+        }
+        BigDecimal price = new BigDecimal(itemPrice);
         price = price.setScale(ShoppingCart.scale, ShoppingCart.rounding);
         
         HashMap<Object, Object> attrs = new HashMap<Object, Object>();
@@ -1106,11 +1110,9 @@
         int idx = cart.addItemToEnd(productId, null, qty, null, null, attrs, null, null, dispatcher, Boolean.FALSE, Boolean.TRUE, Boolean.TRUE, Boolean.TRUE);
         ShoppingCartItem cartItem = cart.findCartItem(idx);
         cartItem.setQuantity(qty, dispatcher, cart, true, false);
-
         // locate the price verify it matches the expected price
         BigDecimal cartPrice = cartItem.getBasePrice();
         cartPrice = cartPrice.setScale(ShoppingCart.scale, ShoppingCart.rounding);
-
         if (price.doubleValue() != cartPrice.doubleValue()) {
             // does not match; honor the price but hold the order for manual review
             cartItem.setIsModifiedPrice(true);

Modified: ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java?rev=816473&r1=816472&r2=816473&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java (original)
+++ ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java Fri Sep 18 06:04:03 2009
@@ -468,7 +468,7 @@
                                 if (UtilValidate.isEmpty(productId)) {
                                     productId = UtilXml.childElementValue(itemElement, "ApplicationData", "");
                                     if (UtilValidate.isEmpty(productId)) {
-                                         productId = retrieveProductIdFromTitle(delegator, (String)order.get("title"));
+                                         productId = EbayHelper.retrieveProductIdFromTitle(delegator, (String)order.get("title"));
                                     }
                                 }
                                 order.put("productId", productId);
@@ -833,31 +833,4 @@
         }
         return orderHeader;
     }
-
-    private static String retrieveProductIdFromTitle(GenericDelegator delegator, String title) {
-        String productId = "";
-        try {
-            // First try to get an exact match: title == internalName
-            List products = delegator.findByAnd("Product", UtilMisc.toMap("internalName", title));
-            if (UtilValidate.isNotEmpty(products) && products.size() == 1) {
-                productId = (String) ((GenericValue)products.get(0)).get("productId");
-            }
-            // If it fails, attempt to get the product id from the first word of the title
-            if (UtilValidate.isEmpty(productId)) {
-                String titleFirstWord = null;
-                if (title != null && title.indexOf(' ') != -1) {
-                    titleFirstWord = title.substring(0, title.indexOf(' '));
-                }
-                if (UtilValidate.isNotEmpty(titleFirstWord)) {
-                    GenericValue product = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", titleFirstWord));
-                    if (UtilValidate.isNotEmpty(product)) {
-                        productId = product.getString("productId");
-                    }
-                }
-            }
-        } catch (GenericEntityException e) {
-            productId = "";
-        }
-        return productId;
-    }
 }
\ No newline at end of file