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

📄 shoppinglistservices.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * $Id: ShoppingListServices.java 6142 2005-11-18 18:56:08Z sichen $ * * Copyright (c) 2004 The Open For Business Project - www.ofbiz.org * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */package org.ofbiz.order.shoppinglist;import java.util.Map;import java.util.List;import java.util.Locale;import java.util.Iterator;import java.util.HashMap;import java.sql.Timestamp;import org.ofbiz.service.DispatchContext;import org.ofbiz.service.ServiceUtil;import org.ofbiz.service.LocalDispatcher;import org.ofbiz.service.GenericServiceException;import org.ofbiz.service.calendar.RecurrenceInfo;import org.ofbiz.service.calendar.RecurrenceInfoException;import org.ofbiz.order.shoppingcart.ShoppingCart;import org.ofbiz.order.shoppingcart.CartItemModifyException;import org.ofbiz.order.shoppingcart.ItemNotFoundException;import org.ofbiz.order.shoppingcart.CheckOutHelper;import org.ofbiz.order.order.OrderReadHelper;import org.ofbiz.entity.GenericDelegator;import org.ofbiz.entity.GenericValue;import org.ofbiz.entity.GenericEntityException;import org.ofbiz.entity.condition.EntityExpr;import org.ofbiz.entity.condition.EntityOperator;import org.ofbiz.entity.condition.EntityCondition;import org.ofbiz.entity.condition.EntityConditionList;import org.ofbiz.entity.transaction.TransactionUtil;import org.ofbiz.entity.util.EntityListIterator;import org.ofbiz.entity.util.EntityUtil;import org.ofbiz.base.util.UtilMisc;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.UtilValidate;import org.ofbiz.base.util.UtilDateTime;import org.ofbiz.base.util.GeneralException;import org.ofbiz.base.util.UtilProperties;import org.ofbiz.product.store.ProductStoreWorker;/** * Shopping List Services *  * @author     <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a> * @version    $Rev: 6142 $ * @since      3.3 */public class ShoppingListServices {    public static final String module = ShoppingListServices.class.getName();    public static final String resource_error = "OrderErrorUiLabels";    public static Map setShoppingListRecurrence(DispatchContext dctx, Map context) {        GenericDelegator delegator = dctx.getDelegator();        Timestamp startDate = (Timestamp) context.get("startDateTime");        Timestamp endDate = (Timestamp) context.get("endDateTime");        Integer frequency = (Integer) context.get("frequency");        Integer interval = (Integer) context.get("intervalNumber");        Locale locale = (Locale) context.get("locale");        if (frequency == null || interval == null) {            Debug.logWarning(UtilProperties.getMessage(resource_error,"OrderFrequencyOrIntervalWasNotSpecified", locale), module);            return ServiceUtil.returnSuccess();        }        if (startDate == null) {            switch (frequency.intValue()) {                case 5:                    startDate = UtilDateTime.getWeekStart(UtilDateTime.nowTimestamp(), 0, interval.intValue());                    break;                case 6:                    startDate = UtilDateTime.getMonthStart(UtilDateTime.nowTimestamp(), 0, interval.intValue());                    break;                case 7:                    startDate = UtilDateTime.getYearStart(UtilDateTime.nowTimestamp(), 0, interval.intValue());                    break;                default:                    return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderInvalidFrequencyForShoppingListRecurrence",locale));            }        }        long startTime = startDate.getTime();        long endTime = 0;        if (endDate != null) {            endTime = endDate.getTime();        }        RecurrenceInfo recInfo = null;        try {            recInfo = RecurrenceInfo.makeInfo(delegator, startTime, frequency.intValue(), interval.intValue(), -1, endTime);        } catch (RecurrenceInfoException e) {            Debug.logError(e, module);            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToCreateShoppingListRecurrenceInformation",locale));        }        Debug.log("Next Recurrence - " + UtilDateTime.getTimestamp(recInfo.next()), module);        Map result = ServiceUtil.returnSuccess();        result.put("recurrenceInfoId", recInfo.getID());        return result;    }    public static Map createListReorders(DispatchContext dctx, Map context) {        LocalDispatcher dispatcher = dctx.getDispatcher();        GenericDelegator delegator = dctx.getDelegator();        GenericValue userLogin = (GenericValue) context.get("userLogin");        Locale locale = (Locale) context.get("locale");        boolean beganTransaction = false;        try {            beganTransaction = TransactionUtil.begin();                    List exprs = UtilMisc.toList(new EntityExpr("shoppingListTypeId", EntityOperator.EQUALS, "SLT_AUTO_REODR"),                    new EntityExpr("isActive", EntityOperator.EQUALS, "Y"));            EntityCondition cond = new EntityConditionList(exprs, EntityOperator.AND);            List order = UtilMisc.toList("-lastOrderedDate");            EntityListIterator eli = null;            eli = delegator.findListIteratorByCondition("ShoppingList", cond, null, order);                if (eli != null) {                GenericValue shoppingList;                while (((shoppingList = (GenericValue) eli.next()) != null)) {                    Timestamp lastOrder = shoppingList.getTimestamp("lastOrderedDate");                    GenericValue recurrenceInfo = null;                    recurrenceInfo = shoppingList.getRelatedOne("RecurrenceInfo");                        Timestamp startDateTime = recurrenceInfo.getTimestamp("startDateTime");                    RecurrenceInfo recurrence = null;                    if (recurrenceInfo != null) {                        try {                            recurrence = new RecurrenceInfo(recurrenceInfo);                        } catch (RecurrenceInfoException e) {                            Debug.logError(e, module);                        }                    }                        // check the next recurrence                    if (recurrence != null) {                        long next = lastOrder == null ? recurrence.next(startDateTime.getTime()) : recurrence.next(lastOrder.getTime());                        Timestamp now = UtilDateTime.nowTimestamp();                        Timestamp nextOrder = UtilDateTime.getDayStart(UtilDateTime.getTimestamp(next));                            if (nextOrder.after(now)) {                            continue;                        }                    } else {                        continue;                    }                        ShoppingCart listCart = makeShoppingListCart(dispatcher, shoppingList, locale);                    CheckOutHelper helper = new CheckOutHelper(dispatcher, delegator, listCart);                        // store the order                    Map createResp = helper.createOrder(userLogin);                    if (createResp != null && ServiceUtil.isError(createResp)) {                        Debug.logError("Cannot create order for shopping list - " + shoppingList, module);                    } else {                        String orderId = (String) createResp.get("orderId");                            // authorize the payments                        Map payRes = null;                        try {                            payRes = helper.processPayment(ProductStoreWorker.getProductStore(listCart.getProductStoreId(), delegator), userLogin);                        } catch (GeneralException e) {                            Debug.logError(e, module);                        }                            if (payRes != null && ServiceUtil.isError(payRes)) {                            Debug.logError("Payment processing problems with shopping list - " + shoppingList, module);                        }                            shoppingList.set("lastOrderedDate", UtilDateTime.nowTimestamp());                        shoppingList.store();                            // send notification                        try {                            dispatcher.runAsync("sendOrderPayRetryNotification", UtilMisc.toMap("orderId", orderId));                        } catch (GenericServiceException e) {                            Debug.logError(e, module);                        }                            // increment the recurrence                        recurrence.incrementCurrentCount();                    }                }                    eli.close();            }                        return ServiceUtil.returnSuccess();        } catch (GenericEntityException e) {            try {                // only rollback the transaction if we started one...                TransactionUtil.rollback(beganTransaction, "Error creating shopping list auto-reorders", e);            } catch (GenericEntityException e2) {                Debug.logError(e2, "[GenericDelegator] Could not rollback transaction: " + e2.toString(), module);            }            String errMsg = "Error while creating new shopping list based automatic reorder" + e.toString();            Debug.logError(e, errMsg, module);            return ServiceUtil.returnError(errMsg);        } finally {            try {                // only commit the transaction if we started one... this will throw an exception if it fails                TransactionUtil.commit(beganTransaction);            } catch (GenericEntityException e) {                Debug.logError(e, "Could not commit transaction for creating new shopping list based automatic reorder", module);            }        }    }    public static Map splitShipmentMethodString(DispatchContext dctx, Map context) {        String shipmentMethodString = (String) context.get("shippingMethodString");        Map result = ServiceUtil.returnSuccess();        if (UtilValidate.isNotEmpty(shipmentMethodString)) {            int delimiterPos = shipmentMethodString.indexOf('@');            String shipmentMethodTypeId = null;            String carrierPartyId = null;            if (delimiterPos > 0) {                shipmentMethodTypeId = shipmentMethodString.substring(0, delimiterPos);                carrierPartyId = shipmentMethodString.substring(delimiterPos + 1);                result.put("shipmentMethodTypeId", shipmentMethodTypeId);                result.put("carrierPartyId", carrierPartyId);            }        }        return result;    }    public static Map makeListFromOrder(DispatchContext dctx, Map context) {        LocalDispatcher dispatcher = dctx.getDispatcher();        GenericDelegator delegator = dctx.getDelegator();        String shoppingListTypeId = (String) context.get("shoppingListTypeId");        String shoppingListId = (String) context.get("shoppingListId");        String orderId = (String) context.get("orderId");        String partyId = (String) context.get("partyId");        Timestamp startDate = (Timestamp) context.get("startDateTime");        Timestamp endDate = (Timestamp) context.get("endDateTime");        Integer frequency = (Integer) context.get("frequency");        Integer interval = (Integer) context.get("intervalNumber");

⌨️ 快捷键说明

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