use of de.metas.payment.paymentterm.PaymentTermId in project metasfresh-webui-api by metasfresh.
the class PricingConditionsView_CopyRowToEditable method createChangeRequest.
private PricingConditionsRowChangeRequest createChangeRequest(@NonNull final PricingConditionsRow templateRow) {
final PricingConditionsBreak templatePricingConditionsBreak = templateRow.getPricingConditionsBreak();
PriceSpecification price = templatePricingConditionsBreak.getPriceSpecification();
if (price.isNoPrice()) {
// In case row does not have a price then use BPartner's pricing system
final BPartnerId bpartnerId = templateRow.getBpartnerId();
final SOTrx soTrx = SOTrx.ofBoolean(templateRow.isCustomer());
price = createBasePricingSystemPrice(bpartnerId, soTrx);
}
final Percent discount = templatePricingConditionsBreak.getDiscount();
final PaymentTermId paymentTermIdOrNull = templatePricingConditionsBreak.getPaymentTermIdOrNull();
final Percent paymentDiscountOverrideOrNull = templatePricingConditionsBreak.getPaymentDiscountOverrideOrNull();
return PricingConditionsRowChangeRequest.builder().priceChange(CompletePriceChange.of(price)).discount(discount).paymentTermId(Optional.ofNullable(paymentTermIdOrNull)).paymentDiscount(Optional.ofNullable(paymentDiscountOverrideOrNull)).sourcePricingConditionsBreakId(templatePricingConditionsBreak.getId()).build();
}
use of de.metas.payment.paymentterm.PaymentTermId 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;
}
Aggregations