package at.medevit.ch.artikelstamm.elexis.common.preference; import at.medevit.ch.artikelstamm.marge.Marge; import ch.elexis.core.data.activator.CoreHub; import ch.rgw.tools.Money; public class MargePreference { private static Marge[] marges = null; public static Marge[] getMarges(){ if (marges == null) { initMarges(); } return marges; } public static void storeMargeConfiguration(){ StringBuilder sb = new StringBuilder(); for (int i = 0; i < marges.length; i++) { Marge m = marges[i]; sb.append(m.getStartInterval() + "/" + m.getEndInterval() + "/" + m.getAddition()); if (i != marges.length) sb.append("$"); } CoreHub.globalCfg.set(PreferenceConstants.PREV_CSV_MARGE_STORAGE, sb.toString()); CoreHub.globalCfg.flush(); } private static void initMarges(){ String margeStorageString = CoreHub.globalCfg.get(PreferenceConstants.PREV_CSV_MARGE_STORAGE, "0/0/0$0/0/0$0/0/0"); String[] margeStorageEntry = margeStorageString.split("\\$"); marges = new Marge[margeStorageEntry.length]; for (int i = 0; i < margeStorageEntry.length; i++) { String entry = margeStorageEntry[i]; String[] values = entry.split("/"); if (values.length == 3) { marges[i] = new Marge(); marges[i].setStartInterval(Double .parseDouble(values[0] == null ? "0.0" : values[0])); marges[i].setEndInterval(Double.parseDouble(values[1] == null ? "0.0" : values[1])); marges[i].setAddition(Double.parseDouble(values[2] == null ? "0.0" : values[2])); } } } public static Money calculateVKP(Money ekPreis){ double amount = ekPreis.getAmount(); for (int i = 0; i < getMarges().length; i++) { Marge m = getMarges()[i]; if (!m.isValid()) continue; if (m.startInterval <= amount && m.endInterval >= amount) { double mult = 1 + (m.addition / 100); return new Money(amount * mult); } } return new Money(); } }