Search in sources :

Example 76 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class SkuImpl method getPriceData.

@Override
public DynamicSkuPrices getPriceData() {
    if (SkuPricingConsiderationContext.hasDynamicPricing()) {
        DynamicSkuPrices dynamicPrices = SkuPricingConsiderationContext.getDynamicSkuPrices(this);
        return dynamicPrices;
    } else {
        DynamicSkuPrices dsp = new DynamicSkuPrices();
        BroadleafCurrency tmpCurrency;
        if (currency != null) {
            tmpCurrency = currency;
        } else {
            tmpCurrency = BroadleafRequestContext.getCurrency();
        }
        if (retailPrice != null) {
            dsp.setRetailPrice(new Money(retailPrice, tmpCurrency));
        }
        if (salePrice != null) {
            dsp.setSalePrice(new Money(salePrice, tmpCurrency));
        }
        return dsp;
    }
}
Also used : Money(org.broadleafcommerce.common.money.Money) BroadleafCurrency(org.broadleafcommerce.common.currency.domain.BroadleafCurrency) DynamicSkuPrices(org.broadleafcommerce.core.catalog.service.dynamic.DynamicSkuPrices) ClonePolicyCollectionOverride(org.broadleafcommerce.common.extensibility.jpa.clone.ClonePolicyCollectionOverride)

Example 77 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class SkuImpl method getBaseSalePrice.

@Override
public Money getBaseSalePrice() {
    Money returnPrice = null;
    if (salePrice != null) {
        returnPrice = new Money(salePrice, getCurrency());
    }
    if (returnPrice == null && hasDefaultSku()) {
        Sku defaultSku = lookupDefaultSku();
        returnPrice = defaultSku.getBaseSalePrice();
    }
    return returnPrice;
}
Also used : Money(org.broadleafcommerce.common.money.Money) ClonePolicyCollectionOverride(org.broadleafcommerce.common.extensibility.jpa.clone.ClonePolicyCollectionOverride)

Example 78 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class OrderImpl method createOrRetrieveCopyInstance.

@Override
public <G extends Order> CreateResponse<G> createOrRetrieveCopyInstance(MultiTenantCopyContext context) throws CloneNotSupportedException {
    CreateResponse<G> createResponse = context.createOrRetrieveCopyInstance(this);
    if (createResponse.isAlreadyPopulated()) {
        return createResponse;
    }
    Order cloned = createResponse.getClone();
    cloned.setCurrency(getCurrency());
    cloned.setEmailAddress(emailAddress);
    cloned.setLocale(getLocale());
    cloned.setName(name);
    cloned.setOrderNumber(orderNumber);
    cloned.setTotalTax(getTotalTax());
    cloned.setSubmitDate(submitDate);
    cloned.setCustomer(customer);
    cloned.setStatus(getStatus());
    cloned.setTotalFulfillmentCharges(getTotalFulfillmentCharges());
    cloned.setSubTotal(getSubTotal());
    cloned.setTaxOverride(taxOverride == null ? null : taxOverride);
    for (OrderItem entry : orderItems) {
        OrderItem clonedEntry = entry.createOrRetrieveCopyInstance(context).getClone();
        clonedEntry.setOrder(cloned);
        cloned.getOrderItems().add(clonedEntry);
    }
    for (Map.Entry<Offer, OfferInfo> entry : additionalOfferInformation.entrySet()) {
        Offer clonedOffer = entry.getKey().createOrRetrieveCopyInstance(context).getClone();
        OfferInfo clonedEntry = entry.getValue().createOrRetrieveCopyInstance(context).getClone();
        cloned.getAdditionalOfferInformation().put(clonedOffer, clonedEntry);
    }
    for (Map.Entry<String, OrderAttribute> entry : orderAttributes.entrySet()) {
        OrderAttribute clonedAttribute = entry.getValue().createOrRetrieveCopyInstance(context).getClone();
        clonedAttribute.setOrder(cloned);
        cloned.getOrderAttributes().put(entry.getKey(), clonedAttribute);
    }
    for (FulfillmentGroup fulfillmentGroup : fulfillmentGroups) {
        FulfillmentGroup fg = fulfillmentGroup.createOrRetrieveCopyInstance(context).getClone();
        fg.setOrder(cloned);
        cloned.getFulfillmentGroups().add(fg);
    }
    for (OrderPayment orderPayment : payments) {
        if (orderPayment.isActive()) {
            OrderPayment payment = orderPayment.createOrRetrieveCopyInstance(context).getClone();
            payment.setOrder(cloned);
            cloned.getPayments().add(payment);
        }
    }
    for (OfferCode entry : addedOfferCodes) {
        // We do not want to clone the offer code since that will cascade through offer. We only want to create
        // the new relationship between this cloned order and the existing offer code.
        cloned.getAddedOfferCodes().add(entry);
    }
    cloned.setTotal(total == null ? null : new Money(total));
    return createResponse;
}
Also used : OrderPayment(org.broadleafcommerce.core.payment.domain.OrderPayment) Money(org.broadleafcommerce.common.money.Money) Offer(org.broadleafcommerce.core.offer.domain.Offer) CandidateOrderOffer(org.broadleafcommerce.core.offer.domain.CandidateOrderOffer) OfferCode(org.broadleafcommerce.core.offer.domain.OfferCode) Map(java.util.Map) HashMap(java.util.HashMap) AdminPresentationMap(org.broadleafcommerce.common.presentation.AdminPresentationMap) OfferInfo(org.broadleafcommerce.core.offer.domain.OfferInfo) AdminPresentationMergeOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverride)

