use of com.salesmanager.core.model.catalog.product.availability.ProductAvailability in project shopizer by shopizer-ecommerce.
the class ShippingQuoteByWeightTest method testGetCustomShippingQuotesByWeight.
@Ignore
public // @Test
void testGetCustomShippingQuotesByWeight() throws ServiceException {
Language en = languageService.getByCode("en");
Country country = countryService.getByCode("CA");
Zone zone = zoneService.getByCode("QC");
MerchantStore store = merchantService.getByCode(MerchantStore.DEFAULT_STORE);
ProductType generalType = productTypeService.getProductType(ProductType.GENERAL_TYPE);
// set valid store postal code
store.setStorepostalcode("J4B-9J9");
Product product = new Product();
product.setProductHeight(new BigDecimal(4));
product.setProductLength(new BigDecimal(3));
product.setProductWidth(new BigDecimal(5));
product.setProductWeight(new BigDecimal(8));
product.setSku("TESTSKU");
product.setType(generalType);
product.setMerchantStore(store);
// Product description
ProductDescription description = new ProductDescription();
description.setName("Product 1");
description.setLanguage(en);
description.setProduct(product);
product.getDescriptions().add(description);
productService.create(product);
// productService.saveOrUpdate(product);
// Availability
ProductAvailability availability = new ProductAvailability();
availability.setProductDateAvailable(new Date());
availability.setProductQuantity(100);
availability.setRegion("*");
// associate with product
availability.setProduct(product);
product.getAvailabilities().add(availability);
productAvailabilityService.create(availability);
ProductPrice dprice = new ProductPrice();
dprice.setDefaultPrice(true);
dprice.setProductPriceAmount(new BigDecimal(29.99));
dprice.setProductAvailability(availability);
ProductPriceDescription dpd = new ProductPriceDescription();
dpd.setName("Base price");
dpd.setProductPrice(dprice);
dpd.setLanguage(en);
dprice.getDescriptions().add(dpd);
availability.getPrices().add(dprice);
productPriceService.create(dprice);
// get product
product = productService.getByCode("TESTSKU", en);
// check the product
Set<ProductAvailability> avails = product.getAvailabilities();
for (ProductAvailability as : avails) {
Set<ProductPrice> availabilityPrices = as.getPrices();
for (ProductPrice ps : availabilityPrices) {
System.out.println(ps.getProductPriceAmount().toString());
}
}
// check availability
Set<ProductPrice> availabilityPrices = availability.getPrices();
for (ProductPrice ps : availabilityPrices) {
System.out.println(ps.getProductPriceAmount().toString());
}
// configure shipping
ShippingConfiguration shippingConfiguration = new ShippingConfiguration();
// based on shipping or billing address
shippingConfiguration.setShippingBasisType(ShippingBasisType.SHIPPING);
shippingConfiguration.setShippingType(ShippingType.INTERNATIONAL);
// individual item pricing or box packaging (see unit test above)
shippingConfiguration.setShippingPackageType(ShippingPackageType.ITEM);
// only if package type is package
shippingConfiguration.setBoxHeight(5);
shippingConfiguration.setBoxLength(5);
shippingConfiguration.setBoxWidth(5);
shippingConfiguration.setBoxWeight(1);
shippingConfiguration.setMaxWeight(10);
List<String> supportedCountries = new ArrayList<String>();
supportedCountries.add("CA");
supportedCountries.add("US");
supportedCountries.add("UK");
supportedCountries.add("FR");
shippingService.setSupportedCountries(store, supportedCountries);
CustomShippingQuotesConfiguration customConfiguration = new CustomShippingQuotesConfiguration();
customConfiguration.setModuleCode("weightBased");
customConfiguration.setActive(true);
CustomShippingQuotesRegion northRegion = new CustomShippingQuotesRegion();
northRegion.setCustomRegionName("NORTH");
List<String> countries = new ArrayList<String>();
countries.add("CA");
countries.add("US");
northRegion.setCountries(countries);
CustomShippingQuoteWeightItem caQuote4 = new CustomShippingQuoteWeightItem();
caQuote4.setMaximumWeight(4);
caQuote4.setPrice(new BigDecimal(20));
CustomShippingQuoteWeightItem caQuote10 = new CustomShippingQuoteWeightItem();
caQuote10.setMaximumWeight(10);
caQuote10.setPrice(new BigDecimal(50));
CustomShippingQuoteWeightItem caQuote100 = new CustomShippingQuoteWeightItem();
caQuote100.setMaximumWeight(100);
caQuote100.setPrice(new BigDecimal(120));
List<CustomShippingQuoteWeightItem> quotes = new ArrayList<CustomShippingQuoteWeightItem>();
quotes.add(caQuote4);
quotes.add(caQuote10);
quotes.add(caQuote100);
northRegion.setQuoteItems(quotes);
customConfiguration.getRegions().add(northRegion);
// create an integration configuration - USPS
IntegrationConfiguration configuration = new IntegrationConfiguration();
configuration.setActive(true);
configuration.setEnvironment(Environment.TEST.name());
configuration.setModuleCode("weightBased");
// configure module
shippingService.saveShippingConfiguration(shippingConfiguration, store);
// create the basic configuration
shippingService.saveShippingQuoteModuleConfiguration(configuration, store);
// and the custom configuration
shippingService.saveCustomShippingConfiguration("weightBased", customConfiguration, store);
// now create ShippingProduct
ShippingProduct shippingProduct1 = new ShippingProduct(product);
FinalPrice price = pricingService.calculateProductPrice(product);
shippingProduct1.setFinalPrice(price);
List<ShippingProduct> shippingProducts = new ArrayList<ShippingProduct>();
shippingProducts.add(shippingProduct1);
Customer customer = new Customer();
customer.setMerchantStore(store);
customer.setEmailAddress("test@test.com");
customer.setGender(CustomerGender.M);
customer.setDefaultLanguage(en);
customer.setAnonymous(true);
customer.setCompany("ifactory");
customer.setDateOfBirth(new Date());
customer.setNick("My nick");
customer.setPassword("123456");
Delivery delivery = new Delivery();
delivery.setAddress("Shipping address");
delivery.setCity("Boucherville");
delivery.setCountry(country);
delivery.setZone(zone);
delivery.setPostalCode("J5C-6J4");
// overwrite delivery to US
/* delivery.setPostalCode("90002");
delivery.setCountry(us);
Zone california = zoneService.getByCode("CA");
delivery.setZone(california);*/
Billing billing = new Billing();
billing.setAddress("Billing address");
billing.setCountry(country);
billing.setZone(zone);
billing.setPostalCode("J4B-8J9");
billing.setFirstName("Carl");
billing.setLastName("Samson");
customer.setBilling(billing);
customer.setDelivery(delivery);
customerService.create(customer);
// for correlation
Long dummyCartId = 0L;
ShippingQuote shippingQuote = shippingService.getShippingQuote(dummyCartId, store, delivery, shippingProducts, en);
Assert.notNull(shippingQuote);
}
use of com.salesmanager.core.model.catalog.product.availability.ProductAvailability in project shopizer by shopizer-ecommerce.
the class ProductTest method testCreateRelationShip.
private void testCreateRelationShip(Product product) throws Exception {
MerchantStore store = merchantService.getByCode(MerchantStore.DEFAULT_STORE);
Language en = languageService.getByCode("en");
Manufacturer oreilley = manufacturerService.getByCode(store, "oreilley");
ProductType generalType = productTypeService.getProductType(ProductType.GENERAL_TYPE);
Category tech = categoryService.getByCode(store, "tech");
// create new related product
// PRODUCT 1
Product related = new Product();
related.setProductHeight(new BigDecimal(4));
related.setProductLength(new BigDecimal(3));
related.setProductWidth(new BigDecimal(1));
related.setSku("TB67891");
related.setManufacturer(oreilley);
related.setType(generalType);
related.setMerchantStore(store);
// Product description
ProductDescription description = new ProductDescription();
description.setName("Spring 4 in Action");
description.setLanguage(en);
description.setProduct(related);
product.getDescriptions().add(description);
// add category
product.getCategories().add(tech);
// Availability
ProductAvailability availability = new ProductAvailability();
availability.setProductDateAvailable(date);
availability.setProductQuantity(200);
availability.setRegion("*");
// associate with product
availability.setProduct(related);
// productAvailabilityService.create(availability);
related.getAvailabilities().add(availability);
ProductPrice dprice = new ProductPrice();
dprice.setDefaultPrice(true);
dprice.setProductPriceAmount(new BigDecimal(39.99));
dprice.setProductAvailability(availability);
ProductPriceDescription dpd = new ProductPriceDescription();
dpd.setName("Base price");
dpd.setProductPrice(dprice);
dpd.setLanguage(en);
dprice.getDescriptions().add(dpd);
availability.getPrices().add(dprice);
related.getAvailabilities().add(availability);
productService.save(related);
ProductRelationship relationship = new ProductRelationship();
relationship.setActive(true);
relationship.setCode("spring");
relationship.setProduct(product);
relationship.setRelatedProduct(related);
relationship.setStore(store);
// because relationships are nor joined fetched, make sure you query relationships first, then ad to an existing list
// so relationship and review are they only objects not joined fetch when querying a product
// need to do a subsequent query
List<ProductRelationship> relationships = productRelationshipService.listByProduct(product);
relationships.add(relationship);
product.setRelationships(new HashSet<ProductRelationship>(relationships));
productService.save(product);
}
use of com.salesmanager.core.model.catalog.product.availability.ProductAvailability in project shopizer by shopizer-ecommerce.
the class ProductPriceUtils method calculateFinalPrice.
private FinalPrice calculateFinalPrice(Product product) {
FinalPrice finalPrice = null;
List<FinalPrice> otherPrices = null;
Set<ProductAvailability> availabilities = product.getAvailabilities();
for (ProductAvailability availability : availabilities) {
if (!StringUtils.isEmpty(availability.getRegion()) && availability.getRegion().equals(Constants.ALL_REGIONS)) {
// TODO REL 2.1 accept a region
Set<ProductPrice> prices = availability.getPrices();
for (ProductPrice price : prices) {
FinalPrice p = finalPrice(price);
if (price.isDefaultPrice()) {
finalPrice = p;
} else {
if (otherPrices == null) {
otherPrices = new ArrayList<FinalPrice>();
}
otherPrices.add(p);
}
}
}
}
if (finalPrice != null) {
finalPrice.setAdditionalPrices(otherPrices);
} else {
if (otherPrices != null) {
finalPrice = otherPrices.get(0);
}
}
return finalPrice;
}
use of com.salesmanager.core.model.catalog.product.availability.ProductAvailability in project shopizer by shopizer-ecommerce.
the class ProductPriceUtils method getPrice.
/**
* Get the price without discount
* @param store
* @param product
* @param locale
* @return
*/
// Pricer
public BigDecimal getPrice(MerchantStore store, Product product, Locale locale) {
BigDecimal defaultPrice = new BigDecimal(0);
Set<ProductAvailability> availabilities = product.getAvailabilities();
for (ProductAvailability availability : availabilities) {
Set<ProductPrice> prices = availability.getPrices();
for (ProductPrice price : prices) {
if (price.isDefaultPrice()) {
defaultPrice = price.getProductPriceAmount();
}
}
}
return defaultPrice;
}
use of com.salesmanager.core.model.catalog.product.availability.ProductAvailability in project shopizer by shopizer-ecommerce.
the class ProductInventoryFacadeImpl method getProductAvailabilityToSave.
private ProductAvailability getProductAvailabilityToSave(PersistableInventory inventory, MerchantStore store, Long productId) {
Product product = getProductById(productId);
ProductAvailability availability = productInventoryMapper.convert(inventory, store, store.getDefaultLanguage());
availability.setProduct(product);
availability.setMerchantStore(store);
return availability;
}
Aggregations