001package io.konik.calculation; 002 003import io.konik.util.Items; 004import io.konik.validation.AmountCalculator; 005import io.konik.zugferd.Invoice; 006import io.konik.zugferd.entity.trade.item.Item; 007import io.konik.zugferd.entity.trade.item.SpecifiedMonetarySummation; 008import org.slf4j.Logger; 009import org.slf4j.LoggerFactory; 010 011import javax.validation.constraints.NotNull; 012import java.util.List; 013 014/** 015 * Recalculates {@link SpecifiedMonetarySummation} for every {@link Item} and replaces old object with the new one. 016 */ 017public final class ItemSpecifiedMonetarySummationCompleter implements Correction<Invoice> { 018 019 protected static Logger log = LoggerFactory.getLogger(ItemSpecifiedMonetarySummationCompleter.class); 020 021 @Override 022 public Invoice correct(@NotNull final Invoice invoice) { 023 024 log.debug("Running ItemSpecifiedMonetarySummationCompleter..."); 025 026 if (invoice.getTrade() != null && invoice.getTrade().getItems() != null) { 027 List<Item> items = Items.purchasableItemsOnly(invoice.getTrade().getItems()); 028 for (Item item : items) { 029 if (item.getSettlement() != null) { 030 SpecifiedMonetarySummation monetarySummation = AmountCalculator.calculateSpecifiedMonetarySummation(item); 031 item.getSettlement().setMonetarySummation(monetarySummation); 032 } 033 } 034 } 035 return invoice; 036 } 037}