You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2015/08/10 18:15:38 UTC

svn commit: r1695126 [17/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...

Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java Mon Aug 10 16:15:37 2015
@@ -1,1358 +1,1358 @@
-/*
- * 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.sql.Timestamp;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Random;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.UtilDateTime;
-import org.ofbiz.base.util.UtilGenerics;
-import org.ofbiz.base.util.UtilHttp;
-import org.ofbiz.base.util.UtilMisc;
-import org.ofbiz.base.util.UtilProperties;
-import org.ofbiz.base.util.UtilValidate;
-import org.ofbiz.entity.Delegator;
-import org.ofbiz.entity.GenericEntityException;
-import org.ofbiz.entity.GenericValue;
-import org.ofbiz.entity.condition.EntityCondition;
-import org.ofbiz.entity.condition.EntityOperator;
-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.ModelService;
-import org.ofbiz.service.ServiceUtil;
-
-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.AddDisputeCall;
-import com.ebay.sdk.call.AddItemCall;
-import com.ebay.sdk.call.AddOrderCall;
-import com.ebay.sdk.call.DeleteSellingManagerTemplateCall;
-import com.ebay.sdk.call.GetBestOffersCall;
-import com.ebay.sdk.call.GetItemCall;
-import com.ebay.sdk.call.GetMyeBaySellingCall;
-import com.ebay.sdk.call.GetSellingManagerInventoryCall;
-import com.ebay.sdk.call.GetSellingManagerSoldListingsCall;
-import com.ebay.sdk.call.GetUserCall;
-import com.ebay.sdk.call.LeaveFeedbackCall;
-import com.ebay.sdk.call.RelistItemCall;
-import com.ebay.sdk.call.RespondToBestOfferCall;
-import com.ebay.sdk.call.VerifyAddSecondChanceItemCall;
-import com.ebay.soap.eBLBaseComponents.AddOrderRequestType;
-import com.ebay.soap.eBLBaseComponents.AddOrderResponseType;
-import com.ebay.soap.eBLBaseComponents.AmountType;
-import com.ebay.soap.eBLBaseComponents.AutomatedLeaveFeedbackEventCodeType;
-import com.ebay.soap.eBLBaseComponents.BestOfferActionCodeType;
-import com.ebay.soap.eBLBaseComponents.BestOfferDetailsType;
-import com.ebay.soap.eBLBaseComponents.BestOfferStatusCodeType;
-import com.ebay.soap.eBLBaseComponents.BestOfferType;
-import com.ebay.soap.eBLBaseComponents.BuyerPaymentMethodCodeType;
-import com.ebay.soap.eBLBaseComponents.CommentTypeCodeType;
-import com.ebay.soap.eBLBaseComponents.CurrencyCodeType;
-import com.ebay.soap.eBLBaseComponents.DeleteSellingManagerTemplateRequestType;
-import com.ebay.soap.eBLBaseComponents.DeleteSellingManagerTemplateResponseType;
-import com.ebay.soap.eBLBaseComponents.DetailLevelCodeType;
-import com.ebay.soap.eBLBaseComponents.DisputeExplanationCodeType;
-import com.ebay.soap.eBLBaseComponents.DisputeReasonCodeType;
-import com.ebay.soap.eBLBaseComponents.FeedbackDetailType;
-import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType;
-import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType;
-import com.ebay.soap.eBLBaseComponents.ItemArrayType;
-import com.ebay.soap.eBLBaseComponents.ItemListCustomizationType;
-import com.ebay.soap.eBLBaseComponents.ItemSortTypeCodeType;
-import com.ebay.soap.eBLBaseComponents.ItemType;
-import com.ebay.soap.eBLBaseComponents.ListingTypeCodeType;
-import com.ebay.soap.eBLBaseComponents.OrderType;
-import com.ebay.soap.eBLBaseComponents.PaginatedItemArrayType;
-import com.ebay.soap.eBLBaseComponents.PaginationType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerOrderStatusType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerPaidStatusCodeType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerProductType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerShippedStatusCodeType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerSoldOrderType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerSoldTransactionType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerTemplateDetailsArrayType;
-import com.ebay.soap.eBLBaseComponents.SellingManagerTemplateDetailsType;
-import com.ebay.soap.eBLBaseComponents.TradingRoleCodeType;
-import com.ebay.soap.eBLBaseComponents.TransactionArrayType;
-import com.ebay.soap.eBLBaseComponents.TransactionType;
-import com.ebay.soap.eBLBaseComponents.UserType;
-
-public class EbayStoreAutoPreferences {
-    public static String module = EbayStoreAutoPreferences.class.getName();
-    private static final String resource = "EbayStoreUiLabels";
-
-    public EbayStoreAutoPreferences() {
-
-    }
-
-    /*  It may take several minutes to process your automated feedback.  to connect to ebay site*/
-    public static Map<String, Object> autoPrefLeaveFeedbackOption(DispatchContext dctx, Map<String, ? extends Object> context) throws ApiException, SdkException, Exception {
-
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-
-        if (UtilValidate.isEmpty(context.get("productStoreId")) && UtilValidate.isEmpty(context.get("jobId"))) {
-            return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "EbayStoreRequiredProductStoreId", locale));
-        }
-        String jobId = (String) context.get("jobId");
-        String productStoreId = (String) context.get("productStoreId");
-        String isAutoPositiveFeedback = "N";
-        String feedbackEventCode = null;
-        GenericValue ebayProductStorePref = null;
-        List<String> list = new LinkedList<String>();
-
-        try {
-            ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-            ebayProductStorePref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "EBAY_AUTO_PIT_FB").queryOne();
-            if (UtilValidate.isNotEmpty(ebayProductStorePref) && UtilValidate.isNotEmpty(ebayProductStorePref.getString("autoPrefJobId"))) {
-                isAutoPositiveFeedback = ebayProductStorePref.getString("enabled");
-                // if isAutoPositiveFeedback is N that means not start this job run service
-                if ("Y".equals(isAutoPositiveFeedback) && jobId.equals(ebayProductStorePref.getString("autoPrefJobId"))) {
-                    feedbackEventCode = ebayProductStorePref.getString("condition1");
-                    String storeComments = ebayProductStorePref.getString("condition2");
-                    String comment = null;
-                    if (UtilValidate.isNotEmpty(storeComments)) {
-                        if (storeComments.indexOf("\\[,\\]") != -1) {
-                            String[] strs = storeComments.split("\\[,\\]");
-                            for (String str : strs) {
-                                list.add(str);
-                            }
-                        }
-                    }
-                    // start getting sold item list from ebay follow your site
-                    GetSellingManagerSoldListingsCall sellingManagerSoldListings = new GetSellingManagerSoldListingsCall(apiContext);
-
-                    List<SellingManagerSoldOrderType> items = new LinkedList<SellingManagerSoldOrderType>();
-                    SellingManagerSoldOrderType[] sellingManagerSoldOrders = sellingManagerSoldListings.getSellingManagerSoldListings();
-                    if (UtilValidate.isNotEmpty(sellingManagerSoldOrders)) {
-                        for (SellingManagerSoldOrderType solditem : sellingManagerSoldOrders) {
-                            SellingManagerOrderStatusType orderStatus = solditem.getOrderStatus();
-                            if (orderStatus != null && !orderStatus.isFeedbackSent()) {
-                                SellingManagerPaidStatusCodeType paidStatus = orderStatus.getPaidStatus();
-                                CommentTypeCodeType commentType = orderStatus.getFeedbackReceived();
-                                //Buyer has paid for this item.
-                                if ("PAYMENT_RECEIVED".equals(feedbackEventCode) && SellingManagerPaidStatusCodeType.PAID.equals(paidStatus)) {
-                                    items.add(solditem);
-                                }
-                                //Buyer has paid for this item and left me positive feedback.
-                                if ("POSITIVE_FEEDBACK_RECEIVED".equals(feedbackEventCode) && CommentTypeCodeType.POSITIVE.equals(commentType) && SellingManagerPaidStatusCodeType.PAID.equals(paidStatus)) {
-                                    items.add(solditem);
-                                }
-                            }
-                        }
-                        GetUserCall getUserCall = new GetUserCall(apiContext);
-                        String commentingUser = getUserCall.getUser().getUserID();
-                        for (SellingManagerSoldOrderType item : items) {
-                            // start leave feedbacks
-                            SellingManagerSoldTransactionType[] soldTrans = item.getSellingManagerSoldTransaction();
-                            if (UtilValidate.isNotEmpty(soldTrans)) {
-                                for (SellingManagerSoldTransactionType soldTran : soldTrans) {
-                                    LeaveFeedbackCall leaveFeedbackCall = new LeaveFeedbackCall(apiContext);
-                                    FeedbackDetailType detail = new FeedbackDetailType();
-                                    // ramdom comments
-                                    if (list.size() > 0) {
-                                        Collections.shuffle(list, new Random());
-                                        comment = list.get(0);
-                                    }
-                                    detail.setCommentText(comment);
-                                    detail.setCommentingUser(commentingUser);
-                                    //detail.setCommentingUserScore(value);
-                                    detail.setCommentType(CommentTypeCodeType.POSITIVE);
-                                    detail.setItemID(soldTran.getItemID());
-                                    detail.setItemPrice(soldTran.getItemPrice());
-                                    detail.setItemTitle(soldTran.getItemTitle());
-                                    leaveFeedbackCall.setFeedbackDetail(detail);
-                                    leaveFeedbackCall.setTargetUser(item.getBuyerID());
-                                    leaveFeedbackCall.setTransactionID(String.valueOf(soldTran.getTransactionID()));
-                                    leaveFeedbackCall.leaveFeedback();
-                                    Debug.logInfo("Auto leave feedback with site ".concat(apiContext.getSite().value()).concat("itemId ".concat(soldTran.getItemID())).concat(" comment is ".concat(comment)), module);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "EbayStoreProblemConnectingToEbaySite", locale) + e);
-        }
-
-        return ServiceUtil.returnSuccess();
-    }
-
-    public static String autoPrefLeaveFeedbackOptions(HttpServletRequest request, HttpServletResponse response) {
-        LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
-        Delegator delegator = (Delegator) request.getAttribute("delegator");
-        Locale locale = UtilHttp.getLocale(request);
-        Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
-
-        if (UtilValidate.isEmpty(paramMap.get("productStoreId"))) {
-            request.setAttribute("_ERROR_MESSAGE_", "Required productStoreId for get api context to connect with ebay site.");
-            return "error";
-        }
-
-        String productStoreId = (String) paramMap.get("productStoreId");
-        String isAutoPositiveFeedback = "N";
-        String condition = null;
-        if (UtilValidate.isNotEmpty(paramMap.get("isAutoPositiveFeedback"))) {
-            isAutoPositiveFeedback = (String) paramMap.get("isAutoPositiveFeedback");
-        }
-        String feedbackEventCode = (String) paramMap.get("feedbackEventCode");
-        ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-
-        try {
-            GenericValue ebayProductStorePref = null;
-            String comments = null;
-            String autoPrefJobId = null;
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            if ("Y".equals(isAutoPositiveFeedback)) {
-                if ("PAYMENT_RECEIVED".equals(feedbackEventCode)) {
-                    condition = AutomatedLeaveFeedbackEventCodeType.PAYMENT_RECEIVED.toString();
-                } else if ("POSITIVE_FEEDBACK_RECEIVED".equals(feedbackEventCode)) {
-                    condition = AutomatedLeaveFeedbackEventCodeType.POSITIVE_FEEDBACK_RECEIVED.toString();
-                }
-                // allow only 10 comment can be store / set new comments to condition2 separate by [,]
-            }
-            for (int i = 1; i <= 5; i++) {
-                String comment = (String) paramMap.get("comment_".concat(String.valueOf(i)));
-                if (comment != null && comment.length() > 0) {
-                    if (comments == null) {
-                        comments = comment;
-                    } else {
-                        comments = comments.concat("[").concat(",").concat(("]").concat(comment));
-                    }
-                }
-            }
-            if (UtilValidate.isEmpty(comments)) {
-                request.setAttribute("_ERROR_MESSAGE_", "Required least one at comment for your store feedback send with ebay site.");
-                return "error";
-            }
-
-            Map<String, Object> context = UtilMisc.<String, Object>toMap("userLogin", userLogin, "serviceName", "autoPrefLeaveFeedbackOption");
-            ebayProductStorePref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "EBAY_AUTO_PIT_FB").queryOne();
-            context.put("productStoreId", productStoreId);
-            context.put("autoPrefEnumId", "EBAY_AUTO_PIT_FB");
-            if (UtilValidate.isNotEmpty(ebayProductStorePref) && UtilValidate.isNotEmpty(ebayProductStorePref.getString("autoPrefJobId"))) {
-                autoPrefJobId = ebayProductStorePref.getString("autoPrefJobId");
-            }
-            context.put("autoPrefJobId", autoPrefJobId);
-            context.put("enabled", isAutoPositiveFeedback);
-            context.put("condition1", condition);
-            context.put("condition2", comments);
-            context.put("condition3", null);
-            if (UtilValidate.isEmpty(ebayProductStorePref)) {
-                dispatcher.runSync("createEbayProductStorePref", context);
-            } else {
-                dispatcher.runSync("updateEbayProductStorePref", context);
-            }
-            request.setAttribute("_EVENT_MESSAGE_", "Setting Automated Positive Feedback for Buyers Success with site " + apiContext.getSite().value());
-
-        } catch (GenericEntityException e) {
-            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
-            return "error";
-        } catch (GenericServiceException e) {
-            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
-            return "error";
-        }
-
-        return "success";
-    }
-
-    /* start automatically service send a Feedback Reminder email if feedback has not been received. and check how many days after shipping you want this email sent? */
-    public static Map<String, Object> autoSendFeedbackReminderEmail(DispatchContext dctx, Map<String, ? extends Object> context) throws ApiException, SdkException, Exception {
-        Delegator delegator = dctx.getDelegator();
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Locale locale = (Locale) context.get("locale");
-        GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-        if (UtilValidate.isEmpty(context.get("productStoreId")) && UtilValidate.isEmpty(context.get("jobId"))) {
-            return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "EbayStoreRequiredProductStoreId", locale));
-        }
-        String jobId = (String) context.get("jobId");
-        String productStoreId = (String) context.get("productStoreId");
-        String isAutoFeedbackReminder = "N";
-        int afterDays = 0;
-        GenericValue ebayProductStorePref = null;
-        String dateTimeFormat = UtilDateTime.DATE_TIME_FORMAT;
-        SimpleDateFormat formatter = new SimpleDateFormat(dateTimeFormat);
-
-        try {
-            ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-            ebayProductStorePref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "EBAY_AUTO_FB_RMD").queryOne();
-            if (UtilValidate.isNotEmpty(ebayProductStorePref) && UtilValidate.isNotEmpty(ebayProductStorePref.getString("autoPrefJobId"))) {
-                isAutoFeedbackReminder = ebayProductStorePref.getString("enabled");
-                // if isAutoPositiveFeedback is N that means not start this job run service
-                if ("Y".equals(isAutoFeedbackReminder) && jobId.equals(ebayProductStorePref.getString("autoPrefJobId"))) {
-                    afterDays = Integer.parseInt(ebayProductStorePref.getString("condition1"));
-                    
-                    // start getting sold item list from ebay follow your site
-                    GetSellingManagerSoldListingsCall sellingManagerSoldListings = new GetSellingManagerSoldListingsCall(apiContext);
-                    List<SellingManagerSoldOrderType> items = new LinkedList<SellingManagerSoldOrderType>();
-                    SellingManagerSoldOrderType[] sellingManagerSoldOrders = sellingManagerSoldListings.getSellingManagerSoldListings();
-                    if (UtilValidate.isNotEmpty(sellingManagerSoldOrders)) {
-                        for (SellingManagerSoldOrderType solditem : sellingManagerSoldOrders) {
-                            SellingManagerOrderStatusType orderStatus = solditem.getOrderStatus();
-                            if (orderStatus != null) {
-                                SellingManagerPaidStatusCodeType paidStatus = orderStatus.getPaidStatus();
-                                SellingManagerShippedStatusCodeType shippedStatus = orderStatus.getShippedStatus();
-
-                                //Buyer has paid for this item.  && Seller shipped items but feedback has not been received from buyer more than days condition
-                                if (SellingManagerPaidStatusCodeType.PAID.equals(paidStatus) && SellingManagerShippedStatusCodeType.SHIPPED.equals(shippedStatus)) {
-                                    Calendar right_now = Calendar.getInstance();
-                                    Calendar shippedTime = orderStatus.getShippedTime();
-                                    Calendar afterShippedTime = orderStatus.getShippedTime();
-                                    afterShippedTime.add(Calendar.DAY_OF_MONTH, afterDays);
-                                    Debug.logInfo("Verify date for send reminder feedback eamil by auto service: buyer " + solditem.getBuyerID() + " seller shippedTime " +
-                                            "" + formatter.format(shippedTime) + " codition days " + afterDays + " after shippedTime :" + formatter.format(afterShippedTime) + " now date" + formatter.format(right_now), module);
-                                    // if now date is after shipped time follow after days condition would be send reminder email to buyer
-                                    if (right_now.after(afterShippedTime)) {
-                                        items.add(solditem);
-                                    }
-                                }
-                            }
-                        }
-
-                        // call service send email (get template follow productStoreId)
-                        for (SellingManagerSoldOrderType item : items) {
-                            // call send
-                            Map<String, Object> sendMap = new HashMap<String, Object>();
-                            GenericValue productStoreEmail = EntityQuery.use(delegator).from("ProductStoreEmailSetting").where("productStoreId", productStoreId, "emailType", "EBAY_FEEBACK_REMIN").queryOne();
-                            String bodyScreenLocation = productStoreEmail.getString("bodyScreenLocation");
-                            sendMap.put("bodyScreenUri", bodyScreenLocation);
-                            String subjectString = productStoreEmail.getString("subject");
-                            sendMap.put("userLogin", userLogin);
-                            sendMap.put("subject", subjectString);
-                            sendMap.put("contentType", productStoreEmail.get("contentType"));
-                            sendMap.put("sendFrom", productStoreEmail.get("fromAddress"));
-                            sendMap.put("sendCc", productStoreEmail.get("ccAddress"));
-                            sendMap.put("sendBcc", productStoreEmail.get("bccAddress"));
-                            sendMap.put("sendTo", item.getBuyerEmail());
-
-                            Map<String, Object> bodyParameters = new HashMap<String, Object>();
-                            bodyParameters.put("buyerUserId", item.getBuyerID());
-                            sendMap.put("bodyParameters", bodyParameters);
-
-                            try {
-                                dispatcher.runAsync("sendMailFromScreen", sendMap);
-                            } catch (Exception e) {
-                                Debug.logError(e, module);
-                                return ServiceUtil.returnError(e.getMessage());
-                            }
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "EbayStoreProblemConnectingToEbaySite", locale) + e);
-        }
-
-        return ServiceUtil.returnSuccess();
-    }
-
-    public static Map<String, Object> automaticEbayRelistSoldItems(DispatchContext dctx, Map<String, ? extends Object> context) {
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-        String jobId = (String) context.get("jobId");
-        try {
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            Map<String, Object> serviceMap = new HashMap<String, Object>();
-            serviceMap.put("userLogin", userLogin);
-            //ProductStore
-            List<GenericValue> productStores = EntityQuery.use(delegator).from("EbayProductStorePref").where("autoPrefJobId", jobId).queryList();
-            if (productStores.size() != 0) {
-                // get auto preference setting
-                String productStoreId = productStores.get(0).getString("productStoreId");
-                String condition1 = productStores.get(0).getString("condition1");
-                String condition2 = productStores.get(0).getString("condition2");
-                // convert preference setting
-                Timestamp fromDate = UtilDateTime.toTimestamp(condition1);
-                Timestamp thruDate = UtilDateTime.toTimestamp(condition2);
-                Timestamp nowTime = UtilDateTime.nowTimestamp();
-                if (nowTime.after(fromDate) && nowTime.before(thruDate)) {
-                    serviceMap.put("productStoreId", productStoreId);
-                    Map<String, Object> eBayUserLogin = dispatcher.runSync("getEbayStoreUser", serviceMap);
-                    String eBayUserLoginId = (String) eBayUserLogin.get("userLoginId");
-                    GenericValue party = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", eBayUserLoginId).queryOne();
-                    String partyId = party.getString("partyId");
-                    //save sold items to OFbBiz product entity
-                    Map<String, Object> resultService = dispatcher.runSync("getEbaySoldItems", serviceMap);
-                    List<Map<String, Object>> soldItems = UtilGenerics.checkList(resultService.get("soldItems"));
-                    if (soldItems.size() != 0) {
-                        for (int itemCount = 0; itemCount < soldItems.size(); itemCount++) {
-                            Map<String, Object> soldItemMap = soldItems.get(itemCount);
-                            if (UtilValidate.isNotEmpty(soldItemMap.get("itemId"))) {
-                                GenericValue productCheck = EntityQuery.use(delegator).from("Product").where("productId", soldItemMap.get("itemId")).queryOne();
-                                if (productCheck == null) {
-                                    Map<String, Object> inMap = new HashMap<String, Object>();
-                                    inMap.put("productId", soldItemMap.get("itemId"));
-                                    inMap.put("productTypeId", "EBAY_ITEM");
-                                    inMap.put("internalName", "eBay Item " + soldItemMap.get("title"));
-                                    inMap.put("userLogin", userLogin);
-                                    dispatcher.runSync("createProduct", inMap);
-                                    // ProductRole (VENDOR)
-                                    List<GenericValue> productRole = EntityQuery.use(delegator).from("ProductRole").where("partyId", partyId, "productId", soldItemMap.get("itemId"), "roleTypeId", "VENDOR").queryList();
-                                    if (productRole.size() == 0) {
-                                        Map<String, Object> addRole = new HashMap<String, Object>();
-                                        addRole.put("productId", soldItemMap.get("itemId"));
-                                        addRole.put("roleTypeId", "VENDOR");
-                                        addRole.put("partyId", partyId);
-                                        addRole.put("fromDate", UtilDateTime.nowTimestamp());
-                                        addRole.put("userLogin", userLogin);
-                                        dispatcher.runSync("addPartyToProduct", addRole);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    //check active items
-                    serviceMap = new HashMap<String, Object>();
-                    serviceMap.put("userLogin", userLogin);
-                    serviceMap.put("productStoreId", productStoreId);
-                    resultService = dispatcher.runSync("getEbayActiveItems", serviceMap);
-                    List<Map<String, Object>> activeItems = UtilGenerics.checkList(resultService.get("activeItems"));
-                    List<String> activeItemMaps = new LinkedList<String>();
-                    if (activeItems.size() != 0) {
-                        for (int itemCount = 0; itemCount < activeItems.size(); itemCount++) {
-                            Map<String, Object> activeItemMap = UtilGenerics.checkMap(activeItems.get(itemCount));
-                            if (UtilValidate.isNotEmpty(activeItemMap.get("itemId"))) {
-                                activeItemMaps.add((String) activeItemMap.get("itemId"));
-                            }
-                        }
-                    }
-                    //check product role
-                    List<GenericValue> productRoles = EntityQuery.use(delegator).from("ProductRole").where("partyId", partyId, "roleTypeId", "VENDOR").queryList();
-                    List<String> productRoleIds = new LinkedList<String>();
-                    if (productRoles.size() != 0) {
-                        for (int itemCount = 0; itemCount < productRoles.size(); itemCount++) {
-                            String productId = productRoles.get(itemCount).getString("productId");
-                            productRoleIds.add(productId);
-                        }
-                    }
-                    List<EntityCondition> andExpr = new LinkedList<EntityCondition>();
-                    EntityCondition activeItemCond = EntityCondition.makeCondition("productId", EntityOperator.NOT_IN, activeItemMaps);
-                    andExpr.add(activeItemCond);
-                    EntityCondition productTypeCond = EntityCondition.makeCondition("productTypeId", EntityOperator.EQUALS, "EBAY_ITEM");
-                    andExpr.add(productTypeCond);
-                    EntityCondition isVirtualCond = EntityCondition.makeCondition("isVirtual", EntityOperator.NOT_EQUAL, "Y");
-                    andExpr.add(isVirtualCond);
-                    EntityCondition productRole = EntityCondition.makeCondition("productId", EntityOperator.IN, productRoleIds);
-                    andExpr.add(productRole);
-                    List<GenericValue> itemsToRelist = EntityQuery.use(delegator).from("Product").where(andExpr).queryList();
-                    if (itemsToRelist.size() != 0) {
-                        //re-list sold items and not active
-                        ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-                        for (int itemRelist = 0; itemRelist < itemsToRelist.size(); itemRelist++) {
-                            RelistItemCall relistItemCall = new RelistItemCall(apiContext);
-                            ItemType itemToBeRelisted = new ItemType();
-                            GenericValue product = itemsToRelist.get(itemRelist);
-                            itemToBeRelisted.setItemID(product.getString("productId"));
-                            relistItemCall.setItemToBeRelisted(itemToBeRelisted);
-                            relistItemCall.relistItem();
-                            GenericValue productStore = EntityQuery.use(delegator).from("Product").where("productId", product.getString("productId")).queryOne();
-                            productStore.set("isVirtual", "Y");
-                            productStore.store();
-                            Debug.logInfo("Relisted Item - " + product.getString("productId"), module);
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            return ServiceUtil.returnError(e.getMessage());
-        }
-        return ServiceUtil.returnSuccess();
-    }
-
-    public static Map<String, Object> automaticEbayDisputeNotComplete(DispatchContext dctx, Map<String, ? extends Object> context) {
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-        String jobId = (String) context.get("jobId");
-        try {
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            List<GenericValue> productStores = EntityQuery.use(delegator).from("EbayProductStorePref").where("autoPrefJobId", jobId).queryList();
-            if (productStores.size() != 0) {
-                // get automatic setting
-                String productStoreId = productStores.get(0).getString("productStoreId");
-                String condition1 = productStores.get(0).getString("condition1");
-                String condition2 = productStores.get(0).getString("condition2");
-                String condition3 = productStores.get(0).getString("condition3");
-                // convert automatic setting for usage
-                int afterDays = 0;
-                if (UtilValidate.isInteger(condition1)) {
-                    afterDays = Integer.parseInt(condition1);
-                }
-                DisputeReasonCodeType disputeReason = null;
-                if (UtilValidate.isNotEmpty(condition2)) {
-                    disputeReason = DisputeReasonCodeType.valueOf(condition2);
-                }
-                DisputeExplanationCodeType disputeExplanation = null;
-                if (UtilValidate.isNotEmpty(condition3)) {
-                    disputeExplanation = DisputeExplanationCodeType.valueOf(condition3);
-                }
-                // get sold items
-                Map<String, Object> serviceMap = new HashMap<String, Object>();
-                serviceMap.put("productStoreId", productStoreId);
-                serviceMap.put("userLogin", userLogin);
-                Map<String, Object> resultService = dispatcher.runSync("getEbaySoldItems", serviceMap);
-                List<Map<String, Object>> soldItems = UtilGenerics.checkList(resultService.get("soldItems"));
-                // check items to dispute
-                List<Map<String, Object>> itemsToDispute = new LinkedList<Map<String,Object>>();
-                for (int itemCount = 0; itemCount < soldItems.size(); itemCount++) {
-                    Map<String, Object> item = UtilGenerics.checkMap(soldItems.get(itemCount));
-                    String checkoutStatus = (String) item.get("checkoutStatus");
-                    Date creationTime = (Date) item.get("creationTime");
-                    Date paidTime = (Date) item.get("paidTime");
-                    String unpaidItemStatus = (String) item.get("unpaidItemStatus");
-                    int checkDays = UtilDateTime.getIntervalInDays(UtilDateTime.toTimestamp(creationTime), UtilDateTime.nowTimestamp());
-                    if (checkDays > afterDays && "CheckoutIncomplete".equals(checkoutStatus) && unpaidItemStatus == null && paidTime == null && checkoutStatus != "CheckoutComplete") {
-                        itemsToDispute.add(item);
-                    }
-                }
-                // Dispute items
-                if (disputeReason != null && disputeExplanation != null && itemsToDispute.size() != 0) {
-                    ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-                    DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[]{
-                            DetailLevelCodeType.RETURN_ALL,
-                            DetailLevelCodeType.ITEM_RETURN_ATTRIBUTES,
-                            DetailLevelCodeType.ITEM_RETURN_DESCRIPTION
-                    };
-                    for (int count = 0; count < itemsToDispute.size(); count++) {
-                        Map<String, Object> item = itemsToDispute.get(count);
-                        AddDisputeCall api = new AddDisputeCall(apiContext);
-                        api.setDetailLevel(detailLevels);
-                        api.setItemID((String) item.get("itemId"));
-                        api.setTransactionID((String) item.get("transactionId"));
-                        api.setDisputeExplanation(disputeExplanation);
-                        api.setDisputeReason(disputeReason);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            return ServiceUtil.returnError(e.getMessage());
-        }
-        return ServiceUtil.returnSuccess();
-    }
-
-    public static Map<String, Object> automaticEbayDisputeNotPay(DispatchContext dctx, Map<String, ? extends Object> context) {
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-        String jobId = (String) context.get("jobId");
-        try {
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            List<GenericValue> productStores = EntityQuery.use(delegator).from("EbayProductStorePref").where("autoPrefJobId", jobId).queryList();
-            if (productStores.size() != 0) {
-                // get automatic setting
-                String productStoreId = productStores.get(0).getString("productStoreId");
-                String condition1 = productStores.get(0).getString("condition1");
-                String condition2 = productStores.get(0).getString("condition2");
-                String condition3 = productStores.get(0).getString("condition3");
-                // convert automatic setting for usage
-                int afterDays = 0;
-                if (UtilValidate.isInteger(condition1)) {
-                    afterDays = Integer.parseInt(condition1);
-                }
-                DisputeReasonCodeType disputeReason = null;
-                if (UtilValidate.isNotEmpty(condition2)) {
-                    disputeReason = DisputeReasonCodeType.valueOf(condition2);
-                }
-                DisputeExplanationCodeType disputeExplanation = null;
-                if (UtilValidate.isNotEmpty(condition3)) {
-                    disputeExplanation = DisputeExplanationCodeType.valueOf(condition3);
-                }
-                // get sold items
-                Map<String, Object> serviceMap = new HashMap<String, Object>();
-                serviceMap.put("productStoreId", productStoreId);
-                serviceMap.put("userLogin", userLogin);
-                Map<String, Object> resultService = dispatcher.runSync("getEbaySoldItems", serviceMap);
-                List<Map<String, Object>> soldItems = UtilGenerics.checkList(resultService.get("soldItems"));
-                // check items to dispute
-                List<Map<String, Object>> itemsToDispute = new LinkedList<Map<String,Object>>();
-                for (int itemCount = 0; itemCount < soldItems.size(); itemCount++) {
-                    Map<String, Object> item = UtilGenerics.checkMap(soldItems.get(itemCount));
-                    String checkoutStatus = (String) item.get("checkoutStatus");
-                    Date creationTime = (Date) item.get("creationTime");
-                    Date paidTime = (Date) item.get("paidTime");
-                    String unpaidItemStatus = (String) item.get("unpaidItemStatus");
-                    int checkDays = UtilDateTime.getIntervalInDays(UtilDateTime.toTimestamp(creationTime), UtilDateTime.nowTimestamp());
-                    if (checkDays > afterDays && unpaidItemStatus == null && paidTime == null && checkoutStatus == "CheckoutComplete") {
-                        itemsToDispute.add(item);
-                    }
-                }
-                // Dispute items
-                if (disputeReason != null && disputeExplanation != null && itemsToDispute.size() != 0) {
-                    ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-                    DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[]{
-                            DetailLevelCodeType.RETURN_ALL,
-                            DetailLevelCodeType.ITEM_RETURN_ATTRIBUTES,
-                            DetailLevelCodeType.ITEM_RETURN_DESCRIPTION
-                    };
-                    for (int count = 0; count < itemsToDispute.size(); count++) {
-                        Map<String, Object> item = itemsToDispute.get(count);
-                        AddDisputeCall api = new AddDisputeCall(apiContext);
-                        api.setDetailLevel(detailLevels);
-                        api.setItemID((String) item.get("itemId"));
-                        api.setTransactionID((String) item.get("transactionId"));
-                        api.setDisputeExplanation(disputeExplanation);
-                        api.setDisputeReason(disputeReason);
-                    }
-                }
-            }
-        } catch (Exception e) {
-            return ServiceUtil.returnError(e.getMessage());
-        }
-        return ServiceUtil.returnSuccess();
-    }
-
-    /* start automatically service send an email when ebay seller has been received payment from ebay buyer */
-    public static Map<String, Object> autoSendPaymentReceivedEmail(DispatchContext dctx, Map<String, ? extends Object> context) throws ApiException, SdkException, Exception {
-        Delegator delegator = dctx.getDelegator();
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Locale locale = (Locale) context.get("locale");
-        GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-
-        if (UtilValidate.isEmpty(context.get("productStoreId")) && UtilValidate.isEmpty(context.get("jobId"))) {
-            return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "EbayStoreRequiredProductStoreId", locale));
-        }
-
-        String jobId = (String) context.get("jobId");
-        String productStoreId = (String) context.get("productStoreId");
-
-        String isAutoSendEmail = "N";
-        GenericValue ebayProductStorePref = null;
-
-        try {
-            ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-            ebayProductStorePref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "EBAY_AUTO_FB_RMD").queryOne();
-            if (UtilValidate.isNotEmpty(ebayProductStorePref) && UtilValidate.isNotEmpty(ebayProductStorePref.getString("autoPrefJobId"))) {
-                isAutoSendEmail = ebayProductStorePref.getString("enabled");
-                // if isAutoPositiveFeedback is N that means not start this job run service
-                if ("Y".equals(isAutoSendEmail) && jobId.equals(ebayProductStorePref.getString("autoPrefJobId"))) {
-                    // start getting sold item list from ebay follow your site
-                    GetSellingManagerSoldListingsCall sellingManagerSoldListings = new GetSellingManagerSoldListingsCall(apiContext);
-                    List<SellingManagerSoldOrderType> items = new LinkedList<SellingManagerSoldOrderType>();
-                    SellingManagerSoldOrderType[] sellingManagerSoldOrders = sellingManagerSoldListings.getSellingManagerSoldListings();
-                    if (UtilValidate.isNotEmpty(sellingManagerSoldOrders)) {
-                        for (SellingManagerSoldOrderType solditem : sellingManagerSoldOrders) {
-                            SellingManagerOrderStatusType orderStatus = solditem.getOrderStatus();
-                            if (orderStatus != null) {
-                                SellingManagerPaidStatusCodeType paidStatus = orderStatus.getPaidStatus();
-                                //Buyer has paid for this item. and seller received
-                                if (SellingManagerPaidStatusCodeType.PAID.equals(paidStatus)) {
-                                    items.add(solditem);
-                                }
-                            }
-                        }
-
-                        // call service send email (get template follow productStoreId)
-                        for (SellingManagerSoldOrderType item : items) {
-                            // call send
-                            Map<String, Object> sendMap = new HashMap<String, Object>();
-                            GenericValue productStoreEmail = EntityQuery.use(delegator).from("ProductStoreEmailSetting").where("productStoreId", productStoreId, "emailType", "EBAY_PAY_RECIEVED").queryOne();
-                            String bodyScreenLocation = productStoreEmail.getString("bodyScreenLocation");
-                            sendMap.put("bodyScreenUri", bodyScreenLocation);
-                            String subjectString = productStoreEmail.getString("subject");
-                            sendMap.put("userLogin", userLogin);
-                            sendMap.put("subject", subjectString);
-                            sendMap.put("contentType", productStoreEmail.get("contentType"));
-                            sendMap.put("sendFrom", productStoreEmail.get("fromAddress"));
-                            sendMap.put("sendCc", productStoreEmail.get("ccAddress"));
-                            sendMap.put("sendBcc", productStoreEmail.get("bccAddress"));
-                            sendMap.put("sendTo", item.getBuyerEmail());
-
-                            Map<String, Object> bodyParameters = new HashMap<String, Object>();
-                            bodyParameters.put("buyerUserId", item.getBuyerID());
-                            sendMap.put("bodyParameters", bodyParameters);
-
-                            try {
-                                dispatcher.runAsync("sendMailFromScreen", sendMap);
-                            } catch (Exception e) {
-                                Debug.logError(e, module);
-                                return ServiceUtil.returnError(e.getMessage());
-                            }
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "EbayStoreProblemConnectingToEbaySite", locale) + e);
-        }
-
-        return ServiceUtil.returnSuccess();
-    }
-
-
-    public static Map<String, Object> runCombineOrders(DispatchContext dctx, Map<String, Object> context) {
-        Map<String, Object> result = new HashMap<String, Object>();
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-        String productStoreId = (String) context.get("productStoreId");
-        try {
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-            GetSellingManagerSoldListingsCall sellingManagerSoldListings = new GetSellingManagerSoldListingsCall(apiContext);
-            SellingManagerSoldOrderType[] sellingManagerSoldOrders = sellingManagerSoldListings.getSellingManagerSoldListings();
-            if (sellingManagerSoldOrders != null) {
-                int soldOrderLength = sellingManagerSoldOrders.length;
-                GenericValue ebayPref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "ENA_COMB_ORD").queryOne();
-                if (UtilValidate.isNotEmpty(ebayPref)) {
-
-                    Timestamp beginDate = UtilDateTime.toTimestamp("01/01/2001 00:00:00");
-                    Long daysCount = Long.parseLong(ebayPref.get("condition1").toString());
-                    Hashtable<String, List<Map<String, Object>>> h = new Hashtable<String, List<Map<String, Object>>>();
-
-                    for (int i = 0; i < soldOrderLength; i++) {
-                        SellingManagerSoldOrderType sellingManagerSoldOrder = sellingManagerSoldOrders[i];
-                        String buyerId = sellingManagerSoldOrder.getBuyerID().toString();
-                        List<Map<String, Object>> soldGroupList = new LinkedList<Map<String,Object>>();
-                        Map<String, Object> mymap = new HashMap<String, Object>();
-                        mymap.put("group", "");
-                        mymap.put("soldorder", sellingManagerSoldOrder);
-                        if (h.size() > 0) {
-                            Enumeration<String> enums = h.keys();
-                            String key = "";
-                            while (enums.hasMoreElements()) {
-                                key = enums.nextElement();
-                                List<Map<String, Object>> tempList = h.get(key);
-                                if (key.equals(buyerId)) {
-                                    key = buyerId;
-                                    tempList.add(mymap);
-                                    h.put(buyerId, tempList);
-                                }
-                            }
-                            if (!key.equals(buyerId)) {
-                                soldGroupList.clear();
-                                soldGroupList.add(mymap);
-                                h.put(buyerId, soldGroupList);
-                            }
-                        } else {
-                            soldGroupList.add(mymap);
-                            h.put(buyerId, soldGroupList);
-                        }
-                    }
-
-                    Enumeration<String> enums = h.keys();
-                    while (enums.hasMoreElements()) {
-                        int groupRunning = 0;
-                        String key = enums.nextElement();
-                        List<Map<String, Object>> soldGroupList = h.get(key);
-                        int maxItems = Integer.parseInt(ebayPref.get("condition2").toString());
-
-                        if (soldGroupList.size() > 1) {
-                            for (int j = 0; j < soldGroupList.size(); j++) {
-                                Map<String, Object> myMap = soldGroupList.get(j);
-                                SellingManagerSoldOrderType soldorder = (SellingManagerSoldOrderType) myMap.get("soldorder");
-                                Timestamp createdate = UtilDateTime.toTimestamp(soldorder.getCreationTime().getTime());
-                                if (myMap.get("group").toString().length() == 0) {
-                                    beginDate = createdate;
-                                }
-                                beginDate = findStartDate(beginDate, soldGroupList);
-                                runCheckAndGroup(groupRunning, beginDate, daysCount, soldGroupList);
-                                groupRunning++;
-                            }
-
-                            int x = 0;
-                            while (x < groupRunning) {
-                                OrderType order = new OrderType();
-                                order.setCreatingUserRole(TradingRoleCodeType.SELLER);
-                                BuyerPaymentMethodCodeType[] buyerPayment = new BuyerPaymentMethodCodeType[1];
-                                buyerPayment[0] = BuyerPaymentMethodCodeType.CASH_ON_PICKUP;
-                                order.setPaymentMethods(buyerPayment);
-                                TransactionArrayType transactionArr = new TransactionArrayType();
-                                List<TransactionType> translist = new LinkedList<TransactionType>();
-
-                                AmountType total = new AmountType();
-                                double totalAmt = 0.0;
-                                CurrencyCodeType currencyId = null;
-                                int totalQty = 0;
-
-                                for (int j = 0; j < soldGroupList.size(); j++) {
-                                    Map<String, Object> myMap = soldGroupList.get(j);
-                                    if (UtilValidate.isNotEmpty(myMap.get("group"))) {
-                                        if (x == Integer.parseInt(myMap.get("group").toString())) {
-                                            SellingManagerSoldOrderType sellingManagerSoldOrder = (SellingManagerSoldOrderType) myMap.get("soldorder");
-                                            String buyerId = sellingManagerSoldOrder.getBuyerID().toString();
-                                            int qty = sellingManagerSoldOrder.getTotalQuantity();
-                                            totalQty = totalQty + qty;
-                                            if (key.equals(buyerId) && (UtilValidate.isEmpty(sellingManagerSoldOrder.getOrderStatus().getPaidTime()))) {
-                                                double totalAmount = 0.0;
-                                                if (UtilValidate.isNotEmpty(sellingManagerSoldOrder.getTotalAmount())) {
-                                                    totalAmount = sellingManagerSoldOrder.getTotalAmount().getValue();
-                                                    currencyId = sellingManagerSoldOrder.getTotalAmount().getCurrencyID();
-                                                } else {
-                                                    totalAmount = sellingManagerSoldOrder.getSalePrice().getValue();
-                                                    currencyId = sellingManagerSoldOrder.getSalePrice().getCurrencyID();
-                                                }
-                                                //Combine
-                                                totalAmt = totalAmt + totalAmount;
-                                                SellingManagerSoldTransactionType[] sellingManagerSoldTransactions = sellingManagerSoldOrder.getSellingManagerSoldTransaction();
-                                                //set transaction
-                                                for (int count = 0; count < sellingManagerSoldTransactions.length; count++) {
-                                                    SellingManagerSoldTransactionType sellingManagerSoldTransaction = sellingManagerSoldTransactions[count];
-                                                    TransactionType transtype = new TransactionType();
-                                                    ItemType itemtype = new ItemType();
-                                                    if (UtilValidate.isNotEmpty(sellingManagerSoldTransaction.getItemID())) {
-                                                        itemtype.setItemID(sellingManagerSoldTransaction.getItemID());
-                                                        transtype.setItem(itemtype);
-                                                        transtype.setTransactionID(sellingManagerSoldTransaction.getTransactionID().toString());
-                                                        translist.add(transtype);
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                                if (totalQty < maxItems) {
-                                    total.setValue(totalAmt);
-                                    total.setCurrencyID(currencyId);
-                                    TransactionType[] transArr = new TransactionType[translist.size()];
-                                    for (int counter = 0; counter < translist.size(); counter++) {
-                                        transArr[counter] = translist.get(counter);
-                                    }
-                                    transactionArr.setTransaction(transArr);
-                                    if (transactionArr.getTransactionLength() > 1) {
-                                        order.setTotal(total);
-                                        order.setTransactionArray(transactionArr);
-                                        AddOrderCall call = new AddOrderCall(apiContext);
-                                        AddOrderRequestType req = new AddOrderRequestType();
-                                        AddOrderResponseType resp = null;
-                                        req.setOrder(order);
-                                        resp = (AddOrderResponseType) call.execute(req);
-                                        if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
-                                            String orderId = resp.getOrderID();
-                                            Debug.logInfo(":: new order id is = " + orderId, module);
-                                        } else {
-                                            EbayStoreHelper.createErrorLogMessage(userLogin, dispatcher, productStoreId, resp.getAck().toString(), "Add order : runCombineOrders", resp.getErrors(0).getLongMessage());
-                                        }
-                                    }
-                                }
-                                x++;
-                            }
-                        }
-                    }
-                }
-            }
-            result = ServiceUtil.returnSuccess();
-        } catch (GenericServiceException e) {
-            result = ServiceUtil.returnError(e.getMessage());
-        } catch (Exception e) {
-            return ServiceUtil.returnError(e.getMessage());
-        }
-        return result;
-    }
-
-    public static Timestamp findStartDate(Timestamp lessStartTimestamp, List<Map<String, Object>> inList) {
-        for (Map<String, Object> inMap : inList) {
-            SellingManagerSoldOrderType soldorder = (SellingManagerSoldOrderType) inMap.get("soldorder");
-            Timestamp createTimestamp = UtilDateTime.toTimestamp(soldorder.getCreationTime().getTime());
-            String group = (String) inMap.get("group");
-            if (createTimestamp.before(lessStartTimestamp) && group.length() == 0) {
-                lessStartTimestamp = createTimestamp;
-            }
-        }
-        return lessStartTimestamp;
-    }
-
-    public static void runCheckAndGroup(int groupRunning, Timestamp startTimestamp, long countDays, List<Map<String, Object>> inList) {
-        Timestamp endDate = UtilDateTime.getDayEnd(UtilDateTime.toTimestamp(startTimestamp), countDays);
-        for (Map<String, Object> inMap : inList) {
-            String group = inMap.get("group").toString();
-            SellingManagerSoldOrderType soldorder = (SellingManagerSoldOrderType) inMap.get("soldorder");
-            if (group.length() == 0) {
-                Timestamp createtimestamp = UtilDateTime.toTimestamp(soldorder.getCreationTime().getTime());
-                if (((createtimestamp.equals(startTimestamp)) || (createtimestamp.after(startTimestamp))) && (createtimestamp.before(endDate))) {
-                    inMap.put("group", "" + groupRunning);
-                }
-            }
-        }
-    }
-
-    public static Map<String, Object> autoSendWinningBuyerNotification(DispatchContext dctx, Map<String, Object> context) {
-        Map<String, Object> result = new HashMap<String, Object>();
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-        String productStoreId = (String) context.get("productStoreId");
-        try {
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            Map<String, Object> resultSold =  dispatcher.runSync("getEbaySoldItems", UtilMisc.toMap("productStoreId", productStoreId, "userLogin", userLogin));
-            List<Map<String, Object>> soldItems = UtilGenerics.checkList(resultSold.get("soldItems"));
-            if (soldItems.size() != 0) {
-                for (int i = 0; i < soldItems.size(); i++) {
-                    Map<String, Object> item = soldItems.get(i);
-                    Timestamp lastestTime = UtilDateTime.getDayStart(UtilDateTime.nowTimestamp(), 1);
-                    Date creationDate = (Date) item.get("creationTime");
-                    Timestamp creationTime = UtilDateTime.toTimestamp(creationDate);
-
-                    if (creationTime.equals(lastestTime) && (item.get("listingType").toString().equals("Chinese"))) {
-                        Map<String, Object> serviceMap = new HashMap<String, Object>();
-                        serviceMap.put("userLogin", userLogin);
-                        serviceMap.put("locale", locale);
-                        serviceMap.put("productStoreId", productStoreId);
-                        serviceMap.put("itemId", item.get("itemId").toString());
-                        Map<String, Object> resultBid =  dispatcher.runSync("getEbayAllBidders", serviceMap);
-                        List<Map<String, Object>> allBidders =  UtilGenerics.checkList(resultBid.get("allBidders"));
-
-                        if (allBidders.size() != 0) {
-                            // call to send email to bidder
-                            for (int j = 0; j < allBidders.size(); j++) {
-                                Map<String, Object> bidder = allBidders.get(j);
-                                UserType user = (UserType) bidder.get("bidder");
-                                String buyerUserId = bidder.get("userId").toString();
-
-                                Map<String, Object> sendMap = new HashMap<String, Object>();
-                                GenericValue productStoreEmail = EntityQuery.use(delegator).from("ProductStoreEmailSetting").where("productStoreId", productStoreId, "emailType", "EBAY_WIN_BUYER_NOTI").queryOne();
-                                String bodyScreenLocation = productStoreEmail.getString("bodyScreenLocation");
-                                sendMap.put("bodyScreenUri", bodyScreenLocation);
-                                String subjectString = productStoreEmail.getString("subject");
-                                sendMap.put("userLogin", userLogin);
-                                sendMap.put("subject", subjectString);
-                                sendMap.put("contentType", productStoreEmail.get("contentType"));
-                                sendMap.put("sendFrom", productStoreEmail.get("fromAddress"));
-                                sendMap.put("sendCc", productStoreEmail.get("ccAddress"));
-                                sendMap.put("sendBcc", productStoreEmail.get("bccAddress"));
-                                sendMap.put("sendTo", user.getEmail());
-
-                                Map<String, Object> bodyParameters = new HashMap<String, Object>();
-                                bodyParameters.put("buyerUserId", buyerUserId);
-                                sendMap.put("bodyParameters", bodyParameters);
-
-                                try {
-                                    dispatcher.runAsync("sendMailFromScreen", sendMap);
-                                } catch (Exception e) {
-                                    Debug.logError(e, module);
-                                    return ServiceUtil.returnError(e.getMessage());
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            result = ServiceUtil.returnSuccess();
-        } catch (GenericServiceException e) {
-            result = ServiceUtil.returnError(e.getMessage());
-        } catch (Exception e) {
-            return ServiceUtil.returnError(e.getMessage());
-        }
-        return result;
-    }
-
-    public static Map<String, Object> autoSendItemDispatchedNotification(DispatchContext dctx, Map<String, Object> context) {
-        Map<String, Object> result = new HashMap<String, Object>();
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Delegator delegator = dctx.getDelegator();
-        String productStoreId = (String) context.get("productStoreId");
-
-        try {
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            context.put("userLogin", userLogin);
-            Map<String, Object> resultSold =  dispatcher.runSync("getEbaySoldItems", context);
-            List<Map<String, Object>> soldItems = UtilGenerics.checkList(resultSold.get("soldItems"));
-            if (soldItems.size() != 0) {
-                for (int i = 0; i < soldItems.size(); i++) {
-                    Map<String, Object> item = soldItems.get(i);
-                    String shippedStatus = item.get("shippedStatus").toString();
-                    Timestamp lastestTime = UtilDateTime.getDayStart(UtilDateTime.nowTimestamp(), 1);
-                    Date shippedTime = (Date) item.get("shippedTime");
-                    Timestamp shippedTimestamp = UtilDateTime.toTimestamp(shippedTime);
-
-                    if ("SHIPPED".equals(shippedStatus) && shippedTimestamp.equals(lastestTime)) {
-                        String buyerUserId = item.get("buyerUserId").toString();
-                        String buyerEmail = item.get("buyerEmail").toString();
-
-                         Map<String, Object> sendMap = new HashMap<String, Object>();
-                         GenericValue productStoreEmail = EntityQuery.use(delegator).from("ProductStoreEmailSetting").where("productStoreId", productStoreId, "emailType", "EBAY_ITEM_DISPATCH").queryOne();
-                         String bodyScreenLocation = productStoreEmail.getString("bodyScreenLocation");
-                         sendMap.put("bodyScreenUri", bodyScreenLocation);
-                         String subjectString = productStoreEmail.getString("subject");
-                         sendMap.put("userLogin", userLogin);
-                         sendMap.put("subject", subjectString);
-                         sendMap.put("contentType", productStoreEmail.get("contentType"));
-                         sendMap.put("sendFrom", productStoreEmail.get("fromAddress"));
-                         sendMap.put("sendCc", productStoreEmail.get("ccAddress"));
-                         sendMap.put("sendBcc", productStoreEmail.get("bccAddress"));
-                         sendMap.put("sendTo", buyerEmail);
-
-                         Map<String, Object> bodyParameters = new HashMap<String, Object>();
-                         bodyParameters.put("buyerUserId", buyerUserId);
-                         sendMap.put("bodyParameters", bodyParameters);
-
-                         try {
-                             dispatcher.runAsync("sendMailFromScreen", sendMap);
-                         } catch (Exception e) {
-                             Debug.logError(e, module);
-                             return ServiceUtil.returnError(e.getMessage());
-                         }
-                        
-                    }
-                }
-            }
-            result = ServiceUtil.returnSuccess();
-        } catch (GenericServiceException e) {
-            result = ServiceUtil.returnError(e.getMessage());
-        } catch (Exception e) {
-            return ServiceUtil.returnError(e.getMessage());
-        }
-        return result;
-    }
-
-    public static Map<String,Object> autoBlockItemsOutOfStock(DispatchContext dctx, Map<String,Object> context) {
-        Locale locale = (Locale) context.get("locale");
-        GenericValue userLogin = (GenericValue) context.get("userLogin");
-        Delegator delegator = dctx.getDelegator();
-        Map<String,Object> result = new HashMap<String, Object>();
-        GetSellingManagerInventoryRequestType req = new GetSellingManagerInventoryRequestType();
-        GetSellingManagerInventoryResponseType resp =  null;
-
-        if (context.get("productStoreId") != null) {
-            GetSellingManagerInventoryCall call = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-
-            try {
-                SellingManagerProductType[] returnedSellingManagerProductType = null;
-                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();
-                       int qty = prodDetailType.getQuantityAvailable();
-
-                       if (qty == 0) {
-                           SellingManagerTemplateDetailsArrayType sellingTempArr =  returnedSellingManagerProductType[i].getSellingManagerTemplateDetailsArray();
-                           SellingManagerTemplateDetailsType[] selllingTempType = null;
-                           if (UtilValidate.isNotEmpty(sellingTempArr)) {
-                               selllingTempType = sellingTempArr.getSellingManagerTemplateDetails();
-                           }
-
-                           if (selllingTempType.length > 0) {
-                               for (int j = 0; j < selllingTempType.length; j++) {
-                                   Long longTemplete = Long.parseLong(selllingTempType[j].getSaleTemplateID());
-                                   DeleteSellingManagerTemplateCall tcall = new DeleteSellingManagerTemplateCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-                                   DeleteSellingManagerTemplateRequestType treq = new DeleteSellingManagerTemplateRequestType();
-                                   DeleteSellingManagerTemplateResponseType tresp =  null;
-                                   treq.setSaleTemplateID(longTemplete);
-
-                                   tresp = (DeleteSellingManagerTemplateResponseType) tcall.execute(treq);
-                                   if (tresp != null && "SUCCESS".equals(tresp.getAck().toString())) {
-                                      result = ServiceUtil.returnSuccess();
-                                   } else {
-                                       EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), tresp.getAck().toString(), "Delete selling manager template : autoBlockItemsOutOfStock", tresp.getErrors(0).getLongMessage());
-                                   }
-                               }
-                           }
-                       }
-                    }
-                    result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
-                } else {
-                    EbayStoreHelper.createErrorLogMessage(userLogin, dctx.getDispatcher(), context.get("productStoreId").toString(), resp.getAck().toString(), "Get selling manager inventory : autoBlockItemsOutOfStock", resp.getErrors(0).getLongMessage());
-                }
-                result = ServiceUtil.returnSuccess();
-            } catch (ApiException e) {
-                e.printStackTrace();
-            } catch (SdkSoapException e) {
-                e.printStackTrace();
-            } catch (SdkException e) {
-                e.printStackTrace();
-            }
-        }
-        return result;
-    }
-
-    public static Map<String, Object> autoRelistingItems(DispatchContext dctx, Map<String, ? extends Object> context) {
-        Map<String, Object> itemObject = new HashMap<String, Object>();
-        LocalDispatcher dispatcher = dctx.getDispatcher();
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-        try {
-            GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
-            EntityCondition expression1 = EntityCondition.makeCondition("autoRelisting", EntityOperator.EQUALS, "Y");
-            EntityCondition expression2 = EntityCondition.makeCondition("endDateTime", EntityOperator.LESS_THAN, UtilDateTime.nowTimestamp());
-            EntityCondition expression3 = EntityCondition.makeCondition("itemId", EntityOperator.NOT_EQUAL, null);
-            List<EntityCondition> expressions = new LinkedList<EntityCondition>();
-            expressions.add(expression1);
-            expressions.add(expression2);
-            expressions.add(expression3);
-            EntityCondition cond = EntityCondition.makeCondition(expressions, EntityOperator.AND);
-            List<GenericValue> ebayProductListings = EntityQuery.use(delegator).from("EbayProductListing").where(expressions).queryList();
-            for (int index = 0; index < ebayProductListings.size(); index++) {
-                Map<String, Object> inMap = new HashMap<String, Object>();
-                AddItemCall addItemCall = new AddItemCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
-                GenericValue ebayProductListing = ebayProductListings.get(index);
-                ItemType item = EbayStoreHelper.prepareAddItem(delegator, ebayProductListing);
-                addItemCall.setItem(item);
-                itemObject.put("addItemCall", addItemCall);
-                itemObject.put("productListingId", ebayProductListing.getString("productListingId"));
-                inMap.put("itemObject", itemObject);
-                inMap.put("userLogin", userLogin);
-                Map<String, Object>result = dispatcher.runSync("exportProductEachItem", inMap);
-                String success = (String) result.get("responseMessage");
-                if ("success".equals(success)) {
-                    String duration = item.getListingDuration();
-                    if (duration.length() > 4) {
-                        Timestamp startDateTime = UtilDateTime.nowTimestamp();
-                        int durationInt = Integer.parseInt(duration.replace("DAYS_", ""));
-                        Timestamp endDateTime = UtilDateTime.addDaysToTimestamp(startDateTime, durationInt);
-                        ebayProductListing.set("startDateTime", startDateTime);
-                        ebayProductListing.set("endDateTime", endDateTime);
-                        ebayProductListing.store();
-                    }
-                }
-            }
-        } catch (Exception e) {
-            return ServiceUtil.returnError(e.getMessage());
-        }
-        return ServiceUtil.returnSuccess();
-    }
-    public static Map<String, Object> autoBestOffer(DispatchContext dctx, Map<String, ? extends Object> context) {
-        Delegator delegator = dctx.getDelegator();
-        Locale locale = (Locale) context.get("locale");
-        try {
-            String productStoreId = (String) context.get("productStoreId");
-            GenericValue ebayProductStorePref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "EBAY_AUTO_BEST_OFFER").queryOne();
-            String parentPrefCondId = ebayProductStorePref.getString("parentPrefCondId");
-            List<GenericValue> ebayProductStorePrefCond = EntityQuery.use(delegator).from("EbayProductStorePrefCond").where("parentPrefCondId", parentPrefCondId).queryList();
-            //Parameters
-            String priceType = ebayProductStorePrefCond.get(0).getString("acceptanceCondition");
-            String acceptBestOfferValue = ebayProductStorePrefCond.get(1).getString("acceptanceCondition");
-            String rejectOffer = ebayProductStorePrefCond.get(2).getString("acceptanceCondition");
-            String ignoreOfferMessage = ebayProductStorePrefCond.get(3).getString("acceptanceCondition");
-            String rejectGreaterEnable = ebayProductStorePrefCond.get(4).getString("acceptanceCondition");
-            String greaterValue = ebayProductStorePrefCond.get(5).getString("acceptanceCondition");
-            String lessValue = ebayProductStorePrefCond.get(6).getString("acceptanceCondition");
-            String rejectGreaterMsg = ebayProductStorePrefCond.get(7).getString("acceptanceCondition");
-            String rejectLessEnable = ebayProductStorePrefCond.get(8).getString("acceptanceCondition");
-            String lessThanValue = ebayProductStorePrefCond.get(9).getString("acceptanceCondition");
-            String rejectLessMsg = ebayProductStorePrefCond.get(10).getString("acceptanceCondition");
-            //case parameter to double type
-            BigDecimal acceptPercentValue = new BigDecimal(acceptBestOfferValue);
-            BigDecimal greaterPercentValue = new BigDecimal(greaterValue);
-            BigDecimal lessThanPercentValue = new BigDecimal(lessValue);
-            BigDecimal rejectPercentValue = new BigDecimal(lessThanValue);
-
-            ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
-            //GetMysbaySellingCall for get total page
-            GetMyeBaySellingCall getTotalPage = new GetMyeBaySellingCall(apiContext);
-            ItemListCustomizationType itemListType = new ItemListCustomizationType();
-            itemListType.setInclude(Boolean.TRUE);
-            itemListType.setSort(ItemSortTypeCodeType.ITEM_ID_DESCENDING);
-            itemListType.setListingType(ListingTypeCodeType.FIXED_PRICE_ITEM);
-            DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[] {
-                DetailLevelCodeType.RETURN_ALL,
-                DetailLevelCodeType.ITEM_RETURN_ATTRIBUTES,
-                DetailLevelCodeType.ITEM_RETURN_DESCRIPTION
-            };
-            getTotalPage.setDetailLevel(detailLevels);
-            getTotalPage.setActiveList(itemListType);
-            getTotalPage.getMyeBaySelling();
-            int totalPage = getTotalPage.getReturnedActiveList().getPaginationResult().getTotalNumberOfPages();
-            for (int t = 1; t <= totalPage; t++) {
-                //GetMyebaySellingCall for get item that is sold on store
-                GetMyeBaySellingCall ebaySelling = new GetMyeBaySellingCall(apiContext);
-                //Set type of item
-                ItemListCustomizationType itemList = new ItemListCustomizationType();
-                itemList.setInclude(Boolean.TRUE);
-                itemListType.setSort(ItemSortTypeCodeType.ITEM_ID_DESCENDING);
-                itemListType.setListingType(ListingTypeCodeType.FIXED_PRICE_ITEM);
-
-                PaginationType page = new PaginationType();
-                page.setPageNumber(t);
-                itemList.setPagination(page);
-                itemList.setListingType(ListingTypeCodeType.FIXED_PRICE_ITEM);
-
-                DetailLevelCodeType[] detailLevel = new DetailLevelCodeType[] {
-                        DetailLevelCodeType.RETURN_ALL,
-                        DetailLevelCodeType.ITEM_RETURN_ATTRIBUTES,
-                        DetailLevelCodeType.ITEM_RETURN_DESCRIPTION,
-                        DetailLevelCodeType.RETURN_HEADERS,
-                        DetailLevelCodeType.RETURN_MESSAGES
-                };
-                ebaySelling.setDetailLevel(detailLevel);
-                ebaySelling.setActiveList(itemList);
-                ebaySelling.getMyeBaySelling();
-                PaginatedItemArrayType itemListCustomizationType = ebaySelling.getReturnedActiveList();
-                ItemArrayType itemArrayType = itemListCustomizationType.getItemArray();
-                int itemArrayTypeSize = itemArrayType.getItemLength();
-
-                //Loop for get item
-                for (int itemCount = 0; itemCount < itemArrayTypeSize; itemCount++) {
-                    ItemType item = itemArrayType.getItem(itemCount);
-                    String itemID = item.getItemID();
-                    Double buyItNowPrice = item.getBuyItNowPrice().getValue();
-                    GetItemCall getItem = new GetItemCall(apiContext);
-                    getItem.setDetailLevel(detailLevel);
-                    getItem.getItem(itemID);
-                    String SKUItem = getItem.getSKU();
-                    ItemType itemBestOffer = getItem.getReturnedItem();
-                    BestOfferDetailsType bestOfferDetailsType = itemBestOffer.getBestOfferDetails();
-                    int inventoryQuantityItem = item.getQuantityAvailable();  //Quantity of the item
-                    int bestOfferCount = itemBestOffer.getBestOfferDetails().getBestOfferCount();
-                    Boolean bestOfferIsEnabled = itemBestOffer.getBestOfferDetails().isBestOfferEnabled();
-                    //Check value of Best offer Detail not null
-                    if ((bestOfferDetailsType != null) && (bestOfferCount > 0) && bestOfferIsEnabled.equals(true)) {
-                        //Get base price from kindOfPrice parameter
-                        Double doBasePrice = null;
-                        if (priceType.equals("BUY_IT_NOW_PRICE")) {
-                            doBasePrice = buyItNowPrice;
-                        } else if (priceType.equals("START_PRICE")) {
-                            doBasePrice = itemBestOffer.getStartPrice().getValue();
-                        } else if (priceType.equals("RESERVE_PRICE")) {
-                            doBasePrice = itemBestOffer.getReservePrice().getValue();
-                        } else if (priceType.equals("RETAIL_PRICE")) {
-                            //ignore
-                        } else if (priceType.equals("SELLER_COST")) {
-                            List<GenericValue> supplierProduct = EntityQuery.use(delegator).from("SupplierProduct").where("productId", SKUItem).orderBy("availableFromDate DESC").queryList();
-                            String lastPrice = supplierProduct.get(0).getString("lastPrice");
-                            doBasePrice = Double.parseDouble(lastPrice);
-                        } else if (priceType.equals("SECOND_CHANCE_PRICE")) {
-                            VerifyAddSecondChanceItemCall verifyAddSecondChanceItemCall = new VerifyAddSecondChanceItemCall(apiContext);
-                            doBasePrice = verifyAddSecondChanceItemCall.getBuyItNowPrice().getValue();
-                        } else if (priceType.equals("STORE_PRICE")) {
-                            //ignore
-                        }
-                        BigDecimal basePrice = new BigDecimal(doBasePrice);
-                        BigDecimal percent = new BigDecimal(100);
-                        //Calculate price with base price and percent from parameter
-                        BigDecimal acceptPrice = (basePrice.multiply(acceptPercentValue)).divide(percent);
-                        BigDecimal greaterPrice = (basePrice.multiply(greaterPercentValue)).divide(percent);
-                        BigDecimal lessThanPrice = (basePrice.multiply(lessThanPercentValue)).divide(percent);
-                        BigDecimal rejectPrice = (basePrice.multiply(rejectPercentValue)).divide(percent);
-
-                        //GetBestOfferCall for get best offer detail
-                        GetBestOffersCall getBestOfferCall = new GetBestOffersCall(apiContext);
-                        getBestOfferCall.setItemID(itemID);
-                        getBestOfferCall.setDetailLevel(detailLevel);
-                        getBestOfferCall.setBestOfferStatus(BestOfferStatusCodeType.ALL);
-                        getBestOfferCall.getBestOffers();
-                        BestOfferType[] bestOffers = getBestOfferCall.getReturnedBestOffers();
-                        List<String> acceptBestOfferIndexId = new LinkedList<String>();
-                        SortedMap<String, Object> acceptBestOfferIDs = new TreeMap<String, Object>();
-                        //Loop for get data best offer from buyer
-                        RespondToBestOfferCall respondToBestOfferCall = new RespondToBestOfferCall(apiContext);
-                        respondToBestOfferCall.setItemID(itemID);
-                        for (int offerCount = 0; offerCount < bestOffers.length; offerCount++) {
-                            BestOfferType bestOfferType = bestOffers[offerCount];
-                            BestOfferStatusCodeType bestOfferStatusCodeType = bestOfferType.getStatus();
-                            //Check status of best offer
-                            if (bestOfferStatusCodeType == BestOfferStatusCodeType.PENDING) {
-                                String bestOfferID = bestOfferType.getBestOfferID();
-                                UserType buyer = bestOfferType.getBuyer();
-                                String buyerUserID = buyer.getUserID();
-                                AmountType price = bestOfferType.getPrice();
-                                String offerPrice = new Double(price.getValue()).toString();
-                                Double doCerrentPrice = Double.parseDouble(offerPrice);
-                                int offerQuantity = bestOfferType.getQuantity();
-                                String[] bestOfferIDs = { bestOfferID };
-                                respondToBestOfferCall.setBestOfferIDs(bestOfferIDs);
-
-                                if (rejectOffer.equals("Y")) {
-                                    if (offerQuantity > inventoryQuantityItem) {
-                                        respondToBestOfferCall.setSellerResponse("Your order is more than inventory item's Buy-It-Now price.");
-                                        respondToBestOfferCall.setBestOfferAction(BestOfferActionCodeType.DECLINE);
-                                        respondToBestOfferCall.respondToBestOffer();
-                                        continue;
-                                    }
-                                }
-
-                                String buyerMessage = bestOfferType.getBuyerMessage();
-                                if (ignoreOfferMessage.equals("Y") && UtilValidate.isNotEmpty(buyerMessage)) {
-                                    GenericValue userOfferCheck = EntityQuery.use(delegator).from("EbayUserBestOffer").where("itemId", itemID, "userId", buyerUserID).queryOne();
-                                    if (UtilValidate.isEmpty(userOfferCheck)) {
-                                        GenericValue ebayUserBestOffer = delegator.makeValue("EbayUserBestOffer");
-                                        ebayUserBestOffer.put("productStoreId", productStoreId);
-                                        ebayUserBestOffer.put("itemId", itemID);
-                                        ebayUserBestOffer.put("userId", buyerUserID);
-                                        ebayUserBestOffer.put("bestOfferId", bestOfferID);
-                                        ebayUserBestOffer.put("contactStatus", "NOT_CONTACT");
-                                        ebayUserBestOffer.create();
-                                    }
-                                    continue;
-                                }
-                                BigDecimal cerrentPrice = new BigDecimal(doCerrentPrice);
-                                if (cerrentPrice.compareTo(acceptPrice) >= 0) {
-                                    acceptBestOfferIndexId.add(bestOfferID);
-                                    String Quantity = String.valueOf(offerQuantity);
-                                    acceptBestOfferIDs.put(bestOfferID, Quantity);
-                                } else if ((cerrentPrice.compareTo(greaterPrice) >= 0) && (cerrentPrice.compareTo(lessThanPrice) <= 0 ) && rejectGreaterEnable.equals("Y")) {
-                                    respondToBestOfferCall.setBestOfferAction(BestOfferActionCodeType.DECLINE);
-                                    respondToBestOfferCall.setSellerResponse(rejectGreaterMsg);
-                                    respondToBestOfferCall.respondToBestOffer();
-                                } else if ((cerrentPrice.compareTo(rejectPrice) <= 0 && rejectLessEnable.equals("Y"))) {
-                                    respondToBestOfferCall.setBestOfferAction(BestOfferActionCodeType.DECLINE);
-                                    respondToBestOfferCall.setSellerResponse(rejectLessMsg);
-                                    respondToBestOfferCall.respondToBestOffer();
-                                } else {

[... 1396 lines stripped ...]