/*
* Licensed to csti consulting
* You may obtain a copy of the License at
*
* http://www.csticonsulting.com
* Copyright (c) 2006-Aug 24, 2010 Consultation CS-TI inc.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.salesmanager.core.module.impl.application.shipping;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import com.salesmanager.core.entity.merchant.MerchantConfiguration;
import com.salesmanager.core.entity.orders.OrderProduct;
import com.salesmanager.core.entity.orders.OrderProductAttribute;
import com.salesmanager.core.entity.shipping.PackageDetail;
import com.salesmanager.core.module.model.application.CalculatePackingModule;
import com.salesmanager.core.service.ServiceFactory;
import com.salesmanager.core.service.merchant.ConfigurationRequest;
import com.salesmanager.core.service.merchant.ConfigurationResponse;
import com.salesmanager.core.service.merchant.MerchantService;
public class CalculateItemPackingModule implements CalculatePackingModule {
public Collection<PackageDetail> calculatePacking(
Collection<OrderProduct> products, MerchantConfiguration config,
int merchantId) throws Exception {
// TODO Auto-generated method stub
if (products == null) {
throw new Exception("Product list cannot be null !!");
}
List detailsList = new ArrayList();
Iterator i = products.iterator();
int iterCount = 0;
while (i.hasNext()) {
OrderProduct op = (OrderProduct) i.next();
if (!op.isShipping()) {
continue;
}
BigDecimal weight = op.getProductWeight();
Set attributes = op.getOrderattributes();
if (attributes != null && attributes.size() > 0) {
Iterator attributesIterator = attributes.iterator();
OrderProductAttribute opa = (OrderProductAttribute) attributesIterator
.next();
weight = weight.add(opa.getProductAttributeWeight());
}
if (op.getProductQuantity() == 1) {
PackageDetail details = new PackageDetail();
details.setShippingHeight(op.getProductHeight().doubleValue());
details.setShippingLength(op.getProductLength().doubleValue());
details.setShippingWeight(op.getProductWeight().doubleValue());
details.setShippingWidth(op.getProductWidth().doubleValue());
details.setShippingQuantity(1);
detailsList.add(details);
} else if (op.getProductQuantity() > 1) {
for (int j = 0; j < op.getProductQuantity(); j++) {
PackageDetail inner = new PackageDetail();
inner
.setShippingHeight(op.getProductHeight()
.doubleValue());
inner
.setShippingLength(op.getProductLength()
.doubleValue());
inner.setShippingWeight(weight.doubleValue());
inner.setShippingWidth(op.getProductWidth().doubleValue());
inner.setShippingQuantity(op.getProductQuantity());
inner.setProductName(op.getProductName());
detailsList.add(inner);
}
}
iterCount++;
}
if (iterCount == 0) {
return null;
}
return detailsList;
}
public PackageDetail getConfigurationOptions(MerchantConfiguration config,
String currency) throws Exception {
// TODO Auto-generated method stub
return null;
}
public String getConfigurationOptionsFileName(Locale locale)
throws Exception {
// TODO Auto-generated method stub
return null;
}
public ConfigurationResponse getConfiguration(
MerchantConfiguration configurations, ConfigurationResponse vo)
throws Exception {
// TODO Auto-generated method stub
return vo;
}
public void storeConfiguration(int merchantId, ConfigurationResponse vo, HttpServletRequest request)
throws Exception {
// TODO Auto-generated method stub
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
ConfigurationRequest req = new ConfigurationRequest(merchantId,
"SHP_PACK");
ConfigurationResponse resp = mservice.getConfiguration(req);
MerchantConfiguration conf = null;
if (resp == null || resp.getMerchantConfiguration("SHP_PACK") == null) {
conf = new MerchantConfiguration();
} else {
conf = resp.getMerchantConfiguration("SHP_PACK");
}
conf.setConfigurationValue("packing-item");
conf.setMerchantId(merchantId);
conf.setConfigurationKey("SHP_PACK");
conf.setConfigurationValue1(null);
mservice.saveOrUpdateMerchantConfiguration(conf);
}
}