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

📄 zipsalesservices.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            if (orderShippingAmount.doubleValue() > 0) {                List taxList = getItemTaxList(delegator, null, postalCode, city, 0.00, orderShippingAmount.doubleValue(), false);                orderAdjustments.addAll(taxList);            }        } catch (GeneralException e) {            return ServiceUtil.returnError(e.getMessage());        }        Map result = ServiceUtil.returnSuccess();        result.put("orderAdjustments", orderAdjustments);        result.put("itemAdjustments", itemAdjustments);        return result;    }    private static List getItemTaxList(GenericDelegator delegator, GenericValue item, String zipCode, String city, double itemAmount, double shippingAmount, boolean isUseTax) throws GeneralException {        List adjustments = new ArrayList();        // check the item for tax status        if (item != null && item.get("taxable") != null && "N".equals(item.getString("taxable"))) {            // item not taxable            return adjustments;        }        // lookup the records        List zipLookup = delegator.findByAnd("ZipSalesTaxLookup", UtilMisc.toMap("zipCode", zipCode), UtilMisc.toList("-fromDate"));        if (zipLookup == null || zipLookup.size() == 0) {            throw new GeneralException("The zip code entered is not valid.");        }        // the filtered list        List taxLookup = null;        // only do filtering if there are more then one zip code found        if (zipLookup != null && zipLookup.size() > 1) {            // first filter by city            List cityLookup = EntityUtil.filterByAnd(zipLookup, UtilMisc.toMap("city", city.toUpperCase()));            if (cityLookup != null && cityLookup.size() > 0) {                if (cityLookup.size() > 1) {                    // filter by county                    List countyLookup = EntityUtil.filterByAnd(taxLookup, UtilMisc.toMap("countyDefault", "Y"));                    if (countyLookup != null && countyLookup.size() > 0) {                        // use the county default                        taxLookup = countyLookup;                    } else {                        // no county default; just use the first city                        taxLookup = cityLookup;                    }                } else {                    // just one city found; use that one                    taxLookup = cityLookup;                }            } else {                // no city found; lookup default city                List defaultLookup = EntityUtil.filterByAnd(zipLookup, UtilMisc.toMap("generalDefault", "Y"));                if (defaultLookup != null && defaultLookup.size() > 0) {                    // use the default city lookup                    taxLookup = defaultLookup;                } else {                    // no default found; just use the first from the zip lookup                    taxLookup = zipLookup;                }            }        } else {            // zero or 1 zip code found; use it            taxLookup = zipLookup;        }        // get the first one        GenericValue taxEntry = null;        if (taxLookup != null && taxLookup.size() > 0) {            taxEntry = (GenericValue) taxLookup.iterator().next();        }        if (taxEntry == null) {            Debug.logWarning("No tax entry found for : " + zipCode + " / " + city + " - " + itemAmount, module);            return adjustments;        }        String fieldName = "comboSalesTax";        if (isUseTax) {            fieldName = "comboUseTax";        }        Double comboTaxRate = taxEntry.getDouble(fieldName);        if (comboTaxRate == null) {            Debug.logWarning("No Combo Tax Rate In Field " + fieldName + " @ " + zipCode + " / " + city + " - " + itemAmount, module);            return adjustments;        }        // get state code        String stateCode = taxEntry.getString("stateCode");        // check if shipping is exempt        boolean taxShipping = true;        // look up the rules        List ruleLookup = null;        try {            ruleLookup = delegator.findByAnd("ZipSalesRuleLookup", UtilMisc.toMap("stateCode", stateCode), UtilMisc.toList("-fromDate"));        } catch (GenericEntityException e) {            Debug.logError(e, module);        }        // filter out city        if (ruleLookup != null && ruleLookup.size() > 1) {            ruleLookup = EntityUtil.filterByAnd(ruleLookup, UtilMisc.toMap("city", city.toUpperCase()));        }        // no county captured; so filter by date        if (ruleLookup != null && ruleLookup.size() > 1) {            ruleLookup = EntityUtil.filterByDate(ruleLookup);        }        if (ruleLookup != null) {            Iterator ruleIterator = ruleLookup.iterator();            while (ruleIterator.hasNext()) {                if (!taxShipping) {                    // if we found an rule which passes no need to contine (all rules are ||)                    break;                }                GenericValue rule = (GenericValue) ruleIterator.next();                String idCode = rule.getString("idCode");                String taxable = rule.getString("taxable");                String condition = rule.getString("shipCond");                if ("T".equals(taxable))  {                    // this record is taxable                    continue;                } else {                    // except if conditions are met                    boolean qualify = false;                    if (condition != null && condition.length() > 0) {                        char[] conditions = condition.toCharArray();                        for (int i = 0; i < conditions.length; i++) {                            switch (conditions[i]) {                                case 'A' :                                    // SHIPPING CHARGE SEPARATELY STATED ON INVOICE                                    qualify = true; // OFBiz does this by default                                    break;                                case 'B' :                                    // SHIPPING CHARGE SEPARATED ON INVOICE FROM HANDLING OR SIMILAR CHARGES                                    qualify = false; // we do not support this currently                                    break;                                case 'C' :                                    // ITEM NOT SOLD FOR GUARANTEED SHIPPED PRICE                                    qualify = false; // we don't support this currently                                    break;                                case 'D' :                                    // SHIPPING CHARGE IS COST ONLY                                    qualify = false; // we assume a handling charge is included                                    break;                                case 'E' :                                    // SHIPPED DIRECTLY TO PURCHASER                                    qualify = true; // this is true, unless gifts do not count?                                    break;                                case 'F' :                                    // SHIPPED VIA COMMON CARRIER                                    qualify = true; // best guess default                                    break;                                case 'G' :                                    // SHIPPED VIA CONTRACT CARRIER                                    qualify = false; // best guess default                                    break;                                case 'H' :                                    // SHIPPED VIA VENDOR EQUIPMENT                                    qualify = false; // best guess default                                    break;                                case 'I' :                                    // SHIPPED F.O.B. ORIGIN                                    qualify = false; // no clue                                    break;                                case 'J' :                                    // SHIPPED F.O.B. DESTINATION                                    qualify = false; // no clue                                    break;                                case 'K' :                                    // F.O.B. IS PURCHASERS OPTION                                    qualify = false; // no clue                                    break;                                case 'L' :                                    // SHIPPING ORIGINATES OR TERMINATES IN DIFFERENT STATES                                    qualify = true; // not determined at order time, no way to know                                    break;                                case 'M' :                                    // PROOF OF VENDOR ACTING AS SHIPPING AGENT FOR PURCHASER                                    qualify = false; // no clue                                    break;                                case 'N' :                                    // SHIPPED FROM VENDOR LOCATION                                    qualify = true; // sure why not                                    break;                                case 'O' :                                    // SHIPPING IS BY PURCHASER OPTION                                    qualify = false; // most online stores require shipping                                    break;                                case 'P' :                                    // CREDIT ALLOWED FOR SHIPPING CHARGE PAID BY PURCHASER TO CARRIER                                    qualify = false; // best guess default                                    break;                                default: break;                            }                        }                    }                    if (qualify) {                        if (isUseTax) {                            if (idCode.indexOf('U') > 0) {                                taxShipping = false;                            }                        } else {                            if (idCode.indexOf('S') > 0) {                                taxShipping = false;                            }                        }                    }                }            }        }        double taxableAmount = itemAmount;        if (taxShipping) {            //Debug.log("Taxing shipping", module);            taxableAmount += shippingAmount;        } else {            Debug.log("Shipping is not taxable", module);        }        // calc tax amount        double taxRate = comboTaxRate.doubleValue();        double taxCalc = taxableAmount * taxRate;        // format the number        Double taxAmount = new Double(formatCurrency(taxCalc));        adjustments.add(delegator.makeValue("OrderAdjustment", UtilMisc.toMap("amount", taxAmount, "orderAdjustmentTypeId", "SALES_TAX", "comments", new Double(taxRate).toString(), "description", "Sales Tax (" + stateCode + ")")));        return adjustments;    }    // formatting methods    private static Timestamp parseDate(String dateString, Timestamp useWhenNull) {        Timestamp ts = null;        if (dateString != null) {            try {                ts = new Timestamp(dateFormat.parse(dateString).getTime());            } catch (ParseException e) {                Debug.logError(e, module);            }        }        if (ts != null) {            return ts;        } else {            return useWhenNull;        }    }    private static String formatCurrency(double currency) {        return curFormat.format(currency);    }}

⌨️ 快捷键说明

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