Author: jleroux
Date: Tue Jan 25 13:23:19 2011
New Revision: 1063265
URL: http://svn.apache.org/viewvc?rev=1063265&view=rev
Log:
A patch from Arun Patidar "Some misc issues in ebayStore component."
(https://issues.apache.org/jira/browse/OFBIZ-4118) - OFBIZ-4118
one more patch to fix following issues in ebay and ebayStore components
1 Fixed issue of set complete order status in ebay when we complete order in
ofbiz.
2 Created record of OrderPaymentPreference in PAYMENT_RECEIVED status.
3 Updated qty of cart item, if same product is adding again in cart during
import order from ebay.
4 Set transactionId in cart.
Modified:
ofbiz/trunk/applications/party/widget/partymgr/CommunicationEventForms.xml
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayHelper.java
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java
ofbiz/trunk/specialpurpose/ebay/widget/CommonScreens.xml
ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOrder.java
Modified:
ofbiz/trunk/applications/party/widget/partymgr/CommunicationEventForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/widget/partymgr/CommunicationEventForms.xml?rev=1063265&r1=1063264&r2=1063265&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/widget/partymgr/CommunicationEventForms.xml
(original)
+++ ofbiz/trunk/applications/party/widget/partymgr/CommunicationEventForms.xml
Tue Jan 25 13:23:19 2011
@@ -918,7 +918,7 @@ under the License.
<field name="delContentDataResource"><hidden value="Y"/></field>
<field name="communicationEventId"><hidden/></field>
<field name="subject" widget-style="buttontext"
widget-area-style="fieldWidth300">
- <hyperlink description="${subject}"
target="${parameters._LAST_VIEW_NAME_}">
+ <hyperlink description="${subject}"
target="${parameters._LAST_VIEW_NAME_}" also-hidden="true">
<parameter param-name="communicationEventId"/>
<parameter param-name="partyId"/>
<parameter param-name="my" value="My"/>
Modified: ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayHelper.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayHelper.java?rev=1063265&r1=1063264&r2=1063265&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayHelper.java
(original)
+++ ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayHelper.java Tue Jan
25 13:23:19 2011
@@ -192,7 +192,7 @@ public class EbayHelper {
}
public static boolean createPaymentFromPaymentPreferences(Delegator
delegator, LocalDispatcher dispatcher, GenericValue userLogin,
- String orderId, String externalId, Timestamp orderDate, String
partyIdFrom) {
+ String orderId, String externalId, Timestamp orderDate, BigDecimal
amount, String partyIdFrom) {
List<GenericValue> paymentPreferences = null;
try {
Map<String, String> paymentFields = UtilMisc.toMap("orderId",
orderId, "statusId", "PAYMENT_RECEIVED",
@@ -207,7 +207,25 @@ public class EbayHelper {
if (!okay)
return false;
}
- }
+ } else {
+ paymentFields = UtilMisc.toMap("orderId", orderId, "statusId",
"PAYMENT_NOT_RECEIVED",
+ "paymentMethodTypeId", "EXT_EBAY");
+ paymentPreferences =
delegator.findByAnd("OrderPaymentPreference", paymentFields);
+ if (UtilValidate.isNotEmpty(paymentPreferences)) {
+ Iterator<GenericValue> i = paymentPreferences.iterator();
+ while (i.hasNext()) {
+ GenericValue pref = (GenericValue) i.next();
+ if (UtilValidate.isNotEmpty(amount)) {
+ pref.set("statusId", "PAYMENT_RECEIVED");
+ pref.set("maxAmount", amount);
+ pref.store();
+ }
+ boolean okay = createPayment(dispatcher, userLogin,
pref, orderId, externalId, orderDate, partyIdFrom);
+ if (!okay)
+ return false;
+ }
+ }
+ }
} catch (Exception e) {
Debug.logError(e, "Cannot get payment preferences for order #" +
orderId, module);
return false;
Modified:
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java?rev=1063265&r1=1063264&r2=1063265&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
(original)
+++ ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/EbayOrderServices.java
Tue Jan 25 13:23:19 2011
@@ -871,6 +871,7 @@ public class EbayOrderServices {
} else {
orderCtx.put("externalId", "EBT_" +
transactionId);
}
+ orderCtx.put("transactionId", "EBI_" + itemId);
GenericValue orderExist =
externalOrderExists(delegator, (String)orderCtx.get("externalId"));
if (orderExist != null) {
@@ -1006,12 +1007,14 @@ public class EbayOrderServices {
// set the external id with the eBay Item Id
String externalId = (String) context.get("externalId");
+ String transactionId = (String) context.get("transactionId");
if (UtilValidate.isNotEmpty(externalId)) {
if (externalOrderExists(delegator, externalId) != null &&
create) {
return
ServiceUtil.returnFailure(UtilProperties.getMessage(resource,
"ordersImportFromEbay.externalIdAlreadyExist", locale));
}
cart.setExternalId(externalId);
+ cart.setTransactionId(transactionId);
} else {
return
ServiceUtil.returnFailure(UtilProperties.getMessage(resource,
"ordersImportFromEbay.externalIdNotAvailable", locale));
}
@@ -1232,7 +1235,7 @@ public class EbayOrderServices {
// create the payment from the preference
if (approved) {
Debug.logInfo("Creating payment for approved order.",
module);
-
EbayHelper.createPaymentFromPaymentPreferences(delegator, dispatcher,
userLogin, orderId, externalId, cart.getOrderDate(), partyId);
+
EbayHelper.createPaymentFromPaymentPreferences(delegator, dispatcher,
userLogin, orderId, externalId, cart.getOrderDate(), amountPaid, partyId);
Debug.logInfo("Payment created.", module);
}
}
@@ -1274,20 +1277,36 @@ public class EbayOrderServices {
HashMap<Object, Object> attrs = new HashMap<Object, Object>();
attrs.put("shipGroup", groupIdx);
- int idx = cart.addItemToEnd(productId, null, qty, null, null, attrs,
null, null, dispatcher, Boolean.FALSE, Boolean.TRUE, Boolean.TRUE,
Boolean.TRUE);
- ShoppingCartItem cartItem = cart.findCartItem(idx);
- cartItem.setQuantity(qty, dispatcher, cart, true, false);
- // locate the price verify it matches the expected price
- BigDecimal cartPrice = cartItem.getBasePrice();
- cartPrice = cartPrice.setScale(ShoppingCart.scale,
ShoppingCart.rounding);
- if (price.doubleValue() != cartPrice.doubleValue()) {
- // does not match; honor the price but hold the order for manual
review
- cartItem.setIsModifiedPrice(true);
- cartItem.setBasePrice(price);
- cart.setHoldOrder(true);
- cart.addInternalOrderNote("Price received [" + price + "] (for
item # " + productId + ") from eBay Checkout does not match the price in the
database [" + cartPrice + "]. Order is held for manual review.");
+ // Checking if previously added same product exists in the cart
+ ShoppingCartItem previouslyAddedItemInCart = null;
+ if (cart.size() != 0) {
+ Iterator cartiter = cart.iterator();
+ while (cartiter != null && cartiter.hasNext()) {
+ ShoppingCartItem cartItem = (ShoppingCartItem) cartiter.next();
+ if (cartItem.getProductId().equals(productId)) {
+ previouslyAddedItemInCart = cartItem;
+ }
+ }
}
- // assign the item to its ship group
- cart.setItemShipGroupQty(cartItem, qty, groupIdx);
- }
+ if (previouslyAddedItemInCart != null) {
+ BigDecimal newQuantity =
previouslyAddedItemInCart.getQuantity().add(qty);
+ previouslyAddedItemInCart.setQuantity(newQuantity, dispatcher,
cart);
+ } else {
+ int idx = cart.addItemToEnd(productId, null, qty, null, null,
attrs, null, null, dispatcher, Boolean.FALSE, Boolean.TRUE, Boolean.TRUE,
Boolean.TRUE);
+ ShoppingCartItem cartItem = cart.findCartItem(idx);
+ cartItem.setQuantity(qty, dispatcher, cart, true, false);
+ // locate the price verify it matches the expected price
+ BigDecimal cartPrice = cartItem.getBasePrice();
+ cartPrice = cartPrice.setScale(ShoppingCart.scale,
ShoppingCart.rounding);
+ if (price.doubleValue() != cartPrice.doubleValue()) {
+ // does not match; honor the price but hold the order for
manual review
+ cartItem.setIsModifiedPrice(true);
+ cartItem.setBasePrice(price);
+ cart.setHoldOrder(true);
+ cart.addInternalOrderNote("Price received [" + price + "] (for
item # " + productId + ") from eBay Checkout does not match the price in the
database [" + cartPrice + "]. Order is held for manual review.");
+ }
+ // assign the item to its ship group
+ cart.setItemShipGroupQty(cartItem, qty, groupIdx);
+ }
+ }
}
Modified:
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java?rev=1063265&r1=1063264&r2=1063265&view=diff
==============================================================================
---
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java
(original)
+++
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java
Tue Jan 25 13:23:19 2011
@@ -129,6 +129,7 @@ public class ImportOrdersFromEbay {
Locale locale = (Locale) context.get("locale");
String orderId = (String) context.get("orderId");
String externalId = (String) context.get("externalId");
+ String transactionId = "";
Map<String, Object> result = FastMap.newInstance();
try {
if (orderId == null && externalId == null) {
@@ -153,6 +154,7 @@ public class ImportOrdersFromEbay {
// get externalId from OrderHeader
externalId = (String)orderHeader.get("externalId");
+ transactionId = orderHeader.getString("transactionId");
String productStoreId = (String)
orderHeader.get("productStoreId");
if (UtilValidate.isNotEmpty(productStoreId)) {
context.put("productStoreId", productStoreId);
@@ -163,8 +165,9 @@ public class ImportOrdersFromEbay {
StringBuffer completeSaleXml = new StringBuffer();
- if (!ServiceUtil.isFailure(buildCompleteSaleRequest(delegator,
locale, externalId, context, completeSaleXml,
eBayConfigResult.get("token").toString()))) {
+ if (!ServiceUtil.isFailure(buildCompleteSaleRequest(delegator,
locale, externalId, transactionId, context, completeSaleXml,
eBayConfigResult.get("token").toString()))) {
result =
EbayHelper.postItem(eBayConfigResult.get("xmlGatewayUri").toString(),
completeSaleXml, eBayConfigResult.get("devID").toString(),
eBayConfigResult.get("appID").toString(),
eBayConfigResult.get("certID").toString(), "CompleteSale",
eBayConfigResult.get("compatibilityLevel").toString(),
eBayConfigResult.get("siteID").toString());
+
String successMessage = (String)result.get("successMessage");
if (successMessage != null) {
return readCompleteSaleResponse(successMessage, locale);
@@ -247,12 +250,12 @@ public class ImportOrdersFromEbay {
return ServiceUtil.returnSuccess();
}
- public static Map<String, Object> buildCompleteSaleRequest(Delegator
delegator, Locale locale, String transactionId, Map<String, Object> context,
StringBuffer dataItemsXml, String token) {
+ public static Map<String, Object> buildCompleteSaleRequest(Delegator
delegator, Locale locale, String externalId, String transactionId, Map<String,
Object> context, StringBuffer dataItemsXml, String token) {
String paid = (String)context.get("paid");
String shipped = (String)context.get("shipped");
try {
- if (transactionId == null) {
+ if (externalId == null) {
return
ServiceUtil.returnFailure(UtilProperties.getMessage(resource,
"ordersImportFromEbay.errorDuringBuildItemAndTransactionIdFromExternalId",
locale));
}
@@ -261,22 +264,26 @@ public class ImportOrdersFromEbay {
transElem.setAttribute("xmlns", "urn:ebay:apis:eBLBaseComponents");
EbayHelper.appendRequesterCredentials(transElem, transDoc, token);
-
- if (transactionId.startsWith("EBT_")) {
- UtilXml.addChildElementValue(transElem, "TransactionID",
transactionId.substring(4), transDoc);
- UtilXml.addChildElementValue(transElem, "ItemID", "0",
transDoc);
- } else if (transactionId.startsWith("EBO_")) {
- UtilXml.addChildElementValue(transElem, "OrderID",
transactionId.substring(4), transDoc);
+ if (externalId.startsWith("EBT_")) {
+ UtilXml.addChildElementValue(transElem, "TransactionID",
externalId.substring(4), transDoc);
+ UtilXml.addChildElementValue(transElem, "ItemID",
transactionId.substring(4), transDoc);
+ } else if (externalId.startsWith("EBO_")) {
+ UtilXml.addChildElementValue(transElem, "OrderID",
externalId.substring(4), transDoc);
UtilXml.addChildElementValue(transElem, "TransactionID", "0",
transDoc);
UtilXml.addChildElementValue(transElem, "ItemID", "0",
transDoc);
- } else if (transactionId.startsWith("EBI_")) {
- UtilXml.addChildElementValue(transElem, "ItemID",
transactionId.substring(4), transDoc);
+ } else if (externalId.startsWith("EBI_")) {
+ UtilXml.addChildElementValue(transElem, "ItemID",
externalId.substring(4), transDoc);
+ UtilXml.addChildElementValue(transElem, "TransactionID", "0",
transDoc);
+ } else if (externalId.startsWith("EBS_")) {
+ //UtilXml.addChildElementValue(transElem, "OrderID",
externalId.substring(4), transDoc);
UtilXml.addChildElementValue(transElem, "TransactionID", "0",
transDoc);
+ UtilXml.addChildElementValue(transElem, "ItemID",
externalId.substring(4), transDoc);
}
// default shipped = Y (call from eca during order completed)
if (paid == null && shipped == null) {
shipped = "Y";
+ paid = "Y";
}
// Set item id to paid or not paid
@@ -499,6 +506,7 @@ public class ImportOrdersFromEbay {
} else {
order.put("externalId", "EBT_" +
transactionId);
}
+ order.put("transactionId", "EBI_" + itemId);
GenericValue orderExist =
externalOrderExists(delegator, (String)order.get("externalId"));
if (orderExist != null) {
@@ -799,7 +807,7 @@ public class ImportOrdersFromEbay {
// create the payment from the preference
if (approved) {
Debug.logInfo("Creating payment for approved order.",
module);
-
EbayHelper.createPaymentFromPaymentPreferences(delegator, dispatcher,
userLogin, orderId, externalId, cart.getOrderDate(), partyId);
+
EbayHelper.createPaymentFromPaymentPreferences(delegator, dispatcher,
userLogin, orderId, externalId, cart.getOrderDate(), amountPaid, partyId);
Debug.logInfo("Payment created.", module);
}
}
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=1063265&r1=1063264&r2=1063265&view=diff
==============================================================================
---
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java
(original)
+++
ofbiz/trunk/specialpurpose/ebay/src/org/ofbiz/ebay/ProductsExportToEbay.java
Tue Jan 25 13:23:19 2011
@@ -309,6 +309,11 @@ public class ProductsExportToEbay {
Element primaryCatElem = UtilXml.addChildElement(itemElem,
"PrimaryCategory", itemDocument);
UtilXml.addChildElementValue(primaryCatElem, "CategoryID",
primaryCategoryId, itemDocument);
+ UtilXml.addChildElementValue(itemElem, "ConditionID", "1000",
itemDocument);
+ Element itemSpecificsElem = UtilXml.addChildElement(itemElem,
"ItemSpecifics", itemDocument);
+ Element nameValueListElem =
UtilXml.addChildElement(itemSpecificsElem, "NameValueList", itemDocument);
+ UtilXml.addChildElementValue(nameValueListElem, "Name",
"Condition", itemDocument);
+ UtilXml.addChildElementValue(nameValueListElem, "Value", "New:
With Tags", itemDocument);
//Debug.logInfo("The generated string is ======= " +
UtilXml.writeXmlDocument(itemDocument), module);
dataItemsXml.append(UtilXml.writeXmlDocument(itemDocument));
Modified: ofbiz/trunk/specialpurpose/ebay/widget/CommonScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebay/widget/CommonScreens.xml?rev=1063265&r1=1063264&r2=1063265&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebay/widget/CommonScreens.xml (original)
+++ ofbiz/trunk/specialpurpose/ebay/widget/CommonScreens.xml Tue Jan 25
13:23:19 2011
@@ -28,6 +28,7 @@ under the License.
<property-map resource="ProductUiLabels" map-name="uiLabelMap"
global="true"/>
<property-map resource="CommonUiLabels" map-name="uiLabelMap"
global="true"/>
<property-map resource="WorkEffortUiLabels"
map-name="uiLabelMap" global="true"/>
+ <property-map resource="GoogleBaseUiLabels"
map-name="uiLabelMap" global="true"/>
<set field="activeApp" value="ebay" global="true"/>
<set field="layoutSettings.companyName"
from-field="uiLabelMap.EbayCompanyName" global="true"/>
<set field="layoutSettings.companySubtitle"
from-field="uiLabelMap.EbayApplication" global="true"/>
Modified:
ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOrder.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOrder.java?rev=1063265&r1=1063264&r2=1063265&view=diff
==============================================================================
---
ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOrder.java
(original)
+++
ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOrder.java
Tue Jan 25 13:23:19 2011
@@ -300,7 +300,7 @@ public class EbayStoreOrder {
// create the payment from the preference
if (approved) {
Debug.logInfo("Creating payment for approved order.",
module);
-
EbayHelper.createPaymentFromPaymentPreferences(delegator, dispatcher,
userLogin, orderId, externalId, cart.getOrderDate(), partyId);
+
EbayHelper.createPaymentFromPaymentPreferences(delegator, dispatcher,
userLogin, orderId, externalId, cart.getOrderDate(), amountPaid, partyId);
Debug.logInfo("Payment created.", module);
}
}
@@ -542,7 +542,7 @@ public class EbayStoreOrder {
// create the payment from the preference
if (approved) {
Debug.logInfo("Creating payment for approved order.",
module);
- EbayHelper.createPaymentFromPaymentPreferences(delegator,
dispatcher, userLogin, orderId, externalId, cart.getOrderDate(), partyId);
+ EbayHelper.createPaymentFromPaymentPreferences(delegator,
dispatcher, userLogin, orderId, externalId, cart.getOrderDate(), amountPaid,
partyId);
Debug.logInfo("Payment created.", module);
}
}