blob: ec9d83a0174012b46c419ad7e98493c43e64b6d2 [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 java.math.BigDecimal;
import java.util.Map;
import org.ofbiz.base.util.*;
import org.ofbiz.entity.*;
import org.ofbiz.service.*;
import org.ofbiz.product.product.ProductContentWrapper;
import org.ofbiz.product.config.ProductConfigWorker;
import org.ofbiz.product.catalog.*;
import org.ofbiz.product.store.*;
import org.ofbiz.order.shoppingcart.*;
import org.ofbiz.webapp.website.WebSiteWorker;
miniProduct = request.getAttribute("miniProduct");
optProductId = request.getAttribute("optProductId");
webSiteId = WebSiteWorker.getWebSiteId(request);
prodCatalogId = CatalogWorker.getCurrentCatalogId(request);
productStoreId = ProductStoreWorker.getProductStoreId(request);
cart = ShoppingCartEvents.getCartObject(request);
context.remove("totalPrice");
if (optProductId) {
miniProduct = delegator.findOne("Product", [productId : optProductId], false);
}
if (miniProduct && productStoreId && prodCatalogId ) {
// calculate the "your" price
priceParams = [product : miniProduct,
prodCatalogId : prodCatalogId,
webSiteId : webSiteId,
currencyUomId : cart.getCurrency(),
autoUserLogin : autoUserLogin,
productStoreId : productStoreId];
if (userLogin) priceParams.partyId = userLogin.partyId;
priceResult = dispatcher.runSync("calculateProductPrice", priceParams);
// returns: isSale, price, orderItemPriceInfos
context.priceResult = priceResult;
// Check if Price has to be displayed with tax
if (productStore.get("showPricesWithVatTax").equals("Y")) {
Map priceMap = dispatcher.runSync("calcTaxForDisplay", UtilMisc.toMap("basePrice", priceResult.get("price"), "locale", locale, "productId", optProductId, "productStoreId", productStoreId));
context.price = priceMap.get("priceWithTax");
} else {
context.price = priceResult.get("price");
}
// get aggregated product totalPrice
if ("AGGREGATED".equals(miniProduct.productTypeId) || "AGGREGATED_SERVICE".equals(miniProduct.productTypeId)) {
configWrapper = ProductConfigWorker.getProductConfigWrapper(optProductId, cart.getCurrency(), request);
if (configWrapper) {
configWrapper.setDefaultConfig();
// Check if Config Price has to be displayed with tax
if (productStore.get("showPricesWithVatTax").equals("Y")) {
BigDecimal totalPriceNoTax = configWrapper.getTotalPrice();
Map totalPriceMap = dispatcher.runSync("calcTaxForDisplay", UtilMisc.toMap("basePrice", totalPriceNoTax, "locale", locale, "productId", optProductId, "productStoreId", productStoreId));
context.totalPrice = totalPriceMap.get("priceWithTax");
} else {
context.totalPrice = configWrapper.getTotalPrice();
}
}
}
context.miniProduct = miniProduct;
context.nowTimeLong = nowTimestamp.getTime();
context.miniProdFormName = request.getAttribute("miniProdFormName");
context.miniProdQuantity = request.getAttribute("miniProdQuantity");
// make the miniProductContentWrapper
ProductContentWrapper miniProductContentWrapper = new ProductContentWrapper(miniProduct, request);
context.miniProductContentWrapper = miniProductContentWrapper;
}