svn commit: r907182 - in /ofbiz/trunk/specialpurpose: ebay/src/org/ofbiz/ebay/ ebaystore/config/ ebaystore/servicedef/ ebaystore/src/org/ofbiz/ebaystore/ ebaystore/webapp/ebaystore/WEB-INF/ ebaystore/webapp/ebaystore/store/ 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: r907182 - in /ofbiz/trunk/specialpurpose: ebay/src/org/ofbiz/ebay/ ebaystore/config/ ebaystore/servicedef/ ebaystore/src/org/ofbiz/ebaystore/ ebaystore/webapp/ebaystore/WEB-INF/ ebaystore/webapp/ebaystore/store/ ebaystore/widget/

hansbak-2
Author: hansbak
Date: Sat Feb  6 07:16:28 2010
New Revision: 907182

URL: http://svn.apache.org/viewvc?rev=907182&view=rev
Log:

EbayStore component:
- function export product listing to ebay
- create product listing with checkfield to use inventory or not.

Added:
    ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/ebayApiKeywordSearch.ftl
    ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/productsearchExport.ftl
Modified:
    ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java
    ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml
    ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml
    ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java
    ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml
    ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreForms.xml
    ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreMenus.xml
    ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreScreens.xml

Modified: ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java?rev=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java (original)
+++ ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java Sat Feb  6 07:16:28 2010
@@ -177,7 +177,7 @@
         return result;
     }
 
-    private static Map buildDataItemsXml(DispatchContext dctx, Map context, StringBuffer dataItemsXml, String token, GenericValue prod) {
+    public static Map buildDataItemsXml(DispatchContext dctx, Map context, StringBuffer dataItemsXml, String token, GenericValue prod) {
         Locale locale = (Locale)context.get("locale");
         try {
             Delegator delegator = dctx.getDelegator();
@@ -220,13 +220,16 @@
                 }
 
                 // Buy it now is the optional value for a product that you send to eBay. Once this value is entered by user - this option allow user to win auction immediately.
-                GenericValue buyItNowPriceValue = EntityUtil.getFirst(EntityUtil.filterByDate(prod.getRelatedByAnd("ProductPrice", UtilMisc.toMap("productPricePurposeId", "EBAY", "productPriceTypeId", "MAXIMUM_PRICE"))));
-                String buyItNowPrice = null;
+                String buyItNowPrice = (String)context.get("buyItNowPrice");;
                 String buyItNowCurrencyUomId = null;
-                if (UtilValidate.isNotEmpty(buyItNowPriceValue)) {
-                    buyItNowPrice = buyItNowPriceValue.getString("price");
-                    buyItNowCurrencyUomId = buyItNowPriceValue.getString("currencyUomId");
+                if (UtilValidate.isEmpty(buyItNowPrice)) {
+                    GenericValue buyItNowPriceValue = EntityUtil.getFirst(EntityUtil.filterByDate(prod.getRelatedByAnd("ProductPrice", UtilMisc.toMap("productPricePurposeId", "EBAY", "productPriceTypeId", "MAXIMUM_PRICE"))));
+                    if (UtilValidate.isNotEmpty(buyItNowPriceValue)) {
+                        buyItNowPrice = buyItNowPriceValue.getString("price");
+                        buyItNowCurrencyUomId = buyItNowPriceValue.getString("currencyUomId");
+                    }
                 }
+                
 
                 Element itemElem = UtilXml.addChildElement(itemRequestElem, "Item", itemDocument);
                 UtilXml.addChildElementValue(itemElem, "Country", (String)context.get("country"), itemDocument);
@@ -240,6 +243,32 @@
                 UtilXml.addChildElementValue(itemElem, "ListingDuration", (String)context.get("listingDuration"), itemDocument);
                 UtilXml.addChildElementValue(itemElem, "Quantity", qnt, itemDocument);
 
+                String listingFormat = "";
+                if (UtilValidate.isNotEmpty(context.get("listingFormat"))) {
+                 listingFormat = (String) context.get("listingFormat");
+                    UtilXml.addChildElementValue(itemElem, "ListingType", listingFormat, itemDocument);
+                }
+                if (listingFormat.equals("FixedPriceItem")) {
+                    Element startPriceElem = UtilXml.addChildElementValue(itemElem, "StartPrice", startPrice, itemDocument);
+                    if (UtilValidate.isEmpty(startPriceCurrencyUomId)) {
+                        startPriceCurrencyUomId = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");
+                    }
+                    startPriceElem.setAttribute("currencyID", startPriceCurrencyUomId);
+                }else{
+                    Element startPriceElem = UtilXml.addChildElementValue(itemElem, "StartPrice", startPrice, itemDocument);
+                    if (UtilValidate.isEmpty(startPriceCurrencyUomId)) {
+                        startPriceCurrencyUomId = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");
+                    }
+                    startPriceElem.setAttribute("currencyID", startPriceCurrencyUomId);
+                    if (UtilValidate.isNotEmpty(buyItNowPrice)) {
+                        Element buyNowPriceElem = UtilXml.addChildElementValue(itemElem, "BuyItNowPrice", buyItNowPrice, itemDocument);
+                    if (UtilValidate.isEmpty(buyItNowCurrencyUomId)) {
+                        buyItNowCurrencyUomId = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");
+                    }
+                    buyNowPriceElem.setAttribute("currencyID", buyItNowCurrencyUomId);
+                    }
+                }
+
                 ProductContentWrapper pcw = new ProductContentWrapper(dctx.getDispatcher(), prod, locale, "text/html");
                 StringUtil.StringWrapper ebayDescription = pcw.get("EBAY_DESCRIPTION");
                 if (UtilValidate.isNotEmpty(ebayDescription.toString())) {
@@ -262,17 +291,19 @@
                     Element pictureDetails = UtilXml.addChildElement(itemElem, "PictureDetails", itemDocument);
                     UtilXml.addChildElementValue(pictureDetails, "PictureURL", webSiteUrl + ebayImage, itemDocument);
                 }
+
                 setPaymentMethodAccepted(itemDocument, itemElem, context);
                 setMiscDetails(itemDocument, itemElem, context, delegator);
-                String primaryCategoryId = "";
                 String categoryCode = (String)context.get("ebayCategory");
+                String primaryCategoryId = "";
                 if (categoryCode != null) {
-                    String[] params = categoryCode.split("_");
-
-                    if (params == null || params.length != 3) {
-                        ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.parametersNotCorrectInGetEbayCategories", locale));
-                    } else {
-                        primaryCategoryId = params[1];
+                    if (categoryCode.indexOf("_") != -1) {
+                        String[] params = categoryCode.split("_");
+                        if (params == null || params.length != 3) {
+                            ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "productsExportToEbay.parametersNotCorrectInGetEbayCategories", locale));
+                        }
+                    }else{
+                        primaryCategoryId = categoryCode;
                     }
                 } else {
                     GenericValue productCategoryValue = EntityUtil.getFirst(EntityUtil.filterByDate(delegator.findByAnd("ProductCategoryAndMember", UtilMisc.toMap("productCategoryTypeId", "EBAY_CATEGORY", "productId", prod.getString("productId")))));
@@ -280,22 +311,10 @@
                         primaryCategoryId = productCategoryValue.getString("categoryName");
                     }
                 }
+
                 Element primaryCatElem = UtilXml.addChildElement(itemElem, "PrimaryCategory", itemDocument);
                 UtilXml.addChildElementValue(primaryCatElem, "CategoryID", primaryCategoryId, itemDocument);
 
-                Element startPriceElem = UtilXml.addChildElementValue(itemElem, "StartPrice", startPrice, itemDocument);
-                if (UtilValidate.isEmpty(startPriceCurrencyUomId)) {
-                    startPriceCurrencyUomId = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");
-                }
-                startPriceElem.setAttribute("currencyID", startPriceCurrencyUomId);
-
-                if (UtilValidate.isNotEmpty(buyItNowPrice)) {
-                    Element buyNowPriceElem = UtilXml.addChildElementValue(itemElem, "BuyItNowPrice", buyItNowPrice, itemDocument);
-                if (UtilValidate.isEmpty(buyItNowCurrencyUomId)) {
-                    buyItNowCurrencyUomId = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD");
-                }
-                buyNowPriceElem.setAttribute("currencyID", buyItNowCurrencyUomId);
-                }
                 //Debug.logInfo("The generated string is ======= " + UtilXml.writeXmlDocument(itemDocument), module);
                 dataItemsXml.append(UtilXml.writeXmlDocument(itemDocument));
             } catch (Exception e) {
@@ -566,7 +585,7 @@
         return results;
     }
 
