001package io.konik.util; 002 003import com.neovisionaries.i18n.CurrencyCode; 004import io.konik.zugferd.entity.trade.MonetarySummation; 005import io.konik.zugferd.entity.trade.item.SpecifiedMonetarySummation; 006import io.konik.zugferd.unqualified.Amount; 007 008import java.math.RoundingMode; 009 010/** 011 * Helper functions for {@link io.konik.zugferd.entity.trade.MonetarySummation} class. 012 */ 013public final class MonetarySummations { 014 015 /** 016 * Creates a new {@link MonetarySummation} with 0 (zero) {@link Amount} for every field. 017 * @param currencyCode 018 * @return 019 */ 020 public static MonetarySummation newMonetarySummation(final CurrencyCode currencyCode) { 021 Amount zeroAmount = Amounts.zero(currencyCode); 022 023 MonetarySummation monetarySummation = new MonetarySummation(); 024 monetarySummation.setAllowanceTotal(zeroAmount); 025 monetarySummation.setChargeTotal(zeroAmount); 026 monetarySummation.setDuePayable(zeroAmount); 027 monetarySummation.setGrandTotal(zeroAmount); 028 monetarySummation.setLineTotal(zeroAmount); 029 monetarySummation.setTaxBasisTotal(zeroAmount); 030 monetarySummation.setTaxTotal(zeroAmount); 031 monetarySummation.setTotalPrepaid(zeroAmount); 032 033 return monetarySummation; 034 } 035 036 /** 037 * Creates a new {@link SpecifiedMonetarySummation} with 0 (zero) {@link Amount} for every field. 038 * @param currencyCode 039 * @return 040 */ 041 public static SpecifiedMonetarySummation newSpecifiedMonetarySummation(final CurrencyCode currencyCode) { 042 Amount zeroAmount = Amounts.zero(currencyCode); 043 044 SpecifiedMonetarySummation monetarySummation = new SpecifiedMonetarySummation(); 045 monetarySummation.setLineTotal(zeroAmount); 046 monetarySummation.setTotalAllowanceCharge(zeroAmount); 047 048 return monetarySummation; 049 } 050 051 public static MonetarySummation newMonetarySummation(final MonetarySummation monetarySummation) { 052 MonetarySummation copy = new MonetarySummation(); 053 copy.setChargeTotal(Amounts.copy(monetarySummation.getChargeTotal())); 054 copy.setDuePayable(Amounts.copy(monetarySummation.getDuePayable())); 055 copy.setLineTotal(Amounts.copy(monetarySummation.getLineTotal())); 056 copy.setTotalPrepaid(Amounts.copy(monetarySummation.getTotalPrepaid())); 057 copy.setGrandTotal(Amounts.copy(monetarySummation.getGrandTotal())); 058 copy.setAllowanceTotal(Amounts.copy(monetarySummation.getAllowanceTotal())); 059 copy.setTaxBasisTotal(Amounts.copy(monetarySummation.getTaxBasisTotal())); 060 copy.setTaxTotal(Amounts.copy(monetarySummation.getTaxTotal())); 061 return copy; 062 } 063 064 public static MonetarySummation precise(final MonetarySummation monetarySummation, int precision, RoundingMode roundingMode) { 065 MonetarySummation copy = newMonetarySummation(monetarySummation); 066 copy.setChargeTotal(Amounts.setPrecision(copy.getChargeTotal(), precision, roundingMode)); 067 copy.setDuePayable(Amounts.setPrecision(copy.getDuePayable(), precision, roundingMode)); 068 copy.setLineTotal(Amounts.setPrecision(copy.getLineTotal(), precision, roundingMode)); 069 copy.setTotalPrepaid(Amounts.setPrecision(copy.getTotalPrepaid(), precision, roundingMode)); 070 copy.setGrandTotal(Amounts.setPrecision(copy.getGrandTotal(), precision, roundingMode)); 071 copy.setAllowanceTotal(Amounts.setPrecision(copy.getAllowanceTotal(), precision, roundingMode)); 072 copy.setTaxBasisTotal(Amounts.setPrecision(copy.getTaxBasisTotal(), precision, roundingMode)); 073 copy.setTaxTotal(Amounts.setPrecision(copy.getTaxTotal(), precision, roundingMode)); 074 return copy; 075 } 076}