}
public void saveDefault(Item item, ItemMaintActionForm form, AdminBean adminBean, boolean insertMode) throws Exception {
EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
User user = adminBean.getUser();
Site site = adminBean.getSite();
Long siteProfileClassId = form.getSiteProfileClassId();
SiteProfileClass siteProfileClass = SiteProfileClassDAO.load(siteProfileClassId);
ItemLanguage itemLanguage = item.getItemLanguage();
boolean exist = true;
if (itemLanguage == null) {
itemLanguage = new ItemLanguage();
exist = false;
itemLanguage.setItemImageOverride(String.valueOf(Constants.VALUE_NO));
itemLanguage.setRecCreateBy(adminBean.getUser().getUserId());
itemLanguage.setRecCreateDatetime(new Date(System.currentTimeMillis()));
itemLanguage.setSiteProfileClass(siteProfileClass);
item.getItemLanguages().add(itemLanguage);
item.setItemLanguage(itemLanguage);
}
itemLanguage.setItemShortDesc(form.getItemShortDesc());
itemLanguage.setItemDesc(form.getItemDesc());
itemLanguage.setPageTitle(form.getPageTitle());
itemLanguage.setMetaKeywords(form.getMetaKeywords());
itemLanguage.setMetaDescription(form.getMetaDescription());
itemLanguage.setRecUpdateBy(adminBean.getUser().getUserId());
itemLanguage.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
if (!exist) {
em.persist(itemLanguage);
}
item.setItemNaturalKey(Utility.encode(form.getItemSkuCd()));
item.setItemNum(form.getItemNum());
item.setItemUpcCd(form.getItemUpcCd());
item.setItemSkuCd(form.getItemSkuCd());
item.setSeqNum(new Integer(0));
item.setItemCost(Format.getFloatObj(form.getItemCost()));
Long siteCurrencyClassId = form.getSiteCurrencyClassId();
SiteCurrencyClass siteCurrencyClass = SiteCurrencyClassDAO.load(siteCurrencyClassId);
ItemPriceCurrency regularPriceCurrency = null;
ItemPriceCurrency specialPriceCurrency = null;
for (ItemPriceCurrency priceCurrency : item.getItemPriceCurrencies()) {
if (!priceCurrency.getSiteCurrencyClass().getSiteCurrencyClassId().equals(siteCurrencyClassId)) {
continue;
}
if (priceCurrency.getItemPriceTypeCode() == Constants.ITEM_PRICE_TYPE_CODE_REGULAR) {
regularPriceCurrency = priceCurrency;
}
if (priceCurrency.getItemPriceTypeCode() == Constants.ITEM_PRICE_TYPE_CODE_SPECIAL) {
specialPriceCurrency = priceCurrency;
}
}
if (regularPriceCurrency == null) {
regularPriceCurrency = new ItemPriceCurrency();
regularPriceCurrency.setItemPriceTypeCode(Constants.ITEM_PRICE_TYPE_CODE_REGULAR);
regularPriceCurrency.setItemPricePublishOn(Format.LOWDATE);
regularPriceCurrency.setItemPriceExpireOn(Format.HIGHDATE);
regularPriceCurrency.setRecCreateBy(user.getUserId());
regularPriceCurrency.setRecCreateDatetime(new Date(System.currentTimeMillis()));
regularPriceCurrency.setSiteCurrencyClass(siteCurrencyClass);
regularPriceCurrency.setItem(item);
item.setItemPrice(regularPriceCurrency);
}
regularPriceCurrency.setItemPrice(Format.getFloat(form.getItemPrice()));
regularPriceCurrency.setRecUpdateBy(user.getUserId());
regularPriceCurrency.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
em.persist(regularPriceCurrency);
if (!Format.isNullOrEmpty(form.getItemSpecPrice())) {
if (specialPriceCurrency == null) {
specialPriceCurrency = new ItemPriceCurrency();
specialPriceCurrency.setItemPriceTypeCode(Constants.ITEM_PRICE_TYPE_CODE_SPECIAL);
specialPriceCurrency.setRecCreateBy(user.getUserId());
specialPriceCurrency.setRecCreateDatetime(new Date(System.currentTimeMillis()));
specialPriceCurrency.setSiteCurrencyClass(siteCurrencyClass);
specialPriceCurrency.setItem(item);
item.setItemSpecPrice(specialPriceCurrency);
}
specialPriceCurrency.setItemPrice(Format.getFloat(form.getItemSpecPrice()));
specialPriceCurrency.setItemPricePublishOn(Format.getDate(form.getItemSpecPublishOn()));
specialPriceCurrency.setItemPriceExpireOn(Format.getDate(form.getItemSpecExpireOn()));
specialPriceCurrency.setRecUpdateBy(user.getUserId());
specialPriceCurrency.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
em.persist(specialPriceCurrency);
}
else {
if (specialPriceCurrency != null) {
item.setItemSpecPrice(null);
for (ItemPriceCurrency itemPriceCurrency : item.getItemPriceCurrencies()) {
if (itemPriceCurrency.getItemPriceTypeCode() != Constants.ITEM_PRICE_TYPE_CODE_SPECIAL) {
continue;
}
em.remove(itemPriceCurrency);
}
}
}
item.setItemPublishOn(Format.getDate(form.getItemPublishOn()));
item.setItemExpireOn(Format.getDate(form.getItemExpireOn()));
item.setItemSellable(form.isItemSellable() ? 'Y' : 'N');
item.setPublished(form.isPublished() ? 'Y' : 'N');
item.setRecUpdateBy(adminBean.getUser().getUserId());
item.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
ItemTierPriceDisplayForm prices[] = form.getItemTierPrices();
for (int i = 0; i < prices.length; i++) {
ItemTierPriceDisplayForm price = prices[i];
Iterator<?> iterator = item.getItemTierPrices().iterator();
boolean found = false;
ItemTierPrice itemTierPrice = null;
ItemTierPriceCurrency itemTierPriceCurrency = null;
if (!Format.isNullOrEmpty(price.getItemTierPriceId())) {
while (iterator.hasNext()) {
itemTierPrice = (ItemTierPrice) iterator.next();
if (itemTierPrice.getItemTierPriceId().equals(Format.getLong(price.getItemTierPriceId()))) {
found = true;
itemTierPriceCurrency = itemTierPrice.getItemTierPriceCurrency();
break;
}
}
}
if (!found) {
itemTierPrice = new ItemTierPrice();
itemTierPrice.setRecCreateBy(adminBean.getUser().getUserId());
itemTierPrice.setRecCreateDatetime(new Date(System.currentTimeMillis()));
item.getItemTierPrices().add(itemTierPrice);
itemTierPriceCurrency = new ItemTierPriceCurrency();
itemTierPriceCurrency.setRecCreateBy(adminBean.getUser().getUserId());
itemTierPriceCurrency.setRecCreateDatetime(new Date(System.currentTimeMillis()));
itemTierPrice.setItemTierPriceCurrency(itemTierPriceCurrency);
itemTierPrice.getItemTierPriceCurrencies().add(itemTierPriceCurrency);
itemTierPriceCurrency.setSiteCurrencyClass(siteCurrencyClass);
}
itemTierPriceCurrency.setItemPrice(Format.getFloatObj(price.getItemTierPrice()));
itemTierPriceCurrency.setRecUpdateBy(adminBean.getUser().getUserId());
itemTierPriceCurrency.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
em.persist(itemTierPriceCurrency);
itemTierPrice.setItemTierQty(Format.getIntObj(price.getItemTierQty()));
itemTierPrice.setRecUpdateBy(adminBean.getUser().getUserId());
itemTierPrice.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
if (Format.isNullOrEmpty(price.getItemTierPricePublishOn())) {
itemTierPrice.setItemTierPricePublishOn(Format.LOWDATE);
}
else {
itemTierPrice.setItemTierPricePublishOn(Format.getDate(price.getItemTierPricePublishOn()));
}
if (Format.isNullOrEmpty(price.getItemTierPriceExpireOn())) {
itemTierPrice.setItemTierPricePublishOn(Format.HIGHDATE);
}
else {
itemTierPrice.setItemTierPricePublishOn(Format.getDate(price.getItemTierPriceExpireOn()));
}
}
if (!Format.isNullOrEmpty(form.getCustomAttribGroupId())) {
Long customAttribGroupId = Format.getLong(form.getCustomAttribGroupId());
CustomAttributeGroup customAttributeGroup = CustomAttributeGroupDAO.load(adminBean.getSite().getSiteId(), customAttribGroupId);
item.setCustomAttributeGroup(customAttributeGroup);
}
for (ItemAttributeDetail itemAttributeDetail : item.getItemAttributeDetails()) {
for (ItemAttributeDetailLanguage itemAttributeDetailLanguage : itemAttributeDetail.getItemAttributeDetailLanguages()) {
em.remove(itemAttributeDetailLanguage);
}
em.remove(itemAttributeDetail);
}
item.getItemAttributeDetails().clear();
ItemAttributeDetailDisplayForm itemAttributeDetails[] = form.getItemAttributeDetails();
for (int i = 0; i < itemAttributeDetails.length; i++) {
CustomAttribute customAttribute = CustomAttributeDAO.load(site.getSiteId(), Format.getLong(itemAttributeDetails[i].getCustomAttribId()));
ItemAttributeDetail itemAttributeDetail = new ItemAttributeDetail();
Long customAttribDetailId = Format.getLong(itemAttributeDetails[i].getCustomAttribDetailId());
CustomAttributeDetail customAttributeDetail = (CustomAttributeDetail) em.find(CustomAttributeDetail.class, customAttribDetailId);
itemAttributeDetail.setCustomAttributeDetail(customAttributeDetail);
itemAttributeDetail.setRecUpdateBy(adminBean.getUser().getUserId());
itemAttributeDetail.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
itemAttributeDetail.setRecCreateBy(adminBean.getUser().getUserId());
itemAttributeDetail.setRecCreateDatetime(new Date(System.currentTimeMillis()));
itemAttributeDetail.setItem(item);
switch (customAttribute.getCustomAttribTypeCode()) {
case Constants.CUSTOM_ATTRIBUTE_TYPE_USER_INPUT:
ItemAttributeDetailLanguage itemAttributeDetailLanguage = new ItemAttributeDetailLanguage();
itemAttributeDetailLanguage.setItemAttribDetailValue(itemAttributeDetails[i].getItemAttribDetailValue());
itemAttributeDetailLanguage.setRecUpdateBy(adminBean.getUser().getUserId());
itemAttributeDetailLanguage.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
itemAttributeDetailLanguage.setRecCreateBy(adminBean.getUser().getUserId());
itemAttributeDetailLanguage.setRecCreateDatetime(new Date(System.currentTimeMillis()));
itemAttributeDetail.setItemAttributeDetailLanguage(itemAttributeDetailLanguage);
itemAttributeDetail.getItemAttributeDetailLanguages().add(itemAttributeDetailLanguage);
itemAttributeDetailLanguage.setSiteProfileClass(siteProfileClass);
em.persist(itemAttributeDetailLanguage);
break;
case Constants.CUSTOM_ATTRIBUTE_TYPE_USER_SELECT_DROPDOWN:
if (!insertMode) {
CustomAttributeOption customAttributeOption = null;
if (itemAttributeDetails[i].getCustomAttribOptionId() != null) {
customAttributeOption = CustomAttributeOptionDAO.load(site.getSiteId(), Format.getLong(itemAttributeDetails[i].getCustomAttribOptionId()));
}
itemAttributeDetail.setCustomAttributeOption(customAttributeOption);
}
else {
CustomAttributeOption customAttributeOption = null;
for (CustomAttributeOption option : customAttribute.getCustomAttributeOptions()) {
customAttributeOption = option;
}
if (customAttributeOption != null) {
itemAttributeDetail.setCustomAttributeOption(customAttributeOption);
}
}
break;
case Constants.CUSTOM_ATTRIBUTE_TYPE_SKU_MAKEUP:
if (!insertMode && !item.getItemTypeCd().equals(Constants.ITEM_TYPE_TEMPLATE)) {
CustomAttributeOption customAttributeOption = CustomAttributeOptionDAO.load(site.getSiteId(), Format.getLong(itemAttributeDetails[i].getCustomAttribOptionId()));
itemAttributeDetail.setCustomAttributeOption(customAttributeOption);
}
break;
}
item.getItemAttributeDetails().add(itemAttributeDetail);