Author: hansbak
Date: Wed Apr  7 08:26:22 2010
New Revision: 931460

URL: http://svn.apache.org/viewvc?rev=931460&view=rev
Log:
Ebaystore:  added method to update quantity of product from ofbiz inventory to 
ebay store inventory when seller create productlisting and export to ebay site.

Modified:
    ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayEvents.java

Modified: 
ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayEvents.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayEvents.java?rev=931460&r1=931459&r2=931460&view=diff
==============================================================================
--- 
ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayEvents.java 
(original)
+++ 
ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayEvents.java 
Wed Apr  7 08:26:22 2010
@@ -50,6 +50,8 @@ import com.ebay.sdk.ApiContext;
 import com.ebay.sdk.ApiException;
 import com.ebay.sdk.SdkException;
 import com.ebay.sdk.call.AddItemCall;
+import com.ebay.sdk.call.GetSellingManagerInventoryCall;
+import com.ebay.sdk.call.ReviseSellingManagerProductCall;
 import com.ebay.sdk.call.VerifyAddItemCall;
 import org.apache.axis.types.URI;
 import com.ebay.soap.eBLBaseComponents.AmountType;
@@ -57,11 +59,17 @@ import com.ebay.soap.eBLBaseComponents.B
 import com.ebay.soap.eBLBaseComponents.CategoryType;
 import com.ebay.soap.eBLBaseComponents.CountryCodeType;
 import com.ebay.soap.eBLBaseComponents.CurrencyCodeType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType;
 import com.ebay.soap.eBLBaseComponents.ItemSpecificsEnabledCodeType;
 import com.ebay.soap.eBLBaseComponents.ItemType;
 import com.ebay.soap.eBLBaseComponents.ListingTypeCodeType;
 import com.ebay.soap.eBLBaseComponents.PictureDetailsType;
 import com.ebay.soap.eBLBaseComponents.ReturnPolicyType;
+import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductRequestType;
+import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductResponseType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerProductType;
 import com.ebay.soap.eBLBaseComponents.ShippingServiceDetailsType;
 import com.ebay.soap.eBLBaseComponents.ShippingTypeCodeType;
 import com.ebay.soap.eBLBaseComponents.SiteCodeType;
@@ -745,7 +753,6 @@ public class EbayEvents {
                         attributeMapList.put("ShippingServiceCostCurrency", 
"USD");
                         attributeMapList.put("ShippingServicePriority", "1");
                         attributeMapList.put("ShippingType", "Flat");
-                        
 
                         EbayStoreHelper.mappedShippingLocations(requestParams, 
item, apiContext, request, attributeMapList);
 
@@ -933,7 +940,6 @@ public class EbayEvents {
             }
             request.setAttribute("itemFee", feesummary);
             request.setAttribute("productStoreId", 
requestParams.get("productStoreId"));
-            
         } catch (Exception e) {
             Debug.logError(e.getMessage(), module);
             return "error";
@@ -982,6 +988,8 @@ public class EbayEvents {
         Map<String,Object> requestParams = UtilHttp.getParameterMap(request);
         Locale locale = UtilHttp.getLocale(request);
         String productStoreId = (String) requestParams.get("productStoreId");
+        HttpSession session = request.getSession(true);
+        GenericValue userLogin = (GenericValue) 
session.getAttribute("userLogin");
         try {
             ApiContext apiContext = 
EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
             Map<String,Object> addItemObject = 
getAddItemListingObject(request, apiContext);
@@ -992,6 +1000,7 @@ public class EbayEvents {
                 listAddItem = FastList.newInstance();
             }
             for (Map<String,Object> itemObj : listAddItem) {
+                updateQuantityInventoryProduct(itemObj, productStoreId, 
locale, delegator, dispatcher, userLogin);
                 dispatcher.runSync("exportProductEachItem", 
UtilMisc.toMap("itemObject", itemObj));
             }
         } catch (Exception e) {
@@ -1000,4 +1009,47 @@ public class EbayEvents {
         }
         return "success";
     }
+
+    private static void updateQuantityInventoryProduct(Map<String, Object> 
itemObj, String productStoreId, Locale locale, Delegator delegator, 
LocalDispatcher dispatcher, GenericValue userLogin) {
+        try {
+            AddItemCall addItemCall = (AddItemCall) itemObj.get("addItemCall");
+            ItemType item = addItemCall.getItem();
+            String productId = item.getSKU();
+            if (UtilValidate.isNotEmpty(itemObj.get("requireEbayInventory")) 
&& (itemObj.get("requireEbayInventory").equals("Y"))) {
+                GetSellingManagerInventoryRequestType req = new 
GetSellingManagerInventoryRequestType();
+                GetSellingManagerInventoryResponseType resp =  null;
+                SellingManagerProductType[] returnedSellingManagerProductType 
= null;
+                GetSellingManagerInventoryCall call = new 
GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext(productStoreId, 
locale, delegator));
+                resp = 
(GetSellingManagerInventoryResponseType)call.execute(req);
+                if (resp != null && 
"SUCCESS".equals(resp.getAck().toString())) {
+                    returnedSellingManagerProductType  = 
resp.getSellingManagerProduct();
+                    for (int i = 0; i < 
returnedSellingManagerProductType.length; i++) {
+                        SellingManagerProductDetailsType prodDetailType = 
returnedSellingManagerProductType[i].getSellingManagerProductDetails();
+                        String productIdInv = 
Long.toString(prodDetailType.getProductID());
+                        if (productId.equals(productIdInv)) {
+                            int qty = prodDetailType.getQuantityAvailable();
+                            if (qty > 0) {
+                                int newQty = qty - 1;
+                                prodDetailType.setQuantityAvailable(newQty);
+                                ReviseSellingManagerProductCall revProdCall = 
new 
ReviseSellingManagerProductCall(EbayStoreHelper.getApiContext(productStoreId, 
locale, delegator));
+                                ReviseSellingManagerProductRequestType revReq 
= new ReviseSellingManagerProductRequestType();
+                                ReviseSellingManagerProductResponseType 
revResp = null;
+                                
revReq.setSellingManagerProductDetails(prodDetailType);
+                                revResp = 
(ReviseSellingManagerProductResponseType) revProdCall.execute(revReq);
+                                if (revResp != null && 
"SUCCESS".equals(revResp.getAck().toString())) {
+                                    Debug.log("  Already update quantity on 
eBay inventory with product id 
::"+revResp.getSellingManagerProductDetails().getProductID());
+                                } else {
+                                    
EbayStoreHelper.createErrorLogMessage(userLogin, dispatcher, productStoreId, 
revResp.getAck().toString(), "ReviseSellingManagerProductCall : 
updateQuantityInventoryProduct", revResp.getErrors(0).getLongMessage());
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, 
dispatcher, productStoreId, resp.getAck().toString(), 
"GetSellingManagerInventoryCall : updateQuantityInventoryProduct", 
resp.getErrors(0).getLongMessage());
+                }
+            }
+        } catch (Exception e) {
+            Debug.logError(e.getMessage(), module);
+        }
+    }
 }
\ No newline at end of file


Reply via email to