svn commit: r924187 - in /ofbiz/trunk/specialpurpose/ebaystore: config/ servicedef/ src/org/ofbiz/ebaystore/ widget/

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

svn commit: r924187 - in /ofbiz/trunk/specialpurpose/ebaystore: config/ servicedef/ src/org/ofbiz/ebaystore/ widget/

hansbak-2
Author: hansbak
Date: Wed Mar 17 08:08:00 2010
New Revision: 924187

URL: http://svn.apache.org/viewvc?rev=924187&view=rev
Log:
Ebay store update: Automatic repost a product listing when the duration time of the listing has ended. This service will start after the user has checked  'enable AutoRelistingItem' in auto preferences screen.

Modified:
    ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml
    ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml
    ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java
    ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.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=924187&r1=924186&r2=924187&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml Wed Mar 17 08:08:00 2010
@@ -296,4 +296,10 @@
     <property key="EbayActive">
         <value xml:lang="en">Active</value>
     </property>
+    <property key="EbayAutoRelistingItems">
+        <value xml:lang="en">Auto Relisting Items</value>
+    </property>
+    <property key="EbayAutoRelistingItemsDescription">
+        <value xml:lang="en">Auto Relisting Items when they are end item.</value>
+    </property>
 </resource>
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml?rev=924187&r1=924186&r2=924187&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml Wed Mar 17 08:08:00 2010
@@ -427,4 +427,10 @@ under the License.
         <attribute name="unsoldeSize" mode="OUT" type="Integer" optional="true"/>
         <attribute name="scheduledSize" mode="OUT" type="Integer" optional="true"/>
     </service>
+    <service name="autoRelistingItems" engine="java" transaction-timeout="7200"
+        location="org.ofbiz.ebaystore.EbayStoreAutoPreferences" invoke="autoRelistingItems" auth="false">
+        <description>Automatic service to re-listing items when They are end item</description>
+        <attribute name="jobId" mode="IN" type="String" optional="false"/>
+        <attribute name="productStoreId" mode="IN" type="String" optional="false"/>
+    </service>
 </services>
\ No newline at end of file

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=924187&r1=924186&r2=924187&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreAutoPreferences.java Wed Mar 17 08:08:00 2010
@@ -59,6 +59,7 @@ import com.ebay.sdk.ApiContext;
 import com.ebay.sdk.ApiException;
 import com.ebay.sdk.SdkException;
 import com.ebay.sdk.SdkSoapException;
+import com.ebay.sdk.call.AddItemCall;
 import com.ebay.sdk.call.AddOrderCall;
 import com.ebay.sdk.call.AddDisputeCall;
 import com.ebay.sdk.call.DeleteSellingManagerTemplateCall;
@@ -70,6 +71,7 @@ import com.ebay.soap.eBLBaseComponents.A
 import com.ebay.soap.eBLBaseComponents.AddOrderResponseType;
 import com.ebay.soap.eBLBaseComponents.AmountType;
 import com.ebay.sdk.call.RelistItemCall;
+import com.ebay.sdk.util.eBayUtil;
 import com.ebay.soap.eBLBaseComponents.AutomatedLeaveFeedbackEventCodeType;
 import com.ebay.soap.eBLBaseComponents.BuyerPaymentMethodCodeType;
 import com.ebay.soap.eBLBaseComponents.CommentTypeCodeType;
@@ -83,6 +85,8 @@ import com.ebay.soap.eBLBaseComponents.F
 import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType;
 import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType;
 import com.ebay.soap.eBLBaseComponents.ItemType;
+import com.ebay.soap.eBLBaseComponents.ListingDurationCodeType;
+import com.ebay.soap.eBLBaseComponents.ListingDurationDefinitionType;
 import com.ebay.soap.eBLBaseComponents.OrderType;
 import com.ebay.soap.eBLBaseComponents.ItemType;
 import com.ebay.soap.eBLBaseComponents.SellingManagerOrderStatusType;
@@ -1097,4 +1101,49 @@ public class EbayStoreAutoPreferences {
         return result;
     }
 
