Author: hansbak
Date: Fri Feb 26 07:51:20 2010 New Revision: 916603 URL: http://svn.apache.org/viewvc?rev=916603&view=rev Log: Ebaystore update: Reformat and grouped the source code (auto dispute and auto relisting) to EbayStoreAutoPreferences class and changed the service name of this function. Modified: ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml ofbiz/trunk/specialpurpose/ebaystore/data/DemoEbayStoreData.xml ofbiz/trunk/specialpurpose/ebaystore/data/EbayStoreTypeData.xml ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerScreens.xml Modified: ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml Fri Feb 26 07:51:20 2010 @@ -154,6 +154,9 @@ <property key="EbayAutomationRelistItems"> <value xml:lang="en">Automation Re-list Items</value> </property> + <property key="EbayAutomatiionDisputeItems"> + <value xml:lang="en">Automation Dispute Items</value> + </property> <property key="EbayBoughtLeaveFeedback"> <value xml:lang="en">Bought</value> Modified: ofbiz/trunk/specialpurpose/ebaystore/data/DemoEbayStoreData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/data/DemoEbayStoreData.xml?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/data/DemoEbayStoreData.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/data/DemoEbayStoreData.xml Fri Feb 26 07:51:20 2010 @@ -23,6 +23,7 @@ <Party partyId="DemoEbayAccount" partyTypeId="PERSON"/> <Person partyId="DemoEbayAccount" firstName="Demo ebay account" lastName="USA"/> <PartyRole partyId="DemoEbayAccount" roleTypeId="EBAY_ACCOUNT"/> + <PartyRole partyId="DemoEbayAccount" roleTypeId="VENDOR"/> <UserLogin userLoginId="esandbox10543" partyId="DemoEbayAccount" currentPassword="{SHA}bbf272ce445e1c48d94096afdba6a7888c1df1fe"/> <ProductStore productStoreId="90100" storeName="OFBiz Ebay Store-USA" companyName="Apache Ofbiz" title="Test esandbox10543 store" subtitle="Part of the Open For Business Family of Open Source Software" payTopartyId="DemoEbayAccount" daysToCancelNonPay="30" prorateShipping="Y" prorateTaxes="Y" Modified: ofbiz/trunk/specialpurpose/ebaystore/data/EbayStoreTypeData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/data/EbayStoreTypeData.xml?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/data/EbayStoreTypeData.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/data/EbayStoreTypeData.xml Fri Feb 26 07:51:20 2010 @@ -33,4 +33,6 @@ <Enumeration enumId="EBAY_AUTO_PIT_FB" description="Automatic leave positive feedback when buyer has paid for item" enumTypeId="EBAY_AUTO_PREF"/> <Enumeration enumId="EBAY_AUTO_FB_RMD" description="Automatic send reminder email if feedback has not been received after day? shipping" enumTypeId="EBAY_AUTO_PREF"/> + <ProductType productTypeId="EBAY_ITEM" description="Product From eBay"/> + </entity-engine-xml> Modified: ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml Fri Feb 26 07:51:20 2010 @@ -27,6 +27,10 @@ <result-to-field result-name="partyId" field="parameters.partyId"/> </call-service> + <set field="parameters.roleTypeId" value="VENDOR" /> + <set-service-fields service-name="createPartyRole" to-map="newPartyRole" map="parameters"/> + <call-service service-name="createPartyRole" in-map-name="newPartyRole"/> + <set field="parameters.storeName" value="${parameters.userLoginId}_store"/> <set-service-fields service-name="createProductStore" to-map="newProductStore" map="parameters"/> <call-service service-name="createProductStore" in-map-name="newProductStore"> Modified: ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml Fri Feb 26 07:51:20 2010 @@ -172,19 +172,6 @@ <attribute name="period" mode="IN" type="String" optional="true"/> <attribute name="soldItems" mode="OUT" type="List" optional="true"/> </service> - <service name="automaticEbayRelistSoldItems" engine="java" transaction-timeout="3600" - location="org.ofbiz.ebaystore.EbayStore" invoke="automaticEbayRelistSoldItems" auth="true"> - </service> - <service name="createEbayAutomaticRelistItems" engine="entity-auto" default-entity-name="JobSandbox" invoke="create"> - <description>create eBay automatic re-list items</description> - <auto-attributes mode="IN" include="pk"/> - <auto-attributes mode="IN" optional="true" include="nonpk"/> - </service> - <service name="updateEbayAutomaticRelistItems" engine="entity-auto" default-entity-name="JobSandbox" invoke="update"> - <description>create eBay automatic re-list items</description> - <auto-attributes mode="IN" include="pk"/> - <auto-attributes mode="IN" optional="true" include="nonpk"/> - </service> <!-- block out of stock items --> <service name="getSellingInventory" engine="java" transaction-timeout="7200" location="org.ofbiz.ebaystore.EbayStore" invoke="getSellingInventory" auth="true"> @@ -357,4 +344,18 @@ location="org.ofbiz.ebaystore.EbayStoreAutoPreferences" invoke="autoSendFeedbackReminderEmail" auth="true"> <attribute name="productStoreId" mode="IN" type="String" optional="false"/> </service> + <service name="automaticEbayRelistSoldItems" engine="java" transaction-timeout="3600" + location="org.ofbiz.ebaystore.EbayStoreAutoPreferences" invoke="automaticEbayRelistSoldItems" auth="false"> + <attribute name="jobId" mode="IN" type="String" optional="false"/> + </service> + <service name="automaticEbayDisputeNotComplete" engine="java" transaction-timeout="3600" + location="org.ofbiz.ebaystore.EbayStoreAutoPreferences" invoke="automaticEbayDisputeNotComplete" auth="false"> + <description>Create Dispute if checkout has not been completed</description> + <attribute name="jobId" mode="IN" type="String" optional="false"/> + </service> + <service name="automaticEbayDisputeNotPay" engine="java" transaction-timeout="3600" + location="org.ofbiz.ebaystore.EbayStoreAutoPreferences" invoke="automaticEbayDisputeNotPay" auth="false"> + <description>Create Dispute if checkout has been completed but no payment has been received</description> + <attribute name="jobId" mode="IN" type="String" optional="false"/> + </service> </services> \ No newline at end of file Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java (original) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java Fri Feb 26 07:51:20 2010 @@ -48,6 +48,7 @@ import org.ofbiz.entity.GenericValue; import org.ofbiz.entity.condition.EntityCondition; import org.ofbiz.entity.condition.EntityOperator; +import org.ofbiz.entity.transaction.TransactionUtil; import org.ofbiz.entity.util.EntityUtil; import org.ofbiz.service.DispatchContext; import org.ofbiz.service.GenericServiceException; @@ -63,6 +64,7 @@ import com.ebay.sdk.SdkSoapException; import com.ebay.sdk.call.*; import com.ebay.soap.eBLBaseComponents.AmountType; +import com.ebay.soap.eBLBaseComponents.CheckoutStatusCodeType; import com.ebay.soap.eBLBaseComponents.CurrencyCodeType; import com.ebay.soap.eBLBaseComponents.DeleteSellingManagerTemplateRequestType; import com.ebay.soap.eBLBaseComponents.DeleteSellingManagerTemplateResponseType; @@ -108,6 +110,7 @@ import com.ebay.soap.eBLBaseComponents.StoreThemeType; import com.ebay.soap.eBLBaseComponents.StoreType; import com.ebay.soap.eBLBaseComponents.TaskStatusCodeType; +import com.ebay.soap.eBLBaseComponents.UserType; import com.ebay.soap.eBLBaseComponents.VerifyAddSecondChanceItemResponseType; import java.sql.Timestamp; @@ -1494,114 +1497,6 @@ } return result; } - public static Map<String, Object> automaticEbayRelistSoldItems(DispatchContext dctx, Map<String, ? extends Object> context) { - Map<String, Object>result = FastMap.newInstance(); - LocalDispatcher dispatcher = dctx.getDispatcher(); - GenericValue userLogin = (GenericValue) context.get("userLogin"); - Delegator delegator = dctx.getDelegator(); - Locale locale = (Locale) context.get("locale"); - try { - Map<String, Object>serviceMap = FastMap.newInstance(); - serviceMap.put("userLogin", userLogin); - List<GenericValue>stores = delegator.findByAnd("ProductStore", UtilMisc.toMap()); - for(int storeCount=0;storeCount<stores.size();storeCount++) { - String productStoreId = stores.get(storeCount).getString("productStoreId"); - serviceMap.put("productStoreId", productStoreId); - Map eBayUserLogin = dispatcher.runSync("getEbayStoreUser", serviceMap); - String eBayUserLoginId = (String)eBayUserLogin.get("userLoginId"); - if(eBayUserLoginId != null) { - List<GenericValue>jobs = delegator.findByAnd("JobSandbox", UtilMisc.toMap("authUserLoginId", eBayUserLoginId)); - if(jobs.size() != 0) { - GenericValue job = jobs.get(0); - Timestamp startDateTime = (Timestamp)job.get("startDateTime"); - Timestamp finishDateTime = (Timestamp)job.get("finishDateTime"); - //check can re-list items by eBay account setting - boolean canRelistItems = false; - Timestamp nowTime = UtilDateTime.nowTimestamp(); - if(startDateTime!=null&&finishDateTime!=null) { - if(startDateTime.before(nowTime) && finishDateTime.after(nowTime)) { - canRelistItems = true; - } - }else if(startDateTime!=null&&finishDateTime==null) { - if(startDateTime.before(nowTime)) { - canRelistItems = true; - } - } - if(canRelistItems) { - //save sold items to OFbBiz product entity - Map resultService = dispatcher.runSync("getEbaySoldItems", serviceMap); - List soldItems = (List)resultService.get("soldItems"); - if(soldItems.size()!=0) { - for(int itemCount=0;itemCount<soldItems.size();itemCount++) { - Map soldItemMap = (Map)soldItems.get(itemCount); - if(UtilValidate.isNotEmpty(soldItemMap.get("itemId"))) { - GenericValue productCheck = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", soldItemMap.get("itemId"))); - if(productCheck == null) { - GenericValue product = delegator.makeValue("Product"); - product.set("productId", soldItemMap.get("itemId")); - product.set("internalName", soldItemMap.get("title")); - product.set("productTypeId", "EBAY_ITEM"); - product.create(); - } - } - } - } - //check active items - serviceMap = FastMap.newInstance(); - serviceMap.put("userLogin", userLogin); - serviceMap.put("productStoreId", productStoreId); - resultService = dispatcher.runSync("getEbayActiveItems", serviceMap); - List activeItems = (List)resultService.get("activeItems"); - List<String> activeItemMaps = FastList.newInstance(); - if(activeItems.size()!=0) { - for(int itemCount=0;itemCount<activeItems.size();itemCount++) { - Map activeItemMap = (Map)activeItems.get(itemCount); - if(UtilValidate.isNotEmpty(activeItemMap.get("itemId"))) { - activeItemMaps.add((String)activeItemMap.get("itemId")); - } - } - } - List andExpr = FastList.newInstance(); - 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.EQUALS, null); - andExpr.add(isVirtualCond); - EntityCondition andCond = EntityCondition.makeCondition(andExpr, EntityOperator.AND); - - List itemsToRelist = delegator.findList("Product", andCond, null, null, null, false); - if(itemsToRelist.size() != 0) { - //re-list sold items and not active - Map<String, Object> inMap = FastMap.newInstance(); - inMap.put("productStoreId", productStoreId); - inMap.put("userLogin", userLogin); - Map<String, Object> resultUser = dispatcher.runSync("getEbayStoreUser", inMap); - String userID = (String)resultUser.get("userLoginId"); - 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 = (GenericValue)itemsToRelist.get(itemRelist); - itemToBeRelisted.setItemID(product.getString("productId")); - relistItemCall.setItemToBeRelisted(itemToBeRelisted); - relistItemCall.relistItem(); - GenericValue productStore = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", product.getString("productId"))); - 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(); - } - /* ebay store block out of stock items */ public static Map<String,Object> getSellingInventory(DispatchContext dctx, Map<String,Object> context) { Locale locale = (Locale) context.get("locale"); 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=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java (original) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java Fri Feb 26 07:51:20 2010 @@ -18,9 +18,11 @@ */ package org.ofbiz.ebaystore; +import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; @@ -31,6 +33,7 @@ import javax.servlet.http.HttpSession; import javolution.util.FastList; +import javolution.util.FastMap; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilDateTime; @@ -40,6 +43,8 @@ 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.service.DispatchContext; import org.ofbiz.service.GenericServiceException; import org.ofbiz.service.LocalDispatcher; @@ -48,18 +53,25 @@ import com.ebay.sdk.ApiContext; import com.ebay.sdk.ApiException; import com.ebay.sdk.SdkException; +import com.ebay.sdk.call.AddDisputeCall; 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.soap.eBLBaseComponents.AutomatedLeaveFeedbackEventCodeType; import com.ebay.soap.eBLBaseComponents.CommentTypeCodeType; +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.ItemType; import com.ebay.soap.eBLBaseComponents.SellingManagerOrderStatusType; import com.ebay.soap.eBLBaseComponents.SellingManagerPaidStatusCodeType; import com.ebay.soap.eBLBaseComponents.SellingManagerShippedStatusCodeType; import com.ebay.soap.eBLBaseComponents.SellingManagerSoldListingsSortTypeCodeType; import com.ebay.soap.eBLBaseComponents.SellingManagerSoldOrderType; import com.ebay.soap.eBLBaseComponents.SellingManagerSoldTransactionType; +import com.ebay.soap.eBLBaseComponents.UserType; public class EbayStoreAutoPreferences { public static String module = EbayStoreAutoPreferences.class.getName(); @@ -233,7 +245,6 @@ 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(); @@ -309,4 +320,269 @@ return ServiceUtil.returnSuccess(); } + public static Map<String, Object> automaticEbayRelistSoldItems(DispatchContext dctx, Map<String, ? extends Object> context) { + Map<String, Object>result = FastMap.newInstance(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + String jobId = (String) context.get("jobId"); + try { + GenericValue userLogin = delegator.findOne("UserLogin", false, "userLoginId", "system"); + Map<String, Object>serviceMap = FastMap.newInstance(); + serviceMap.put("userLogin", userLogin); + List<GenericValue>stores = delegator.findByAnd("ProductStore", UtilMisc.toMap()); + //ProductStore + List<GenericValue> productStores = delegator.findByAnd("EbayProductStorePref", UtilMisc.toMap("autoPrefJobId", jobId)); + 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 eBayUserLogin = dispatcher.runSync("getEbayStoreUser", serviceMap); + String eBayUserLoginId = (String)eBayUserLogin.get("userLoginId"); + GenericValue party = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", eBayUserLoginId)); + String partyId = party.getString("partyId"); + //save sold items to OFbBiz product entity + Map resultService = dispatcher.runSync("getEbaySoldItems", serviceMap); + List soldItems = (List) resultService.get("soldItems"); + if (soldItems.size()!=0) { + for (int itemCount = 0; itemCount < soldItems.size(); itemCount++) { + Map soldItemMap = (Map)soldItems.get(itemCount); + if (UtilValidate.isNotEmpty(soldItemMap.get("itemId"))) { + GenericValue productCheck = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", soldItemMap.get("itemId"))); + if (productCheck == null) { + Map<String, Object>inMap = FastMap.newInstance(); + 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 productRole = delegator.findByAnd("ProductRole", UtilMisc.toMap("partyId", partyId, "productId", soldItemMap.get("itemId"), "roleTypeId", "VENDOR")); + if (productRole.size() == 0) { + Map<String, Object>addRole = FastMap.newInstance(); + 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 = FastMap.newInstance(); + serviceMap.put("userLogin", userLogin); + serviceMap.put("productStoreId", productStoreId); + resultService = dispatcher.runSync("getEbayActiveItems", serviceMap); + List activeItems = (List) resultService.get("activeItems"); + List<String> activeItemMaps = FastList.newInstance(); + if (activeItems.size() != 0) { + for (int itemCount = 0; itemCount < activeItems.size(); itemCount++) { + Map activeItemMap = (Map)activeItems.get(itemCount); + if (UtilValidate.isNotEmpty(activeItemMap.get("itemId"))) { + activeItemMaps.add((String)activeItemMap.get("itemId")); + } + } + } + //check product role + List<GenericValue>productRoles = delegator.findByAnd("ProductRole", UtilMisc.toMap("partyId", partyId, "roleTypeId", "VENDOR")); + List<String>productRoleIds = FastList.newInstance(); + if (productRoles.size() != 0) { + for (int itemCount = 0; itemCount < productRoles.size(); itemCount++) { + String productId = productRoles.get(itemCount).getString("productId"); + productRoleIds.add(productId); + } + } + List andExpr = FastList.newInstance(); + 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); + EntityCondition andCond = EntityCondition.makeCondition(andExpr, EntityOperator.AND); + List itemsToRelist = delegator.findList("Product", andCond, null, null, null, false); + if (itemsToRelist.size() != 0) { + //re-list sold items and not active + Map<String, Object> inMap = FastMap.newInstance(); + inMap.put("productStoreId", productStoreId); + inMap.put("userLogin", userLogin); + Map<String, Object> resultUser = dispatcher.runSync("getEbayStoreUser", inMap); + String userID = (String) resultUser.get("userLoginId"); + 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 = (GenericValue)itemsToRelist.get(itemRelist); + itemToBeRelisted.setItemID(product.getString("productId")); + relistItemCall.setItemToBeRelisted(itemToBeRelisted); + relistItemCall.relistItem(); + GenericValue productStore = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", product.getString("productId"))); + 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) { + Map<String, Object>result = FastMap.newInstance(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + String jobId = (String) context.get("jobId"); + try { + GenericValue userLogin = delegator.findOne("UserLogin", false, "userLoginId", "system"); + List<GenericValue> productStores = delegator.findByAnd("EbayProductStorePref", UtilMisc.toMap("autoPrefJobId", jobId)); + 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 = FastMap.newInstance(); + serviceMap.put("productStoreId", productStoreId); + serviceMap.put("userLogin", userLogin); + Map resultService = dispatcher.runSync("getEbaySoldItems", serviceMap); + List soldItems = (List) resultService.get("soldItems"); + // check items to dispute + List<Map>itemsToDispute = FastList.newInstance(); + for (int itemCount = 0; itemCount < soldItems.size(); itemCount++) { + Map item = (Map) 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); + String id = api.addDispute(); + } + } + } + } catch (Exception e) { + return ServiceUtil.returnError(e.getMessage()); + } + return ServiceUtil.returnSuccess(); + } + public static Map<String, Object> automaticEbayDisputeNotPay(DispatchContext dctx, Map<String, ? extends Object> context) { + Map<String, Object>result = FastMap.newInstance(); + LocalDispatcher dispatcher = dctx.getDispatcher(); + Delegator delegator = dctx.getDelegator(); + Locale locale = (Locale) context.get("locale"); + String jobId = (String) context.get("jobId"); + try { + GenericValue userLogin = delegator.findOne("UserLogin", false, "userLoginId", "system"); + List<GenericValue> productStores = delegator.findByAnd("EbayProductStorePref", UtilMisc.toMap("autoPrefJobId", jobId)); + 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 = FastMap.newInstance(); + serviceMap.put("productStoreId", productStoreId); + serviceMap.put("userLogin", userLogin); + Map resultService = dispatcher.runSync("getEbaySoldItems", serviceMap); + List soldItems = (List) resultService.get("soldItems"); + // check items to dispute + List<Map>itemsToDispute = FastList.newInstance(); + for (int itemCount = 0; itemCount < soldItems.size(); itemCount++) { + Map item = (Map) 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); + String id = api.addDispute(); + } + } + } + } catch (Exception e) { + return ServiceUtil.returnError(e.getMessage()); + } + return ServiceUtil.returnSuccess(); + } } Modified: ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml Fri Feb 26 07:51:20 2010 @@ -27,9 +27,8 @@ <alt-target use-when="ebayPrefRelisting!=null" target="updateEbayProductStorePref"/> <field name="productStoreId"><hidden value="${parameters.productStoreId}"/></field> <field name="enabled" tooltip="${uiLabelMap.EbayAutoRelisting}" tooltip-style="h3"><check/></field> - <field name="condition1"><hidden value="${userLoginId}"/></field> - <field name="condition2" title="${uiLabelMap.CommonFromDate}"><date-time/></field> - <field name="condition3" title="${uiLabelMap.CommonThruDate}"><date-time/></field> + <field name="condition1" title="${uiLabelMap.CommonFromDate}"><date-time/></field> + <field name="condition2" title="${uiLabelMap.CommonThruDate}"><date-time/></field> <field name="serviceName"><hidden value="${serviceName}"/></field> <field name="autoPrefEnumId"><hidden value="${autoPrefEnumId}"/></field> <field name="submit" title="${uiLabelMap.CommonApply}"><submit/></field> Modified: ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerScreens.xml?rev=916603&r1=916602&r2=916603&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerScreens.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerScreens.xml Fri Feb 26 07:51:20 2010 @@ -289,8 +289,8 @@ <set field="tabButtonItem" value="automaticEbayDisputeItems"/> <set field="autoPrefEnumId1" value="EBAY_AUTO_DISPUTE1"/> <set field="autoPrefEnumId2" value="EBAY_AUTO_DISPUTE2"/> - <set field="serviceName1" value="eBayAutomaticDisputeNotComplete"/> - <set field="serviceName2" value="eBayAutomaticDisputeNotPay"/> + <set field="serviceName1" value="automaticEbayDisputeNotComplete"/> + <set field="serviceName2" value="automaticEbayDisputeNotPay"/> <entity-one value-field="ebayPrefDispute1" entity-name="EbayProductStorePref"> <field-map field-name="productStoreId" from-field="parameters.productStoreId"/> <field-map field-name="autoPrefEnumId" from-field="autoPrefEnumId1"/> @@ -302,7 +302,7 @@ <script location="component://ebaystore/webapp/ebaystore/WEB-INF/actions/automationPreferences/GetDisputeInfo.groovy"/> </actions> <widgets> - <screenlet title="${uiLabelMap.EbayAutomaticDispute}" collapsible="true" name="AutomationDispute"> + <screenlet title="${uiLabelMap.EbayAutomatiionDisputeItems}" collapsible="true" name="AutomationDispute"> <include-form name="AutomationDisputeNotComplete" location="component://ebaystore/widget/EbaySellingManagerForms.xml"/> <include-form name="AutomationDisputeNotPay" location="component://ebaystore/widget/EbaySellingManagerForms.xml"/> </screenlet> |
Free forum by Nabble | Edit this page |