-    private static Map exportToEbayResponse(String msg, GenericValue product) {
+    public static Map exportToEbayResponse(String msg, GenericValue product) {
         Map result = ServiceUtil.returnSuccess();
         try {
             Document docResponse = UtilXml.readXmlDocument(msg, true);
@@ -591,4 +610,11 @@
         }
         return result;
     }
+    public static List<String> getProductExportSuccessMessageList(){
+        return productExportSuccessMessageList;
+    }
+
+    public static List<String> getproductExportFailureMessageList(){
+        return productExportFailureMessageList;
+    }
 }

Modified: ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml?rev=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml Sat Feb  6 07:16:28 2010
@@ -172,7 +172,7 @@
     <property key="EbayBlockItemOutOfStock">
         <value xml:lang="en">Block items out of stock</value>
     </property>
-    
+
     <!-- ebay inventory -->
     <property key="EbayReserveProductFrom">
         <value xml:lang="en">Reserve Product From</value>
@@ -186,4 +186,17 @@
     <property key="EbayUpdateInventoryStatus">
         <value xml:lang="en">Update Inventory Status</value>
     </property>
+    <property key="FormFieldTitle_buyItNowPrice">
+        <value xml:lang="en">Buy It Now price</value>
+        <value xml:lang="th">ราคาสุทธิ</value>
+    </property>
+    <property key="eBayOnlineAuction">
+        <value xml:lang="en">Online Auction</value>
+    </property>
+    <property key="eBayFixedPrice">
+        <value xml:lang="en">Fixed Price</value>
+    </property>
+    <property key="requireEbayInventory">
+        <value xml:lang="en">Require eBay Inventory</value>
+    </property>
 </resource>

Modified: ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml?rev=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml Sat Feb  6 07:16:28 2010
@@ -252,5 +252,41 @@
         <attribute name="quantity" type="BigDecimal" mode="IN" optional="false"></attribute>
         <attribute name="actionType" type="String" mode="IN" optional="false"></attribute>
     </service>