+    public static Map<String, Object> autoRelistingItems(DispatchContext dctx, Map<String, ? extends Object> context) {
+        Map<String, Object> itemObject = FastMap.newInstance();
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+        Delegator delegator = dctx.getDelegator();
+        Locale locale = (Locale) context.get("locale");
+        try {
+            GenericValue userLogin = delegator.findOne("UserLogin", false, "userLoginId", "system");
+            EntityCondition expression1 = EntityCondition.makeCondition("autoRelisting", EntityOperator.EQUALS, "Y");
+            EntityCondition expression2 = EntityCondition.makeCondition("endDateTime", EntityOperator.LESS_THAN, UtilDateTime.nowTimestamp());
+            EntityCondition expression3 = EntityCondition.makeCondition("itemId", EntityOperator.NOT_EQUAL, null);
+            List expressions = FastList.newInstance();
+            expressions.add(expression1);
+            expressions.add(expression2);
+            expressions.add(expression3);
+            EntityCondition cond = EntityCondition.makeCondition(expressions, EntityOperator.AND);
+            List<GenericValue> ebayProductListings = delegator.findList("EbayProductListing", cond , null, null, null, false);
+            for (int index = 0; index < ebayProductListings.size(); index++) {
+                Map<String, Object> inMap = FastMap.newInstance();
+                AddItemCall addItemCall = new AddItemCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+                GenericValue ebayProductListing = ebayProductListings.get(index);
+                ItemType item = EbayStoreHelper.prepareAddItem(delegator, ebayProductListing);
+                addItemCall.setItem(item);
+                itemObject.put("addItemCall", addItemCall);
+                itemObject.put("productListingId", ebayProductListing.getString("productListingId"));
+                inMap.put("itemObject", itemObject);
+                inMap.put("userLogin", userLogin);
+                Map<String, Object>result = dispatcher.runSync("exportProductEachItem", inMap);
+                String success = (String) result.get("responseMessage");
+                if ("success".equals(success)) {
+                    String duration = item.getListingDuration();
+                    if (duration.length() > 4) {
+                        Timestamp startDateTime = UtilDateTime.nowTimestamp();
+                        int durationInt = Integer.parseInt(duration.replace("DAYS_", ""));
+                        Timestamp endDateTime = UtilDateTime.addDaysToTimestamp(startDateTime, durationInt);
+                        ebayProductListing.set("startDateTime", startDateTime);
+                        ebayProductListing.set("endDateTime", endDateTime);
+                        ebayProductListing.store();
+                    }
+                }
+            }
+        } catch (Exception e) {
+            return ServiceUtil.returnError(e.getMessage());
+        }
+        return ServiceUtil.returnSuccess();
+    }
 }

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=924187&r1=924186&r2=924187&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java Wed Mar 17 08:08:00 2010
@@ -33,6 +33,7 @@ import javax.servlet.http.HttpServletReq
 import javolution.util.FastMap;
 
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilValidate;
@@ -57,11 +58,24 @@ import com.ebay.sdk.ApiLogging;
 import com.ebay.sdk.call.AddItemCall;
 import com.ebay.soap.eBLBaseComponents.AddItemRequestType;
 import com.ebay.soap.eBLBaseComponents.AddItemResponseType;
+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.GeteBayDetailsResponseType;
 import com.ebay.soap.eBLBaseComponents.ItemType;
+import com.ebay.soap.eBLBaseComponents.ListingDesignerType;
+import com.ebay.soap.eBLBaseComponents.ListingTypeCodeType;
+import com.ebay.soap.eBLBaseComponents.PictureDetailsType;
+import com.ebay.soap.eBLBaseComponents.ReturnPolicyType;
+import com.ebay.soap.eBLBaseComponents.ShippingDetailsType;
+import com.ebay.soap.eBLBaseComponents.ShippingServiceCodeType;
+import com.ebay.soap.eBLBaseComponents.ShippingServiceOptionsType;
+import com.ebay.soap.eBLBaseComponents.ShippingTypeCodeType;
 import com.ebay.soap.eBLBaseComponents.SiteCodeType;
 import com.ebay.soap.eBLBaseComponents.ShippingLocationDetailsType;
+import com.ebay.soap.eBLBaseComponents.VATDetailsType;
 
 import org.ofbiz.ebay.EbayHelper;
 
@@ -473,5 +487,120 @@ public class EbayStoreHelper {
         return ServiceUtil.returnSuccess();
     }
 
-
+    public static ItemType prepareAddItem(Delegator delegator, GenericValue attribute) {
+        ItemType item = new ItemType();
+        try {
+            List<GenericValue> attrs = delegator.findByAnd("EbayProductListingAttribute", UtilMisc.toMap("productListingId", attribute.getString("productListingId")));
+            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;
+    }
 }

Modified: ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml?rev=924187&r1=924186&r2=924187&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerForms.xml Wed Mar 17 08:08:00 2010
@@ -26,9 +26,7 @@ value="${bsh:billingAccount != null ? or
     <form name="EditAutomationRelistSoldItems" target="createEbayProductStorePref" type="single" default-map-name="ebayPrefRelisting" >
         <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" title="${uiLabelMap.CommonFromDate}"><date-time/></field>
-        <field name="condition2" title="${uiLabelMap.CommonThruDate}"><date-time/></field>
+        <field name="enabled" title ="${uiLabelMap.EbayAutoRelistingItems}" tooltip="${uiLabelMap.EbayAutoRelistingItemsDescription}"><check/></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=924187&r1=924186&r2=924187&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerScreens.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/widget/EbaySellingManagerScreens.xml Wed Mar 17 08:08:00 2010
@@ -279,7 +279,7 @@
             <actions>
                 <set field="headerItem" value="ebayStore"/>
                 <set field="autoPrefEnumId" value="EBAY_AUTO_RELISTING"/>
-                <set field="serviceName" value="automaticEbayRelistSoldItems"/>
+                <set field="serviceName" value="autoRelistingItems"/>
                 <entity-one value-field="ebayPrefRelisting" entity-name="EbayProductStorePref">
                     <field-map field-name="productStoreId" from-field="parameters.productStoreId"/>
                     <field-map field-name="autoPrefEnumId" from-field="autoPrefEnumId"/>