use of com.axelor.apps.base.db.ProductVariantValue in project axelor-open-suite by axelor.
the class ProductVariantService method createProductVariantValue.
public ProductVariantValue createProductVariantValue(ProductVariantAttr productVariantAttr, String code, String name, BigDecimal priceExtra) {
ProductVariantValue productVariantValue = new ProductVariantValue();
productVariantValue.setCode(code);
productVariantValue.setName(name);
productVariantValue.setPriceExtra(priceExtra);
productVariantValue.setProductVariantAttr(productVariantAttr);
return productVariantValue;
}
use of com.axelor.apps.base.db.ProductVariantValue in project axelor-open-suite by axelor.
the class ProductVariantService method containsProductVariantValue.
private boolean containsProductVariantValue(Product product, ProductVariantValue productVariantValue) {
ProductVariant productVariantFind = product.getProductVariant();
ProductVariantValue productVariantValue1 = productVariantFind.getProductVariantValue1();
ProductVariantValue productVariantValue2 = productVariantFind.getProductVariantValue2();
ProductVariantValue productVariantValue3 = productVariantFind.getProductVariantValue3();
ProductVariantValue productVariantValue4 = productVariantFind.getProductVariantValue4();
if ((productVariantValue1 != null && productVariantValue1.getCode().equals(productVariantValue.getCode()) && productVariantValue1.getProductVariantAttr().getCode().equals(productVariantValue.getProductVariantAttr().getCode())) || (productVariantValue2 != null && productVariantValue2.getCode().equals(productVariantValue.getCode()) && productVariantValue2.getProductVariantAttr().getCode().equals(productVariantValue.getProductVariantAttr().getCode())) || (productVariantValue3 != null && productVariantValue3.getCode().equals(productVariantValue.getCode()) && productVariantValue3.getProductVariantAttr().getCode().equals(productVariantValue.getProductVariantAttr().getCode())) || (productVariantValue4 != null && productVariantValue4.getCode().equals(productVariantValue.getCode()) && productVariantValue4.getProductVariantAttr().getCode().equals(productVariantValue.getProductVariantAttr().getCode()))) {
return true;
}
return false;
}
use of com.axelor.apps.base.db.ProductVariantValue in project axelor-open-suite by axelor.
the class ProductServiceImpl method getProductExtraPrice.
/**
* @param productVariant
* @param applicationPriceSelect - 1 : Sale price - 2 : Cost price
* @return
*/
@Override
public BigDecimal getProductExtraPrice(ProductVariant productVariant, int applicationPriceSelect) {
BigDecimal extraPrice = BigDecimal.ZERO;
ProductVariantValue productVariantValue1 = productVariant.getProductVariantValue1();
ProductVariantValue productVariantValue2 = productVariant.getProductVariantValue2();
ProductVariantValue productVariantValue3 = productVariant.getProductVariantValue3();
ProductVariantValue productVariantValue4 = productVariant.getProductVariantValue4();
if (productVariantValue1 != null && productVariantValue1.getApplicationPriceSelect() == applicationPriceSelect) {
extraPrice = extraPrice.add(productVariantValue1.getPriceExtra());
}
if (productVariantValue2 != null) {
extraPrice = extraPrice.add(productVariantValue2.getPriceExtra());
}
if (productVariantValue3 != null) {
extraPrice = extraPrice.add(productVariantValue3.getPriceExtra());
}
if (productVariantValue4 != null) {
extraPrice = extraPrice.add(productVariantValue4.getPriceExtra());
}
return extraPrice;
}
use of com.axelor.apps.base.db.ProductVariantValue in project axelor-open-suite by axelor.
the class ProductVariantService method createProductVariantAttr.
public ProductVariantAttr createProductVariantAttr(String name) {
ProductVariantAttr productVariantAttr = new ProductVariantAttr();
productVariantAttr.setName(name);
productVariantAttr.setProductVariantValueList(new ArrayList<ProductVariantValue>());
return productVariantAttr;
}
use of com.axelor.apps.base.db.ProductVariantValue in project axelor-open-suite by axelor.
the class ProductVariantService method getProductVariant.
private Product getProductVariant(ProductVariant parentProductVariant, Product productSearched) {
LOG.debug("Recherche d'un variant du produit {} ayant des attributs communs avec {}", productSearched.getCode(), parentProductVariant.getName());
ProductVariantValue productVariantValue1 = parentProductVariant.getProductVariantValue1();
ProductVariantValue productVariantValue2 = parentProductVariant.getProductVariantValue2();
ProductVariantValue productVariantValue3 = parentProductVariant.getProductVariantValue3();
ProductVariantValue productVariantValue4 = parentProductVariant.getProductVariantValue4();
if (productVariantValue1 != null) {
LOG.debug("Recherche d'un variant de produit ayant au moins comme attributs {} : {}", productVariantValue1.getProductVariantAttr().getCode(), productVariantValue1.getCode());
List<? extends Product> productList = productRepo.all().filter("self.parentProduct = ?1 " + "AND ((self.productVariant.productVariantAttr1.code = ?2 AND self.productVariant.productVariantValue1.code = ?3) " + "OR (self.productVariant.productVariantAttr2.code = ?2 AND self.productVariant.productVariantValue2.code = ?3) " + "OR (self.productVariant.productVariantAttr3.code = ?2 AND self.productVariant.productVariantValue3.code = ?3) " + "OR (self.productVariant.productVariantAttr4.code = ?2 AND self.productVariant.productVariantValue4.code = ?3)) ", productSearched, productVariantValue1.getProductVariantAttr().getCode(), productVariantValue1.getCode()).fetch();
if (productList == null || productList.isEmpty()) {
return productSearched;
}
Product productFind = null;
int nbAttr = 0;
for (Product product : productList) {
if (productVariantValue1 != null && productVariantValue2 != null && productVariantValue3 != null && productVariantValue4 != null) {
// 4
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue3) && this.containsProductVariantValue(product, productVariantValue4)) {
LOG.debug("Variant de produit trouvé directement : {} avec l'ensemble des attributs (4) en commun", product.getCode());
return product;
}
// 3
if (nbAttr < 3) {
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue3)) {
productFind = product;
nbAttr = 3;
}
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue4)) {
productFind = product;
nbAttr = 3;
}
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue3) && this.containsProductVariantValue(product, productVariantValue4)) {
productFind = product;
nbAttr = 3;
}
if (this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue3) && this.containsProductVariantValue(product, productVariantValue4)) {
productFind = product;
nbAttr = 3;
}
}
if (nbAttr < 2) {
// 2
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue2)) {
productFind = product;
nbAttr = 2;
}
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue3)) {
productFind = product;
nbAttr = 2;
}
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue4)) {
productFind = product;
nbAttr = 2;
}
if (this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue3)) {
productFind = product;
nbAttr = 2;
}
if (this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue4)) {
productFind = product;
nbAttr = 2;
}
if (this.containsProductVariantValue(product, productVariantValue3) && this.containsProductVariantValue(product, productVariantValue4)) {
productFind = product;
nbAttr = 2;
}
}
if (nbAttr < 1) {
// 1
if (this.containsProductVariantValue(product, productVariantValue1)) {
productFind = product;
nbAttr = 1;
}
if (this.containsProductVariantValue(product, productVariantValue2)) {
productFind = product;
nbAttr = 1;
}
if (this.containsProductVariantValue(product, productVariantValue3)) {
productFind = product;
nbAttr = 1;
}
if (this.containsProductVariantValue(product, productVariantValue4)) {
productFind = product;
nbAttr = 1;
}
}
}
if (productVariantValue1 != null && productVariantValue2 != null && productVariantValue3 != null) {
// 3
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue3)) {
LOG.debug("Variant de produit trouvé directement : {} avec l'ensemble des attributs (3) en commun", product.getCode());
return product;
}
if (nbAttr < 2) {
// 2
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue2)) {
productFind = product;
nbAttr = 2;
}
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue3)) {
productFind = product;
nbAttr = 2;
}
if (this.containsProductVariantValue(product, productVariantValue2) && this.containsProductVariantValue(product, productVariantValue3)) {
productFind = product;
nbAttr = 2;
}
}
if (nbAttr < 1) {
// 1
if (this.containsProductVariantValue(product, productVariantValue1)) {
productFind = product;
nbAttr = 1;
}
if (this.containsProductVariantValue(product, productVariantValue2)) {
productFind = product;
nbAttr = 1;
}
if (this.containsProductVariantValue(product, productVariantValue3)) {
productFind = product;
nbAttr = 1;
}
}
}
if (productVariantValue1 != null && productVariantValue2 != null) {
// 2
if (this.containsProductVariantValue(product, productVariantValue1) && this.containsProductVariantValue(product, productVariantValue2)) {
LOG.debug("Variant de produit trouvé directement : {} avec l'ensemble des attributs (2) en commun", product.getCode());
return product;
}
if (nbAttr < 1) {
// 1
if (this.containsProductVariantValue(product, productVariantValue1)) {
productFind = product;
nbAttr = 1;
}
if (this.containsProductVariantValue(product, productVariantValue2)) {
productFind = product;
nbAttr = 1;
}
}
}
if (productVariantValue1 != null) {
if (this.containsProductVariantValue(product, productVariantValue1)) {
LOG.debug("Variant de produit trouvé directement : {} avec l'ensemble des attributs (1) en commun", product.getCode());
return product;
}
}
}
if (productFind != null) {
LOG.debug("Variant de produit trouvé : {} avec {} attributs en commun", productFind.getCode(), nbAttr);
return productFind;
}
}
return productSearched;
}
Aggregations