+    <service name="exportProductsFromEbayStore" engine="java" transaction-timeout="3600"
+        location="org.ofbiz.ebaystore.EbayStore" invoke="exportProductsFromEbayStore" auth="true">
+        <description>Export categories in store to eBay store</description>
+        <attribute name="productStoreId" type="String" mode="IN" optional="false"/>
+        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute type="String" mode="IN" name="webSiteUrl" optional="false"/>
+        <attribute name="requireEbayInventory" type="String" mode="IN" optional="true"/>
+        <attribute name="listingTypeAuc" type="String" mode="IN" optional="true"/>
+        <attribute name="listingDurationAuc" type="String" mode="IN" optional="true"/>
+        <attribute name="listingTypeFixed" type="String" mode="IN" optional="true"/>
+        <attribute name="listingDurationFixed" type="String" mode="IN" optional="true"/>
+        <attribute name="quantity" type="String" mode="IN" optional="false"/>
+        <attribute name="country" type="String" mode="IN" optional="false"/>
+        <attribute name="location" type="String" mode="IN" optional="false"/>
+        <attribute name="payPalEmail" type="String" mode="IN" optional="true"/>
+        <attribute name="customXml" type="String" mode="IN" optional="false"  allow-html="any"/>
+        <attribute type="String" mode="IN" name="prodCatalogId" optional="true"/>
+        <attribute type="String" mode="IN" name="productCategoryId" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentPayPal" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentVisaMC" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentAmEx" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentDiscover" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentCCAccepted" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentCashInPerson" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentCashOnPickup" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentCOD" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentCODPrePayDelivery" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentMOCC" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentMoneyXferAccepted" optional="true"/>
+        <attribute type="String" mode="IN" name="paymentPersonalCheck" optional="true"/>
+    </service>
     
+    <service name="updateEbayProductStoreInventory" default-entity-name="EbayProductStoreInventory" engine="entity-auto" invoke="update" auth="true">
+        <description>Update EbayProductStoreInventory entity</description>
+        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="nonpk" mode="IN" optional="true"/>
+    </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=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java Sat Feb  6 07:16:28 2010
@@ -23,6 +23,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.math.BigDecimal;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.Calendar;
@@ -1633,4 +1634,123 @@
        }
        return result;
    }
