svn commit: r1695126 [20/22] - in /ofbiz/trunk: applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/ applications/accounting/src/org/ofbiz/accounting/thirdparty/securepay/ applications/content/src/org/ofbiz/content/webapp/ftl/ a...

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

svn commit: r1695126 [20/22] - in /ofbiz/trunk: applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/ applications/accounting/src/org/ofbiz/accounting/thirdparty/securepay/ applications/content/src/org/ofbiz/content/webapp/ftl/ a...

jleroux@apache.org
Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java Mon Aug 10 16:15:37 2015
@@ -1,406 +1,406 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.ofbiz.ebaystore;
-
-import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.UtilMisc;
-import org.ofbiz.base.util.UtilProperties;
-import org.ofbiz.entity.Delegator;
-import org.ofbiz.entity.GenericEntityException;
-import org.ofbiz.entity.GenericValue;
-import org.ofbiz.entity.util.EntityQuery;
-import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.GenericServiceException;
-import org.ofbiz.service.LocalDispatcher;
-import org.ofbiz.service.ServiceUtil;
-
-import com.ebay.sdk.ApiException;
-import com.ebay.sdk.SdkException;
-import com.ebay.sdk.SdkSoapException;
-import com.ebay.sdk.call.AddSellingManagerInventoryFolderCall;
-import com.ebay.sdk.call.AddSellingManagerProductCall;
-import com.ebay.sdk.call.GetSellingManagerInventoryCall;
-import com.ebay.sdk.call.GetSellingManagerInventoryFolderCall;
-import com.ebay.sdk.call.ReviseSellingManagerProductCall;
-import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderRequestType;
-import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderResponseType;
-import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductRequestType;
-import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductResponseType;
-import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderRequestType;
-import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderResponseType;
-import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType;
-import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType;
-import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductRequestType;
-import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductResponseType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerFolderDetailsType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerProductInventoryStatusType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerProductType;
-
-public class EbayStoreInventoryServices {
-    private static final String module = EbayStoreInventoryServices.class.getName();
-    public static final String resource = "EbayStoreUiLabels";
-    private static final String defaultFolderName = "OFBizProducts";
-    private static String folderId = null;
-    public EbayStoreInventoryServices() {
-        // TODO Auto-generated constructor stub
-    }
-    /*update inventory on ebay site*/
-    public static Map<String,Object> updateEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) {
-        Map<String,Object> result = new HashMap<String, Object>();
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        Locale locale = (Locale) context.get("locale");
-        Delegator delegator = dctx.getDelegator();
-        GetSellingManagerInventoryRequestType invenReq = null;
-        GetSellingManagerInventoryResponseType invenResp = null;
-        boolean checkProd = false;
-        boolean status = false;
-        try {
-            if (context.get("productStoreId") == null || context.get("productId") == null || context.get("folderId") == null) {
-                result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdRequired", locale));
-                result.put("productStoreId", context.get("productStoreId"));
-                result.put("facilityId", context.get("facilityId"));
-                result.put("folderId", context.get("folderId"));
-                return result;
-            }
-
-            String productId = (String)context.get("productId");
-            String folderId = (String)context.get("folderId");
-            // start upload/update products which selected  to an ebay inventory
-            if (folderId != null) {
-                GetSellingManagerInventoryCall invenCall = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-                invenReq = new GetSellingManagerInventoryRequestType();
-                invenResp = (GetSellingManagerInventoryResponseType) invenCall.execute(invenReq);
-                if (invenResp != null && "SUCCESS".equals(invenResp.getAck().toString())) {
-                    GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne();
-
-                    SellingManagerProductType[]  sellingManagerProductTypeList = invenResp.getSellingManagerProduct();
-                    for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) {
-                        SellingManagerProductDetailsType sellingManagerProductDetailsType = sellingManagerProductType.getSellingManagerProductDetails();
-                        if (String.valueOf(sellingManagerProductDetailsType.getFolderID()).equals(folderId) && String.valueOf(sellingManagerProductDetailsType.getProductID()).equals(String.valueOf(ebayProductStoreInventory.getLong("ebayProductId"))) && String.valueOf(sellingManagerProductDetailsType.getCustomLabel()).equals(productId)) {
-                            checkProd = true;
-                            break;
-                        }
-                    }
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), invenResp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayStoreInventory", invenResp.getErrors(0).getLongMessage());
-                }
-
-                // checkProduct is true then update detail  but is false do create new one.
-                if (checkProd) {
-                    status = updateProductInEbayInventoryFolder(dctx,context);
-                } else {
-                    status = createNewProductInEbayInventoryFolder(dctx,context);
-                }
-                if (status) {
-                    Debug.logInfo("Done to updated product ".concat(context.get("productId").toString()), module);
-                    result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdated", UtilMisc.toMap("folderId", context.get("folderId")), locale));
-                } else {
-                    result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdatedFailed", locale));
-                }
-            }
-        }catch (ApiException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (SdkSoapException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (SdkException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (GenericEntityException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        }
-        result.put("productStoreId", context.get("productStoreId"));
-        result.put("facilityId", context.get("facilityId"));
-        result.put("folderId", context.get("folderId"));
-        return result;
-    }
-
-    /* add new product and quantity to ebay inventory */
-    public static boolean createNewProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) {
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        Locale locale = (Locale) context.get("locale");
-        Delegator delegator = dctx.getDelegator();
-        AddSellingManagerProductRequestType productReq = null;
-        AddSellingManagerProductResponseType productResp = null;
-        boolean flag = false;
-
-        try {
-            if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) {
-                String productId = (String)context.get("productId");
-                String folderId = (String)context.get("folderId");
-                AddSellingManagerProductCall productCall = new AddSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-                productReq = new AddSellingManagerProductRequestType();
-                productReq.setFolderID(new Long(folderId));
-                SellingManagerProductDetailsType  sellingManagerProductDetailsType = new SellingManagerProductDetailsType();
-                GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne();
-
-                sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName"));
-                //Must keep productId in SKU NUMBER because ebay allow productId field only long value.
-                sellingManagerProductDetailsType.setCustomLabel(productId);
-                if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue());
-
-                productReq.setSellingManagerProductDetails(sellingManagerProductDetailsType);
-                productResp = (AddSellingManagerProductResponseType) productCall.execute(productReq);
-                if (productResp != null && "SUCCESS".equals(productResp.getAck().toString())) {
-                    flag = true;
-                    ebayProductStoreInventory.put("ebayProductId", productResp.getSellingManagerProductDetails().getProductID());
-                    ebayProductStoreInventory.put("folderId", folderId);
-                    ebayProductStoreInventory.store();
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), productResp.getAck().toString(), "AddSellingManagerProductCall : createNewProductInEbayInventoryFolder", productResp.getErrors(0).getLongMessage());
-                    Debug.logError("Fail to  create inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(productResp.getMessage()), module);
-                }
-            }
-        } catch (ApiException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkSoapException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (GenericEntityException e) {
-            Debug.logError(e.getMessage(), module);
-        }
-        return flag;
-    }
-
-    /* update product and quantity to ebay inventory */
-    public static boolean updateProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) {
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        Locale locale = (Locale) context.get("locale");
-        Delegator delegator = dctx.getDelegator();
-        ReviseSellingManagerProductRequestType req = null;
-        ReviseSellingManagerProductResponseType resp = null;
-        boolean flag = false;
-
-        try {
-            if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) {
-                String productId = (String)context.get("productId");
-                String folderId = (String)context.get("folderId");
-                ReviseSellingManagerProductCall call = new ReviseSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-                req = new ReviseSellingManagerProductRequestType();
-                SellingManagerProductDetailsType  sellingManagerProductDetailsType = new SellingManagerProductDetailsType();
-                GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne();
-                Long ebayProductId = null;
-                if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") == null) {
-                    Debug.logError("Can not update product "+productId+" has no ebay product Id in EbayProductStoreInventory. ", module);
-                    return flag;
-                }
-                if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") != null) {
-                    ebayProductId = ebayProductStoreInventory.getLong("ebayProductId");
-                }
-                sellingManagerProductDetailsType.setProductID(ebayProductId);
-
-                sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName"));
-                //Must keep productId in SKU NUMBER because ebay allow productId field only long value.
-                sellingManagerProductDetailsType.setCustomLabel(productId);
-                if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue());
-
-                req.setSellingManagerProductDetails(sellingManagerProductDetailsType);
-                resp = (ReviseSellingManagerProductResponseType) call.execute(req);
-                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
-                    flag = true;
-                    ebayProductStoreInventory.put("ebayProductId", ebayProductId);
-                    ebayProductStoreInventory.put("folderId", folderId);
-                    ebayProductStoreInventory.store();
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "ReviseSellingManagerProductCall : updateProductInEbayInventoryFolder", resp.getErrors(0).getLongMessage());
-                    Debug.logError("Fail to  update inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(resp.getMessage()), module);
-                }
-            }
-        } catch (ApiException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkSoapException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (GenericEntityException e) {
-            Debug.logError(e.getMessage(), module);
-        }
-        return flag;
-    }
-
-    public static Map<String,Object> getFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) {
-        Map<String,Object> result = new HashMap<String, Object>();
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        Locale locale = (Locale) context.get("locale");
-        Delegator delegator = dctx.getDelegator();
-        GetSellingManagerInventoryFolderRequestType req = null;
-        GetSellingManagerInventoryFolderResponseType resp = null;
-        boolean flag = false;
-
-        try {
-            if (context.get("productStoreId") != null) {
-                GetSellingManagerInventoryFolderCall  call = new GetSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-                req = new GetSellingManagerInventoryFolderRequestType();
-                resp = (GetSellingManagerInventoryFolderResponseType) call.execute(req);
-                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
-                    SellingManagerFolderDetailsType sellingManagerFolderDetailsType = resp.getFolder();
-                    if (sellingManagerFolderDetailsType != null) {
-                        SellingManagerFolderDetailsType[] SellingManagerFolderDetailsTypeList = sellingManagerFolderDetailsType.getChildFolder();
-                        for (SellingManagerFolderDetailsType sellingManagerFolderDetails : SellingManagerFolderDetailsTypeList) {
-                            Debug.logInfo("ebay inventory folders name ".concat(sellingManagerFolderDetails.getFolderName()), module);
-                            if (sellingManagerFolderDetails.getFolderName().equals(defaultFolderName)) {
-                                folderId = String.valueOf(sellingManagerFolderDetails.getFolderID());
-                                flag = true;
-                                break;
-                            }
-                        }
-                    }
-                    if (!flag) {
-                        folderId = createNewFolderInEbayStoreInventory(dctx,context);
-                    }
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryFolderCall : getFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage());
-                }
-                result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdLoaded", UtilMisc.toMap("folderId", folderId), locale));
-            }
-        } catch (ApiException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (SdkSoapException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (SdkException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        }
-        if (result.get("responseMessage") != null && result.get("responseMessage").equals("fail")) folderId = null;
-        result.put("folderId", folderId);
-        Debug.logInfo("service return result "+ result, module);
-        return result;
-    }
-
-    /*create new folder for export product into inventory.*/
-    public static String createNewFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) {
-        Locale locale = (Locale) context.get("locale");
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        Delegator delegator = dctx.getDelegator();
-        AddSellingManagerInventoryFolderRequestType req = null;
-        AddSellingManagerInventoryFolderResponseType resp = null;
-
-        try {
-            if (context.get("productStoreId") != null) {
-                AddSellingManagerInventoryFolderCall call = new AddSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-                req = new AddSellingManagerInventoryFolderRequestType();
-                req.setFolderName(defaultFolderName);//req.setComment(value);//req.setParentFolderID(value)
-                resp = (AddSellingManagerInventoryFolderResponseType) call.execute(req);
-                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
-                    folderId = String.valueOf(resp.getFolderID());
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "AddSellingManagerInventoryFolderCall : createNewFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage());
-                    Debug.logError("The problem with create new folder on ebay site.", module);
-                    return folderId;
-                }
-            }
-        } catch (ApiException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkSoapException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkException e) {
-            Debug.logError(e.getMessage(), module);
-        }
-        return folderId;
-    }
-
-    /* update inventory status from ebay store inventory */
-    public static Map<String,Object> updateEbayInventoryStatusByProductId(DispatchContext dctx, Map<String,Object> context) {
-        Locale locale = (Locale) context.get("locale");
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        Map<String,Object> result = new HashMap<String, Object>();
-        Delegator delegator = dctx.getDelegator();
-        String productStoreId = (String)context.get("productStoreId");
-        String facilityId = (String)context.get("facilityId");
-        String folderId = (String)context.get("folderId");
-        String productId = (String)context.get("productId");
-        String ebayProductId = null;
-        GetSellingManagerInventoryRequestType req = null;
-        GetSellingManagerInventoryResponseType resp = null;
-        GenericValue ebayProductStoreInventory = null;
-
-        if (context.get("ebayProductId") != null) {
-            ebayProductId = String.valueOf(context.get("ebayProductId"));
-        }
-        try {
-            if (productStoreId != null && ebayProductId != null) {
-                ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", facilityId, "productStoreId", productStoreId).queryOne();
-                GetSellingManagerInventoryCall call = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext(productStoreId, locale, delegator));
-                req = new GetSellingManagerInventoryRequestType();
-                resp = (GetSellingManagerInventoryResponseType) call.execute(req);
-                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
-                    SellingManagerProductType[] sellingManagerProductTypeList = resp.getSellingManagerProduct();
-                    for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) {
-                        SellingManagerProductDetailsType productDetail = sellingManagerProductType.getSellingManagerProductDetails();
-                        if (String.valueOf(productDetail.getFolderID()).equals(folderId) && String.valueOf(productDetail.getProductID()).equals(ebayProductId) && String.valueOf(productDetail.getCustomLabel()).equals(productId)) {
-                            SellingManagerProductInventoryStatusType prodInventoryStatus = sellingManagerProductType.getSellingManagerProductInventoryStatus();
-                            ebayProductStoreInventory.put("activeListing",new BigDecimal(prodInventoryStatus.getQuantityActive()));
-                            ebayProductStoreInventory.put("scheduled",new BigDecimal(prodInventoryStatus.getQuantityScheduled()));
-                            ebayProductStoreInventory.put("sold",new BigDecimal(prodInventoryStatus.getQuantitySold()));
-                            ebayProductStoreInventory.put("unSold",new BigDecimal(prodInventoryStatus.getQuantityUnsold()));
-                            ebayProductStoreInventory.store();
-                            result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryStatusUpdated", UtilMisc.toMap("productId", productId), locale));
-                            break;
-                        }
-                    }
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayInventoryStatusByProductId", resp.getErrors(0).getLongMessage());
-                    Debug.logError("The problem with get manage inventory detail from ebay site.", module);
-                }
-            }
-        } catch (ApiException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (SdkSoapException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (SdkException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (GenericEntityException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        }
-        result.put("productStoreId", context.get("productStoreId"));
-        result.put("facilityId", context.get("facilityId"));
-        result.put("folderId", context.get("folderId"));
-        result.put("productId", productId);
-        return result;
-    }
-
-    public static Map<String,Object> updateEbayInventoryStatus(DispatchContext dctx, Map<String,Object> context) {
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Map<String,Object> result = new HashMap<String, Object>();
-        Delegator delegator = dctx.getDelegator();
-        List<GenericValue> ebayProductStoreInventoryList = null;
-
-        try {
-            if (context.get("productStoreId") != null && context.get("facilityId") != null) {
-                ebayProductStoreInventoryList = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("facilityId",(String)context.get("facilityId"),"productStoreId",(String)context.get("productStoreId")).queryList();
-                for (GenericValue ebayProductStoreInventory : ebayProductStoreInventoryList) {
-                    if (ebayProductStoreInventory.get("ebayProductId") != null) {
-                        dispatcher.runSync("updateEbayInventoryStatusByProductId", UtilMisc.toMap("productStoreId", (String)context.get("productStoreId"), "facilityId", (String)context.get("facilityId"), "folderId", ebayProductStoreInventory.get("folderId"), "productId", ebayProductStoreInventory.get("productId"), "ebayProductId", ebayProductStoreInventory.get("ebayProductId"), "userLogin", context.get("userLogin")));
-                    }
-                }
-            }
-        } catch (GenericEntityException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        } catch (GenericServiceException e) {
-            result = ServiceUtil.returnFailure(e.getMessage());
-        }
-        result = ServiceUtil.returnSuccess();
-        return result;
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.ofbiz.ebaystore;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.util.EntityQuery;
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ServiceUtil;
+
+import com.ebay.sdk.ApiException;
+import com.ebay.sdk.SdkException;
+import com.ebay.sdk.SdkSoapException;
+import com.ebay.sdk.call.AddSellingManagerInventoryFolderCall;
+import com.ebay.sdk.call.AddSellingManagerProductCall;
+import com.ebay.sdk.call.GetSellingManagerInventoryCall;
+import com.ebay.sdk.call.GetSellingManagerInventoryFolderCall;
+import com.ebay.sdk.call.ReviseSellingManagerProductCall;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderRequestType;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderResponseType;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductRequestType;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductResponseType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderRequestType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderResponseType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType;
+import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductRequestType;
+import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductResponseType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerFolderDetailsType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerProductInventoryStatusType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerProductType;
+
+public class EbayStoreInventoryServices {
+    private static final String module = EbayStoreInventoryServices.class.getName();
+    public static final String resource = "EbayStoreUiLabels";
+    private static final String defaultFolderName = "OFBizProducts";
+    private static String folderId = null;
+    public EbayStoreInventoryServices() {
+        // TODO Auto-generated constructor stub
+    }
+    /*update inventory on ebay site*/
+    public static Map<String,Object> updateEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) {
+        Map<String,Object> result = new HashMap<String, Object>();
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        Locale locale = (Locale) context.get("locale");
+        Delegator delegator = dctx.getDelegator();
+        GetSellingManagerInventoryRequestType invenReq = null;
+        GetSellingManagerInventoryResponseType invenResp = null;
+        boolean checkProd = false;
+        boolean status = false;
+        try {
+            if (context.get("productStoreId") == null || context.get("productId") == null || context.get("folderId") == null) {
+                result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdRequired", locale));
+                result.put("productStoreId", context.get("productStoreId"));
+                result.put("facilityId", context.get("facilityId"));
+                result.put("folderId", context.get("folderId"));
+                return result;
+            }
+
+            String productId = (String)context.get("productId");
+            String folderId = (String)context.get("folderId");
+            // start upload/update products which selected  to an ebay inventory
+            if (folderId != null) {
+                GetSellingManagerInventoryCall invenCall = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+                invenReq = new GetSellingManagerInventoryRequestType();
+                invenResp = (GetSellingManagerInventoryResponseType) invenCall.execute(invenReq);
+                if (invenResp != null && "SUCCESS".equals(invenResp.getAck().toString())) {
+                    GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne();
+
+                    SellingManagerProductType[]  sellingManagerProductTypeList = invenResp.getSellingManagerProduct();
+                    for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) {
+                        SellingManagerProductDetailsType sellingManagerProductDetailsType = sellingManagerProductType.getSellingManagerProductDetails();
+                        if (String.valueOf(sellingManagerProductDetailsType.getFolderID()).equals(folderId) && String.valueOf(sellingManagerProductDetailsType.getProductID()).equals(String.valueOf(ebayProductStoreInventory.getLong("ebayProductId"))) && String.valueOf(sellingManagerProductDetailsType.getCustomLabel()).equals(productId)) {
+                            checkProd = true;
+                            break;
+                        }
+                    }
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), invenResp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayStoreInventory", invenResp.getErrors(0).getLongMessage());
+                }
+
+                // checkProduct is true then update detail  but is false do create new one.
+                if (checkProd) {
+                    status = updateProductInEbayInventoryFolder(dctx,context);
+                } else {
+                    status = createNewProductInEbayInventoryFolder(dctx,context);
+                }
+                if (status) {
+                    Debug.logInfo("Done to updated product ".concat(context.get("productId").toString()), module);
+                    result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdated", UtilMisc.toMap("folderId", context.get("folderId")), locale));
+                } else {
+                    result = ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdUpdatedFailed", locale));
+                }
+            }
+        }catch (ApiException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (SdkSoapException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (SdkException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (GenericEntityException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        }
+        result.put("productStoreId", context.get("productStoreId"));
+        result.put("facilityId", context.get("facilityId"));
+        result.put("folderId", context.get("folderId"));
+        return result;
+    }
+
+    /* add new product and quantity to ebay inventory */
+    public static boolean createNewProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) {
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        Locale locale = (Locale) context.get("locale");
+        Delegator delegator = dctx.getDelegator();
+        AddSellingManagerProductRequestType productReq = null;
+        AddSellingManagerProductResponseType productResp = null;
+        boolean flag = false;
+
+        try {
+            if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) {
+                String productId = (String)context.get("productId");
+                String folderId = (String)context.get("folderId");
+                AddSellingManagerProductCall productCall = new AddSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+                productReq = new AddSellingManagerProductRequestType();
+                productReq.setFolderID(new Long(folderId));
+                SellingManagerProductDetailsType  sellingManagerProductDetailsType = new SellingManagerProductDetailsType();
+                GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne();
+
+                sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName"));
+                //Must keep productId in SKU NUMBER because ebay allow productId field only long value.
+                sellingManagerProductDetailsType.setCustomLabel(productId);
+                if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue());
+
+                productReq.setSellingManagerProductDetails(sellingManagerProductDetailsType);
+                productResp = (AddSellingManagerProductResponseType) productCall.execute(productReq);
+                if (productResp != null && "SUCCESS".equals(productResp.getAck().toString())) {
+                    flag = true;
+                    ebayProductStoreInventory.put("ebayProductId", productResp.getSellingManagerProductDetails().getProductID());
+                    ebayProductStoreInventory.put("folderId", folderId);
+                    ebayProductStoreInventory.store();
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), productResp.getAck().toString(), "AddSellingManagerProductCall : createNewProductInEbayInventoryFolder", productResp.getErrors(0).getLongMessage());
+                    Debug.logError("Fail to  create inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(productResp.getMessage()), module);
+                }
+            }
+        } catch (ApiException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkSoapException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (GenericEntityException e) {
+            Debug.logError(e.getMessage(), module);
+        }
+        return flag;
+    }
+
+    /* update product and quantity to ebay inventory */
+    public static boolean updateProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context) {
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        Locale locale = (Locale) context.get("locale");
+        Delegator delegator = dctx.getDelegator();
+        ReviseSellingManagerProductRequestType req = null;
+        ReviseSellingManagerProductResponseType resp = null;
+        boolean flag = false;
+
+        try {
+            if (context.get("productStoreId") != null && context.get("productId") != null && context.get("folderId") != null) {
+                String productId = (String)context.get("productId");
+                String folderId = (String)context.get("folderId");
+                ReviseSellingManagerProductCall call = new ReviseSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+                req = new ReviseSellingManagerProductRequestType();
+                SellingManagerProductDetailsType  sellingManagerProductDetailsType = new SellingManagerProductDetailsType();
+                GenericValue ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", context.get("facilityId"), "productStoreId", context.get("productStoreId")).queryOne();
+                Long ebayProductId = null;
+                if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") == null) {
+                    Debug.logError("Can not update product "+productId+" has no ebay product Id in EbayProductStoreInventory. ", module);
+                    return flag;
+                }
+                if (ebayProductStoreInventory != null && ebayProductStoreInventory.getLong("ebayProductId") != null) {
+                    ebayProductId = ebayProductStoreInventory.getLong("ebayProductId");
+                }
+                sellingManagerProductDetailsType.setProductID(ebayProductId);
+
+                sellingManagerProductDetailsType.setProductName((EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne()).getString("internalName"));
+                //Must keep productId in SKU NUMBER because ebay allow productId field only long value.
+                sellingManagerProductDetailsType.setCustomLabel(productId);
+                if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue());
+
+                req.setSellingManagerProductDetails(sellingManagerProductDetailsType);
+                resp = (ReviseSellingManagerProductResponseType) call.execute(req);
+                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
+                    flag = true;
+                    ebayProductStoreInventory.put("ebayProductId", ebayProductId);
+                    ebayProductStoreInventory.put("folderId", folderId);
+                    ebayProductStoreInventory.store();
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "ReviseSellingManagerProductCall : updateProductInEbayInventoryFolder", resp.getErrors(0).getLongMessage());
+                    Debug.logError("Fail to  update inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(resp.getMessage()), module);
+                }
+            }
+        } catch (ApiException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkSoapException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (GenericEntityException e) {
+            Debug.logError(e.getMessage(), module);
+        }
+        return flag;
+    }
+
+    public static Map<String,Object> getFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) {
+        Map<String,Object> result = new HashMap<String, Object>();
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        Locale locale = (Locale) context.get("locale");
+        Delegator delegator = dctx.getDelegator();
+        GetSellingManagerInventoryFolderRequestType req = null;
+        GetSellingManagerInventoryFolderResponseType resp = null;
+        boolean flag = false;
+
+        try {
+            if (context.get("productStoreId") != null) {
+                GetSellingManagerInventoryFolderCall  call = new GetSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+                req = new GetSellingManagerInventoryFolderRequestType();
+                resp = (GetSellingManagerInventoryFolderResponseType) call.execute(req);
+                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
+                    SellingManagerFolderDetailsType sellingManagerFolderDetailsType = resp.getFolder();
+                    if (sellingManagerFolderDetailsType != null) {
+                        SellingManagerFolderDetailsType[] SellingManagerFolderDetailsTypeList = sellingManagerFolderDetailsType.getChildFolder();
+                        for (SellingManagerFolderDetailsType sellingManagerFolderDetails : SellingManagerFolderDetailsTypeList) {
+                            Debug.logInfo("ebay inventory folders name ".concat(sellingManagerFolderDetails.getFolderName()), module);
+                            if (sellingManagerFolderDetails.getFolderName().equals(defaultFolderName)) {
+                                folderId = String.valueOf(sellingManagerFolderDetails.getFolderID());
+                                flag = true;
+                                break;
+                            }
+                        }
+                    }
+                    if (!flag) {
+                        folderId = createNewFolderInEbayStoreInventory(dctx,context);
+                    }
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryFolderCall : getFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage());
+                }
+                result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryFolderIdLoaded", UtilMisc.toMap("folderId", folderId), locale));
+            }
+        } catch (ApiException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (SdkSoapException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (SdkException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        }
+        if (result.get("responseMessage") != null && result.get("responseMessage").equals("fail")) folderId = null;
+        result.put("folderId", folderId);
+        Debug.logInfo("service return result "+ result, module);
+        return result;
+    }
+
+    /*create new folder for export product into inventory.*/
+    public static String createNewFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context) {
+        Locale locale = (Locale) context.get("locale");
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        Delegator delegator = dctx.getDelegator();
+        AddSellingManagerInventoryFolderRequestType req = null;
+        AddSellingManagerInventoryFolderResponseType resp = null;
+
+        try {
+            if (context.get("productStoreId") != null) {
+                AddSellingManagerInventoryFolderCall call = new AddSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+                req = new AddSellingManagerInventoryFolderRequestType();
+                req.setFolderName(defaultFolderName);//req.setComment(value);//req.setParentFolderID(value)
+                resp = (AddSellingManagerInventoryFolderResponseType) call.execute(req);
+                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
+                    folderId = String.valueOf(resp.getFolderID());
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "AddSellingManagerInventoryFolderCall : createNewFolderInEbayStoreInventory", resp.getErrors(0).getLongMessage());
+                    Debug.logError("The problem with create new folder on ebay site.", module);
+                    return folderId;
+                }
+            }
+        } catch (ApiException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkSoapException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkException e) {
+            Debug.logError(e.getMessage(), module);
+        }
+        return folderId;
+    }
+
+    /* update inventory status from ebay store inventory */
+    public static Map<String,Object> updateEbayInventoryStatusByProductId(DispatchContext dctx, Map<String,Object> context) {
+        Locale locale = (Locale) context.get("locale");
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        Map<String,Object> result = new HashMap<String, Object>();
+        Delegator delegator = dctx.getDelegator();
+        String productStoreId = (String)context.get("productStoreId");
+        String facilityId = (String)context.get("facilityId");
+        String folderId = (String)context.get("folderId");
+        String productId = (String)context.get("productId");
+        String ebayProductId = null;
+        GetSellingManagerInventoryRequestType req = null;
+        GetSellingManagerInventoryResponseType resp = null;
+        GenericValue ebayProductStoreInventory = null;
+
+        if (context.get("ebayProductId") != null) {
+            ebayProductId = String.valueOf(context.get("ebayProductId"));
+        }
+        try {
+            if (productStoreId != null && ebayProductId != null) {
+                ebayProductStoreInventory = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productId", productId, "facilityId", facilityId, "productStoreId", productStoreId).queryOne();
+                GetSellingManagerInventoryCall call = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext(productStoreId, locale, delegator));
+                req = new GetSellingManagerInventoryRequestType();
+                resp = (GetSellingManagerInventoryResponseType) call.execute(req);
+                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
+                    SellingManagerProductType[] sellingManagerProductTypeList = resp.getSellingManagerProduct();
+                    for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) {
+                        SellingManagerProductDetailsType productDetail = sellingManagerProductType.getSellingManagerProductDetails();
+                        if (String.valueOf(productDetail.getFolderID()).equals(folderId) && String.valueOf(productDetail.getProductID()).equals(ebayProductId) && String.valueOf(productDetail.getCustomLabel()).equals(productId)) {
+                            SellingManagerProductInventoryStatusType prodInventoryStatus = sellingManagerProductType.getSellingManagerProductInventoryStatus();
+                            ebayProductStoreInventory.put("activeListing",new BigDecimal(prodInventoryStatus.getQuantityActive()));
+                            ebayProductStoreInventory.put("scheduled",new BigDecimal(prodInventoryStatus.getQuantityScheduled()));
+                            ebayProductStoreInventory.put("sold",new BigDecimal(prodInventoryStatus.getQuantitySold()));
+                            ebayProductStoreInventory.put("unSold",new BigDecimal(prodInventoryStatus.getQuantityUnsold()));
+                            ebayProductStoreInventory.store();
+                            result = ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, "EbayStoreInventoryStatusUpdated", UtilMisc.toMap("productId", productId), locale));
+                            break;
+                        }
+                    }
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "GetSellingManagerInventoryCall : updateEbayInventoryStatusByProductId", resp.getErrors(0).getLongMessage());
+                    Debug.logError("The problem with get manage inventory detail from ebay site.", module);
+                }
+            }
+        } catch (ApiException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (SdkSoapException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (SdkException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (GenericEntityException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        }
+        result.put("productStoreId", context.get("productStoreId"));
+        result.put("facilityId", context.get("facilityId"));
+        result.put("folderId", context.get("folderId"));
+        result.put("productId", productId);
+        return result;
+    }
+
+    public static Map<String,Object> updateEbayInventoryStatus(DispatchContext dctx, Map<String,Object> context) {
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+        Map<String,Object> result = new HashMap<String, Object>();
+        Delegator delegator = dctx.getDelegator();
+        List<GenericValue> ebayProductStoreInventoryList = null;
+
+        try {
+            if (context.get("productStoreId") != null && context.get("facilityId") != null) {
+                ebayProductStoreInventoryList = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("facilityId",(String)context.get("facilityId"),"productStoreId",(String)context.get("productStoreId")).queryList();
+                for (GenericValue ebayProductStoreInventory : ebayProductStoreInventoryList) {
+                    if (ebayProductStoreInventory.get("ebayProductId") != null) {
+                        dispatcher.runSync("updateEbayInventoryStatusByProductId", UtilMisc.toMap("productStoreId", (String)context.get("productStoreId"), "facilityId", (String)context.get("facilityId"), "folderId", ebayProductStoreInventory.get("folderId"), "productId", ebayProductStoreInventory.get("productId"), "ebayProductId", ebayProductStoreInventory.get("ebayProductId"), "userLogin", context.get("userLogin")));
+                    }
+                }
+            }
+        } catch (GenericEntityException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        } catch (GenericServiceException e) {
+            result = ServiceUtil.returnFailure(e.getMessage());
+        }
+        result = ServiceUtil.returnSuccess();
+        return result;
+    }
+}

Propchange: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java
            ('svn:eol-style' removed)

Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java Mon Aug 10 16:15:37 2015
@@ -1,264 +1,264 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.ofbiz.ebaystore;
-
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.UtilHttp;
-import org.ofbiz.base.util.UtilValidate;
-import org.ofbiz.entity.Delegator;
-import org.ofbiz.entity.GenericValue;
-import org.ofbiz.service.GenericServiceException;
-import org.ofbiz.service.LocalDispatcher;
-import org.ofbiz.webapp.event.EventHandlerException;
-
-import com.ebay.sdk.ApiContext;
-import com.ebay.sdk.ApiException;
-import com.ebay.sdk.SdkException;
-import com.ebay.sdk.SdkSoapException;
-import com.ebay.sdk.call.GetStoreOptionsCall;
-import com.ebay.soap.eBLBaseComponents.CategoryType;
-import com.ebay.soap.eBLBaseComponents.GetStoreOptionsRequestType;
-import com.ebay.soap.eBLBaseComponents.GetStoreOptionsResponseType;
-import com.ebay.soap.eBLBaseComponents.StoreColorSchemeType;
-import com.ebay.soap.eBLBaseComponents.StoreColorType;
-import com.ebay.soap.eBLBaseComponents.StoreFontType;
-import com.ebay.soap.eBLBaseComponents.StoreThemeArrayType;
-import com.ebay.soap.eBLBaseComponents.StoreThemeType;
-import com.ebay.soap.eBLBaseComponents.StoreCustomCategoryType;
-
-public class EbayStoreOptions {
-
-    private static final String module = EbayStoreOptions.class.getName();
-    
-    public static String retrieveThemeColorSchemeByThemeId(HttpServletRequest request, HttpServletResponse response) {
-        Locale locale = UtilHttp.getLocale(request);
-        HttpSession session = request.getSession(true);
-        GenericValue userLogin = (GenericValue) session.getAttribute("userLogin");
-        Delegator delegator = (Delegator) request.getAttribute("delegator");
-        LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
-        GetStoreOptionsRequestType req = null;
-        GetStoreOptionsResponseType resp  = null;
-        StoreThemeArrayType returnedBasicThemeArray = null;
-
-        try {
-            Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
-            if (paramMap.get("productStoreId") != null) {
-                String themeId = (String)paramMap.get("themeId");
-
-                GetStoreOptionsCall  call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)paramMap.get("productStoreId"), locale, delegator));
-                req = new GetStoreOptionsRequestType();
-
-                resp = (GetStoreOptionsResponseType) call.execute(req);
-                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
-
-                    returnedBasicThemeArray = resp.getBasicThemeArray();
-                    StoreThemeType[] storeBasicTheme = returnedBasicThemeArray.getTheme();
-
-                    int i=0;
-                    String colorSchemeId = themeId.substring(themeId.indexOf("-")+1);
-                    themeId = themeId.substring(0,themeId.indexOf("-"));
-
-                    Map<String,Object> storeColorSchemeMap = new HashMap<String, Object>();
-                    while (i < storeBasicTheme.length) {
-
-                        StoreThemeType storeThemeType = storeBasicTheme[i];
-                        if (themeId.equals(storeThemeType.getThemeID().toString())) {
-                            StoreColorSchemeType colorSchemeType = storeThemeType.getColorScheme();
-                            if (colorSchemeType != null) {
-                                if (colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())) {
-                                    StoreColorType storeColor = colorSchemeType.getColor();
-                                    storeColorSchemeMap.put("storeColorAccent",storeColor.getAccent());
-                                    storeColorSchemeMap.put("storeColorPrimary",storeColor.getPrimary());
-                                    storeColorSchemeMap.put("storeColorSecondary",storeColor.getSecondary());
-
-                                    // get font,size and color
-                                    StoreFontType storeFontType = colorSchemeType.getFont();
-                                    storeColorSchemeMap.put("storeFontTypeNameFaceColor",storeFontType.getNameColor());
-                                    storeColorSchemeMap.put("storeFontTypeFontFaceValue",storeFontType.getNameFace().value());
-                                    storeColorSchemeMap.put("storeFontTypeSizeFaceValue",storeFontType.getNameSize().value());
-
-                                    storeColorSchemeMap.put("storeFontTypeTitleColor",storeFontType.getTitleColor());
-                                    storeColorSchemeMap.put("storeFontTypeFontTitleValue",storeFontType.getTitleFace().value());
-                                    storeColorSchemeMap.put("storeFontSizeTitleValue",storeFontType.getTitleSize().value());
-
-                                    storeColorSchemeMap.put("storeFontTypeDescColor",storeFontType.getDescColor());
-                                    storeColorSchemeMap.put("storeFontTypeFontDescValue",storeFontType.getDescFace().value());
-                                    storeColorSchemeMap.put("storeDescSizeValue",storeFontType.getDescSize().value());
-                                    request.setAttribute("storeColorSchemeMap", storeColorSchemeMap);
-
-                                    break;
-                                }
-                            }
-                        }
-                        i++;
-                    }
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dispatcher, paramMap.get("productStoreId").toString(), resp.getAck().toString(), "GetStoreOptionsCall : retrieveThemeColorSchemeByThemeId", resp.getErrors(0).getLongMessage());
-                }
-            }
-        } catch (ApiException e) {
-            e.printStackTrace();
-            return "error";
-        } catch (SdkSoapException e) {
-            e.printStackTrace();
-            return "error";
-        } catch (SdkException e) {
-            e.printStackTrace();
-            return "error";
-        }
-        return "success";
-    }
-
-    public static String retrieveItemTemplateByTemplateGroupId(HttpServletRequest request,HttpServletResponse response) {
-        Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
-        if (paramMap.get("productStoreId") != null) {
-            String temGroupId = (String)paramMap.get("templateGroupId");
-            Map<String,Object> addItemObj = EbayEvents.getAddItemListingObject(request, EbayEvents.getApiContext(request));
-            if (UtilValidate.isNotEmpty(addItemObj)) {
-                String refName = "itemCateFacade_".concat((String) paramMap.get("pkCategoryId"));
-                if (UtilValidate.isNotEmpty(addItemObj.get(refName))) {
-                    EbayStoreCategoryFacade cf = (EbayStoreCategoryFacade) addItemObj.get(refName);
-                    List<Map<String,Object>> theme = cf.getAdItemTemplates(temGroupId);
-                    if (theme.size() > 0) {
-                        request.setAttribute("itemTemplates", theme);
-                    }
-                }
-            }
-        }
-        return "success";
-    }
-
-    public static String retrieveEbayCategoryByParent(HttpServletRequest request, HttpServletResponse response) {
-        List<CategoryType> results;
-        try {
-            Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
-            if (paramMap.get("productStoreId") != null) {
-                String ebayCategoryId = (String)paramMap.get("ebayCategoryId");
-                // when change category should be remove old category from session
-                if (ebayCategoryId.indexOf("CH_") != -1) {
-                    ebayCategoryId = ebayCategoryId.replace("CH_", "");
-                    if (UtilValidate.isNotEmpty(ebayCategoryId)) {
-                        ApiContext apiContext = EbayEvents.getApiContext(request);
-                        Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext);
-                        String refName = "itemCateFacade_".concat(ebayCategoryId);
-                        if (UtilValidate.isNotEmpty(addItemObject.get(refName))) {
-                            addItemObject.remove(refName);
-                        }
-                    }
-                    ebayCategoryId = "";
-                }
-                request.setAttribute("productStoreId", paramMap.get("productStoreId"));
-                request.setAttribute("categoryId", ebayCategoryId);
-                results = EbayEvents.getChildCategories(request);
-                if (UtilValidate.isNotEmpty(results)) {
-                    List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>();
-                    for (CategoryType category : results) {
-                        Map<String,Object> context = new HashMap<String, Object>();
-                        context.put("CategoryCode", category.getCategoryID());
-                        context.put("CategoryName", category.getCategoryName());
-                        String isLeaf = String.valueOf(category.isLeafCategory()!= null ? category.isLeafCategory() : "false");
-                        context.put("IsLeafCategory", isLeaf);
-                        categories.add(context);
-                    }
-                    if (categories.size() > 0) {
-                        request.setAttribute("categories", categories);
-                    }
-                }
-            }
-        } catch (GenericServiceException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (EventHandlerException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (ApiException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (Exception e) {
-            Debug.logError(e.getMessage(), module);
-        }
-        return "success";
-    }
-
-    public static String retrieveEbayStoreCategoryByParent(HttpServletRequest request, HttpServletResponse response) {
-        List<StoreCustomCategoryType> results;
-        try {
-            Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
-            if (paramMap.get("productStoreId") != null) {
-                String ebayStoreCategory = (String)paramMap.get("ebayCategoryId");
-                // when change category should be remove old category from session
-                if (ebayStoreCategory.indexOf("CH_") != -1) {
-                    ebayStoreCategory = ebayStoreCategory.replace("CH_", "");
-                    if (UtilValidate.isNotEmpty(ebayStoreCategory)) {
-                        ApiContext apiContext = EbayEvents.getApiContext(request);
-                        Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext);
-                        String refName = "itemCateFacade_".concat(ebayStoreCategory);
-                        if (UtilValidate.isNotEmpty(addItemObject.get(refName))) {
-                            addItemObject.remove(refName);
-                        }
-                    }
-                    ebayStoreCategory = "";
-                }
-                request.setAttribute("productStoreId", paramMap.get("productStoreId"));
-                request.setAttribute("categoryId", ebayStoreCategory);
-                results = EbayEvents.getStoreChildCategories(request);
-                if (UtilValidate.isNotEmpty(results)) {
-                    List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>();
-                    for (StoreCustomCategoryType category : results) {
-                        Map<String,Object> context = new HashMap<String, Object>();
-                        context.put("CategoryCode", category.getCategoryID());
-                        context.put("CategoryName", category.getName());
-                        String isLeaf = "false";
-                        if (category.getChildCategory().length == 0) {
-                            isLeaf = "true";
-                        } else {
-                            isLeaf = "false";
-                        }
-                        context.put("IsLeafCategory", isLeaf);
-                        categories.add(context);
-                    }
-                    if (categories.size() > 0) {
-                        request.setAttribute("categories", categories);
-                    }
-                }
-            }
-        } catch (GenericServiceException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (EventHandlerException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (ApiException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (SdkException e) {
-            Debug.logError(e.getMessage(), module);
-        } catch (Exception e) {
-            Debug.logError(e.getMessage(), module);
-        }
-        return "success";
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.ofbiz.ebaystore;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.webapp.event.EventHandlerException;
+
+import com.ebay.sdk.ApiContext;
+import com.ebay.sdk.ApiException;
+import com.ebay.sdk.SdkException;
+import com.ebay.sdk.SdkSoapException;
+import com.ebay.sdk.call.GetStoreOptionsCall;
+import com.ebay.soap.eBLBaseComponents.CategoryType;
+import com.ebay.soap.eBLBaseComponents.GetStoreOptionsRequestType;
+import com.ebay.soap.eBLBaseComponents.GetStoreOptionsResponseType;
+import com.ebay.soap.eBLBaseComponents.StoreColorSchemeType;
+import com.ebay.soap.eBLBaseComponents.StoreColorType;
+import com.ebay.soap.eBLBaseComponents.StoreFontType;
+import com.ebay.soap.eBLBaseComponents.StoreThemeArrayType;
+import com.ebay.soap.eBLBaseComponents.StoreThemeType;
+import com.ebay.soap.eBLBaseComponents.StoreCustomCategoryType;
+
+public class EbayStoreOptions {
+
+    private static final String module = EbayStoreOptions.class.getName();
+    
+    public static String retrieveThemeColorSchemeByThemeId(HttpServletRequest request, HttpServletResponse response) {
+        Locale locale = UtilHttp.getLocale(request);
+        HttpSession session = request.getSession(true);
+        GenericValue userLogin = (GenericValue) session.getAttribute("userLogin");
+        Delegator delegator = (Delegator) request.getAttribute("delegator");
+        LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
+        GetStoreOptionsRequestType req = null;
+        GetStoreOptionsResponseType resp  = null;
+        StoreThemeArrayType returnedBasicThemeArray = null;
+
+        try {
+            Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
+            if (paramMap.get("productStoreId") != null) {
+                String themeId = (String)paramMap.get("themeId");
+
+                GetStoreOptionsCall  call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)paramMap.get("productStoreId"), locale, delegator));
+                req = new GetStoreOptionsRequestType();
+
+                resp = (GetStoreOptionsResponseType) call.execute(req);
+                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
+
+                    returnedBasicThemeArray = resp.getBasicThemeArray();
+                    StoreThemeType[] storeBasicTheme = returnedBasicThemeArray.getTheme();
+
+                    int i=0;
+                    String colorSchemeId = themeId.substring(themeId.indexOf("-")+1);
+                    themeId = themeId.substring(0,themeId.indexOf("-"));
+
+                    Map<String,Object> storeColorSchemeMap = new HashMap<String, Object>();
+                    while (i < storeBasicTheme.length) {
+
+                        StoreThemeType storeThemeType = storeBasicTheme[i];
+                        if (themeId.equals(storeThemeType.getThemeID().toString())) {
+                            StoreColorSchemeType colorSchemeType = storeThemeType.getColorScheme();
+                            if (colorSchemeType != null) {
+                                if (colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())) {
+                                    StoreColorType storeColor = colorSchemeType.getColor();
+                                    storeColorSchemeMap.put("storeColorAccent",storeColor.getAccent());
+                                    storeColorSchemeMap.put("storeColorPrimary",storeColor.getPrimary());
+                                    storeColorSchemeMap.put("storeColorSecondary",storeColor.getSecondary());
+
+                                    // get font,size and color
+                                    StoreFontType storeFontType = colorSchemeType.getFont();
+                                    storeColorSchemeMap.put("storeFontTypeNameFaceColor",storeFontType.getNameColor());
+                                    storeColorSchemeMap.put("storeFontTypeFontFaceValue",storeFontType.getNameFace().value());
+                                    storeColorSchemeMap.put("storeFontTypeSizeFaceValue",storeFontType.getNameSize().value());
+
+                                    storeColorSchemeMap.put("storeFontTypeTitleColor",storeFontType.getTitleColor());
+                                    storeColorSchemeMap.put("storeFontTypeFontTitleValue",storeFontType.getTitleFace().value());
+                                    storeColorSchemeMap.put("storeFontSizeTitleValue",storeFontType.getTitleSize().value());
+
+                                    storeColorSchemeMap.put("storeFontTypeDescColor",storeFontType.getDescColor());
+                                    storeColorSchemeMap.put("storeFontTypeFontDescValue",storeFontType.getDescFace().value());
+                                    storeColorSchemeMap.put("storeDescSizeValue",storeFontType.getDescSize().value());
+                                    request.setAttribute("storeColorSchemeMap", storeColorSchemeMap);
+
+                                    break;
+                                }
+                            }
+                        }
+                        i++;
+                    }
+                } else {
+                    EbayStoreHelper.createErrorLogMessage(userLogin, dispatcher, paramMap.get("productStoreId").toString(), resp.getAck().toString(), "GetStoreOptionsCall : retrieveThemeColorSchemeByThemeId", resp.getErrors(0).getLongMessage());
+                }
+            }
+        } catch (ApiException e) {
+            e.printStackTrace();
+            return "error";
+        } catch (SdkSoapException e) {
+            e.printStackTrace();
+            return "error";
+        } catch (SdkException e) {
+            e.printStackTrace();
+            return "error";
+        }
+        return "success";
+    }
+
+    public static String retrieveItemTemplateByTemplateGroupId(HttpServletRequest request,HttpServletResponse response) {
+        Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
+        if (paramMap.get("productStoreId") != null) {
+            String temGroupId = (String)paramMap.get("templateGroupId");
+            Map<String,Object> addItemObj = EbayEvents.getAddItemListingObject(request, EbayEvents.getApiContext(request));
+            if (UtilValidate.isNotEmpty(addItemObj)) {
+                String refName = "itemCateFacade_".concat((String) paramMap.get("pkCategoryId"));
+                if (UtilValidate.isNotEmpty(addItemObj.get(refName))) {
+                    EbayStoreCategoryFacade cf = (EbayStoreCategoryFacade) addItemObj.get(refName);
+                    List<Map<String,Object>> theme = cf.getAdItemTemplates(temGroupId);
+                    if (theme.size() > 0) {
+                        request.setAttribute("itemTemplates", theme);
+                    }
+                }
+            }
+        }
+        return "success";
+    }
+
+    public static String retrieveEbayCategoryByParent(HttpServletRequest request, HttpServletResponse response) {
+        List<CategoryType> results;
+        try {
+            Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
+            if (paramMap.get("productStoreId") != null) {
+                String ebayCategoryId = (String)paramMap.get("ebayCategoryId");
+                // when change category should be remove old category from session
+                if (ebayCategoryId.indexOf("CH_") != -1) {
+                    ebayCategoryId = ebayCategoryId.replace("CH_", "");
+                    if (UtilValidate.isNotEmpty(ebayCategoryId)) {
+                        ApiContext apiContext = EbayEvents.getApiContext(request);
+                        Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext);
+                        String refName = "itemCateFacade_".concat(ebayCategoryId);
+                        if (UtilValidate.isNotEmpty(addItemObject.get(refName))) {
+                            addItemObject.remove(refName);
+                        }
+                    }
+                    ebayCategoryId = "";
+                }
+                request.setAttribute("productStoreId", paramMap.get("productStoreId"));
+                request.setAttribute("categoryId", ebayCategoryId);
+                results = EbayEvents.getChildCategories(request);
+                if (UtilValidate.isNotEmpty(results)) {
+                    List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>();
+                    for (CategoryType category : results) {
+                        Map<String,Object> context = new HashMap<String, Object>();
+                        context.put("CategoryCode", category.getCategoryID());
+                        context.put("CategoryName", category.getCategoryName());
+                        String isLeaf = String.valueOf(category.isLeafCategory()!= null ? category.isLeafCategory() : "false");
+                        context.put("IsLeafCategory", isLeaf);
+                        categories.add(context);
+                    }
+                    if (categories.size() > 0) {
+                        request.setAttribute("categories", categories);
+                    }
+                }
+            }
+        } catch (GenericServiceException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (EventHandlerException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (ApiException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (Exception e) {
+            Debug.logError(e.getMessage(), module);
+        }
+        return "success";
+    }
+
+    public static String retrieveEbayStoreCategoryByParent(HttpServletRequest request, HttpServletResponse response) {
+        List<StoreCustomCategoryType> results;
+        try {
+            Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
+            if (paramMap.get("productStoreId") != null) {
+                String ebayStoreCategory = (String)paramMap.get("ebayCategoryId");
+                // when change category should be remove old category from session
+                if (ebayStoreCategory.indexOf("CH_") != -1) {
+                    ebayStoreCategory = ebayStoreCategory.replace("CH_", "");
+                    if (UtilValidate.isNotEmpty(ebayStoreCategory)) {
+                        ApiContext apiContext = EbayEvents.getApiContext(request);
+                        Map<String,Object> addItemObject = EbayEvents.getAddItemListingObject(request, apiContext);
+                        String refName = "itemCateFacade_".concat(ebayStoreCategory);
+                        if (UtilValidate.isNotEmpty(addItemObject.get(refName))) {
+                            addItemObject.remove(refName);
+                        }
+                    }
+                    ebayStoreCategory = "";
+                }
+                request.setAttribute("productStoreId", paramMap.get("productStoreId"));
+                request.setAttribute("categoryId", ebayStoreCategory);
+                results = EbayEvents.getStoreChildCategories(request);
+                if (UtilValidate.isNotEmpty(results)) {
+                    List<Map<String,Object>> categories = new LinkedList<Map<String,Object>>();
+                    for (StoreCustomCategoryType category : results) {
+                        Map<String,Object> context = new HashMap<String, Object>();
+                        context.put("CategoryCode", category.getCategoryID());
+                        context.put("CategoryName", category.getName());
+                        String isLeaf = "false";
+                        if (category.getChildCategory().length == 0) {
+                            isLeaf = "true";
+                        } else {
+                            isLeaf = "false";
+                        }
+                        context.put("IsLeafCategory", isLeaf);
+                        categories.add(context);
+                    }
+                    if (categories.size() > 0) {
+                        request.setAttribute("categories", categories);
+                    }
+                }
+            }
+        } catch (GenericServiceException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (EventHandlerException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (ApiException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (SdkException e) {
+            Debug.logError(e.getMessage(), module);
+        } catch (Exception e) {
+            Debug.logError(e.getMessage(), module);
+        }
+        return "success";
+    }
+
+}

Propchange: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java
            ('svn:eol-style' removed)