Example 79 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class OrderImpl method getTotalAfterAppliedPayments.

@Override
public Money getTotalAfterAppliedPayments() {
    Money myTotal = getTotal();
    if (myTotal == null) {
        return null;
    }
    Money totalPayments = BroadleafCurrencyUtils.getMoney(BigDecimal.ZERO, getCurrency());
    for (OrderPayment payment : getPayments()) {
        // add up all active payments that are not UNCONFIRMED Final Payments
        if (payment.isActive() && payment.getAmount() != null && (!payment.isFinalPayment() || payment.isConfirmed())) {
            totalPayments = totalPayments.add(payment.getAmount());
        }
    }
    return myTotal.subtract(totalPayments);
}
Also used : Money(org.broadleafcommerce.common.money.Money) OrderPayment(org.broadleafcommerce.core.payment.domain.OrderPayment) AdminPresentationMergeOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverride)

Example 80 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class OrderItemImpl method getPriceBeforeAdjustments.

@Override
public Money getPriceBeforeAdjustments(boolean allowSalesPrice, boolean includeChildren) {
    boolean retailPriceOverride = false;
    for (OrderItemPriceDetail oipd : getOrderItemPriceDetails()) {
        if (oipd.getUseSalePrice() == false) {
            retailPriceOverride = true;
            break;
        }
    }
    Money returnPrice = Money.ZERO;
    if (includeChildren) {
        for (OrderItem child : getChildOrderItems()) {
            Money childPrice = child.getPriceBeforeAdjustments(allowSalesPrice, true);
            returnPrice = returnPrice.add(childPrice.multiply(child.getQuantity()).divide(quantity));
        }
    }
    if (allowSalesPrice && !retailPriceOverride) {
        return getSalePrice().add(returnPrice);
    } else {
        return getRetailPrice().add(returnPrice);
    }
}
Also used : Money(org.broadleafcommerce.common.money.Money) AdminPresentationMergeOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverride)

Aggregations

Money (org.broadleafcommerce.common.money.Money)158 Order (org.broadleafcommerce.core.order.domain.Order)43 BigDecimal (java.math.BigDecimal)38 Offer (org.broadleafcommerce.core.offer.domain.Offer)29 Test (org.testng.annotations.Test)29 Transactional (org.springframework.transaction.annotation.Transactional)24 FulfillmentGroup (org.broadleafcommerce.core.order.domain.FulfillmentGroup)22 ArrayList (java.util.ArrayList)21 CommonSetupBaseTest (org.broadleafcommerce.test.CommonSetupBaseTest)21 FulfillmentGroupItem (org.broadleafcommerce.core.order.domain.FulfillmentGroupItem)19 CustomerOffer (org.broadleafcommerce.core.offer.domain.CustomerOffer)18 Sku (org.broadleafcommerce.core.catalog.domain.Sku)16 DiscreteOrderItemImpl (org.broadleafcommerce.core.order.domain.DiscreteOrderItemImpl)14 OrderItem (org.broadleafcommerce.core.order.domain.OrderItem)13 HashMap (java.util.HashMap)12 SkuImpl (org.broadleafcommerce.core.catalog.domain.SkuImpl)12 FixedPriceFulfillmentOption (org.broadleafcommerce.core.order.fulfillment.domain.FixedPriceFulfillmentOption)12 DiscreteOrderItem (org.broadleafcommerce.core.order.domain.DiscreteOrderItem)11 FulfillmentGroupImpl (org.broadleafcommerce.core.order.domain.FulfillmentGroupImpl)11 FixedPriceFulfillmentOptionImpl (org.broadleafcommerce.core.order.fulfillment.domain.FixedPriceFulfillmentOptionImpl)10