+    public static Map<String, Object> exportProductsFromEbayStore(DispatchContext dctx, Map context){
+        Map<String,Object> result = FastMap.newInstance();
+        Locale locale = (Locale) context.get("locale");
+        Delegator delegator = dctx.getDelegator();
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+        Map<String, Object> eBayConfigResult = EbayHelper.buildEbayConfig(context, delegator);
+        Map response = null;
+        try{
+            GenericValue product = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId",context.get("productId").toString()));
+            int intAtp = 1;
+            String facilityId = "";
+            if (UtilValidate.isNotEmpty(context.get("requireEbayInventory")) && "on".equals(context.get("requireEbayInventory").toString())) {
+                GenericValue ebayProductStore = EntityUtil.getFirst(EntityUtil.filterByDate(delegator.findByAnd("EbayProductStoreInventory", UtilMisc.toMap("productStoreId", context.get("productStoreId").toString(), "productId", context.get("productId")))));
+                if (UtilValidate.isNotEmpty(ebayProductStore)) {
+                    facilityId = ebayProductStore.getString("facilityId");
+                    BigDecimal atp = ebayProductStore.getBigDecimal("availableToPromiseListing");
+                    intAtp = atp.intValue();
+                    if (intAtp == 0) {
+                        result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_FAIL);
+                        result.put(ModelService.ERROR_MESSAGE, "ATP is not enough, can not create listing.");
+                    }
+                }
+            }
+            GenericValue userLogin = (GenericValue) context.get("userLogin");
+            if (UtilValidate.isNotEmpty(context.get("productCategoryId"))) {
+                GenericValue prodCategoryMember = EntityUtil.getFirst(EntityUtil.filterByDate(delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productCategoryId", context.get("productCategoryId"),"productId", context.get("productId")))));
+                if (UtilValidate.isNotEmpty(prodCategoryMember)) {
+                    GenericValue prodCategoryRole = EntityUtil.getFirst(EntityUtil.filterByDate(delegator.findByAnd("ProductCategoryRole", UtilMisc.toMap("productCategoryId", prodCategoryMember.get("productCategoryId").toString(), "partyId", userLogin.get("partyId"),"roleTypeId", "EBAY_ACCOUNT"))));
+                    if (UtilValidate.isNotEmpty(prodCategoryRole)) {
+                        context.put("ebayCategory", prodCategoryRole.get("comments"));
+                    } else {
+                        result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_FAIL);
+                        result.put(ModelService.ERROR_MESSAGE, "Category not found for this product on ebay.");
+                    }
+                }
+            } else {
+                List<GenericValue> prodCategoryMember = EntityUtil.filterByDate(delegator.findByAnd("ProductCategoryMember", UtilMisc.toMap("productId", context.get("productId"))));
+                Iterator prodCategoryMemberIter = prodCategoryMember.iterator();
+                while (prodCategoryMemberIter.hasNext()) {
+                    GenericValue prodCategory = (GenericValue) prodCategoryMemberIter.next();
+                    GenericValue prodCatalogCategory = EntityUtil.getFirst(EntityUtil.filterByDate(delegator.findByAnd("ProdCatalogCategory", UtilMisc.toMap("prodCatalogId", context.get("prodCatalogId"), "productCategoryId", prodCategory.get("productCategoryId").toString()))));
+                    if (UtilValidate.isNotEmpty(prodCatalogCategory)) {
+                        GenericValue prodCategoryRole = EntityUtil.getFirst(EntityUtil.filterByDate(delegator.findByAnd("ProductCategoryRole", UtilMisc.toMap("productCategoryId", prodCatalogCategory.get("productCategoryId").toString(), "partyId", userLogin.get("partyId"),"roleTypeId", "EBAY_ACCOUNT"))));
+                        if (UtilValidate.isNotEmpty(prodCategoryRole)) {
+                            context.put("ebayCategory", prodCategoryRole.get("comments"));
+                        } else {
+                            result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_FAIL);
+                            result.put(ModelService.ERROR_MESSAGE, "Category not found for this product on ebay.");
+                        }
+                    }
+                }
+            }
+
+            if (intAtp != 0) {
+                if (UtilValidate.isNotEmpty(context.get("listingTypeAuc")) && "on".equals(context.get("listingTypeAuc").toString())) {
+                    context.put("listingFormat", "Chinese");
+                    context.put("listingDuration",  context.get("listingDurationAuc").toString());
+                    
+                    StringBuffer dataItemsXml = new StringBuffer();
+                    Map resultMap = ProductsExportToEbay.buildDataItemsXml(dctx, context, dataItemsXml, eBayConfigResult.get("token").toString(), product);
+                    if (!ServiceUtil.isFailure(resultMap)) {
+                        response = postItem(eBayConfigResult.get("xmlGatewayUri").toString(), dataItemsXml, eBayConfigResult.get("devID").toString(), eBayConfigResult.get("appID").toString(), eBayConfigResult.get("certID").toString(), "AddItem", eBayConfigResult.get("compatibilityLevel").toString(), eBayConfigResult.get("siteID").toString());
+                        if (ServiceUtil.isFailure(response)) {
+                            return ServiceUtil.returnFailure(ServiceUtil.getErrorMessage(response));
+                        }
+                        if (UtilValidate.isNotEmpty(response)) {
+                            ProductsExportToEbay.exportToEbayResponse((String) response.get("successMessage"), product);
+                        }
+                    } else {
+                        return ServiceUtil.returnFailure(ServiceUtil.getErrorMessage(resultMap));
+                    }
+                }
+
+                if (UtilValidate.isNotEmpty(context.get("listingTypeFixed")) && "on".equals(context.get("listingTypeFixed").toString())) {
+                    context.put("listingFormat", "FixedPriceItem");
+                    context.put("listingDuration", context.get("listingDurationFixed").toString());
+                    
+                    StringBuffer dataItemsXml = new StringBuffer();
+                    Map resultMap = ProductsExportToEbay.buildDataItemsXml(dctx, context, dataItemsXml, eBayConfigResult.get("token").toString(), product);
+                    if (!ServiceUtil.isFailure(resultMap)) {
+                        response = postItem(eBayConfigResult.get("xmlGatewayUri").toString(), dataItemsXml, eBayConfigResult.get("devID").toString(), eBayConfigResult.get("appID").toString(), eBayConfigResult.get("certID").toString(), "AddItem", eBayConfigResult.get("compatibilityLevel").toString(), eBayConfigResult.get("siteID").toString());
+                        if (ServiceUtil.isFailure(response)) {
+                            return ServiceUtil.returnFailure(ServiceUtil.getErrorMessage(response));
+                        }
+                        if (UtilValidate.isNotEmpty(response)) {
+                            ProductsExportToEbay.exportToEbayResponse((String) response.get("successMessage"), product);
+                        }
+                    } else {
+                        return ServiceUtil.returnFailure(ServiceUtil.getErrorMessage(resultMap));
+                    }
+                }
+            }
+
+            
+            if (UtilValidate.isNotEmpty(productExportEbay.getProductExportSuccessMessageList())) {
+                if ((facilityId != "")  && (intAtp != 0)) {
+                    int newAtp = intAtp - 1;
+                    Map<String,Object> inMap = FastMap.newInstance();
+                    inMap.put("productStoreId", context.get("productStoreId").toString());
+                    inMap.put("facilityId", facilityId);
+                    inMap.put("productId",context.get("productId"));
+                    inMap.put("availableToPromiseListing", new BigDecimal(newAtp));
+                    inMap.put("userLogin",context.get("userLogin"));
+                    dispatcher.runSync("updateEbayProductStoreInventory", inMap);
+                }
+                result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
+                result.put(ModelService.SUCCESS_MESSAGE, "Export products listing success..");
+            }
+
+            if (UtilValidate.isNotEmpty(productExportEbay.getproductExportFailureMessageList())) {
+                result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_FAIL);
+                result.put(ModelService.ERROR_MESSAGE_LIST, productExportEbay.getproductExportFailureMessageList());
+            }
+
+        }catch (Exception e) {
+            return ServiceUtil.returnError(e.getMessage());
+        }
+        return result;
+    }
 }
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml?rev=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml Sat Feb  6 07:16:28 2010
@@ -170,6 +170,22 @@
         <event type="service" invoke="updateEbayProductQtyReserved"/>
         <response name="success" type="view" value="ebayLoadStoreInventory"/>
     </request-map>
