package io.konik.calculation;
import io.konik.util.Items;
import io.konik.validation.AmountCalculator;
import io.konik.zugferd.Invoice;
import io.konik.zugferd.entity.trade.item.Item;
import io.konik.zugferd.entity.trade.item.SpecifiedMonetarySummation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* Recalculates {@link SpecifiedMonetarySummation} for every {@link Item} and replaces old object with the new one.
*/
public final class ItemSpecifiedMonetarySummationCompleter implements Correction<Invoice> {
protected static Logger log = LoggerFactory.getLogger(ItemSpecifiedMonetarySummationCompleter.class);
@Override
public Invoice correct(@NotNull final Invoice invoice) {
log.debug("Running ItemSpecifiedMonetarySummationCompleter...");
if (invoice.getTrade() != null && invoice.getTrade().getItems() != null) {
List<Item> items = Items.purchasableItemsOnly(invoice.getTrade().getItems());
for (Item item : items) {
if (item.getSettlement() != null) {
SpecifiedMonetarySummation monetarySummation = AmountCalculator.calculateSpecifiedMonetarySummation(item);
item.getSettlement().setMonetarySummation(monetarySummation);
}
}
}
return invoice;
}
}