⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orderreturnservices.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                        return ServiceUtil.returnError(errorMsg, null, null, serviceResults);                    }                    if (Debug.verboseOn()) { Debug.logInfo("Created PaymentApplication for response with amountApplied " + amountApplied.toString(), module); }                }            }        } catch (GenericServiceException e) {            Debug.logError(e, errorMsg + e.getMessage(), module);            return ServiceUtil.returnError(errorMsg + e.getMessage());        } catch (GenericEntityException e) {            Debug.logError(e, errorMsg + e.getMessage(), module);            return ServiceUtil.returnError(errorMsg + e.getMessage());        }        return ServiceUtil.returnSuccess();    }    // replacement return (create new order adjusted to be at no charge)    public static Map processReplacementReturn(DispatchContext dctx, Map context) {        LocalDispatcher dispatcher = dctx.getDispatcher();        GenericDelegator delegator = dctx.getDelegator();        String returnId = (String) context.get("returnId");        GenericValue userLogin = (GenericValue) context.get("userLogin");        Locale locale = (Locale) context.get("locale");        GenericValue returnHeader = null;        List returnItems = null;        try {            returnHeader = delegator.findByPrimaryKey("ReturnHeader", UtilMisc.toMap("returnId", returnId));            if (returnHeader != null) {                returnItems = returnHeader.getRelatedByAnd("ReturnItem", UtilMisc.toMap("returnTypeId", "RTN_REPLACE"));            }        } catch (GenericEntityException e) {            Debug.logError(e, "Problems looking up return information", module);            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderErrorGettingReturnHeaderItemInformation", locale));        }        List createdOrderIds = new ArrayList();        if (returnHeader != null && returnItems != null && returnItems.size() > 0) {            Map itemsByOrder = new HashMap();            Map totalByOrder = new HashMap();            groupReturnItemsByOrder(returnItems, itemsByOrder, totalByOrder, delegator, returnId);            // process each one by order            Set itemSet = itemsByOrder.entrySet();            Iterator itemByOrderIt = itemSet.iterator();            while (itemByOrderIt.hasNext()) {                Map.Entry entry = (Map.Entry) itemByOrderIt.next();                String orderId = (String) entry.getKey();                List items = (List) entry.getValue();                // get order header & payment prefs                GenericValue orderHeader = null;                try {                    orderHeader = delegator.findByPrimaryKey("OrderHeader", UtilMisc.toMap("orderId", orderId));                } catch (GenericEntityException e) {                    Debug.logError(e, "Cannot get Order details for #" + orderId, module);                    continue;                }                OrderReadHelper orh = new OrderReadHelper(orderHeader);                // create the replacement order                Map orderMap = UtilMisc.toMap("userLogin", userLogin);                GenericValue placingParty = orh.getPlacingParty();                String placingPartyId = null;                if (placingParty != null) {                    placingPartyId = placingParty.getString("partyId");                }                orderMap.put("orderTypeId", "SALES_ORDER");                orderMap.put("partyId", placingPartyId);                orderMap.put("productStoreId", orderHeader.get("productStoreId"));                orderMap.put("webSiteId", orderHeader.get("webSiteId"));                orderMap.put("visitId", orderHeader.get("visitId"));                orderMap.put("currencyUom", orderHeader.get("currencyUom"));                orderMap.put("grandTotal",  new Double(0.00));                // make the contact mechs                List contactMechs = new ArrayList();                List orderCm = null;                try {                    orderCm = orderHeader.getRelated("OrderContactMech");                } catch (GenericEntityException e) {                    Debug.logError(e, module);                }                if (orderCm != null) {                    Iterator orderCmi = orderCm.iterator();                    while (orderCmi.hasNext()) {                        GenericValue v = (GenericValue) orderCmi.next();                        contactMechs.add(GenericValue.create(v));                    }                    orderMap.put("orderContactMechs", contactMechs);                }                // make the shipment prefs                List shipmentPrefs = new ArrayList();                List orderSp = null;                try {                    orderSp = orderHeader.getRelated("OrderShipmentPreference");                } catch (GenericEntityException e) {                    Debug.logError(e, module);                }                if (orderSp != null) {                    Iterator orderSpi = orderSp.iterator();                    while (orderSpi.hasNext()) {                        GenericValue v = (GenericValue) orderSpi.next();                        shipmentPrefs.add(GenericValue.create(v));                    }                    orderMap.put("orderShipmentPreferences", shipmentPrefs);                }                // make the order items                double itemTotal = 0.00;                List orderItems = new ArrayList();                if (items != null) {                    Iterator ri = items.iterator();                    int itemCount = 1;                    while (ri.hasNext()) {                        GenericValue returnItem = (GenericValue) ri.next();                        GenericValue orderItem = null;                        try {                            orderItem = returnItem.getRelatedOne("OrderItem");                        } catch (GenericEntityException e) {                            Debug.logError(e, module);                            continue;                        }                        if (orderItem != null) {                            Double quantity = returnItem.getDouble("returnQuantity");                            Double unitPrice = returnItem.getDouble("returnPrice");                            if (quantity != null && unitPrice != null) {                                itemTotal = (quantity.doubleValue() * unitPrice.doubleValue());                                GenericValue newItem = delegator.makeValue("OrderItem", UtilMisc.toMap("orderItemSeqId", new Integer(itemCount).toString()));                                newItem.set("orderItemTypeId", orderItem.get("orderItemTypeId"));                                newItem.set("productId", orderItem.get("productId"));                                newItem.set("productFeatureId", orderItem.get("productFeatureId"));                                newItem.set("prodCatalogId", orderItem.get("prodCatalogId"));                                newItem.set("productCategoryId", orderItem.get("productCategoryId"));                                newItem.set("quantity", quantity);                                newItem.set("unitPrice", unitPrice);                                newItem.set("unitListPrice", orderItem.get("unitListPrice"));                                newItem.set("itemDescription", orderItem.get("itemDescription"));                                newItem.set("comments", orderItem.get("comments"));                                newItem.set("correspondingPoId", orderItem.get("correspondingPoId"));                                newItem.set("statusId", "ITEM_CREATED");                                orderItems.add(newItem);                            }                        }                    }                    orderMap.put("orderItems", orderItems);                } else {                    Debug.logError("No return items found??", module);                    continue;                }                // create the replacement adjustment                GenericValue adj = delegator.makeValue("OrderAdjustment", new HashMap());                adj.set("orderAdjustmentTypeId", "REPLACE_ADJUSTMENT");                adj.set("amount", new Double(itemTotal * -1));                adj.set("comments", "Replacement Item Return #" + returnId);                adj.set("createdDate", UtilDateTime.nowTimestamp());                adj.set("createdByUserLogin", userLogin.getString("userLoginId"));                orderMap.put("orderAdjustments", UtilMisc.toList(adj));                // we'll assume new order is under same terms as original.  note orderTerms is a required parameter of storeOrder                try {                    orderMap.put("orderTerms", orderHeader.getRelated("OrderTerm"));                } catch (GenericEntityException e) {                    Debug.logError(e, "Cannot create replacement order because order terms for original order is not available", module);                }                // create the order                String createdOrderId = null;                Map orderResult = null;                try {                    orderResult = dispatcher.runSync("storeOrder", orderMap);                } catch (GenericServiceException e) {                    Debug.logInfo(e, "Problem creating the order!", module);                }                if (orderResult != null) {                    createdOrderId = (String) orderResult.get("orderId");                    createdOrderIds.add(createdOrderId);                }                // since there is no payments required; order is ready for processing/shipment                if (createdOrderId != null) {                    OrderChangeHelper.approveOrder(dispatcher, userLogin, createdOrderId);                }            }        }        StringBuffer successMessage = new StringBuffer();        if (createdOrderIds.size() > 0) {            successMessage.append("The following new orders have been created : ");            Iterator i = createdOrderIds.iterator();            while (i.hasNext()) {                successMessage.append(i.next());                if (i.hasNext()) {                    successMessage.append(", ");                }            }        } else {            successMessage.append("No orders were created.");        }        return ServiceUtil.returnSuccess(successMessage.toString());    }    /**     * Takes a List of returnItems and returns a Map of orderId -> items and a Map of orderId -> orderTotal      * @param returnItems     * @param itemsByOrder     * @param totalByOrder     * @param delegator     * @param returnId     */    public static void groupReturnItemsByOrder(List returnItems, Map itemsByOrder, Map totalByOrder, GenericDelegator delegator, String returnId) {        Iterator itemIt = returnItems.iterator();        while (itemIt.hasNext()) {            GenericValue item = (GenericValue) itemIt.next();            String orderId = item.getString("orderId");            if (orderId != null) {                if (itemsByOrder != null) {                    List orderList = (List) itemsByOrder.get(orderId);                    Double totalForOrder = null;                    if (totalByOrder != null) {                        totalForOrder = (Double) totalByOrder.get(orderId);                    }                    if (orderList == null) {                        orderList = new ArrayList();                    }                    if (totalForOrder == null) {                        totalForOrder = new Double(0.00);                    }                    // add to the items list                    orderList.add(item);                    itemsByOrder.put(orderId, orderList);                    if (totalByOrder != null) {                        // add on the total for this line                        Double quantity = item.getDouble("returnQuantity");                    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -