return;
}
private void cloneSku(Item item, Item source, AdminBean adminBean) throws Exception {
EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
User user = adminBean.getUser();
item.setItemNaturalKey(Utility.encode(item.getItemSkuCd()));
item.setSeqNum(source.getSeqNum());
item.setItemNum(source.getItemNum());
item.setItemUpcCd(source.getItemUpcCd());
item.setItemTypeCd(Constants.ITEM_TYPE_SKU);
item.setItemSellable(source.getItemSellable());
item.setItemCost(source.getItemCost());
item.setItemHitCounter(0);
item.setItemRating(Float.valueOf(0));
item.setItemRatingCount(0);
item.setItemQty(0);
item.setItemBookedQty(0);
item.setItemPublishOn(source.getItemPublishOn());
item.setItemExpireOn(source.getItemExpireOn());
item.setPublished(source.getPublished());
item.setRecUpdateBy(user.getUserId());
item.setRecUpdateDatetime(new Date());
item.setRecCreateBy(user.getUserId());
item.setRecCreateDatetime(new Date());
item.setSite(source.getSite());
item.setShippingType(source.getShippingType());
item.setProductClass(source.getProductClass());
item.setUser(source.getUser());
item.setCustomAttributeGroup(source.getCustomAttributeGroup());
item.setItemSkuParent(source);
source.getItemSkus().add(item);
for (Category category : source.getCategories()) {
item.getCategories().add(category);
}
for (ItemLanguage sourceLanguage : source.getItemLanguages()) {
ItemLanguage itemLanguage = new ItemLanguage();
itemLanguage.setItemShortDesc(sourceLanguage.getItemShortDesc());
itemLanguage.setItemDesc(sourceLanguage.getItemDesc());
itemLanguage.setPageTitle(sourceLanguage.getPageTitle());
itemLanguage.setMetaKeywords(sourceLanguage.getMetaKeywords());
itemLanguage.setMetaDescription(sourceLanguage.getMetaDescription());
itemLanguage.setItemImageOverride(sourceLanguage.getItemImageOverride());
itemLanguage.setRecUpdateBy(user.getUserId());
itemLanguage.setRecUpdateDatetime(new Date());
itemLanguage.setRecCreateBy(user.getUserId());
itemLanguage.setRecCreateDatetime(new Date());
itemLanguage.setSiteProfileClass(sourceLanguage.getSiteProfileClass());
item.getItemLanguages().add(itemLanguage);
em.persist(itemLanguage);
if (sourceLanguage.getSiteProfileClass().getSiteProfileClassId().equals(adminBean.getSite().getSiteProfileClassDefault().getSiteProfileClassId())) {
item.setItemLanguage(itemLanguage);
}
if (sourceLanguage.getImage() != null) {
ItemImage sourceImage = sourceLanguage.getImage();
ItemImage itemImage = new ItemImage();
itemImage.setSeqNum(sourceImage.getSeqNum());
itemImage.setContentType(sourceImage.getContentType());
itemImage.setImageName(sourceImage.getImageName());
itemImage.setImageValue(sourceImage.getImageValue());
itemImage.setImageHeight(sourceImage.getImageHeight());
itemImage.setImageWidth(sourceImage.getImageWidth());
itemImage.setRecUpdateBy(user.getUserId());
itemImage.setRecUpdateDatetime(new Date());
itemImage.setRecCreateBy(user.getUserId());
itemImage.setRecCreateDatetime(new Date());
em.persist(itemImage);
itemLanguage.setImage(itemImage);
}
for (ItemImage sourceImage : sourceLanguage.getImages()) {
ItemImage itemImage = new ItemImage();
itemImage.setSeqNum(sourceImage.getSeqNum());
itemImage.setContentType(sourceImage.getContentType());
itemImage.setImageName(sourceImage.getImageName());
itemImage.setImageValue(sourceImage.getImageValue());
itemImage.setImageHeight(sourceImage.getImageHeight());
itemImage.setImageWidth(sourceImage.getImageWidth());
itemImage.setRecUpdateBy(user.getUserId());
itemImage.setRecUpdateDatetime(new Date());
itemImage.setRecCreateBy(user.getUserId());
itemImage.setRecCreateDatetime(new Date());
itemLanguage.getImages().add(itemImage);
em.persist(itemImage);
}
}
for (ItemPriceCurrency sourcePriceCurrency : source.getItemPriceCurrencies()) {
ItemPriceCurrency itemPriceCurrency = new ItemPriceCurrency();
itemPriceCurrency.setItemPrice(sourcePriceCurrency.getItemPrice());
itemPriceCurrency.setItemPriceTypeCode(sourcePriceCurrency.getItemPriceTypeCode());
itemPriceCurrency.setItemPriceExpireOn(sourcePriceCurrency.getItemPriceExpireOn());
itemPriceCurrency.setItemPricePublishOn(sourcePriceCurrency.getItemPricePublishOn());
itemPriceCurrency.setRecUpdateBy(user.getUserId());
itemPriceCurrency.setRecUpdateDatetime(new Date());
itemPriceCurrency.setRecCreateBy(user.getUserId());
itemPriceCurrency.setRecCreateDatetime(new Date());
itemPriceCurrency.setSiteCurrencyClass(sourcePriceCurrency.getSiteCurrencyClass());
itemPriceCurrency.setItem(item);
item.getItemPriceCurrencies().add(itemPriceCurrency);
if (sourcePriceCurrency.getSiteCurrencyClass().getSiteCurrencyClassId().equals(adminBean.getSite().getSiteCurrencyClassDefault().getSiteCurrencyClassId())) {
if (sourcePriceCurrency.getItemPriceTypeCode() == Constants.ITEM_PRICE_TYPE_CODE_REGULAR) {
item.setItemPrice(itemPriceCurrency);
}
else {
item.setItemSpecPrice(itemPriceCurrency);
}
}
em.persist(itemPriceCurrency);
}
for (ItemTierPrice sourceTierPrice : source.getItemTierPrices()) {
ItemTierPrice itemTierPrice = new ItemTierPrice();
itemTierPrice.setItemTierQty(sourceTierPrice.getItemTierQty());
itemTierPrice.setItemTierPricePublishOn(sourceTierPrice.getItemTierPricePublishOn());
itemTierPrice.setItemTierPriceExpireOn(sourceTierPrice.getItemTierPriceExpireOn());
itemTierPrice.setRecUpdateBy(user.getUserId());
itemTierPrice.setRecUpdateDatetime(new Date());
itemTierPrice.setRecCreateBy(user.getUserId());
itemTierPrice.setRecCreateDatetime(new Date());
itemTierPrice.setCustomerClass(sourceTierPrice.getCustomerClass());
item.getItemTierPrices().add(itemTierPrice);
for (ItemTierPriceCurrency sourceTierPriceCurrency : sourceTierPrice.getItemTierPriceCurrencies()) {
ItemTierPriceCurrency itemTierPriceCurrency = new ItemTierPriceCurrency();
itemTierPriceCurrency.setItemPrice(sourceTierPriceCurrency.getItemPrice());
itemTierPriceCurrency.setRecUpdateBy(user.getUserId());
itemTierPriceCurrency.setRecUpdateDatetime(new Date());
itemTierPriceCurrency.setRecCreateBy(user.getUserId());
itemTierPriceCurrency.setRecCreateDatetime(new Date());
itemTierPriceCurrency.setSiteCurrencyClass(sourceTierPriceCurrency.getSiteCurrencyClass());
itemTierPrice.getItemTierPriceCurrencies().add(itemTierPriceCurrency);
em.persist(itemTierPriceCurrency);
if (sourceTierPriceCurrency.getSiteCurrencyClass().getSiteCurrencyClassId().equals(adminBean.getSite().getSiteCurrencyClassDefault().getSiteCurrencyClassId())) {
itemTierPrice.setItemTierPriceCurrency(itemTierPriceCurrency);
}
}
em.persist(itemTierPrice);
}
em.persist(item);
for (Item sourceCrossSell : source.getItemsCrossSell()) {
item.getItemsCrossSell().add(sourceCrossSell);
}
for (Item sourceRelated : source.getItemsRelated()) {
item.getItemsRelated().add(sourceRelated);
}
for (Item sourceUpSell: source.getItemsUpSell()) {
item.getItemsUpSell().add(sourceUpSell);
}
for (ItemAttributeDetail sourceAttributeDetail : source.getItemAttributeDetails()) {
if (sourceAttributeDetail.getCustomAttributeDetail().getCustomAttribute().getCustomAttribTypeCode() == Constants.CUSTOM_ATTRIBUTE_TYPE_SKU_MAKEUP) {
continue;
}
ItemAttributeDetail itemAttributeDetail = new ItemAttributeDetail();
itemAttributeDetail.setRecUpdateBy(user.getUserId());
itemAttributeDetail.setRecUpdateDatetime(new Date());
itemAttributeDetail.setRecCreateBy(user.getUserId());
itemAttributeDetail.setRecCreateDatetime(new Date());
itemAttributeDetail.setCustomAttributeDetail(sourceAttributeDetail.getCustomAttributeDetail());
itemAttributeDetail.setCustomAttributeOption(sourceAttributeDetail.getCustomAttributeOption());
itemAttributeDetail.setItem(item);
item.getItemAttributeDetails().add(itemAttributeDetail);
for (ItemAttributeDetailLanguage sourceAttributeDetailLanguage : sourceAttributeDetail.getItemAttributeDetailLanguages()) {
ItemAttributeDetailLanguage itemAttributeDetailLanguage = new ItemAttributeDetailLanguage();
itemAttributeDetailLanguage.setItemAttribDetailValue(sourceAttributeDetailLanguage.getItemAttribDetailValue());
itemAttributeDetailLanguage.setRecUpdateBy(user.getUserId());
itemAttributeDetailLanguage.setRecUpdateDatetime(new Date());
itemAttributeDetailLanguage.setRecCreateBy(user.getUserId());
itemAttributeDetailLanguage.setRecCreateDatetime(new Date());
itemAttributeDetailLanguage.setSiteProfileClass(sourceAttributeDetailLanguage.getSiteProfileClass());
itemAttributeDetail.getItemAttributeDetailLanguages().add(itemAttributeDetailLanguage);
em.persist(itemAttributeDetailLanguage);