in ebaystore/src/main/java/org/apache/ofbiz/ebaystore/EbayStoreAutoPreferences.java [528:599]
public static Map<String, Object> automaticEbayDisputeNotComplete(DispatchContext dctx, Map<String, ? extends Object> context) {
LocalDispatcher dispatcher = dctx.getDispatcher();
Delegator delegator = dctx.getDelegator();
Locale locale = (Locale) context.get("locale");
String jobId = (String) context.get("jobId");
try {
GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
List<GenericValue> productStores = EntityQuery.use(delegator).from("EbayProductStorePref").where("autoPrefJobId", jobId).queryList();
if (!productStores.isEmpty()) {
// get automatic setting
String productStoreId = productStores.get(0).getString("productStoreId");
String condition1 = productStores.get(0).getString("condition1");
String condition2 = productStores.get(0).getString("condition2");
String condition3 = productStores.get(0).getString("condition3");
// convert automatic setting for usage
int afterDays = 0;
if (UtilValidate.isInteger(condition1)) {
afterDays = Integer.parseInt(condition1);
}
DisputeReasonCodeType disputeReason = null;
if (UtilValidate.isNotEmpty(condition2)) {
disputeReason = DisputeReasonCodeType.valueOf(condition2);
}
DisputeExplanationCodeType disputeExplanation = null;
if (UtilValidate.isNotEmpty(condition3)) {
disputeExplanation = DisputeExplanationCodeType.valueOf(condition3);
}
// get sold items
Map<String, Object> serviceMap = new HashMap<>();
serviceMap.put("productStoreId", productStoreId);
serviceMap.put("userLogin", userLogin);
Map<String, Object> serviceResult = dispatcher.runSync("getEbaySoldItems", serviceMap);
if (ServiceUtil.isError(resultService)) {
return ServiceUtil.returnError(ServiceUtil.getErrorMessage(resultService));
}
List<Map<String, Object>> soldItems = UtilGenerics.checkList(serviceResult.get("soldItems"));
// check items to dispute
List<Map<String, Object>> itemsToDispute = new LinkedList<>();
for (Map<String, Object> soldItem : soldItems) {
Map<String, Object> item = UtilGenerics.checkMap(soldItem);
String checkoutStatus = (String) item.get("checkoutStatus");
Date creationTime = (Date) item.get("creationTime");
Date paidTime = (Date) item.get("paidTime");
String unpaidItemStatus = (String) item.get("unpaidItemStatus");
int checkDays = UtilDateTime.getIntervalInDays(UtilDateTime.toTimestamp(creationTime), UtilDateTime.nowTimestamp());
if (checkDays > afterDays && "CheckoutIncomplete".equals(checkoutStatus) && unpaidItemStatus == null && paidTime == null && "CheckoutComplete" != checkoutStatus) {
itemsToDispute.add(item);
}
}
// Dispute items
if (disputeReason != null && disputeExplanation != null && !itemsToDispute.isEmpty()) {
ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
DetailLevelCodeType[] detailLevels = new DetailLevelCodeType[]{
DetailLevelCodeType.RETURN_ALL,
DetailLevelCodeType.ITEM_RETURN_ATTRIBUTES,
DetailLevelCodeType.ITEM_RETURN_DESCRIPTION
};
for (Map<String, Object> item : itemsToDispute) {
AddDisputeCall api = new AddDisputeCall(apiContext);
api.setDetailLevel(detailLevels);
api.setItemID((String) item.get("itemId"));
api.setTransactionID((String) item.get("transactionId"));
api.setDisputeExplanation(disputeExplanation);
api.setDisputeReason(disputeReason);
}
}
}
} catch (GenericEntityException | GenericServiceException ge) {
return ServiceUtil.returnError(ge.getMessage());
}
return ServiceUtil.returnSuccess();
}