Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java?rev=1695126&r1=1695125&r2=1695126&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java (original) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java Mon Aug 10 16:15:37 2015 @@ -1,736 +1,736 @@ -/* - * 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.io.IOException; -import java.math.BigDecimal; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -import org.ofbiz.base.config.GenericConfigException; -import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.UtilDateTime; -import org.ofbiz.base.util.UtilGenerics; -import org.ofbiz.base.util.UtilMisc; -import org.ofbiz.base.util.UtilProperties; -import org.ofbiz.base.util.UtilValidate; -import org.ofbiz.ebay.EbayHelper; -import org.ofbiz.entity.Delegator; -import org.ofbiz.entity.GenericEntityException; -import org.ofbiz.entity.GenericValue; -import org.ofbiz.entity.serialize.SerializeException; -import org.ofbiz.entity.serialize.XmlSerializer; -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 org.ofbiz.service.calendar.RecurrenceInfo; -import org.ofbiz.service.calendar.RecurrenceInfoException; -import org.ofbiz.service.config.ServiceConfigUtil; - -import com.ebay.sdk.ApiAccount; -import com.ebay.sdk.ApiContext; -import com.ebay.sdk.ApiCredential; -import com.ebay.sdk.ApiLogging; -import com.ebay.sdk.call.AddItemCall; -import com.ebay.sdk.call.AddOrderCall; -import com.ebay.sdk.call.GetOrdersCall; -import com.ebay.soap.eBLBaseComponents.AddItemRequestType; -import com.ebay.soap.eBLBaseComponents.AddItemResponseType; -import com.ebay.soap.eBLBaseComponents.AddOrderRequestType; -import com.ebay.soap.eBLBaseComponents.AddOrderResponseType; -import com.ebay.soap.eBLBaseComponents.AmountType; -import com.ebay.soap.eBLBaseComponents.BuyerPaymentMethodCodeType; -import com.ebay.soap.eBLBaseComponents.CategoryType; -import com.ebay.soap.eBLBaseComponents.CountryCodeType; -import com.ebay.soap.eBLBaseComponents.CurrencyCodeType; -import com.ebay.soap.eBLBaseComponents.GetOrdersRequestType; -import com.ebay.soap.eBLBaseComponents.GetOrdersResponseType; -import com.ebay.soap.eBLBaseComponents.GeteBayDetailsResponseType; -import com.ebay.soap.eBLBaseComponents.ItemType; -import com.ebay.soap.eBLBaseComponents.ListingDesignerType; -import com.ebay.soap.eBLBaseComponents.ListingTypeCodeType; -import com.ebay.soap.eBLBaseComponents.OrderArrayType; -import com.ebay.soap.eBLBaseComponents.OrderIDArrayType; -import com.ebay.soap.eBLBaseComponents.OrderStatusCodeType; -import com.ebay.soap.eBLBaseComponents.OrderType; -import com.ebay.soap.eBLBaseComponents.PictureDetailsType; -import com.ebay.soap.eBLBaseComponents.ReturnPolicyType; -import com.ebay.soap.eBLBaseComponents.ShipmentTrackingDetailsType; -import com.ebay.soap.eBLBaseComponents.ShippingDetailsType; -import com.ebay.soap.eBLBaseComponents.ShippingLocationDetailsType; -import com.ebay.soap.eBLBaseComponents.ShippingServiceOptionsType; -import com.ebay.soap.eBLBaseComponents.ShippingTypeCodeType; -import com.ebay.soap.eBLBaseComponents.SiteCodeType; -import com.ebay.soap.eBLBaseComponents.TradingRoleCodeType; -import com.ebay.soap.eBLBaseComponents.VATDetailsType; -import com.ibm.icu.text.SimpleDateFormat; - -public class EbayStoreHelper { - private static final String module = EbayStoreHelper.class.getName(); - public static final String resource = "EbayStoreUiLabels"; - - public static ApiContext getApiContext(String productStoreId,Locale locale, Delegator delegator) { - Map<String, Object> context = new HashMap<String, Object>(); - context.put("locale", locale); - context.put("productStoreId", productStoreId); - Map<String, Object> config = EbayHelper.buildEbayConfig(context, delegator); - ApiCredential apiCredential = new ApiCredential(); - ApiLogging apiLogging = new ApiLogging(); - apiLogging.setEnableLogging(false); - apiLogging.setLogExceptions(false); - apiLogging.setLogSOAPMessages(false); - - String devID = (String)config.get("devId"); - String appID = (String)config.get("appID"); - String certID = (String)config.get("certID"); - String token = (String)config.get("token"); - String apiServerUrl = (String)config.get("apiServerUrl"); - - if (token != null) { - apiCredential.seteBayToken(token); - } else if (devID != null && appID != null && certID != null) { - ApiAccount apiAccount = new ApiAccount(); - apiAccount.setApplication(appID); - apiAccount.setCertificate(certID); - apiAccount.setDeveloper(devID); - apiCredential.setApiAccount(apiAccount); - } - ApiContext apiContext = new ApiContext(); - apiContext.setApiCredential(apiCredential); - apiContext.setApiServerUrl(apiServerUrl); - apiContext.setApiLogging(apiLogging); - apiContext.setErrorLanguage("en_US"); - return apiContext; - } - - public static SiteCodeType getSiteCodeType(String productStoreId, Locale locale, Delegator delegator) { - Map<String, Object> context = new HashMap<String, Object>(); - context.put("locale", locale); - context.put("productStoreId", productStoreId); - Map<String, Object> config = EbayHelper.buildEbayConfig(context, delegator); - String siteId = (String)config.get("siteID"); - if (siteId != null) { - if (siteId.equals("0")) return SiteCodeType.US; - if (siteId.equals("2")) return SiteCodeType.CANADA; - if (siteId.equals("3")) return SiteCodeType.UK; - if (siteId.equals("15")) return SiteCodeType.AUSTRALIA; - if (siteId.equals("16")) return SiteCodeType.AUSTRIA; - if (siteId.equals("23")) return SiteCodeType.BELGIUM_FRENCH; - if (siteId.equals("71")) return SiteCodeType.FRANCE; - if (siteId.equals("77")) return SiteCodeType.GERMANY; - if (siteId.equals("100")) return SiteCodeType.E_BAY_MOTORS; - if (siteId.equals("101")) return SiteCodeType.ITALY; - if (siteId.equals("123")) return SiteCodeType.BELGIUM_DUTCH; - if (siteId.equals("146")) return SiteCodeType.NETHERLANDS; - if (siteId.equals("189")) return SiteCodeType.SPAIN; - if (siteId.equals("193")) return SiteCodeType.SWITZERLAND; - if (siteId.equals("196")) return SiteCodeType.TAIWAN; - if (siteId.equals("201")) return SiteCodeType.HONG_KONG; - if (siteId.equals("203")) return SiteCodeType.INDIA; - if (siteId.equals("205")) return SiteCodeType.IRELAND; - if (siteId.equals("207")) return SiteCodeType.MALAYSIA; - if (siteId.equals("210")) return SiteCodeType.CANADA_FRENCH; - if (siteId.equals("211")) return SiteCodeType.PHILIPPINES; - if (siteId.equals("212")) return SiteCodeType.POLAND; - if (siteId.equals("216")) return SiteCodeType.SINGAPORE; - if (siteId.equals("218")) return SiteCodeType.SWEDEN; - if (siteId.equals("223")) return SiteCodeType.CHINA; - } - return SiteCodeType.US; - } - - public static boolean validatePartyAndRoleType(Delegator delegator, String partyId) { - GenericValue partyRole = null; - try { - if (partyId == null) { - Debug.logError("Require field partyId.",module); - return false; - } - partyRole = EntityQuery.use(delegator).from("PartyRole").where("partyId", partyId, "roleTypeId", "EBAY_ACCOUNT").queryOne(); - if (partyRole == null) { - Debug.logError("Party Id ".concat(partyId).concat("not have roleTypeId EBAY_ACCOUNT"),module); - return false; - } - } catch (GenericEntityException e) { - Debug.logError(e.getMessage(), module); - return false; - } - return true; - } - - public static String retriveEbayCategoryIdByPartyId(Delegator delegator, String productCategoryId, String partyId) { - String ebayCategoryId = null; - List<GenericValue> productCategoryRoles = null; - try { - if (partyId == null) { - Debug.logError("Require field partyId.",module); - return ebayCategoryId; - } - productCategoryRoles = EntityQuery.use(delegator).from("ProductCategoryRole").where("productCategoryId", productCategoryId, "partyId", partyId, "roleTypeId", "EBAY_ACCOUNT").queryList(); - if (productCategoryRoles != null && productCategoryRoles.size()>0) { - for (GenericValue productCategoryRole : productCategoryRoles) { - ebayCategoryId = productCategoryRole.getString("comments"); - } - } else { - Debug.logInfo("Party Id ".concat(partyId).concat(" Not found productCategoryRole with productCategoryId "+ productCategoryId),module); - return ebayCategoryId; - } - } catch (GenericEntityException e) { - Debug.logError(e.getMessage(), module); - } - return ebayCategoryId; - } - - public static boolean createEbayCategoryIdByPartyId(Delegator delegator, String productCategoryId, String partyId, String ebayCategoryId) { - try { - if (partyId == null && ebayCategoryId != null) { - Debug.logError("Require field partyId and ebayCategoryId.",module); - return false; - } - GenericValue productCategoryRole = delegator.makeValue("ProductCategoryRole"); - productCategoryRole.put("productCategoryId",productCategoryId); - productCategoryRole.put("partyId", partyId); - productCategoryRole.put("roleTypeId","EBAY_ACCOUNT"); - productCategoryRole.put("fromDate",UtilDateTime.nowTimestamp()); - productCategoryRole.put("comments",ebayCategoryId); - productCategoryRole.create(); - } catch (GenericEntityException e) { - Debug.logError(e.getMessage(), module); - return false; - } - return true; - } - - public static boolean veriflyCategoryInCatalog(Delegator delegator, List<GenericValue> catalogCategories, String productCategoryId) { - boolean flag = false; - try { - for (GenericValue catalogCategory : catalogCategories) { - // check in productCatalogCategory first level 0 - if (catalogCategory.containsValue(productCategoryId)) { - flag = true; - break; - } else { - // check from child category level 1 - List<GenericValue> productCategoryRollupList = EntityQuery.use(delegator).from("ProductCategoryRollup").where("parentProductCategoryId",catalogCategory.getString("productCategoryId")).queryList(); - for (GenericValue productCategoryRollup : productCategoryRollupList) { - if (productCategoryRollup.containsValue(productCategoryId)) { - flag = true; - break; - } else { - // check from level 2 - List<GenericValue> prodCategoryRollupList = EntityQuery.use(delegator).from("ProductCategoryRollup").where("parentProductCategoryId",productCategoryRollup.getString("productCategoryId")).queryList(); - for (GenericValue prodCategoryRollup : prodCategoryRollupList) { - if (prodCategoryRollup.containsValue(productCategoryId)) { - flag = true; - break; - } - } - } - } - } - } - } catch (GenericEntityException e) { - Debug.logError(e.getMessage(), module); - return false; - } - return flag; - } - - public static Map<String, Object> startEbayAutoPreference(DispatchContext dctx, Map<String, ? extends Object> context) { - Map<String, Object>result = new HashMap<String, Object>(); - LocalDispatcher dispatcher = dctx.getDispatcher(); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Delegator delegator = dctx.getDelegator(); - Locale locale = (Locale) context.get("locale"); - String productStoreId = (String) context.get("productStoreId"); - String autoPrefEnumId = (String) context.get("autoPrefEnumId"); - String serviceName = (String) context.get("serviceName"); - try { - GenericValue ebayProductPref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", autoPrefEnumId).queryOne(); - String jobId = ebayProductPref.getString("autoPrefJobId"); - if (UtilValidate.isNotEmpty(jobId)) { - List<GenericValue> jobs = EntityQuery.use(delegator).from("JobSandbox").where("parentJobId", jobId, "statusId", "SERVICE_PENDING").queryList(); - if (jobs.size() == 0) { - Map<String, Object>inMap = new HashMap<String, Object>(); - inMap.put("jobId", jobId); - inMap.put("userLogin", userLogin); - dispatcher.runSync("resetScheduledJob", inMap); - } - } - if (UtilValidate.isEmpty(ebayProductPref.getString("autoPrefJobId"))) { - if (UtilValidate.isEmpty(serviceName)) { - return ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreAutoPrefJobEmpty", locale)); - } - /*** RuntimeData ***/ - String runtimeDataId = null; - GenericValue runtimeData = delegator.makeValue("RuntimeData"); - runtimeData = delegator.createSetNextSeqId(runtimeData); - runtimeDataId = runtimeData.getString("runtimeDataId"); - - /*** JobSandbox ***/ - // create the recurrence - String infoId = null; - String jobName = null; - long startTime = UtilDateTime.getNextDayStart(UtilDateTime.nowTimestamp()).getTime(); - RecurrenceInfo info; - // run every day when day start - info = RecurrenceInfo.makeInfo(delegator, startTime, 4, 1, -1); - infoId = info.primaryKey(); - // set the persisted fields - GenericValue enumeration = EntityQuery.use(delegator).from("Enumeration").where("enumId", autoPrefEnumId).queryOne(); - jobName = enumeration.getString("description"); - if (jobName == null) { - jobName = Long.toString((new Date().getTime())); - } - Map<String, Object> jFields = UtilMisc.<String, Object>toMap("jobName", jobName, "runTime", UtilDateTime.nowTimestamp(), - "serviceName", serviceName, "statusId", "SERVICE_PENDING", "recurrenceInfoId", infoId, "runtimeDataId", runtimeDataId); - - // set the pool ID - jFields.put("poolId", ServiceConfigUtil.getServiceEngine().getThreadPool().getSendToPool()); - - // set the loader name - jFields.put("loaderName", delegator.getDelegatorName()); - // create the value and store - GenericValue jobV; - jobV = delegator.makeValue("JobSandbox", jFields); - GenericValue jobSandbox = delegator.createSetNextSeqId(jobV); - - ebayProductPref.set("autoPrefJobId", jobSandbox.getString("jobId")); - ebayProductPref.store(); - - Map<String, Object>infoData = new HashMap<String, Object>(); - infoData.put("jobId", jobSandbox.getString("jobId")); - infoData.put("productStoreId", ebayProductPref.getString("productStoreId")); - runtimeData.set("runtimeInfo", XmlSerializer.serialize(infoData)); - runtimeData.store(); - } - } catch (GenericEntityException e) { - return ServiceUtil.returnError(e.getMessage()); - } catch (GenericServiceException e) { - return ServiceUtil.returnError(e.getMessage()); - } catch (SerializeException e) { - return ServiceUtil.returnError(e.getMessage()); - } catch (IOException e) { - return ServiceUtil.returnError(e.getMessage()); - }catch (RecurrenceInfoException e) { - return ServiceUtil.returnError(e.getMessage()); - } catch (GenericConfigException e) { - return ServiceUtil.returnError(e.getMessage()); - } - return result; - } - - public static Map<String, Object> stopEbayAutoPreference(DispatchContext dctx, Map<String, ? extends Object> context) { - Map<String, Object>result = new HashMap<String, Object>(); - LocalDispatcher dispatcher = dctx.getDispatcher(); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Delegator delegator = dctx.getDelegator(); - String productStoreId = (String) context.get("productStoreId"); - String autoPrefEnumId = (String) context.get("autoPrefEnumId"); - try { - GenericValue ebayProductPref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", autoPrefEnumId).queryOne(); - String jobId = ebayProductPref.getString("autoPrefJobId"); - List<GenericValue> jobs = EntityQuery.use(delegator).from("JobSandbox").where("parentJobId", jobId ,"statusId", "SERVICE_PENDING").queryList(); - - Map<String, Object>inMap = new HashMap<String, Object>(); - inMap.put("userLogin", userLogin); - for (int index = 0; index < jobs.size(); index++) { - inMap.put("jobId", jobs.get(index).getString("jobId")); - dispatcher.runSync("cancelScheduledJob", inMap); - } - } catch (GenericEntityException e) { - return ServiceUtil.returnError(e.getMessage()); - } catch (GenericServiceException e) { - return ServiceUtil.returnError(e.getMessage()); - } - return result; - } - - public static void mappedPaymentMethods(Map<String,Object> requestParams, String itemPkCateId, Map<String,Object> addItemObject, ItemType item, HashMap<String, Object> attributeMapList) { - String refName = "itemCateFacade_"+itemPkCateId; - if (UtilValidate.isNotEmpty(addItemObject) && UtilValidate.isNotEmpty(requestParams)) { - EbayStoreCategoryFacade cf = (EbayStoreCategoryFacade) addItemObject.get(refName); - BuyerPaymentMethodCodeType[] paymentMethods = cf.getPaymentMethods(); - if (UtilValidate.isNotEmpty(paymentMethods)) { - BuyerPaymentMethodCodeType[] tempPayments = new BuyerPaymentMethodCodeType[paymentMethods.length]; - int i = 0; - for (BuyerPaymentMethodCodeType paymentMethod : paymentMethods) { - String pmName = paymentMethod.value(); - String payPara = (String) requestParams.get("Payments_".concat(pmName)); - if ("true".equals(payPara)) { - tempPayments[i] = paymentMethod; - attributeMapList.put(""+pmName, pmName); - if ("PayPal".equals(pmName)) { - if (UtilValidate.isNotEmpty(requestParams.get("paymentMethodPaypalEmail"))) { - item.setPayPalEmailAddress(requestParams.get("paymentMethodPaypalEmail").toString()); - attributeMapList.put("PaypalEmail", requestParams.get("paymentMethodPaypalEmail").toString()); - } - } - i++; - } - } - item.setPaymentMethods(tempPayments); - } - } - } - - public static void mappedShippingLocations(Map<String, Object> requestParams, ItemType item, ApiContext apiContext, HttpServletRequest request, HashMap<String, Object> attributeMapList) { - try { - if (UtilValidate.isNotEmpty(requestParams)) { - EbayStoreSiteFacade sf = EbayEvents.getSiteFacade(apiContext, request); - Map<SiteCodeType, GeteBayDetailsResponseType> eBayDetailsMap = sf.getEBayDetailsMap(); - GeteBayDetailsResponseType eBayDetails = eBayDetailsMap.get(apiContext.getSite()); - ShippingLocationDetailsType[] shippingLocationDetails = eBayDetails.getShippingLocationDetails(); - if (UtilValidate.isNotEmpty(shippingLocationDetails)) { - int i = 0; - String[] tempShipLocation = new String[shippingLocationDetails.length]; - for (ShippingLocationDetailsType shippingLocationDetail : shippingLocationDetails) { - String shippingLocation = shippingLocationDetail.getShippingLocation(); - String shipParam = (String)requestParams.get("Shipping_".concat(shippingLocation)); - if ("true".equals(shipParam)) { - tempShipLocation[i] = shippingLocation; - attributeMapList.put(""+shippingLocation, shippingLocation); - i++; - } - } - item.setShipToLocations(tempShipLocation); - } - } - } catch(Exception e) { - Debug.logError(e.getMessage(), module); - } - } - - public static Map<String, Object> exportProductEachItem(DispatchContext dctx, Map<String, Object> context) { - Map<String,Object> result = new HashMap<String, Object>(); - LocalDispatcher dispatcher = dctx.getDispatcher(); - Delegator delegator = dctx.getDelegator(); - Map<String, Object> itemObject = UtilGenerics.checkMap(context.get("itemObject")); - String productListingId = itemObject.get("productListingId").toString(); - AddItemCall addItemCall = (AddItemCall) itemObject.get("addItemCall"); - AddItemRequestType req = new AddItemRequestType(); - AddItemResponseType resp = null; - try { - GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne(); - ItemType item = addItemCall.getItem(); - req.setItem(item); - resp = (AddItemResponseType) addItemCall.execute(req); - if (resp != null && "SUCCESS".equals(resp.getAck().toString()) || "WARNING".equals(resp.getAck().toString())) { - String itemId = resp.getItemID(); - String listingXml = addItemCall.getRequestXml().toString(); - Map<String, Object> updateItemMap = new HashMap<String, Object>(); - updateItemMap.put("productListingId", productListingId); - updateItemMap.put("itemId", itemId); - updateItemMap.put("listingXml", listingXml); - updateItemMap.put("statusId", "ITEM_APPROVED"); - updateItemMap.put("userLogin", userLogin); - try { - dispatcher.runSync("updateEbayProductListing", updateItemMap); - } catch (GenericServiceException ex) { - Debug.logError(ex.getMessage(), module); - return ServiceUtil.returnError(ex.getMessage()); - } - } - result = ServiceUtil.returnSuccess(); - } catch (Exception e) { - return ServiceUtil.returnError(e.getMessage()); - } - return result; - } - - public static Map<String, Object> setEbayProductListingAttribute(DispatchContext dctx, Map<String, Object> context) { - Delegator delegator = dctx.getDelegator(); - HashMap<String, Object> attributeMapList = UtilGenerics.cast(context.get("attributeMapList")); - String productListingId = (String) context.get("productListingId"); - try { - List<GenericValue> attributeToClears = EntityQuery.use(delegator).from("EbayProductListingAttribute").where("productListingId", productListingId).queryList(); - for (int clearCount = 0; clearCount < attributeToClears.size(); clearCount++) { - GenericValue valueToClear = attributeToClears.get(clearCount); - if (valueToClear != null) { - valueToClear.remove(); - } - } - for (Map.Entry<String,Object> entry : attributeMapList.entrySet()) { - if (UtilValidate.isNotEmpty(entry.getKey())) { - GenericValue ebayProductListingAttribute = delegator.makeValue("EbayProductListingAttribute"); - ebayProductListingAttribute.set("productListingId", productListingId); - ebayProductListingAttribute.set("attrName", entry.getKey().toString()); - ebayProductListingAttribute.set("attrValue", entry.getValue().toString()); - ebayProductListingAttribute.create(); - } - } - } catch (GenericEntityException e) { - return ServiceUtil.returnError(e.getMessage()); - } - return ServiceUtil.returnSuccess(); - } - - public static ItemType prepareAddItem(Delegator delegator, GenericValue attribute) { - ItemType item = new ItemType(); - try { - List<GenericValue> attrs = EntityQuery.use(delegator).from("EbayProductListingAttribute").where("productListingId", attribute.getString("productListingId")).queryList(); - AmountType amount = new AmountType(); - AmountType shippingServiceCost = new AmountType(); - PictureDetailsType picture = new PictureDetailsType(); - CategoryType category = new CategoryType(); - ListingDesignerType designer = new ListingDesignerType(); - ShippingDetailsType shippingDetail = new ShippingDetailsType(); - ShippingServiceOptionsType shippingOption = new ShippingServiceOptionsType(); - for (int index = 0; index < attrs.size(); index++) { - if ("Title".equals(attrs.get(index).getString("attrName"))) { - item.setTitle(attrs.get(index).getString("attrValue")); - } else if ("SKU".equals(attrs.get(index).getString("attrName"))) { - item.setSKU(attrs.get(index).getString("attrValue")); - } else if ("Currency".equals(attrs.get(index).getString("attrName"))) { - amount.setCurrencyID(CurrencyCodeType.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("Description".equals(attrs.get(index).getString("attrName"))) { - item.setDescription(attrs.get(index).getString("attrValue")); - } else if ("ApplicationData".equals(attrs.get(index).getString("attrName"))) { - item.setApplicationData(attrs.get(index).getString("attrValue")); - } else if ("Country".equals(attrs.get(index).getString("attrName"))) { - item.setCountry(CountryCodeType.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("PictureURL".equals(attrs.get(index).getString("attrName"))) { - String[] pictureUrl = {attrs.get(index).getString("attrValue")}; - picture.setPictureURL(pictureUrl); - } else if ("Site".equals(attrs.get(index).getString("attrName"))) { - item.setSite(SiteCodeType.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("UseTaxTable".equals(attrs.get(index).getString("attrName"))) { - item.setUseTaxTable(Boolean.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("BestOfferEnabled".equals(attrs.get(index).getString("attrName"))) { - item.setBestOfferEnabled(Boolean.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("AutoPayEnabled".equals(attrs.get(index).getString("attrName"))) { - item.setAutoPay(Boolean.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("CategoryID".equals(attrs.get(index).getString("attrName"))) { - category.setCategoryID(attrs.get(index).getString("attrValue")); - } else if ("CategoryLevel".equals(attrs.get(index).getString("attrName"))) { - category.setCategoryLevel(Integer.parseInt(attrs.get(index).getString("attrValue"))); - } else if ("CategoryName".equals(attrs.get(index).getString("attrName"))) { - category.setCategoryName(attrs.get(index).getString("attrValue")); - } else if ("CategoryParentID".equals(attrs.get(index).getString("attrName"))) { - String[] parent = {attrs.get(index).getString("attrValue")}; - category.setCategoryParentID(parent ); - } else if ("LeafCategory".equals(attrs.get(index).getString("attrName"))) { - category.setLeafCategory(Boolean.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("LSD".equals(attrs.get(index).getString("attrName"))) { - category.setLSD(Boolean.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("ReturnsAcceptedOption".equals(attrs.get(index).getString("attrName"))) { - ReturnPolicyType policy = new ReturnPolicyType(); - policy.setReturnsAcceptedOption(attrs.get(index).getString("attrValue")); - item.setReturnPolicy(policy); - } else if ("LayoutID".equals(attrs.get(index).getString("attrName"))) { - designer.setLayoutID(Integer.parseInt(attrs.get(index).getString("attrValue"))); - } else if ("ThemeID".equals(attrs.get(index).getString("attrName"))) { - designer.setThemeID(Integer.parseInt(attrs.get(index).getString("attrValue"))); - } else if ("BuyItNowPrice".equals(attrs.get(index).getString("attrName"))) { - amount = new AmountType(); - amount.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); - item.setBuyItNowPrice(amount); - } else if ("ReservePrice".equals(attrs.get(index).getString("attrName"))) { - amount = new AmountType(); - amount.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); - item.setReservePrice(amount); - } else if ("ListingType".equals(attrs.get(index).getString("attrName"))) { - item.setListingType(ListingTypeCodeType.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("StartPrice".equals(attrs.get(index).getString("attrName"))) { - amount = new AmountType(); - amount.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); - item.setStartPrice(amount); - } else if ("ShippingService".equals(attrs.get(index).getString("attrName"))) { - shippingOption.setShippingService(attrs.get(index).getString("attrValue")); - } else if ("ShippingServiceCost".equals(attrs.get(index).getString("attrName"))) { - shippingServiceCost.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); - shippingOption.setShippingServiceCost(shippingServiceCost); - } else if ("ShippingServiceCostCurrency".equals(attrs.get(index).getString("attrName"))) { - shippingServiceCost.setCurrencyID(CurrencyCodeType.valueOf(attrs.get(index).getString("attrValue"))); - shippingOption.setShippingServiceCost(shippingServiceCost); - } else if ("ShippingServicePriority".equals(attrs.get(index).getString("attrName"))) { - shippingOption.setShippingServicePriority(Integer.parseInt(attrs.get(index).getString("attrValue"))); - } else if ("ShippingType".equals(attrs.get(index).getString("attrName"))) { - shippingDetail.setShippingType(ShippingTypeCodeType.valueOf(attrs.get(index).getString("attrValue"))); - } else if ("VATPercent".equals(attrs.get(index).getString("attrName"))) { - VATDetailsType vat = new VATDetailsType(); - vat.setVATPercent(new Float(attrs.get(index).getString("attrValue"))); - item.setVATDetails(vat); - } else if ("Location".equals(attrs.get(index).getString("attrName"))) { - item.setLocation(attrs.get(index).getString("attrValue")); - } else if ("Quantity".equals(attrs.get(index).getString("attrName"))) { - item.setQuantity(Integer.parseInt(attrs.get(index).getString("attrValue"))); - } else if ("ListingDuration".equals(attrs.get(index).getString("attrName"))) { - item.setListingDuration(attrs.get(index).getString("attrValue")); - } else if ("LotSize".equals(attrs.get(index).getString("attrName"))) { - item.setLotSize(Integer.parseInt(attrs.get(index).getString("attrValue"))); - } else if ("PostalCode".equals(attrs.get(index).getString("attrName"))) { - item.setPostalCode(attrs.get(index).getString("attrValue")); - } else if ("Title".equals(attrs.get(index).getString("attrName"))) { - item.setTitle(attrs.get(index).getString("attrValue")); - } - if (category != null) { - item.setPrimaryCategory(category); - } - if (shippingOption != null) { - ShippingServiceOptionsType[] options = {shippingOption}; - shippingDetail.setShippingServiceOptions(options); - } - if (shippingDetail != null) { - item.setShippingDetails(shippingDetail); - } - } - } catch (GenericEntityException e) { - Debug.logError(e.getMessage(), module); - return null; - } - return item; - } - - public static Map<String, Object> uploadTrackingInfoBackToEbay(DispatchContext dctx, Map<String, Object> context) { - Delegator delegator = dctx.getDelegator(); - Locale locale = (Locale) context.get("locale"); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - String productStoreId = (String) context.get("productStoreId"); - String orderId = (String) context.get("orderId"); - GetOrdersRequestType req = new GetOrdersRequestType(); - GetOrdersResponseType resp = null; - try { - GenericValue orderHeader = EntityQuery.use(delegator).from("OrderHeader").where("orderId", orderId).queryOne(); - if (UtilValidate.isNotEmpty(orderHeader)) { - String externalId = orderHeader.getString("externalId").toString(); - List<GenericValue> orderShipment = orderHeader.getRelated("OrderShipment", null, null, false); - if (orderShipment.size() > 0) { - List<GenericValue> trackingOrders = orderHeader.getRelated("TrackingCodeOrder", null, null, false); - ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator); - GetOrdersCall ordersCall = new GetOrdersCall(apiContext); - OrderIDArrayType orderIdArr = new OrderIDArrayType(); - String[] orderIdStr = {""+externalId}; - orderIdArr.setOrderID(orderIdStr); - req.setOrderIDArray(orderIdArr); - Calendar orderFrom = Calendar.getInstance(); - orderFrom.setTime(UtilDateTime.toDate("01/01/2001 00:00:00")); - req.setCreateTimeFrom(orderFrom); - Calendar orderTo = Calendar.getInstance(); - orderTo.setTime(UtilDateTime.nowDate()); - req.setCreateTimeTo(orderTo); - req.setOrderStatus(OrderStatusCodeType.SHIPPED); - req.setOrderRole(TradingRoleCodeType.SELLER); - resp = (GetOrdersResponseType) ordersCall.execute(req); - if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { - OrderArrayType orderArr = resp.getOrderArray(); - OrderType[] orderTypeList = orderArr.getOrder(); - for (OrderType order : orderTypeList) { - String orderID = order.getOrderID(); - if (orderID.equals(externalId)) { - AddOrderCall addOrderCall = new AddOrderCall(apiContext); - AddOrderRequestType addReq = new AddOrderRequestType(); - AddOrderResponseType addResp = null; - OrderType newOrder = new OrderType(); - ShippingDetailsType shippingDetail = order.getShippingDetails(); - if (trackingOrders.size() > 0) { - ShipmentTrackingDetailsType[] trackDetails = new ShipmentTrackingDetailsType[trackingOrders.size()]; - for (int i = 0; i < trackDetails.length; i++) { - ShipmentTrackingDetailsType track = new ShipmentTrackingDetailsType(); - track.setShipmentTrackingNumber(trackingOrders.get(i).get("trackingCodeId").toString()); - trackDetails[i] = track; - } - shippingDetail.setShipmentTrackingDetails(trackDetails); - newOrder.setShippingDetails(shippingDetail); - } - newOrder.setOrderID(order.getOrderID()); - newOrder.setOrderStatus(order.getOrderStatus()); - newOrder.setAdjustmentAmount(order.getAdjustmentAmount()); - newOrder.setAmountSaved(order.getAmountSaved()); - newOrder.setCheckoutStatus(order.getCheckoutStatus()); - newOrder.setShippingDetails(order.getShippingDetails()); - newOrder.setCreatingUserRole(order.getCreatingUserRole()); - newOrder.setCreatedTime(order.getCreatedTime()); - newOrder.setPaymentMethods(order.getPaymentMethods()); - newOrder.setShippingAddress(order.getShippingAddress()); - newOrder.setSubtotal(order.getSubtotal()); - newOrder.setTotal(order.getTotal()); - newOrder.setTransactionArray(order.getTransactionArray()); - newOrder.setBuyerUserID(order.getBuyerUserID()); - newOrder.setPaidTime(order.getPaidTime()); - newOrder.setShippedTime(order.getShippedTime()); - newOrder.setIntegratedMerchantCreditCardEnabled(order.isIntegratedMerchantCreditCardEnabled()); - addReq.setOrder(newOrder); - addResp = (AddOrderResponseType) addOrderCall.execute(addReq); - if (addResp != null && "SUCCESS".equals(addResp.getAck().toString())) { - Debug.logInfo("Upload tracking code to eBay success...", module); - } else { - createErrorLogMessage(userLogin, dctx.getDispatcher(), productStoreId, addResp.getAck().toString(), "Update order : uploadTrackingInfoBackToEbay", addResp.getErrors(0).getLongMessage()); - } - } - } - } else { - createErrorLogMessage(userLogin, dctx.getDispatcher(), productStoreId, resp.getAck().toString(), "Get order : uploadTrackingInfoBackToEbay", resp.getErrors(0).getLongMessage()); - } - } - } - } catch (Exception e) { - return ServiceUtil.returnError(e.getMessage()); - } - return ServiceUtil.returnSuccess(); - } - - public static void createErrorLogMessage(GenericValue userLogin, LocalDispatcher dispatcher, String productStoreId, String ack, String fuction, String errorMessage) { - if (!"".equals(productStoreId) && (!"".equals(errorMessage))) { - try { - Map<String, Object> newMap = new HashMap<String, Object>(); - newMap.put("productStoreId", productStoreId); - newMap.put("logAck", ack.toLowerCase()); - newMap.put("functionName", fuction); - newMap.put("logMessage", errorMessage); - newMap.put("createDatetime", UtilDateTime.nowTimestamp()); - newMap.put("userLogin", userLogin); - dispatcher.runSync("insertErrorMessagesFromEbay", newMap); - } catch (Exception ex) { - Debug.logError("Error from create error log messages : "+ex.getMessage(), module); - } - } - } - - public static boolean isReserveInventory(Delegator delegator, String productId, String productStoreId) { - boolean isReserve = false; - try { - GenericValue ebayProductStore = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productStoreId", productStoreId, "productId", productId).filterByDate().queryFirst(); - if (UtilValidate.isNotEmpty(ebayProductStore)) { - BigDecimal atp = ebayProductStore.getBigDecimal("availableToPromiseListing"); - int intAtp = atp.intValue(); - if (intAtp > 0) { - isReserve = true; - } - } - } catch (Exception ex) { - Debug.logError("Error from get eBay Inventory data : "+ ex.getMessage(), module); - } - return isReserve; - } - - public static String convertDate(Date date, Locale locale) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",locale); - return simpleDateFormat.format(date); - } -} +/* + * 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.io.IOException; +import java.math.BigDecimal; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.ofbiz.base.config.GenericConfigException; +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilDateTime; +import org.ofbiz.base.util.UtilGenerics; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.base.util.UtilProperties; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.ebay.EbayHelper; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.serialize.SerializeException; +import org.ofbiz.entity.serialize.XmlSerializer; +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 org.ofbiz.service.calendar.RecurrenceInfo; +import org.ofbiz.service.calendar.RecurrenceInfoException; +import org.ofbiz.service.config.ServiceConfigUtil; + +import com.ebay.sdk.ApiAccount; +import com.ebay.sdk.ApiContext; +import com.ebay.sdk.ApiCredential; +import com.ebay.sdk.ApiLogging; +import com.ebay.sdk.call.AddItemCall; +import com.ebay.sdk.call.AddOrderCall; +import com.ebay.sdk.call.GetOrdersCall; +import com.ebay.soap.eBLBaseComponents.AddItemRequestType; +import com.ebay.soap.eBLBaseComponents.AddItemResponseType; +import com.ebay.soap.eBLBaseComponents.AddOrderRequestType; +import com.ebay.soap.eBLBaseComponents.AddOrderResponseType; +import com.ebay.soap.eBLBaseComponents.AmountType; +import com.ebay.soap.eBLBaseComponents.BuyerPaymentMethodCodeType; +import com.ebay.soap.eBLBaseComponents.CategoryType; +import com.ebay.soap.eBLBaseComponents.CountryCodeType; +import com.ebay.soap.eBLBaseComponents.CurrencyCodeType; +import com.ebay.soap.eBLBaseComponents.GetOrdersRequestType; +import com.ebay.soap.eBLBaseComponents.GetOrdersResponseType; +import com.ebay.soap.eBLBaseComponents.GeteBayDetailsResponseType; +import com.ebay.soap.eBLBaseComponents.ItemType; +import com.ebay.soap.eBLBaseComponents.ListingDesignerType; +import com.ebay.soap.eBLBaseComponents.ListingTypeCodeType; +import com.ebay.soap.eBLBaseComponents.OrderArrayType; +import com.ebay.soap.eBLBaseComponents.OrderIDArrayType; +import com.ebay.soap.eBLBaseComponents.OrderStatusCodeType; +import com.ebay.soap.eBLBaseComponents.OrderType; +import com.ebay.soap.eBLBaseComponents.PictureDetailsType; +import com.ebay.soap.eBLBaseComponents.ReturnPolicyType; +import com.ebay.soap.eBLBaseComponents.ShipmentTrackingDetailsType; +import com.ebay.soap.eBLBaseComponents.ShippingDetailsType; +import com.ebay.soap.eBLBaseComponents.ShippingLocationDetailsType; +import com.ebay.soap.eBLBaseComponents.ShippingServiceOptionsType; +import com.ebay.soap.eBLBaseComponents.ShippingTypeCodeType; +import com.ebay.soap.eBLBaseComponents.SiteCodeType; +import com.ebay.soap.eBLBaseComponents.TradingRoleCodeType; +import com.ebay.soap.eBLBaseComponents.VATDetailsType; +import com.ibm.icu.text.SimpleDateFormat; + +public class EbayStoreHelper { + private static final String module = EbayStoreHelper.class.getName(); + public static final String resource = "EbayStoreUiLabels"; + + public static ApiContext getApiContext(String productStoreId,Locale locale, Delegator delegator) { + Map<String, Object> context = new HashMap<String, Object>(); + context.put("locale", locale); + context.put("productStoreId", productStoreId); + Map<String, Object> config = EbayHelper.buildEbayConfig(context, delegator); + ApiCredential apiCredential = new ApiCredential(); + ApiLogging apiLogging = new ApiLogging(); + apiLogging.setEnableLogging(false); + apiLogging.setLogExceptions(false); + apiLogging.setLogSOAPMessages(false); + + String devID = (String)config.get("devId"); + String appID = (String)config.get("appID"); + String certID = (String)config.get("certID"); + String token = (String)config.get("token"); + String apiServerUrl = (String)config.get("apiServerUrl"); + + if (token != null) { + apiCredential.seteBayToken(token); + } else if (devID != null && appID != null && certID != null) { + ApiAccount apiAccount = new ApiAccount(); + apiAccount.setApplication(appID); + apiAccount.setCertificate(certID); + apiAccount.setDeveloper(devID); + apiCredential.setApiAccount(apiAccount); + } + ApiContext apiContext = new ApiContext(); + apiContext.setApiCredential(apiCredential); + apiContext.setApiServerUrl(apiServerUrl); + apiContext.setApiLogging(apiLogging); + apiContext.setErrorLanguage("en_US"); + return apiContext; + } + + public static SiteCodeType getSiteCodeType(String productStoreId, Locale locale, Delegator delegator) { + Map<String, Object> context = new HashMap<String, Object>(); + context.put("locale", locale); + context.put("productStoreId", productStoreId); + Map<String, Object> config = EbayHelper.buildEbayConfig(context, delegator); + String siteId = (String)config.get("siteID"); + if (siteId != null) { + if (siteId.equals("0")) return SiteCodeType.US; + if (siteId.equals("2")) return SiteCodeType.CANADA; + if (siteId.equals("3")) return SiteCodeType.UK; + if (siteId.equals("15")) return SiteCodeType.AUSTRALIA; + if (siteId.equals("16")) return SiteCodeType.AUSTRIA; + if (siteId.equals("23")) return SiteCodeType.BELGIUM_FRENCH; + if (siteId.equals("71")) return SiteCodeType.FRANCE; + if (siteId.equals("77")) return SiteCodeType.GERMANY; + if (siteId.equals("100")) return SiteCodeType.E_BAY_MOTORS; + if (siteId.equals("101")) return SiteCodeType.ITALY; + if (siteId.equals("123")) return SiteCodeType.BELGIUM_DUTCH; + if (siteId.equals("146")) return SiteCodeType.NETHERLANDS; + if (siteId.equals("189")) return SiteCodeType.SPAIN; + if (siteId.equals("193")) return SiteCodeType.SWITZERLAND; + if (siteId.equals("196")) return SiteCodeType.TAIWAN; + if (siteId.equals("201")) return SiteCodeType.HONG_KONG; + if (siteId.equals("203")) return SiteCodeType.INDIA; + if (siteId.equals("205")) return SiteCodeType.IRELAND; + if (siteId.equals("207")) return SiteCodeType.MALAYSIA; + if (siteId.equals("210")) return SiteCodeType.CANADA_FRENCH; + if (siteId.equals("211")) return SiteCodeType.PHILIPPINES; + if (siteId.equals("212")) return SiteCodeType.POLAND; + if (siteId.equals("216")) return SiteCodeType.SINGAPORE; + if (siteId.equals("218")) return SiteCodeType.SWEDEN; + if (siteId.equals("223")) return SiteCodeType.CHINA; + } + return SiteCodeType.US; + } + + public static boolean validatePartyAndRoleType(Delegator delegator, String partyId) { + GenericValue partyRole = null; + try { + if (partyId == null) { + Debug.logError("Require field partyId.",module); + return false; + } + partyRole = EntityQuery.use(delegator).from("PartyRole").where("partyId", partyId, "roleTypeId", "EBAY_ACCOUNT").queryOne(); + if (partyRole == null) { + Debug.logError("Party Id ".concat(partyId).concat("not have roleTypeId EBAY_ACCOUNT"),module); + return false; + } + } catch (GenericEntityException e) { + Debug.logError(e.getMessage(), module); + return false; + } + return true; + } + + public static String retriveEbayCategoryIdByPartyId(Delegator delegator, String productCategoryId, String partyId) { + String ebayCategoryId = null; + List<GenericValue> productCategoryRoles = null; + try { + if (partyId == null) { + Debug.logError("Require field partyId.",module); + return ebayCategoryId; + } + productCategoryRoles = EntityQuery.use(delegator).from("ProductCategoryRole").where("productCategoryId", productCategoryId, "partyId", partyId, "roleTypeId", "EBAY_ACCOUNT").queryList(); + if (productCategoryRoles != null && productCategoryRoles.size()>0) { + for (GenericValue productCategoryRole : productCategoryRoles) { + ebayCategoryId = productCategoryRole.getString("comments"); + } + } else { + Debug.logInfo("Party Id ".concat(partyId).concat(" Not found productCategoryRole with productCategoryId "+ productCategoryId),module); + return ebayCategoryId; + } + } catch (GenericEntityException e) { + Debug.logError(e.getMessage(), module); + } + return ebayCategoryId; + } + + public static boolean createEbayCategoryIdByPartyId(Delegator delegator, String productCategoryId, String partyId, String ebayCategoryId) { + try { + if (partyId == null && ebayCategoryId != null) { + Debug.logError("Require field partyId and ebayCategoryId.",module); + return false; + } + GenericValue productCategoryRole = delegator.makeValue("ProductCategoryRole"); + productCategoryRole.put("productCategoryId",productCategoryId); + productCategoryRole.put("partyId", partyId); + productCategoryRole.put("roleTypeId","EBAY_ACCOUNT"); + productCategoryRole.put("fromDate",UtilDateTime.nowTimestamp()); + productCategoryRole.put("comments",ebayCategoryId); + productCategoryRole.create(); + } catch (GenericEntityException e) { + Debug.logError(e.getMessage(), module); + return false; + } + return true; + } + + public static boolean veriflyCategoryInCatalog(Delegator delegator, List<GenericValue> catalogCategories, String productCategoryId) { + boolean flag = false; + try { + for (GenericValue catalogCategory : catalogCategories) { + // check in productCatalogCategory first level 0 + if (catalogCategory.containsValue(productCategoryId)) { + flag = true; + break; + } else { + // check from child category level 1 + List<GenericValue> productCategoryRollupList = EntityQuery.use(delegator).from("ProductCategoryRollup").where("parentProductCategoryId",catalogCategory.getString("productCategoryId")).queryList(); + for (GenericValue productCategoryRollup : productCategoryRollupList) { + if (productCategoryRollup.containsValue(productCategoryId)) { + flag = true; + break; + } else { + // check from level 2 + List<GenericValue> prodCategoryRollupList = EntityQuery.use(delegator).from("ProductCategoryRollup").where("parentProductCategoryId",productCategoryRollup.getString("productCategoryId")).queryList(); + for (GenericValue prodCategoryRollup : prodCategoryRollupList) { + if (prodCategoryRollup.containsValue(productCategoryId)) { + flag = true; + break; + } + } + } + } + } + } + } catch (GenericEntityException e) { + Debug.logError(e.getMessage(), module); + return false; + } + return flag; + } + + public static Map<String, Object> startEbayAutoPreference(DispatchContext dctx, Map<String, ? extends Object> context) { + Map<String, Object>result = new HashMap<String, Object>(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + String productStoreId = (String) context.get("productStoreId"); + String autoPrefEnumId = (String) context.get("autoPrefEnumId"); + String serviceName = (String) context.get("serviceName"); + try { + GenericValue ebayProductPref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", autoPrefEnumId).queryOne(); + String jobId = ebayProductPref.getString("autoPrefJobId"); + if (UtilValidate.isNotEmpty(jobId)) { + List<GenericValue> jobs = EntityQuery.use(delegator).from("JobSandbox").where("parentJobId", jobId, "statusId", "SERVICE_PENDING").queryList(); + if (jobs.size() == 0) { + Map<String, Object>inMap = new HashMap<String, Object>(); + inMap.put("jobId", jobId); + inMap.put("userLogin", userLogin); + dispatcher.runSync("resetScheduledJob", inMap); + } + } + if (UtilValidate.isEmpty(ebayProductPref.getString("autoPrefJobId"))) { + if (UtilValidate.isEmpty(serviceName)) { + return ServiceUtil.returnError(UtilProperties.getMessage(resource, "EbayStoreAutoPrefJobEmpty", locale)); + } + /*** RuntimeData ***/ + String runtimeDataId = null; + GenericValue runtimeData = delegator.makeValue("RuntimeData"); + runtimeData = delegator.createSetNextSeqId(runtimeData); + runtimeDataId = runtimeData.getString("runtimeDataId"); + + /*** JobSandbox ***/ + // create the recurrence + String infoId = null; + String jobName = null; + long startTime = UtilDateTime.getNextDayStart(UtilDateTime.nowTimestamp()).getTime(); + RecurrenceInfo info; + // run every day when day start + info = RecurrenceInfo.makeInfo(delegator, startTime, 4, 1, -1); + infoId = info.primaryKey(); + // set the persisted fields + GenericValue enumeration = EntityQuery.use(delegator).from("Enumeration").where("enumId", autoPrefEnumId).queryOne(); + jobName = enumeration.getString("description"); + if (jobName == null) { + jobName = Long.toString((new Date().getTime())); + } + Map<String, Object> jFields = UtilMisc.<String, Object>toMap("jobName", jobName, "runTime", UtilDateTime.nowTimestamp(), + "serviceName", serviceName, "statusId", "SERVICE_PENDING", "recurrenceInfoId", infoId, "runtimeDataId", runtimeDataId); + + // set the pool ID + jFields.put("poolId", ServiceConfigUtil.getServiceEngine().getThreadPool().getSendToPool()); + + // set the loader name + jFields.put("loaderName", delegator.getDelegatorName()); + // create the value and store + GenericValue jobV; + jobV = delegator.makeValue("JobSandbox", jFields); + GenericValue jobSandbox = delegator.createSetNextSeqId(jobV); + + ebayProductPref.set("autoPrefJobId", jobSandbox.getString("jobId")); + ebayProductPref.store(); + + Map<String, Object>infoData = new HashMap<String, Object>(); + infoData.put("jobId", jobSandbox.getString("jobId")); + infoData.put("productStoreId", ebayProductPref.getString("productStoreId")); + runtimeData.set("runtimeInfo", XmlSerializer.serialize(infoData)); + runtimeData.store(); + } + } catch (GenericEntityException e) { + return ServiceUtil.returnError(e.getMessage()); + } catch (GenericServiceException e) { + return ServiceUtil.returnError(e.getMessage()); + } catch (SerializeException e) { + return ServiceUtil.returnError(e.getMessage()); + } catch (IOException e) { + return ServiceUtil.returnError(e.getMessage()); + }catch (RecurrenceInfoException e) { + return ServiceUtil.returnError(e.getMessage()); + } catch (GenericConfigException e) { + return ServiceUtil.returnError(e.getMessage()); + } + return result; + } + + public static Map<String, Object> stopEbayAutoPreference(DispatchContext dctx, Map<String, ? extends Object> context) { + Map<String, Object>result = new HashMap<String, Object>(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + Delegator delegator = dctx.getDelegator(); + String productStoreId = (String) context.get("productStoreId"); + String autoPrefEnumId = (String) context.get("autoPrefEnumId"); + try { + GenericValue ebayProductPref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", autoPrefEnumId).queryOne(); + String jobId = ebayProductPref.getString("autoPrefJobId"); + List<GenericValue> jobs = EntityQuery.use(delegator).from("JobSandbox").where("parentJobId", jobId ,"statusId", "SERVICE_PENDING").queryList(); + + Map<String, Object>inMap = new HashMap<String, Object>(); + inMap.put("userLogin", userLogin); + for (int index = 0; index < jobs.size(); index++) { + inMap.put("jobId", jobs.get(index).getString("jobId")); + dispatcher.runSync("cancelScheduledJob", inMap); + } + } catch (GenericEntityException e) { + return ServiceUtil.returnError(e.getMessage()); + } catch (GenericServiceException e) { + return ServiceUtil.returnError(e.getMessage()); + } + return result; + } + + public static void mappedPaymentMethods(Map<String,Object> requestParams, String itemPkCateId, Map<String,Object> addItemObject, ItemType item, HashMap<String, Object> attributeMapList) { + String refName = "itemCateFacade_"+itemPkCateId; + if (UtilValidate.isNotEmpty(addItemObject) && UtilValidate.isNotEmpty(requestParams)) { + EbayStoreCategoryFacade cf = (EbayStoreCategoryFacade) addItemObject.get(refName); + BuyerPaymentMethodCodeType[] paymentMethods = cf.getPaymentMethods(); + if (UtilValidate.isNotEmpty(paymentMethods)) { + BuyerPaymentMethodCodeType[] tempPayments = new BuyerPaymentMethodCodeType[paymentMethods.length]; + int i = 0; + for (BuyerPaymentMethodCodeType paymentMethod : paymentMethods) { + String pmName = paymentMethod.value(); + String payPara = (String) requestParams.get("Payments_".concat(pmName)); + if ("true".equals(payPara)) { + tempPayments[i] = paymentMethod; + attributeMapList.put(""+pmName, pmName); + if ("PayPal".equals(pmName)) { + if (UtilValidate.isNotEmpty(requestParams.get("paymentMethodPaypalEmail"))) { + item.setPayPalEmailAddress(requestParams.get("paymentMethodPaypalEmail").toString()); + attributeMapList.put("PaypalEmail", requestParams.get("paymentMethodPaypalEmail").toString()); + } + } + i++; + } + } + item.setPaymentMethods(tempPayments); + } + } + } + + public static void mappedShippingLocations(Map<String, Object> requestParams, ItemType item, ApiContext apiContext, HttpServletRequest request, HashMap<String, Object> attributeMapList) { + try { + if (UtilValidate.isNotEmpty(requestParams)) { + EbayStoreSiteFacade sf = EbayEvents.getSiteFacade(apiContext, request); + Map<SiteCodeType, GeteBayDetailsResponseType> eBayDetailsMap = sf.getEBayDetailsMap(); + GeteBayDetailsResponseType eBayDetails = eBayDetailsMap.get(apiContext.getSite()); + ShippingLocationDetailsType[] shippingLocationDetails = eBayDetails.getShippingLocationDetails(); + if (UtilValidate.isNotEmpty(shippingLocationDetails)) { + int i = 0; + String[] tempShipLocation = new String[shippingLocationDetails.length]; + for (ShippingLocationDetailsType shippingLocationDetail : shippingLocationDetails) { + String shippingLocation = shippingLocationDetail.getShippingLocation(); + String shipParam = (String)requestParams.get("Shipping_".concat(shippingLocation)); + if ("true".equals(shipParam)) { + tempShipLocation[i] = shippingLocation; + attributeMapList.put(""+shippingLocation, shippingLocation); + i++; + } + } + item.setShipToLocations(tempShipLocation); + } + } + } catch(Exception e) { + Debug.logError(e.getMessage(), module); + } + } + + public static Map<String, Object> exportProductEachItem(DispatchContext dctx, Map<String, Object> context) { + Map<String,Object> result = new HashMap<String, Object>(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + Delegator delegator = dctx.getDelegator(); + Map<String, Object> itemObject = UtilGenerics.checkMap(context.get("itemObject")); + String productListingId = itemObject.get("productListingId").toString(); + AddItemCall addItemCall = (AddItemCall) itemObject.get("addItemCall"); + AddItemRequestType req = new AddItemRequestType(); + AddItemResponseType resp = null; + try { + GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne(); + ItemType item = addItemCall.getItem(); + req.setItem(item); + resp = (AddItemResponseType) addItemCall.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString()) || "WARNING".equals(resp.getAck().toString())) { + String itemId = resp.getItemID(); + String listingXml = addItemCall.getRequestXml().toString(); + Map<String, Object> updateItemMap = new HashMap<String, Object>(); + updateItemMap.put("productListingId", productListingId); + updateItemMap.put("itemId", itemId); + updateItemMap.put("listingXml", listingXml); + updateItemMap.put("statusId", "ITEM_APPROVED"); + updateItemMap.put("userLogin", userLogin); + try { + dispatcher.runSync("updateEbayProductListing", updateItemMap); + } catch (GenericServiceException ex) { + Debug.logError(ex.getMessage(), module); + return ServiceUtil.returnError(ex.getMessage()); + } + } + result = ServiceUtil.returnSuccess(); + } catch (Exception e) { + return ServiceUtil.returnError(e.getMessage()); + } + return result; + } + + public static Map<String, Object> setEbayProductListingAttribute(DispatchContext dctx, Map<String, Object> context) { + Delegator delegator = dctx.getDelegator(); + HashMap<String, Object> attributeMapList = UtilGenerics.cast(context.get("attributeMapList")); + String productListingId = (String) context.get("productListingId"); + try { + List<GenericValue> attributeToClears = EntityQuery.use(delegator).from("EbayProductListingAttribute").where("productListingId", productListingId).queryList(); + for (int clearCount = 0; clearCount < attributeToClears.size(); clearCount++) { + GenericValue valueToClear = attributeToClears.get(clearCount); + if (valueToClear != null) { + valueToClear.remove(); + } + } + for (Map.Entry<String,Object> entry : attributeMapList.entrySet()) { + if (UtilValidate.isNotEmpty(entry.getKey())) { + GenericValue ebayProductListingAttribute = delegator.makeValue("EbayProductListingAttribute"); + ebayProductListingAttribute.set("productListingId", productListingId); + ebayProductListingAttribute.set("attrName", entry.getKey().toString()); + ebayProductListingAttribute.set("attrValue", entry.getValue().toString()); + ebayProductListingAttribute.create(); + } + } + } catch (GenericEntityException e) { + return ServiceUtil.returnError(e.getMessage()); + } + return ServiceUtil.returnSuccess(); + } + + public static ItemType prepareAddItem(Delegator delegator, GenericValue attribute) { + ItemType item = new ItemType(); + try { + List<GenericValue> attrs = EntityQuery.use(delegator).from("EbayProductListingAttribute").where("productListingId", attribute.getString("productListingId")).queryList(); + AmountType amount = new AmountType(); + AmountType shippingServiceCost = new AmountType(); + PictureDetailsType picture = new PictureDetailsType(); + CategoryType category = new CategoryType(); + ListingDesignerType designer = new ListingDesignerType(); + ShippingDetailsType shippingDetail = new ShippingDetailsType(); + ShippingServiceOptionsType shippingOption = new ShippingServiceOptionsType(); + for (int index = 0; index < attrs.size(); index++) { + if ("Title".equals(attrs.get(index).getString("attrName"))) { + item.setTitle(attrs.get(index).getString("attrValue")); + } else if ("SKU".equals(attrs.get(index).getString("attrName"))) { + item.setSKU(attrs.get(index).getString("attrValue")); + } else if ("Currency".equals(attrs.get(index).getString("attrName"))) { + amount.setCurrencyID(CurrencyCodeType.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("Description".equals(attrs.get(index).getString("attrName"))) { + item.setDescription(attrs.get(index).getString("attrValue")); + } else if ("ApplicationData".equals(attrs.get(index).getString("attrName"))) { + item.setApplicationData(attrs.get(index).getString("attrValue")); + } else if ("Country".equals(attrs.get(index).getString("attrName"))) { + item.setCountry(CountryCodeType.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("PictureURL".equals(attrs.get(index).getString("attrName"))) { + String[] pictureUrl = {attrs.get(index).getString("attrValue")}; + picture.setPictureURL(pictureUrl); + } else if ("Site".equals(attrs.get(index).getString("attrName"))) { + item.setSite(SiteCodeType.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("UseTaxTable".equals(attrs.get(index).getString("attrName"))) { + item.setUseTaxTable(Boolean.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("BestOfferEnabled".equals(attrs.get(index).getString("attrName"))) { + item.setBestOfferEnabled(Boolean.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("AutoPayEnabled".equals(attrs.get(index).getString("attrName"))) { + item.setAutoPay(Boolean.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("CategoryID".equals(attrs.get(index).getString("attrName"))) { + category.setCategoryID(attrs.get(index).getString("attrValue")); + } else if ("CategoryLevel".equals(attrs.get(index).getString("attrName"))) { + category.setCategoryLevel(Integer.parseInt(attrs.get(index).getString("attrValue"))); + } else if ("CategoryName".equals(attrs.get(index).getString("attrName"))) { + category.setCategoryName(attrs.get(index).getString("attrValue")); + } else if ("CategoryParentID".equals(attrs.get(index).getString("attrName"))) { + String[] parent = {attrs.get(index).getString("attrValue")}; + category.setCategoryParentID(parent ); + } else if ("LeafCategory".equals(attrs.get(index).getString("attrName"))) { + category.setLeafCategory(Boolean.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("LSD".equals(attrs.get(index).getString("attrName"))) { + category.setLSD(Boolean.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("ReturnsAcceptedOption".equals(attrs.get(index).getString("attrName"))) { + ReturnPolicyType policy = new ReturnPolicyType(); + policy.setReturnsAcceptedOption(attrs.get(index).getString("attrValue")); + item.setReturnPolicy(policy); + } else if ("LayoutID".equals(attrs.get(index).getString("attrName"))) { + designer.setLayoutID(Integer.parseInt(attrs.get(index).getString("attrValue"))); + } else if ("ThemeID".equals(attrs.get(index).getString("attrName"))) { + designer.setThemeID(Integer.parseInt(attrs.get(index).getString("attrValue"))); + } else if ("BuyItNowPrice".equals(attrs.get(index).getString("attrName"))) { + amount = new AmountType(); + amount.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); + item.setBuyItNowPrice(amount); + } else if ("ReservePrice".equals(attrs.get(index).getString("attrName"))) { + amount = new AmountType(); + amount.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); + item.setReservePrice(amount); + } else if ("ListingType".equals(attrs.get(index).getString("attrName"))) { + item.setListingType(ListingTypeCodeType.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("StartPrice".equals(attrs.get(index).getString("attrName"))) { + amount = new AmountType(); + amount.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); + item.setStartPrice(amount); + } else if ("ShippingService".equals(attrs.get(index).getString("attrName"))) { + shippingOption.setShippingService(attrs.get(index).getString("attrValue")); + } else if ("ShippingServiceCost".equals(attrs.get(index).getString("attrName"))) { + shippingServiceCost.setValue(Double.parseDouble(attrs.get(index).getString("attrValue"))); + shippingOption.setShippingServiceCost(shippingServiceCost); + } else if ("ShippingServiceCostCurrency".equals(attrs.get(index).getString("attrName"))) { + shippingServiceCost.setCurrencyID(CurrencyCodeType.valueOf(attrs.get(index).getString("attrValue"))); + shippingOption.setShippingServiceCost(shippingServiceCost); + } else if ("ShippingServicePriority".equals(attrs.get(index).getString("attrName"))) { + shippingOption.setShippingServicePriority(Integer.parseInt(attrs.get(index).getString("attrValue"))); + } else if ("ShippingType".equals(attrs.get(index).getString("attrName"))) { + shippingDetail.setShippingType(ShippingTypeCodeType.valueOf(attrs.get(index).getString("attrValue"))); + } else if ("VATPercent".equals(attrs.get(index).getString("attrName"))) { + VATDetailsType vat = new VATDetailsType(); + vat.setVATPercent(new Float(attrs.get(index).getString("attrValue"))); + item.setVATDetails(vat); + } else if ("Location".equals(attrs.get(index).getString("attrName"))) { + item.setLocation(attrs.get(index).getString("attrValue")); + } else if ("Quantity".equals(attrs.get(index).getString("attrName"))) { + item.setQuantity(Integer.parseInt(attrs.get(index).getString("attrValue"))); + } else if ("ListingDuration".equals(attrs.get(index).getString("attrName"))) { + item.setListingDuration(attrs.get(index).getString("attrValue")); + } else if ("LotSize".equals(attrs.get(index).getString("attrName"))) { + item.setLotSize(Integer.parseInt(attrs.get(index).getString("attrValue"))); + } else if ("PostalCode".equals(attrs.get(index).getString("attrName"))) { + item.setPostalCode(attrs.get(index).getString("attrValue")); + } else if ("Title".equals(attrs.get(index).getString("attrName"))) { + item.setTitle(attrs.get(index).getString("attrValue")); + } + if (category != null) { + item.setPrimaryCategory(category); + } + if (shippingOption != null) { + ShippingServiceOptionsType[] options = {shippingOption}; + shippingDetail.setShippingServiceOptions(options); + } + if (shippingDetail != null) { + item.setShippingDetails(shippingDetail); + } + } + } catch (GenericEntityException e) { + Debug.logError(e.getMessage(), module); + return null; + } + return item; + } + + public static Map<String, Object> uploadTrackingInfoBackToEbay(DispatchContext dctx, Map<String, Object> context) { + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + String productStoreId = (String) context.get("productStoreId"); + String orderId = (String) context.get("orderId"); + GetOrdersRequestType req = new GetOrdersRequestType(); + GetOrdersResponseType resp = null; + try { + GenericValue orderHeader = EntityQuery.use(delegator).from("OrderHeader").where("orderId", orderId).queryOne(); + if (UtilValidate.isNotEmpty(orderHeader)) { + String externalId = orderHeader.getString("externalId").toString(); + List<GenericValue> orderShipment = orderHeader.getRelated("OrderShipment", null, null, false); + if (orderShipment.size() > 0) { + List<GenericValue> trackingOrders = orderHeader.getRelated("TrackingCodeOrder", null, null, false); + ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator); + GetOrdersCall ordersCall = new GetOrdersCall(apiContext); + OrderIDArrayType orderIdArr = new OrderIDArrayType(); + String[] orderIdStr = {""+externalId}; + orderIdArr.setOrderID(orderIdStr); + req.setOrderIDArray(orderIdArr); + Calendar orderFrom = Calendar.getInstance(); + orderFrom.setTime(UtilDateTime.toDate("01/01/2001 00:00:00")); + req.setCreateTimeFrom(orderFrom); + Calendar orderTo = Calendar.getInstance(); + orderTo.setTime(UtilDateTime.nowDate()); + req.setCreateTimeTo(orderTo); + req.setOrderStatus(OrderStatusCodeType.SHIPPED); + req.setOrderRole(TradingRoleCodeType.SELLER); + resp = (GetOrdersResponseType) ordersCall.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { + OrderArrayType orderArr = resp.getOrderArray(); + OrderType[] orderTypeList = orderArr.getOrder(); + for (OrderType order : orderTypeList) { + String orderID = order.getOrderID(); + if (orderID.equals(externalId)) { + AddOrderCall addOrderCall = new AddOrderCall(apiContext); + AddOrderRequestType addReq = new AddOrderRequestType(); + AddOrderResponseType addResp = null; + OrderType newOrder = new OrderType(); + ShippingDetailsType shippingDetail = order.getShippingDetails(); + if (trackingOrders.size() > 0) { + ShipmentTrackingDetailsType[] trackDetails = new ShipmentTrackingDetailsType[trackingOrders.size()]; + for (int i = 0; i < trackDetails.length; i++) { + ShipmentTrackingDetailsType track = new ShipmentTrackingDetailsType(); + track.setShipmentTrackingNumber(trackingOrders.get(i).get("trackingCodeId").toString()); + trackDetails[i] = track; + } + shippingDetail.setShipmentTrackingDetails(trackDetails); + newOrder.setShippingDetails(shippingDetail); + } + newOrder.setOrderID(order.getOrderID()); + newOrder.setOrderStatus(order.getOrderStatus()); + newOrder.setAdjustmentAmount(order.getAdjustmentAmount()); + newOrder.setAmountSaved(order.getAmountSaved()); + newOrder.setCheckoutStatus(order.getCheckoutStatus()); + newOrder.setShippingDetails(order.getShippingDetails()); + newOrder.setCreatingUserRole(order.getCreatingUserRole()); + newOrder.setCreatedTime(order.getCreatedTime()); + newOrder.setPaymentMethods(order.getPaymentMethods()); + newOrder.setShippingAddress(order.getShippingAddress()); + newOrder.setSubtotal(order.getSubtotal()); + newOrder.setTotal(order.getTotal()); + newOrder.setTransactionArray(order.getTransactionArray()); + newOrder.setBuyerUserID(order.getBuyerUserID()); + newOrder.setPaidTime(order.getPaidTime()); + newOrder.setShippedTime(order.getShippedTime()); + newOrder.setIntegratedMerchantCreditCardEnabled(order.isIntegratedMerchantCreditCardEnabled()); + addReq.setOrder(newOrder); + addResp = (AddOrderResponseType) addOrderCall.execute(addReq); + if (addResp != null && "SUCCESS".equals(addResp.getAck().toString())) { + Debug.logInfo("Upload tracking code to eBay success...", module); + } else { + createErrorLogMessage(userLogin, dctx.getDispatcher(), productStoreId, addResp.getAck().toString(), "Update order : uploadTrackingInfoBackToEbay", addResp.getErrors(0).getLongMessage()); + } + } + } + } else { + createErrorLogMessage(userLogin, dctx.getDispatcher(), productStoreId, resp.getAck().toString(), "Get order : uploadTrackingInfoBackToEbay", resp.getErrors(0).getLongMessage()); + } + } + } + } catch (Exception e) { + return ServiceUtil.returnError(e.getMessage()); + } + return ServiceUtil.returnSuccess(); + } + + public static void createErrorLogMessage(GenericValue userLogin, LocalDispatcher dispatcher, String productStoreId, String ack, String fuction, String errorMessage) { + if (!"".equals(productStoreId) && (!"".equals(errorMessage))) { + try { + Map<String, Object> newMap = new HashMap<String, Object>(); + newMap.put("productStoreId", productStoreId); + newMap.put("logAck", ack.toLowerCase()); + newMap.put("functionName", fuction); + newMap.put("logMessage", errorMessage); + newMap.put("createDatetime", UtilDateTime.nowTimestamp()); + newMap.put("userLogin", userLogin); + dispatcher.runSync("insertErrorMessagesFromEbay", newMap); + } catch (Exception ex) { + Debug.logError("Error from create error log messages : "+ex.getMessage(), module); + } + } + } + + public static boolean isReserveInventory(Delegator delegator, String productId, String productStoreId) { + boolean isReserve = false; + try { + GenericValue ebayProductStore = EntityQuery.use(delegator).from("EbayProductStoreInventory").where("productStoreId", productStoreId, "productId", productId).filterByDate().queryFirst(); + if (UtilValidate.isNotEmpty(ebayProductStore)) { + BigDecimal atp = ebayProductStore.getBigDecimal("availableToPromiseListing"); + int intAtp = atp.intValue(); + if (intAtp > 0) { + isReserve = true; + } + } + } catch (Exception ex) { + Debug.logError("Error from get eBay Inventory data : "+ ex.getMessage(), module); + } + return isReserve; + } + + public static String convertDate(Date date, Locale locale) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",locale); + return simpleDateFormat.format(date); + } +} Propchange: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java ('svn:eol-style' removed) |
Free forum by Nabble | Edit this page |