+    <request-map uri="exportProductListing">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="exportProductListing"/>
+        <response name="error" type="view" value="exportProductListing"/>
+    </request-map>
+    <request-map uri="productsearch">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="productsearch"/>
+        <response name="error" type="view" value="productsearch"/>
+    </request-map>
+    <request-map uri="exportProductsFromEbayStore">
+        <security https="true" auth="true"/>
+        <event type="service-multi" invoke="exportProductsFromEbayStore"/>
+        <response name="success" type="view" value="exportProductListing"/>
+        <response name="error" type="view" value="exportProductListing"/>
+    </request-map>
  <!-- end of request mappings -->
     
     <!-- View Mappings -->
@@ -196,5 +212,8 @@
     <view-map name="ebayLoadStoreInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayLoadStoreInventory"/>
     <view-map name="reserveEbayProductInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#reserveEbayProductInventory"/>
     <view-map name="updateQuantityReserved" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#updateQuantityReserved"/>
+    
+    <view-map name="exportProductListing" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#exportProductListing"/>
+    <view-map name="productsearch" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#productsearchexport"/>
     <!-- end of view mappings -->
 </site-conf>

Added: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/ebayApiKeywordSearch.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/ebayApiKeywordSearch.ftl?rev=907182&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/ebayApiKeywordSearch.ftl (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/ebayApiKeywordSearch.ftl Sat Feb  6 07:16:28 2010
@@ -0,0 +1,143 @@
+<#--
+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.
+-->
+
+<script type="text/javascript">
+//<![CDATA[
+    function selectChange(formId, elementId) {
+        if (elementId.id == 'searchCatalogId') {
+            if ($('searchCategoryId').selectedIndex) {
+               $('searchCategoryId')[$('searchCategoryId').selectedIndex].value = "";
+           } else {
+               $('searchCategoryId').value = "";
+           }
+        }
+        formId.action="<@ofbizUrl>main</@ofbizUrl>";
+        formId.submit();
+    }
+    function submit (id) {
+      var formId = id;
+      if(!$('searchCatalogId').empty()){
+          $(formId).submit();
+      } else {
+          if($('searchCatalogId').empty()) {
+             $('catalogErrorMessage').show();
+          }
+      }
+    }
+//]]>
+</script>
+<div class="screenlet">
+  <div class="screenlet-title-bar">
+    <h3>${uiLabelMap.ProductAdvancedSearchInCategory}</h3>
+  </div>
+  <div class="screenlet-body">
+    <form id="productSearchform" method="post" action="<@ofbizUrl>productsearch</@ofbizUrl>" style="margin: 0;">
+    <input type="hidden" name="productStoreId" value="${parameters.productStoreId?if_exists}">
+      <fieldset>
+        <input type="hidden" name="VIEW_SIZE" value="25"/>
+        <input type="hidden" name="PAGING" value="Y"/>
+        <input type="hidden" name="noConditionFind" value="Y"/>
+        <table cellspacing="0" class="basic-table">
+          <tr>
+              <td class="label" align="right" valign="top">
+                ${uiLabelMap.ProductCatalog}:
+              </td>
+              <td valign="middle">
+                <div>
+                  <select name="SEARCH_CATALOG_ID" id="searchCatalogId" onchange="javascript:selectChange($('advToKeywordSearchform'), $('searchCatalogId'));" class="required">
+                    <#list prodCatalogList as prodCatalog>
+                      <#assign displayDesc = prodCatalog.catalogName?default("${uiLabelMap.ProductNoDescription}") />
+                      <#if (18 < displayDesc?length)>
+                        <#assign displayDesc = displayDesc[0..15] + "...">
+                      </#if>
+                      <option value="${prodCatalog.prodCatalogId}" <#if searchCatalogId?if_exists == prodCatalog.prodCatalogId> selected="selected"</#if>>${displayDesc} [${prodCatalog.prodCatalogId}]</option>
+                    </#list>
+                  </select>
+                  <span id="catalogErrorMessage" style="display:none;" class="errorMessage">${uiLabelMap.CommonRequired}</span>
+                </div>
+              </td>
+            </tr>
+            <tr>
+              <td class="label" align="right" valign="top">
+                ${uiLabelMap.ProductCategory}:
+              </td>
+              <td valign="middle">
+                <div>
+                  <#if categoryIds?has_content>
+                    <select name="SEARCH_CATEGORY_ID" id="searchCategoryId">
+                      <option value="">- ${uiLabelMap.ProductAnyCategory} -</option>
+                      <#list categoryIds as categoryId>
+                        <#assign productCategory = delegator.findOne("ProductCategory", {"productCategoryId" : categoryId}, true) />
+                        <#assign displayDesc = productCategory.categoryName?default("${uiLabelMap.ProductNoDescription}") />
+                        <#if (18 < displayDesc?length)>
+                          <#assign displayDesc = displayDesc[0..15] + "...">
+                        </#if>
+                        <option value="${productCategory.productCategoryId}">${displayDesc} [${productCategory.productCategoryId}]</option>
+                      </#list>
+                    </select>
+                  <#else>
+                    <input type="text" id="searchCategoryId" name="SEARCH_CATEGORY_ID" size="20" maxlength="20" value="${requestParameters.SEARCH_CATEGORY_ID?if_exists}" />
+                    <a href="javascript:call_fieldlookup2($('searchCategoryId'),'LookupProductCategory');"><img src='/images/fieldlookup.gif' width='15' height='14' border='0' alt="${uiLabelMap.CommonClickHereForFieldLookup}" /></a>
+                  </#if>
+                </div>
+              </td>
+          </tr>
+          <tr>
+            <td class="label" align="right" valign="top">
+              ${uiLabelMap.ProductProductName}:
+            </td>
+            <td valign="middle">
+              <div>
+                <input type="text" name="SEARCH_PRODUCT_NAME" size="20" value="${requestParameters.SEARCH_PRODUCT_NAME?if_exists}" />
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td class="label" align="right" valign="top">
+              ${uiLabelMap.ProductInternalName}:
+            </td>
+            <td valign="middle">
+              <div>
+                <input type="text" name="SEARCH_INTERNAL_PROD_NAME" size="20" value="${requestParameters.SEARCH_INTERNAL_PROD_NAME?if_exists}" />
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td class="label" align="right" valign="top">
+              ${uiLabelMap.ProductKeywords}:
+            </td>
+            <td valign="middle">
+              <div>
+                <input type="text" name="SEARCH_STRING" size="40" value="${requestParameters.SEARCH_STRING?if_exists}" />&nbsp;
+                ${uiLabelMap.CommonAny}<input type="radio" name="SEARCH_OPERATOR" value="OR" <#if searchOperator == "OR">checked</#if> />
+                ${uiLabelMap.CommonAll}<input type="radio" name="SEARCH_OPERATOR" value="AND" <#if searchOperator == "AND">checked</#if> />
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" colspan="2">
+              <hr/>
+              <a href="javascript:submit($('productSearchform'));" class="buttontext">${uiLabelMap.CommonFind}</a>
+            </td>
+          </tr>
+        </table>
+      </fieldset>
+    </form>
+  </div>
+</div>
\ No newline at end of file

Added: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/productsearchExport.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/productsearchExport.ftl?rev=907182&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/productsearchExport.ftl (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/store/productsearchExport.ftl Sat Feb  6 07:16:28 2010
@@ -0,0 +1,200 @@
+<#--
+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.
+-->
+<script language="JavaScript" type="text/javascript">
+    function changeEbayDuration(value) {
+    var listingDuration = document.ProductsExportToEbay.listingDuration;
+    listingDuration.options.length = 0;
+     for (i = listingDuration.options.length; i >= 0; i--) {
+        listingDuration.options[i] = null;
+     }
+        if (value == "FixedPriceItem"){
+            listingDuration.options[0] =  new Option("3 ${uiLabelMap.CommonDays}","Days_3");
+            listingDuration.options[1] =  new Option("5 ${uiLabelMap.CommonDays}","Days_5");
+            listingDuration.options[2] =  new Option("7 ${uiLabelMap.CommonDays}","Days_7");
+            listingDuration.options[3] =  new Option("10 ${uiLabelMap.CommonDays}","Days_10");
+            listingDuration.options[4] =  new Option("30 ${uiLabelMap.CommonDays}","Days_30");
+            listingDuration.options[5] =  new Option("Good 'Til Cancelled","2147483647");
+        }else{
+            listingDuration.options[0] =  new Option("1 ${uiLabelMap.CommonDay}","Days_1");
+            listingDuration.options[1] =  new Option("3 ${uiLabelMap.CommonDays}","Days_3");
+            listingDuration.options[2] =  new Option("5 ${uiLabelMap.CommonDays}","Days_5");
+            listingDuration.options[3] =  new Option("7 ${uiLabelMap.CommonDays}","Days_7");
+            listingDuration.options[4] =  new Option("10 ${uiLabelMap.CommonDays} ($0.40)","Days_10");
+        }
+     }
+</script>
+<div>
+    <form id="ProductsExportToEbay" method="post" action="<@ofbizUrl>exportProductsFromEbayStore</@ofbizUrl>" name="ProductsExportToEbay">
+        <input type="hidden" name="productStoreId" value="${productStoreId?if_exists}">
+        <input type="hidden" name="prodCatalogId" value="${parameters.SEARCH_CATALOG_ID?if_exists}">
+        <input type="hidden" name="productCategoryId" value="${parameters.SEARCH_CATEGORY_ID?if_exists}">
+        <#if !productIds?has_content>
+            <div><h2>${uiLabelMap.ProductNoResultsFound}.</h2></div>
+        </#if>
+
+        <#if productIds?has_content>
+        <table border="0" cellpadding="2" cellspacing="0">
+            <tr>
+                <td align="right" class="label">${uiLabelMap.CommonCountry}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <select name="country">
+                        <#if countries?exists>
+                            <#list countries as country>
+                                <option value="${country.geoCode}" <#if countryCode?exists && countryCode == country.geoCode>selected</#if>>${country.get("geoName",locale)}</option>
+                            </#list>
+                        </#if>
+                    </select>
+                </td>
+            </tr>
+            <tr>
+                <td align="right" class="label">${uiLabelMap.FormFieldTitle_location}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <input type="text" name="location" size="50" maxlength="50" value="${parameters.location?if_exists}" />
+                </td>
+            </tr>
+            <tr>
+                <td align="right" class="label">${uiLabelMap.FormFieldTitle_webSiteUrl}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <input type="text" name="webSiteUrl" size="100" value="${webSiteUrl?if_exists}"/>
+                </td>
+            </tr>
+            <tr>
+                <td align="center" colspan="3"><b><u>${uiLabelMap.FormFieldTitle_paymentMethodsAccepted}</u></b></td>
+            </tr>
+            <tr>
+                <td colspan="3">
+                    <table class="basic-table" cellspacing="0">
+                        <tr>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentPayPal}</td>
+                            <td width="2%"><input type="checkbox" name="paymentPayPal" <#if parameters.paymentPayPal?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentVisaMC}</td>
+                            <td width="2%"><input type="checkbox" name="paymentVisaMC" <#if parameters.paymentVisaMC?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentAmEx}</td>
+                            <td width="2%"><input type="checkbox" name="paymentAmEx" <#if parameters.paymentAmEx?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentDiscover}</td>
+                            <td width="2%"><input type="checkbox" name="paymentDiscover" <#if parameters.paymentDiscover?exists>checked</#if> /></td>
+                        </tr>
+                        <tr>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentMOCC}</td>
+                            <td width="2%"><input type="checkbox" name="paymentMOCC" <#if parameters.paymentMOCC?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentPersonalCheck}</td>
+                            <td width="2%"><input type="checkbox" name="paymentPersonalCheck" <#if parameters.paymentPersonalCheck?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCCAccepted}</td>
+                            <td width="2%"><input type="checkbox" name="paymentCCAccepted" <#if parameters.paymentCCAccepted?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCashInPerson}</td>
+                            <td width="2%"><input type="checkbox" name="paymentCashInPerson" <#if parameters.paymentCashInPerson?exists>checked</#if> /></td>
+                        </tr>
+                        <tr>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCashOnPickup}</td>
+                            <td width="2%"><input type="checkbox" name="paymentCashOnPickup" <#if parameters.paymentCashOnPickup?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCOD}</td>
+                            <td width="2%"><input type="checkbox" name="paymentCOD" <#if parameters.paymentCOD?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCODPrePayDelivery}</td>
+                            <td width="2%"><input type="checkbox" name="paymentCODPrePayDelivery" <#if parameters.paymentCODPrePayDelivery?exists>checked</#if> /></td>
+                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentMoneyXferAccepted}</td>
+                            <td width="2%"><input type="checkbox" name="paymentMoneyXferAccepted" <#if parameters.paymentMoneyXferAccepted?exists>checked</#if> /></td>
+                        </tr>
+                    </table>
+                </td>
+            </tr>
+            <tr>
+                <td align="right" class="label">${uiLabelMap.FormFieldTitle_payPalEmail}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <input type="text" name="payPalEmail" size="50" maxlength="50" value="${parameters.payPalEmail?if_exists}" />
+                </td>
+            </tr>
+            <tr>
+                <td align="right" class="label">${uiLabelMap.FormFieldTitle_customXml}</td>
+                <td>&nbsp;</td>
+                <td>
+                    <textarea cols="60" rows="6" wrap="soft" name="customXml"> ${(ebayConfig.customXml)?if_exists} </textarea>
+                </td>
+            </tr>
+            <#assign rowCount = 0 />
+            <#list productIds as productId>
+            <tr>
+                <td colspan="3">
+                <hr/>
+                <b>${productId}</b>
+                <input type="hidden" name="productId_o_${rowCount}" value="${productId}"/>
+                    <table class="basic-table" cellspacing="0" width="50%">
+                        <tr>
+                            <td colspan="2">
+                                <input type="checkbox" name="requireEbayInventory_o_${rowCount}" value="on"/>
+                            </td>
+                            <td colspan="2">${uiLabelMap.requireEbayInventory}</td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <input type="checkbox" name="listingTypeAuc_o_${rowCount}" value="on"/>
+                            </td>
+                            <td>${uiLabelMap.eBayOnlineAuction}</td>
+                            <td>${uiLabelMap.FormFieldTitle_listingDuration}</td>
+                            <td>
+                                    <select name="listingDurationAuc_o_${rowCount}">
+                                        <option value="Days_1">1 ${uiLabelMap.CommonDay}</option>
+                                        <option value="Days_3">3 ${uiLabelMap.CommonDays}</option>
+                                        <option value="Days_5">5 ${uiLabelMap.CommonDays}</option>
+                                        <option value="Days_7">7 ${uiLabelMap.CommonDays}</option>
+                                        <option value="Days_10">10 ${uiLabelMap.CommonDays}</option>
+                                    </select>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <input type="checkbox" name="listingTypeFixed_o_${rowCount}" value="on"/>
+                            </td>
+                            <td>${uiLabelMap.eBayFixedPrice}</td>
+                            <td>${uiLabelMap.FormFieldTitle_listingDuration}</td>
+                            <td>
+                                    <select name="listingDurationFixed_o_${rowCount}">
+                                        <option value="Days_3">3 ${uiLabelMap.CommonDays}</option>
+                                        <option value="Days_5">5 ${uiLabelMap.CommonDays}</option>
+                                        <option value="Days_7">7 ${uiLabelMap.CommonDays}</option>
+                                        <option value="Days_10">10 ${uiLabelMap.CommonDays}</option>
+                                        <option value="Days_30">30 ${uiLabelMap.CommonDays}</option>
+                                        <option value="2147483647">Good 'Til Cancelled</option>
+                                    </select>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td colspan="2">${uiLabelMap.CommonQuantity}</td>
+                            <td colspan="2">
+                                <input type="text" name="quantity_o_${rowCount}" size="12" maxlength="12" value="<#if parameters.quantity?exists>${parameters.quantity?if_exists}<#else>1</#if>" />
+                            </td>
+                        </tr>
+                    </table>
+                </td>
+            </tr>
+            <#assign rowCount=rowCount + 1/>
+            </#list>
+            <tr>
+                <td colspan=2>&nbsp;</td>
+                <td>
+                    <input type="submit" value="${uiLabelMap.EbayExportToEbay}" name="submitButton" class="smallSubmit">
+                </td>
+            </tr>
+        </table>
+        </#if>
+    </form>
+</div>
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreForms.xml?rev=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreForms.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreForms.xml Sat Feb  6 07:16:28 2010
@@ -26,7 +26,7 @@
         odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
         <field name="productStoreId" title="${uiLabelMap.ProductProductStore}" >
             <drop-down current="selected" >
