use of com.axelor.apps.base.db.Product in project axelor-open-suite by axelor.
the class ConfiguratorServiceImpl method generateProduct.
@Override
@Transactional(rollbackOn = { Exception.class })
public void generateProduct(Configurator configurator, JsonContext jsonAttributes, JsonContext jsonIndicators) throws AxelorException {
cleanIndicators(jsonIndicators);
Mapper mapper = Mapper.of(Product.class);
Product product = new Product();
for (String key : jsonIndicators.keySet()) {
mapper.set(product, key, jsonIndicators.get(key));
}
fixRelationalFields(product);
fetchManyToManyFields(product);
fillOneToManyFields(configurator, product, jsonAttributes);
if (product.getProductTypeSelect() == null) {
product.setProductTypeSelect(ProductRepository.PRODUCT_TYPE_STORABLE);
}
if (product.getCode() == null) {
throw new AxelorException(configurator, TraceBackRepository.CATEGORY_MISSING_FIELD, I18n.get(IExceptionMessage.CONFIGURATOR_PRODUCT_MISSING_CODE));
}
if (product.getName() == null) {
throw new AxelorException(configurator, TraceBackRepository.CATEGORY_MISSING_FIELD, I18n.get(IExceptionMessage.CONFIGURATOR_PRODUCT_MISSING_NAME));
}
configurator.setProduct(product);
product.setConfigurator(configurator);
Beans.get(ProductRepository.class).save(product);
}
use of com.axelor.apps.base.db.Product in project axelor-open-suite by axelor.
the class PartnerSaleServiceImpl method getProductBoughtByCustomer.
public List<Product> getProductBoughtByCustomer(Partner customer) {
String domain = "self.id in (SELECT line.product" + " FROM SaleOrderLine line join SaleOrder sale on line.saleOrder = sale.id" + " WHERE sale.statusSelect IN (" + SaleOrderRepository.STATUS_ORDER_CONFIRMED + ", " + SaleOrderRepository.STATUS_ORDER_COMPLETED + ")" + " AND sale.clientPartner = " + customer.getId() + ")";
ProductRepository productRepo = Beans.get(ProductRepository.class);
List<Product> productList = productRepo.all().filter(domain).fetch();
return productList;
}
use of com.axelor.apps.base.db.Product in project axelor-open-suite by axelor.
the class SaleOrderLineController method cancelReservation.
/**
* Called from sale order line form view, on request qty click. Call {@link
* ReservedQtyService#cancelReservation(SaleOrderLine)}
*
* @param request
* @param response
*/
public void cancelReservation(ActionRequest request, ActionResponse response) {
try {
SaleOrderLine saleOrderLine = request.getContext().asType(SaleOrderLine.class);
saleOrderLine = Beans.get(SaleOrderLineRepository.class).find(saleOrderLine.getId());
Product product = saleOrderLine.getProduct();
if (product == null || !product.getStockManaged()) {
throw new AxelorException(TraceBackRepository.CATEGORY_INCONSISTENCY, I18n.get(IExceptionMessage.SALE_ORDER_LINE_PRODUCT_NOT_STOCK_MANAGED));
}
Beans.get(ReservedQtyService.class).cancelReservation(saleOrderLine);
response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.base.db.Product in project axelor-open-suite by axelor.
the class SaleOrderLineController method changeReservedQty.
/**
* Called from sale order line request quantity wizard view. Call {@link
* ReservedQtyService#updateReservedQty(SaleOrderLine, BigDecimal)}.
*
* @param request
* @param response
*/
public void changeReservedQty(ActionRequest request, ActionResponse response) {
SaleOrderLine saleOrderLine = request.getContext().asType(SaleOrderLine.class);
BigDecimal newReservedQty = saleOrderLine.getReservedQty();
try {
saleOrderLine = Beans.get(SaleOrderLineRepository.class).find(saleOrderLine.getId());
Product product = saleOrderLine.getProduct();
if (product == null || !product.getStockManaged()) {
throw new AxelorException(TraceBackRepository.CATEGORY_INCONSISTENCY, I18n.get(IExceptionMessage.SALE_ORDER_LINE_PRODUCT_NOT_STOCK_MANAGED));
}
Beans.get(ReservedQtyService.class).updateReservedQty(saleOrderLine, newReservedQty);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.base.db.Product in project axelor-open-suite by axelor.
the class SaleOrderLineController method allocateAll.
/**
* Called from sale order form view, on clicking allocateAll button on one sale order line. Call
* {@link ReservedQtyService#allocateAll(SaleOrderLine)}.
*
* @param request
* @param response
*/
public void allocateAll(ActionRequest request, ActionResponse response) {
try {
SaleOrderLine saleOrderLine = request.getContext().asType(SaleOrderLine.class);
saleOrderLine = Beans.get(SaleOrderLineRepository.class).find(saleOrderLine.getId());
Product product = saleOrderLine.getProduct();
if (product == null || !product.getStockManaged()) {
throw new AxelorException(TraceBackRepository.CATEGORY_INCONSISTENCY, I18n.get(IExceptionMessage.SALE_ORDER_LINE_PRODUCT_NOT_STOCK_MANAGED));
}
Beans.get(ReservedQtyService.class).allocateAll(saleOrderLine);
response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
Aggregations