svn commit: r926496 - in /ofbiz/trunk/specialpurpose/ebaystore: servicedef/services.xml src/org/ofbiz/ebaystore/EbayStoreHelper.java webapp/ebaystore/WEB-INF/controller.xml

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

svn commit: r926496 - in /ofbiz/trunk/specialpurpose/ebaystore: servicedef/services.xml src/org/ofbiz/ebaystore/EbayStoreHelper.java webapp/ebaystore/WEB-INF/controller.xml

hansbak-2
Author: hansbak
Date: Tue Mar 23 08:40:43 2010
New Revision: 926496

URL: http://svn.apache.org/viewvc?rev=926496&view=rev
Log:
Ebaystore:  Service to upload tracking information from ofbiz to the order on the ebay site.(when the user already shipped the product to the buyer by ofbiz service.)

Modified:
    ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml
    ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java
    ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml

Modified: ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml?rev=926496&r1=926495&r2=926496&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml Tue Mar 23 08:40:43 2010
@@ -436,4 +436,9 @@ under the License.
         <attribute name="jobId" mode="IN" type="String" optional="false"/>
         <attribute name="productStoreId" mode="IN" type="String" optional="false"/>
     </service>
+    <service name="uploadTrackingInfoBackToEbay" engine="java" transaction-timeout="3600"
+        location="org.ofbiz.ebaystore.EbayStoreHelper" invoke="uploadTrackingInfoBackToEbay" auth="true">
+        <attribute name="productStoreId" mode="IN" type="String" optional="false"/>
+        <attribute name="orderId" type="String" mode="IN" optional="false"/>
+    </service>
 </services>
\ No newline at end of file

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=926496&r1=926495&r2=926496&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreHelper.java Tue Mar 23 08:40:43 2010
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.HashMap;
 import java.util.Set;
 import java.util.Iterator;
+import java.util.Calendar;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -56,25 +57,37 @@ import com.ebay.sdk.ApiContext;
 import com.ebay.sdk.ApiCredential;
 import com.ebay.sdk.ApiLogging;
 import com.ebay.sdk.call.AddItemCall;
+import com.ebay.sdk.call.AddOrderCall;
+import com.ebay.sdk.call.GetOrdersCall;
 import com.ebay.soap.eBLBaseComponents.AddItemRequestType;
 import com.ebay.soap.eBLBaseComponents.AddItemResponseType;
+import com.ebay.soap.eBLBaseComponents.AddOrderRequestType;
+import com.ebay.soap.eBLBaseComponents.AddOrderResponseType;
 import com.ebay.soap.eBLBaseComponents.AmountType;
 import com.ebay.soap.eBLBaseComponents.BuyerPaymentMethodCodeType;
 import com.ebay.soap.eBLBaseComponents.CategoryType;
 import com.ebay.soap.eBLBaseComponents.CountryCodeType;
 import com.ebay.soap.eBLBaseComponents.CurrencyCodeType;
+import com.ebay.soap.eBLBaseComponents.GetOrdersRequestType;
+import com.ebay.soap.eBLBaseComponents.GetOrdersResponseType;
 import com.ebay.soap.eBLBaseComponents.GeteBayDetailsResponseType;
 import com.ebay.soap.eBLBaseComponents.ItemType;
 import com.ebay.soap.eBLBaseComponents.ListingDesignerType;
 import com.ebay.soap.eBLBaseComponents.ListingTypeCodeType;
+import com.ebay.soap.eBLBaseComponents.OrderArrayType;
+import com.ebay.soap.eBLBaseComponents.OrderIDArrayType;
+import com.ebay.soap.eBLBaseComponents.OrderStatusCodeType;
+import com.ebay.soap.eBLBaseComponents.OrderType;
 import com.ebay.soap.eBLBaseComponents.PictureDetailsType;
 import com.ebay.soap.eBLBaseComponents.ReturnPolicyType;
+import com.ebay.soap.eBLBaseComponents.ShipmentTrackingDetailsType;
 import com.ebay.soap.eBLBaseComponents.ShippingDetailsType;
 import com.ebay.soap.eBLBaseComponents.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.TradingRoleCodeType;
 import com.ebay.soap.eBLBaseComponents.VATDetailsType;
 
 import org.ofbiz.ebay.EbayHelper;
@@ -603,4 +616,87 @@ public class EbayStoreHelper {
         }
         return item;
     }