-                <list-options list-name="ebayStoreList" description="${storeName} [${productStoreId}]" key-name="productStoreId"/>                
+                <list-options list-name="ebayStoreList" description="${storeName} [${productStoreId}]" key-name="productStoreId"/>
             </drop-down>
         </field>
         <field name="submitButton" ><submit button-type="button"/></field>
@@ -38,7 +38,7 @@
         </actions>
         <field name="productStoreId" title="Account" >
             <drop-down current="selected">
-                <list-options list-name="stores"  description="${firstName} ${lastName}" key-name="productStoreId"/>                
+                <list-options list-name="stores"  description="${firstName} ${lastName}" key-name="productStoreId"/>
             </drop-down>
         </field>
         <field name="submitButton" ><submit button-type="button"/></field>

Modified: ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreMenus.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreMenus.xml?rev=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreMenus.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreMenus.xml Sat Feb  6 07:16:28 2010
@@ -63,6 +63,11 @@
                 <parameter param-name="productStoreId" value="${parameters.productStoreId}"/>
             </link>
         </menu-item>
+        <menu-item name="exportProductListing" title="Export Product Listing">
+            <link target="exportProductListing">
+                <parameter param-name="productStoreId" value="${parameters.productStoreId}"/>
+            </link>
+        </menu-item>
     </menu>
     <menu name="EbayFeedbackTabBar" selected-menuitem-context-field-name="eBayTabButtonItem" type="simple"
         default-selected-style="selected" menu-container-style="button-bar button-style-2">

