blob: 9d774b08917b6d8dabfedead183737655000383a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*/
import org.ofbiz.base.util.UtilDateTime;
import org.ofbiz.entity.condition.EntityCondition;
import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.product.product.ProductContentWrapper;
bestSellingProducts = [];
exprList = [];
exprList.add(EntityCondition.makeCondition("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, UtilDateTime.getDayStart(filterDate)));
exprList.add(EntityCondition.makeCondition("orderDate", EntityOperator.LESS_THAN_EQUAL_TO, UtilDateTime.getDayEnd(filterDate)));
exprList.add(EntityCondition.makeCondition("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));
exprList.add(EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "ORDER_CANCELLED"));
orderHeaderList = from("OrderHeader").where(exprList).queryList();
orderHeaderList.each { orderHeader ->
exprList.clear();
exprList.add(EntityCondition.makeCondition("orderId", orderHeader.orderId));
exprList.add(EntityCondition.makeCondition("orderItemTypeId", "PRODUCT_ORDER_ITEM"));
exprList.add(EntityCondition.makeCondition("isPromo", "N"));
exprList.add(EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "ITEM_CANCELLED"));
orderItemList = from("OrderItem").where(exprList).queryList();
orderItemList.each { orderItem ->
orderItemDetail = [:];
qtyOrdered = BigDecimal.ZERO;
qtyOrdered += orderItem.quantity;
if (orderItem.cancelQuantity) {
qtyOrdered -= orderItem.cancelQuantity;
}
amount = BigDecimal.ZERO;;
amount = qtyOrdered * orderItem.unitPrice;
inListFlag = false
bestSellingProducts.each { bestSellingProduct ->
if ((bestSellingProduct.productId).equals(orderItem.productId) && (bestSellingProduct.currencyUom).equals(orderHeader.currencyUom)) {
inListFlag = true;
bestSellingProduct.amount += amount;
bestSellingProduct.qtyOrdered += qtyOrdered;
}
}
if (inListFlag == false) {
orderItemDetail.productId = orderItem.productId;
product = from("Product").where("productId", orderItem.productId).queryOne()
contentWrapper = new ProductContentWrapper(product, request);
orderItemDetail.productName = contentWrapper.get("PRODUCT_NAME", "html");
orderItemDetail.amount = amount;
orderItemDetail.qtyOrdered = qtyOrdered;
orderItemDetail.currencyUom = orderHeader.currencyUom;
bestSellingProducts.add(orderItemDetail);
}
}
}
// Sorting List
topSellingProducts = [];
itr = 1;
while (itr <= 5) {
orderItemDetail = [:];
bestSellingProducts.each { bestSellingProduct ->
if (!(orderItemDetail.isEmpty())) {
if (bestSellingProduct.qtyOrdered > orderItemDetail.qtyOrdered) {
orderItemDetail = bestSellingProduct;
}
if (bestSellingProduct.qtyOrdered == orderItemDetail.qtyOrdered && bestSellingProduct.amount > orderItemDetail.amount) {
orderItemDetail = bestSellingProduct;
}
} else {
orderItemDetail = bestSellingProduct;
}
}
if (!orderItemDetail.isEmpty()) {
if (orderItemDetail.amount) {
orderItemDetail.amount = orderItemDetail.amount.setScale(2, BigDecimal.ROUND_HALF_UP);
}
topSellingProducts.add(orderItemDetail);
bestSellingProducts.remove(orderItemDetail);
}
itr++;
}
context.bestSellingProducts = topSellingProducts;
context.now = UtilDateTime.toDateString(UtilDateTime.nowDate());