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

📄 productutilservices.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            String variantProductId = productAssoc.getString("productIdTo");            // Product            GenericValue variantProduct = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", variantProductId));            Debug.logInfo("--variant has ID: " + variantProductId + " and name: " + variantProduct.getString("internalName"), module);            // start with the values from the virtual product, override from the variant...            GenericValue newVariantProduct = delegator.makeValue("Product", product);            newVariantProduct.setAllFields(variantProduct, false, "", null);            newVariantProduct.set("isVariant", "N");            if (test) {                Debug.logInfo("Test mode, would store: " + newVariantProduct, module);            } else {                newVariantProduct.store();            }            // ProductCategoryMember - always remove these to pull the virtual from any categories it might have been in            duplicateRelated(product, "", "ProductCategoryMember", "productId", variantProductId, nowTimestamp, true, delegator, test);            // ProductFeatureAppl            duplicateRelated(product, "", "ProductFeatureAppl", "productId", variantProductId, nowTimestamp, removeOld, delegator, test);            // ProductContent            duplicateRelated(product, "", "ProductContent", "productId", variantProductId, nowTimestamp, removeOld, delegator, test);            // ProductPrice            duplicateRelated(product, "", "ProductPrice", "productId", variantProductId, nowTimestamp, removeOld, delegator, test);            // GoodIdentification            duplicateRelated(product, "", "GoodIdentification", "productId", variantProductId, nowTimestamp, removeOld, delegator, test);            // ProductAttribute            duplicateRelated(product, "", "ProductAttribute", "productId", variantProductId, nowTimestamp, removeOld, delegator, test);            // ProductAssoc            duplicateRelated(product, "Main", "ProductAssoc", "productId", variantProductId, nowTimestamp, removeOld, delegator, test);            duplicateRelated(product, "Assoc", "ProductAssoc", "productIdTo", variantProductId, nowTimestamp, removeOld, delegator, test);            if (removeOld) {                if (test) {                    Debug.logInfo("Test mode, would remove related ProductKeyword with dummy key: " + product.getRelatedDummyPK("ProductKeyword"), module);                    Debug.logInfo("Test mode, would remove: " + product, module);                } else {                    product.removeRelated("ProductKeyword");                    product.remove();                }            }            if (test) {                return ServiceUtil.returnError("Test mode - returning error to get a rollback");            }        } catch (GenericEntityException e) {            Map messageMap = UtilMisc.toMap("errMessage", e.toString());            errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_makeStandAloneFromSingleVariantVirtuals", messageMap, locale);            Debug.logError(e, errMsg, module);            return ServiceUtil.returnError(errMsg);        }        return ServiceUtil.returnSuccess();    }    protected static void duplicateRelated(GenericValue product, String title, String relatedEntityName, String productIdField, String variantProductId, Timestamp nowTimestamp, boolean removeOld, GenericDelegator delegator, boolean test) throws GenericEntityException {        List relatedList = EntityUtil.filterByDate(product.getRelated(title + relatedEntityName), nowTimestamp);        Iterator relatedIter = relatedList.iterator();        while (relatedIter.hasNext()) {            GenericValue relatedValue = (GenericValue) relatedIter.next();            GenericValue newRelatedValue = (GenericValue) relatedValue.clone();            newRelatedValue.set(productIdField, variantProductId);            // create a new one? see if one already exists with different from/thru dates            ModelEntity modelEntity = relatedValue.getModelEntity();            if (modelEntity.isField("fromDate")) {                GenericPK findValue = newRelatedValue.getPrimaryKey();                // can't just set to null, need to remove the value so it isn't a constraint in the query                //findValue.set("fromDate", null);                findValue.remove("fromDate");                List existingValueList = EntityUtil.filterByDate(delegator.findByAnd(relatedEntityName, findValue), nowTimestamp);                if (existingValueList.size() > 0) {                    if (test) {                        Debug.logInfo("Found " + existingValueList.size() + " existing values for related entity name: " + relatedEntityName + ", not copying, findValue is: " + findValue, module);                    }                    continue;                }                newRelatedValue.set("fromDate", nowTimestamp);            }            if (delegator.findCountByAnd(relatedEntityName, newRelatedValue.getPrimaryKey()) == 0) {                if (test) {                    Debug.logInfo("Test mode, would create: " + newRelatedValue, module);                } else {                    newRelatedValue.create();                }            }        }        if (removeOld) {            if (test) {                Debug.logInfo("Test mode, would remove related " + title + relatedEntityName + " with dummy key: " + product.getRelatedDummyPK(title + relatedEntityName), module);            } else {                product.removeRelated(title + relatedEntityName);            }        }    }    /** reset all product image names with a certain pattern, ex: /images/products/${size}/${productId}.jpg     * NOTE: only works on fields of Product right now     */    public static Map setAllProductImageNames(DispatchContext dctx, Map context) {        GenericDelegator delegator = dctx.getDelegator();        Timestamp nowTimestamp = UtilDateTime.nowTimestamp();        String pattern = (String) context.get("pattern");        Locale locale = (Locale) context.get("locale");        String errMsg = null;        if (UtilValidate.isEmpty(pattern)) {            String imageFilenameFormat = UtilProperties.getPropertyValue("catalog", "image.filename.format");            String imageUrlPrefix = UtilProperties.getPropertyValue("catalog", "image.url.prefix");            pattern = imageUrlPrefix + "/" + imageFilenameFormat;        }        try {            EntityListIterator eli = delegator.findListIteratorByCondition("Product", null, null, null);            GenericValue product = null;            int numSoFar = 0;            while ((product = (GenericValue) eli.next()) != null) {                String productId = (String) product.get("productId");                Map smallMap = UtilMisc.toMap("size", "small", "productId", productId);                Map mediumMap = UtilMisc.toMap("size", "medium", "productId", productId);                Map largeMap = UtilMisc.toMap("size", "large", "productId", productId);                Map detailMap = UtilMisc.toMap("size", "detail", "productId", productId);                if ("Y".equals(product.getString("isVirtual"))) {                    // find the first variant, use it's ID for the names...                    List productAssocList = EntityUtil.filterByDate(delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", productId, "productAssocTypeId", "PRODUCT_VARIANT")), nowTimestamp);                    if (productAssocList.size() > 0) {                        GenericValue productAssoc = EntityUtil.getFirst(productAssocList);                        smallMap.put("productId", productAssoc.get("productIdTo"));                        mediumMap.put("productId", productAssoc.get("productIdTo"));                        product.set("smallImageUrl", FlexibleStringExpander.expandString(pattern, smallMap));                        product.set("mediumImageUrl", FlexibleStringExpander.expandString(pattern, mediumMap));                    } else {                        product.set("smallImageUrl", null);                        product.set("mediumImageUrl", null);                    }                    product.set("largeImageUrl", null);                    product.set("detailImageUrl", null);                } else {                    product.set("smallImageUrl", FlexibleStringExpander.expandString(pattern, smallMap));                    product.set("mediumImageUrl", FlexibleStringExpander.expandString(pattern, mediumMap));                    product.set("largeImageUrl", FlexibleStringExpander.expandString(pattern, largeMap));                    product.set("detailImageUrl", FlexibleStringExpander.expandString(pattern, detailMap));                }                product.store();                numSoFar++;                if (numSoFar % 500 == 0) {                    Debug.logInfo("Image URLs set for " + numSoFar + " products.", module);                }            }            eli.close();            Debug.logInfo("Completed - Image URLs set for " + numSoFar + " products.", module);        } catch (GenericEntityException e) {            Map messageMap = UtilMisc.toMap("errMessage", e.toString());            errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_setAllProductImageNames", messageMap, locale);            Debug.logError(e, errMsg, module);            return ServiceUtil.returnError(errMsg);        }        return ServiceUtil.returnSuccess();    }    public static Map clearAllVirtualProductImageNames(DispatchContext dctx, Map context) {        GenericDelegator delegator = dctx.getDelegator();        Locale locale = (Locale) context.get("locale");        String errMsg = null;        try {            EntityListIterator eli = delegator.findListIteratorByCondition("Product", new EntityExpr("isVirtual", EntityOperator.EQUALS, "Y"), null, null);            GenericValue product = null;            int numSoFar = 0;            while ((product = (GenericValue) eli.next()) != null) {                product.set("smallImageUrl", null);                product.set("mediumImageUrl", null);                product.set("largeImageUrl", null);                product.set("detailImageUrl", null);                product.store();                numSoFar++;                if (numSoFar % 500 == 0) {                    Debug.logInfo("Image URLs cleared for " + numSoFar + " products.", module);                }            }            eli.close();            Debug.logInfo("Completed - Image URLs set for " + numSoFar + " products.", module);        } catch (GenericEntityException e) {            Map messageMap = UtilMisc.toMap("errMessage", e.toString());            errMsg = UtilProperties.getMessage(resource,"productutilservices.entity_error_running_clearAllVirtualProductImageNames", messageMap, locale);            Debug.logError(e, errMsg, module);            return ServiceUtil.returnError(errMsg);        }

⌨️ 快捷键说明

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