use of de.metas.pricing.conditions.PricingConditionsBreak in project metasfresh-webui-api by metasfresh.
the class ProductPricingConditionsViewFactory method createPricingContext.
private IPricingContext createPricingContext(final BasePricingSystemPriceCalculatorRequest request) {
final IPricingBL pricingBL = Services.get(IPricingBL.class);
final PricingConditionsBreak pricingConditionsBreak = request.getPricingConditionsBreak();
final IEditablePricingContext pricingCtx = pricingBL.createPricingContext();
final ProductId productId = pricingConditionsBreak.getMatchCriteria().getProductId();
pricingCtx.setProductId(productId);
pricingCtx.setQty(BigDecimal.ONE);
pricingCtx.setBPartnerId(request.getBpartnerId());
pricingCtx.setSOTrx(SOTrx.ofBoolean(request.isSOTrx()));
return pricingCtx;
}
use of de.metas.pricing.conditions.PricingConditionsBreak in project metasfresh-webui-api by metasfresh.
the class PricingConditionsRowReducers method applyRequestTo.
private PricingConditionsBreak applyRequestTo(@NonNull final PricingConditionsRowChangeRequest request, @NonNull final PricingConditionsBreak rowPricingConditionsBreak) {
final PricingConditionsBreak pricingConditionsBreakEffective = coalesce(request.getPricingConditionsBreak(), rowPricingConditionsBreak);
final PricingConditionsBreakBuilder builder = pricingConditionsBreakEffective.toBuilder();
// Discount%
if (request.getDiscount() != null) {
builder.discount(request.getDiscount());
builder.hasChanges(true);
}
//
// Payment Term
final boolean paymentTermChangeRequested = request.getPaymentTermId() != null;
final boolean paymentDiscountChangeRequested = request.getPaymentDiscount() != null;
if (paymentTermChangeRequested || paymentDiscountChangeRequested) {
final PaymentTermId paymentTermIdOrNull;
if (paymentTermChangeRequested) {
paymentTermIdOrNull = request.getPaymentTermId().orElse(null);
builder.paymentTermIdOrNull(paymentTermIdOrNull);
} else {
// if no payment term change was requested, we use the old paymentTermId to get derivedPaymentTermIdOrNull.
paymentTermIdOrNull = pricingConditionsBreakEffective.getPaymentTermIdOrNull();
}
final Percent paymentDiscountOrNull = paymentDiscountChangeRequested ? request.getPaymentDiscount().orElse(null) : null;
builder.paymentDiscountOverrideOrNull(paymentDiscountOrNull);
final PaymentTermService paymentTermService = SpringContextHolder.instance.getBean(PaymentTermService.class);
final PaymentTermId derivedPaymentTermIdOrNull = paymentTermService.getOrCreateDerivedPaymentTerm(paymentTermIdOrNull, paymentDiscountOrNull);
builder.derivedPaymentTermIdOrNull(derivedPaymentTermIdOrNull);
}
// Price
if (request.getPriceChange() != null) {
final PriceSpecification price = applyPriceChangeTo(request.getPriceChange(), rowPricingConditionsBreak.getPriceSpecification());
builder.priceSpecification(price);
}
PricingConditionsBreak newPricingConditionsBreak = builder.build();
if (!Objects.equals(newPricingConditionsBreak, pricingConditionsBreakEffective)) {
newPricingConditionsBreak = newPricingConditionsBreak.toBuilder().hasChanges(true).build();
}
return newPricingConditionsBreak;
}
use of de.metas.pricing.conditions.PricingConditionsBreak in project metasfresh-webui-api by metasfresh.
the class PricingConditionsView method updateSalesOrderLineIfPossible.
public void updateSalesOrderLineIfPossible() {
if (!hasEditableRow()) {
return;
}
final PricingConditionsRow editableRow = getEditableRow();
final BigDecimal basePriceAmt = editableRow.getBasePriceAmt();
final CurrencyId currencyId = editableRow.getCurrencyId();
final Money basePriceFromRow = Money.ofOrNull(basePriceAmt, currencyId);
final PricingConditionsBreak pricingConditionsBreak = editableRow.getPricingConditionsBreak();
updateOrderLineRecord(pricingConditionsBreak, basePriceFromRow);
}
Aggregations