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

📄 zipsalesservices.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * $Id: ZipSalesServices.java 5462 2005-08-05 18:35:48Z jonesde $ * *  Copyright (c) 2001-2003 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.thirdparty.zipsales;import java.net.URL;import java.sql.Timestamp;import java.text.DecimalFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Locale;import java.util.Map;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.GeneralException;import org.ofbiz.base.util.StringUtil;import org.ofbiz.base.util.UtilHttp;import org.ofbiz.base.util.UtilMisc;import org.ofbiz.base.util.UtilProperties;import org.ofbiz.base.util.UtilURL;import org.ofbiz.datafile.DataFile;import org.ofbiz.datafile.DataFileException;import org.ofbiz.datafile.Record;import org.ofbiz.datafile.RecordIterator;import org.ofbiz.entity.GenericDelegator;import org.ofbiz.entity.GenericEntityException;import org.ofbiz.entity.GenericValue;import org.ofbiz.entity.util.EntityUtil;import org.ofbiz.security.Security;import org.ofbiz.service.DispatchContext;import org.ofbiz.service.ServiceUtil;/** * Zip-Sales Database Services * * @author     <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a> * @version    $Rev: 5462 $ * @since      3.0 */public class ZipSalesServices {    public static final String module = ZipSalesServices.class.getName();    public static final String dataFile = "org/ofbiz/order/thirdparty/zipsales/ZipSalesTaxTables.xml";    public static final String flatTable = "FlatTaxTable";    public static final String ruleTable = "FreightRuleTable";    public static final String resource_error = "OrderErrorUiLabels";    // number formatting    private static String curFmtStr = UtilProperties.getPropertyValue("general.properties", "currency.decimal.format", "##0.00");    private static DecimalFormat curFormat = new DecimalFormat(curFmtStr);    // date formatting    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");    // import table service    public static Map importFlatTable(DispatchContext dctx, Map context) {        GenericDelegator delegator = dctx.getDelegator();        Security security = dctx.getSecurity();        GenericValue userLogin = (GenericValue) context.get("userLogin");        String taxFileLocation = (String) context.get("taxFileLocation");        String ruleFileLocation = (String) context.get("ruleFileLocation");        Locale locale = (Locale) context.get("locale");        // do security check        if (!security.hasPermission("SERVICE_INVOKE_ANY", userLogin)) {            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderYouDoNotHavePermissionToLoadTaxTables",locale));        }        // get a now stamp (we'll use 2000-01-01)        Timestamp now = parseDate("20000101", null);        // load the data file        DataFile tdf = null;        try {            tdf = DataFile.makeDataFile(UtilURL.fromResource(dataFile), flatTable);        } catch (DataFileException e) {            Debug.logError(e, module);            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToReadZipSalesDataFile",locale));        }        // locate the file to be imported        URL tUrl = UtilURL.fromResource(taxFileLocation);        if (tUrl == null) {            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToLocateTaxFileAtLocation", UtilMisc.toMap("taxFileLocation",taxFileLocation), locale));        }        RecordIterator tri = null;        try {            tri = tdf.makeRecordIterator(tUrl);        } catch (DataFileException e) {            Debug.logError(e, module);            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderProblemGettingTheRecordIterator",locale));        }        if (tri != null) {            while (tri.hasNext()) {                Record entry = null;                try {                    entry = tri.next();                } catch (DataFileException e) {                    Debug.logError(e, module);                }                GenericValue newValue = delegator.makeValue("ZipSalesTaxLookup", null);                // PK fields                newValue.set("zipCode", entry.getString("zipCode").trim());                newValue.set("stateCode", entry.get("stateCode") != null ? entry.getString("stateCode").trim() : "_NA_");                newValue.set("city", entry.get("city") != null ? entry.getString("city").trim() : "_NA_");                newValue.set("county", entry.get("county") != null ? entry.getString("county").trim() : "_NA_");                newValue.set("fromDate", parseDate(entry.getString("effectiveDate"), now));                // non-PK fields                newValue.set("countyFips", entry.get("countyFips"));                newValue.set("countyDefault", entry.get("countyDefault"));                newValue.set("generalDefault", entry.get("generalDefault"));                newValue.set("insideCity", entry.get("insideCity"));                newValue.set("geoCode", entry.get("geoCode"));                newValue.set("stateSalesTax", entry.get("stateSalesTax"));                newValue.set("citySalesTax", entry.get("citySalesTax"));                newValue.set("cityLocalSalesTax", entry.get("cityLocalSalesTax"));                newValue.set("countySalesTax", entry.get("countySalesTax"));                newValue.set("countyLocalSalesTax", entry.get("countyLocalSalesTax"));                newValue.set("comboSalesTax", entry.get("comboSalesTax"));                newValue.set("stateUseTax", entry.get("stateUseTax"));                newValue.set("cityUseTax", entry.get("cityUseTax"));                newValue.set("cityLocalUseTax", entry.get("cityLocalUseTax"));                newValue.set("countyUseTax", entry.get("countyUseTax"));                newValue.set("countyLocalUseTax", entry.get("countyLocalUseTax"));                newValue.set("comboUseTax", entry.get("comboUseTax"));                try {                    delegator.createOrStore(newValue);                } catch (GenericEntityException e) {                    Debug.logError(e, module);                    return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderErrorWritingRecordsToTheDatabase",locale));                }                // console log                Debug.log(newValue.get("zipCode") + "/" + newValue.get("stateCode") + "/" + newValue.get("city") + "/" + newValue.get("county") + "/" + newValue.get("fromDate"));            }        }        // load the data file        DataFile rdf = null;        try {            rdf = DataFile.makeDataFile(UtilURL.fromResource(dataFile), ruleTable);        } catch (DataFileException e) {            Debug.logError(e, module);            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToReadZipSalesDataFile",locale));        }        // locate the file to be imported        URL rUrl = UtilURL.fromResource(ruleFileLocation);        if (rUrl == null) {            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderUnableToLocateRuleFileFromLocation", UtilMisc.toMap("ruleFileLocation",ruleFileLocation), locale));        }        RecordIterator rri = null;        try {            rri = rdf.makeRecordIterator(rUrl);        } catch (DataFileException e) {            Debug.logError(e, module);            return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderProblemGettingTheRecordIterator",locale));        }        if (rri != null) {            while (rri.hasNext()) {                Record entry = null;                try {                    entry = rri.next();                } catch (DataFileException e) {                    Debug.logError(e, module);                }                if (entry.get("stateCode") != null && entry.getString("stateCode").length() > 0) {                    GenericValue newValue = delegator.makeValue("ZipSalesRuleLookup", null);                    // PK fields                    newValue.set("stateCode", entry.get("stateCode") != null ? entry.getString("stateCode").trim() : "_NA_");                    newValue.set("city", entry.get("city") != null ? entry.getString("city").trim() : "_NA_");                    newValue.set("county", entry.get("county") != null ? entry.getString("county").trim() : "_NA_");                    newValue.set("fromDate", parseDate(entry.getString("effectiveDate"), now));                    // non-PK fields                    newValue.set("idCode", entry.get("idCode") != null ? entry.getString("idCode").trim() : null);                    newValue.set("taxable", entry.get("taxable") != null ? entry.getString("taxable").trim() : null);                    newValue.set("shipCond", entry.get("shipCond") != null ? entry.getString("shipCond").trim() : null);                    try {                        // using storeAll as an easy way to create/update                        delegator.storeAll(UtilMisc.toList(newValue));                    } catch (GenericEntityException e) {                        Debug.logError(e, module);                        return ServiceUtil.returnError(UtilProperties.getMessage(resource_error,"OrderErrorWritingRecordsToTheDatabase",locale));                    }                    // console log                    Debug.log(newValue.get("stateCode") + "/" + newValue.get("city") + "/" + newValue.get("county") + "/" + newValue.get("fromDate"));                }            }        }        return ServiceUtil.returnSuccess();    }    // tax calc service    public static Map flatTaxCalc(DispatchContext dctx, Map context) {        GenericDelegator delegator = dctx.getDelegator();        List itemProductList = (List) context.get("itemProductList");        List itemAmountList = (List) context.get("itemAmountList");        List itemShippingList = (List) context.get("itemShippingList");        Double orderShippingAmount = (Double) context.get("orderShippingAmount");        GenericValue shippingAddress = (GenericValue) context.get("shippingAddress");        // flatTaxCalc only uses the Zip + City from the address        String stateProvince = shippingAddress.getString("stateProvinceGeoId");        String postalCode = shippingAddress.getString("postalCode");        String city = shippingAddress.getString("city");        // setup the return lists.        List orderAdjustments = new ArrayList();        List itemAdjustments = new ArrayList();        // check for a valid state/province geo        String validStates = UtilProperties.getPropertyValue("zipsales.properties", "zipsales.valid.states");        if (validStates != null && validStates.length() > 0) {            List stateSplit = StringUtil.split(validStates, "|");            if (!stateSplit.contains(stateProvince)) {                Map result = ServiceUtil.returnSuccess();                result.put("orderAdjustments", orderAdjustments);                result.put("itemAdjustments", itemAdjustments);                return result;            }        }        try {            // loop through and get per item tax rates            for (int i = 0; i < itemProductList.size(); i++) {                GenericValue product = (GenericValue) itemProductList.get(i);                Double itemAmount = (Double) itemAmountList.get(i);                Double shippingAmount = (Double) itemShippingList.get(i);                itemAdjustments.add(getItemTaxList(delegator, product, postalCode, city, itemAmount.doubleValue(), shippingAmount.doubleValue(), false));            }

⌨️ 快捷键说明

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