Modified: ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreScreens.xml?rev=907182&r1=907181&r2=907182&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreScreens.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreScreens.xml Sat Feb  6 07:16:28 2010
@@ -542,4 +542,57 @@
             </widgets>
         </section>
     </screen>
+    <!-- Export product listing  -->
+    <screen name="exportProductListing">
+        <section>
+            <actions>
+                <set field="titleProperty" value="PageTitleAdvancedSearch"/>
+                <set field="headerItem" value="ebayStore"/>
+                <set field="tabButtonItem" value="exportProductListing"/>
+                <entity-condition entity-name="ProductCategory" list="productCategories">
+                    <condition-expr field-name="showInSelect" operator="not-equals" value="N"/>
+                    <order-by field-name="description"/>
+                </entity-condition>
+                <script location="component://product/webapp/catalog/WEB-INF/actions/find/advancedsearchoptions.groovy"/>
+                <script location="component://ebay/webapp/ebay/WEB-INF/actions/find/EbayAdvancedSearch.groovy"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="permission-decorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <platform-specific>
+                            <html><html-template location="component://ebaystore/webapp/ebaystore/store/ebayApiKeywordSearch.ftl"/></html>
+                        </platform-specific>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="productsearchexport">
+        <section>
+            <actions>
+                <set field="titleProperty" value="PageTitleSearchResults"/>
+                <set field="headerItem" value="ebayStore"/>
+                <set field="tabButtonItem" value="exportProductListing"/>
+                <entity-condition entity-name="Geo" list="countries">
+                    <condition-expr field-name="geoTypeId" value="COUNTRY"/>
+                    <order-by field-name="geoName"/>
+                </entity-condition>
+                <set field="productStoreId" from-field="parameters.productStoreId"/>
+                <entity-one entity-name="EbayConfig" value-field="ebayConfig">
+                    <field-map field-name="productStoreId" from-field="parameters.productStoreId"/>
+                </entity-one>
+                <script location="component://product/webapp/catalog/WEB-INF/actions/find/keywordsearch.groovy"/>
+                <script location="component://ebay/webapp/ebay/WEB-INF/actions/find/ProductsExportToEbay.groovy"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="permission-decorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <platform-specific>
+                            <html><html-template location="component://ebaystore/webapp/ebaystore/store/productsearchExport.ftl"/></html>
+                        </platform-specific>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
 </screens>
\ No newline at end of file