+
+    public static Map<String, Object> uploadTrackingInfoBackToEbay(DispatchContext dctx, Map<String, Object> context) {
+    Delegator delegator = dctx.getDelegator();
+    Locale locale = (Locale) context.get("locale");
+    String productStoreId = (String) context.get("productStoreId");
+    String orderId = (String) context.get("orderId");
+    GetOrdersRequestType req = new GetOrdersRequestType();
+    GetOrdersResponseType resp = null;
+    try {
+        GenericValue orderHeader = delegator.findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId));
+        if (UtilValidate.isNotEmpty(orderHeader)) {
+            String externalId = orderHeader.getString("externalId").toString();
+            List<GenericValue> orderShipment = orderHeader.getRelated("OrderShipment");
+            if (orderShipment.size() > 0) {
+                List<GenericValue> trackingOrders = orderHeader.getRelated("TrackingCodeOrder");
+                ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
+                GetOrdersCall ordersCall = new GetOrdersCall(apiContext);
+                OrderIDArrayType orderIdArr = new OrderIDArrayType();
+                String[] orderIdStr = {""+externalId};
+                orderIdArr.setOrderID(orderIdStr);
+                req.setOrderIDArray(orderIdArr);
+                Calendar orderFrom = Calendar.getInstance();
+                orderFrom.setTime(UtilDateTime.toDate("01/01/2001 00:00:00"));
+                req.setCreateTimeFrom(orderFrom);
+                Calendar orderTo = Calendar.getInstance();
+                orderTo.setTime(UtilDateTime.nowDate());
+                req.setCreateTimeTo(orderTo);
+                req.setOrderStatus(OrderStatusCodeType.SHIPPED);
+                req.setOrderRole(TradingRoleCodeType.SELLER);
+                resp = (GetOrdersResponseType) ordersCall.execute(req);
+                if (resp != null && "SUCCESS".equals(resp.getAck().toString())) {
+                    OrderArrayType orderArr = resp.getOrderArray();
+                    OrderType[] orderTypeList = orderArr.getOrder();
+                    for (OrderType order : orderTypeList) {
+                        String orderID = order.getOrderID();
+                        if (orderID.equals(externalId)) {
+                            AddOrderCall addOrderCall = new AddOrderCall(apiContext);
+                            AddOrderRequestType addReq = new AddOrderRequestType();
+                            AddOrderResponseType addResp = null;
+                            OrderType newOrder = new OrderType();
+                            ShippingDetailsType shippingDetail = (ShippingDetailsType) order.getShippingDetails();
+                            if (trackingOrders.size() > 0) {
+                                ShipmentTrackingDetailsType[] trackDetails = new ShipmentTrackingDetailsType[trackingOrders.size()];
+                                for (int i = 0; i < trackDetails.length; i++) {
+                                    ShipmentTrackingDetailsType track = new ShipmentTrackingDetailsType();
+                                    track.setShipmentTrackingNumber(trackingOrders.get(i).get("trackingCodeId").toString());
+                                    trackDetails[i] = track;
+                                }
+                                shippingDetail.setShipmentTrackingDetails(trackDetails);
+                                newOrder.setShippingDetails(shippingDetail);
+                            }
+                            newOrder.setOrderID(order.getOrderID());
+                            newOrder.setOrderStatus(order.getOrderStatus());
+                            newOrder.setAdjustmentAmount(order.getAdjustmentAmount());
+                            newOrder.setAmountSaved(order.getAmountSaved());
+                            newOrder.setCheckoutStatus(order.getCheckoutStatus());
+                            newOrder.setShippingDetails(order.getShippingDetails());
+                            newOrder.setCreatingUserRole(order.getCreatingUserRole());
+                            newOrder.setCreatedTime(order.getCreatedTime());
+                            newOrder.setPaymentMethods(order.getPaymentMethods());
+                            newOrder.setShippingAddress(order.getShippingAddress());
+                            newOrder.setSubtotal(order.getSubtotal());
+                            newOrder.setTotal(order.getTotal());
+                            newOrder.setTransactionArray(order.getTransactionArray());
+                            newOrder.setBuyerUserID(order.getBuyerUserID());
+                            newOrder.setPaidTime(order.getPaidTime());
+                            newOrder.setShippedTime(order.getShippedTime());
+                            newOrder.setIntegratedMerchantCreditCardEnabled(order.isIntegratedMerchantCreditCardEnabled());
+                            addReq.setOrder(newOrder);
+                            addResp = (AddOrderResponseType) addOrderCall.execute(addReq);
+                            if (addResp != null && "SUCCESS".equals(addResp.getAck().toString())) {
+                                Debug.log("Upload tracking code to eBay success...");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    } catch (Exception e) {
+        return ServiceUtil.returnError(e.getMessage());
+    }
+    return ServiceUtil.returnSuccess();
+    }
 }

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=926496&r1=926495&r2=926496&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml Tue Mar 23 08:40:43 2010
@@ -398,6 +398,12 @@
         <response name="success" type="view" value="ordersImported"/>
         <response name="error" type="view" value="ordersImported"/>
     </request-map>
+    <request-map uri="uploadTrackingCodeBack">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="uploadTrackingInfoBackToEbay"/>
+        <response name="success" type="view" value="ordersImported"/>
+        <response name="error" type="view" value="ordersImported"/>
+    </request-map>
     <!-- end of request mappings -->
 
     <!-- View Mappings -->