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 |
Free forum by Nabble | Edit this page |