📄 orderchangehelper.java
字号:
} if (orderHeader != null) { List orderItems = null; try { orderItems = orderHeader.getRelated("OrderItem"); } catch (GenericEntityException e) { Debug.logError(e, "ERROR: Unable to get OrderItem records for OrderHeader : " + orderId, module); } if (orderItems != null && orderItems.size() > 0) { Iterator oii = orderItems.iterator(); while (oii.hasNext()) { GenericValue orderItem = (GenericValue) oii.next(); String orderItemSeqId = orderItem.getString("orderItemSeqId"); GenericValue product = null; try { product = orderItem.getRelatedOne("Product"); } catch (GenericEntityException e) { Debug.logError(e, "ERROR: Unable to get Product record for OrderItem : " + orderId + "/" + orderItemSeqId, module); } if (product != null) { GenericValue productType = null; try { productType = product.getRelatedOne("ProductType"); } catch (GenericEntityException e) { Debug.logError(e, "ERROR: Unable to get ProductType from Product : " + product, module); } if (productType != null) { String isDigital = productType.getString("isDigital"); if (isDigital != null && "Y".equalsIgnoreCase(isDigital)) { // update the status Map digitalStatusFields = UtilMisc.toMap("orderId", orderId, "orderItemSeqId", orderItemSeqId, "statusId", digitalItemStatus, "userLogin", userLogin); Map digitalStatusChange = dispatcher.runSync("changeOrderItemStatus", digitalStatusFields); if (ModelService.RESPOND_ERROR.equals(digitalStatusChange.get(ModelService.RESPONSE_MESSAGE))) { Debug.logError("Problems with digital product status change : " + product, module); } } } } } } } } } public static void cancelInventoryReservations(LocalDispatcher dispatcher, GenericValue userLogin, String orderId) throws GenericServiceException { // cancel the inventory reservations Map cancelInvFields = UtilMisc.toMap("orderId", orderId, "userLogin", userLogin); Map cancelInvResult = dispatcher.runSync("cancelOrderInventoryReservation", cancelInvFields); if (ModelService.RESPOND_ERROR.equals(cancelInvResult.get(ModelService.RESPONSE_MESSAGE))) { Debug.logError("Problems reversing inventory reservations for order #" + orderId, module); } } public static void releasePaymentAuthorizations(LocalDispatcher dispatcher, GenericValue userLogin, String orderId) throws GenericServiceException { Map releaseFields = UtilMisc.toMap("orderId", orderId, "userLogin", userLogin); Map releaseResult = dispatcher.runSync("releaseOrderPayments", releaseFields); if (ModelService.RESPOND_ERROR.equals(releaseResult.get(ModelService.RESPONSE_MESSAGE))) { Debug.logError("Problems releasing payment authorizations for order #" + orderId, module); } } public static void createReceivedPayments(LocalDispatcher dispatcher, GenericValue userLogin, String orderId) throws GenericEntityException, GenericServiceException { GenericValue orderHeader = null; try { orderHeader = dispatcher.getDelegator().findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId)); } catch (GenericEntityException e) { Debug.logError(e, module); } if (orderHeader != null) { OrderReadHelper orh = new OrderReadHelper(orderHeader); GenericValue btparty = orh.getBillToParty(); String partyId = "_NA_"; if (btparty != null) { partyId = btparty.getString("partyId"); } List opps = orh.getPaymentPreferences(); Iterator oppi = opps.iterator(); while (oppi.hasNext()) { GenericValue opp = (GenericValue) oppi.next(); if ("PAYMENT_RECEIVED".equals(opp.getString("statusId"))) { List payments = orh.getOrderPayments(opp); if (payments == null || payments.size() == 0) { // only do this one time; if we have payment already for this pref ignore. Map results = dispatcher.runSync("createPaymentFromPreference", UtilMisc.toMap("userLogin", userLogin, "orderPaymentPreferenceId", opp.getString("orderPaymentPreferenceId"), "paymentRefNum", UtilDateTime.nowTimestamp().toString(), "paymentFromId", partyId)); if (results.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_ERROR)) { Debug.logError((String) results.get(ModelService.ERROR_MESSAGE), module); } } } } } } public static void createOrderInvoice(LocalDispatcher dispatcher, GenericValue userLogin, String orderId) throws GenericServiceException { GenericValue orderHeader = null; try { orderHeader = dispatcher.getDelegator().findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId)); } catch (GenericEntityException e) { Debug.logError(e, module); } if (orderHeader != null) { OrderReadHelper orh = new OrderReadHelper(orderHeader); List items = orh.getOrderItems(); Map serviceParam = UtilMisc.toMap("orderId", orderId, "billItems", items, "userLogin", userLogin); Map serviceRes = dispatcher.runSync("createInvoiceForOrder", serviceParam); if (ServiceUtil.isError(serviceRes)) { throw new GenericServiceException(ServiceUtil.getErrorMessage(serviceRes)); } } } public static boolean releaseInitialOrderHold(LocalDispatcher dispatcher, String orderId) { // get the delegator from the dispatcher GenericDelegator delegator = dispatcher.getDelegator(); // find the workEffortId for this order List workEfforts = null; try { workEfforts = delegator.findByAnd("WorkEffort", UtilMisc.toMap("currentStatusId", "WF_SUSPENDED", "sourceReferenceId", orderId)); } catch (GenericEntityException e) { Debug.logError(e, "Problems getting WorkEffort with order ref number: " + orderId, module); return false; } if (workEfforts != null) { // attempt to release the order workflow from 'Hold' status (resume workflow) boolean allPass = true; Iterator wei = workEfforts.iterator(); while (wei.hasNext()) { GenericValue workEffort = (GenericValue) wei.next(); String workEffortId = workEffort.getString("workEffortId"); try { if (workEffort.getString("currentStatusId").equals("WF_SUSPENDED")) { WorkflowClient client = new WorkflowClient(dispatcher.getDispatchContext()); client.resume(workEffortId); } else { Debug.logVerbose("Current : --{" + workEffort + "}-- not resuming", module); } } catch (WfException e) { Debug.logError(e, "Problem resuming activity : " + workEffortId, module); allPass = false; } } return allPass; } else { Debug.logWarning("No WF found for order ID : " + orderId, module); } return false; } public static boolean abortOrderProcessing(LocalDispatcher dispatcher, String orderId) { Debug.logInfo("Aborting workflow for order " + orderId, module); GenericDelegator delegator = dispatcher.getDelegator(); // find the workEffortId for this order GenericValue workEffort = null; try { List workEfforts = delegator.findByAnd("WorkEffort", UtilMisc.toMap("workEffortTypeId", "WORK_FLOW", "sourceReferenceId", orderId)); if (workEfforts != null && workEfforts.size() > 1) { Debug.logWarning("More then one workflow found for defined order: " + orderId, module); } workEffort = EntityUtil.getFirst(workEfforts); } catch (GenericEntityException e) { Debug.logError(e, "Problems getting WorkEffort with order ref number: " + orderId, module); return false; } if (workEffort != null) { String workEffortId = workEffort.getString("workEffortId"); if (workEffort.getString("currentStatusId").equals("WF_RUNNING")) { Debug.logInfo("WF is running; trying to abort", module); WorkflowClient client = new WorkflowClient(dispatcher.getDispatchContext()); try { client.abortProcess(workEffortId); } catch (WfException e) { Debug.logError(e, "Problem aborting workflow", module); return false; } return true; } } return false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -