package ch.elexis.base.ch.arzttarife.adjuster;

import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;

import ch.elexis.core.data.interfaces.IVerrechenbar;
import ch.elexis.core.data.interfaces.IVerrechenbarAdjuster;
import ch.elexis.data.Fall;
import ch.elexis.data.Konsultation;
import ch.elexis.data.TarmedLeistung;
import ch.rgw.tools.TimeTool;

public class TarmedVerrechnebarAdjuster implements IVerrechenbarAdjuster {
	
	
	@Override
	public IVerrechenbar adjust(IVerrechenbar verrechenbar, Konsultation kons){
		if (verrechenbar instanceof TarmedLeistung) {
			TarmedLeistung leistung = (TarmedLeistung) verrechenbar;
			String leistungLaw = leistung.get(TarmedLeistung.FLD_LAW);
			// check if a law for a leistung is specified
			if (StringUtils.isNotEmpty(leistungLaw)) {
				Fall fall = kons.getFall();
				String law = fall.getConfiguredBillingSystemLaw().name();
				
				// law is not compatible for this leistung law look for compatible one
				if (!leistungLaw.equals(law)) {
					verrechenbar = TarmedLeistung.getFromCode(leistung.getCode(),
						new TimeTool(kons.getDateTime()), fall.getAbrechnungsSystem());
				}
				if (verrechenbar == null) {
					MessageDialog.openWarning(Display.getDefault().getActiveShell(), "Warnung",
						"Warnung folgende Leistung '" + leistung.getCode()
							+ "' konnte im aktuellen Kontext (Fall, Konsultation, Gesetz) nicht verrechnet werden.");
				}
			}
		}
		return verrechenbar;
	}
}

@@ -88,96 +88,8 @@
 ils;
-%0Aimport org.eclipse.jface.dialogs.MessageDialog;%0Aimport org.eclipse.swt.widgets.Display;
 %0A%0Aim
@@ -966,16 +966,26 @@
 w.equals
+IgnoreCase
 (law)) %7B
@@ -981,24 +981,24 @@
 ase(law)) %7B%0A
-
 %09%09%09%09%09verrech
@@ -1052,16 +1052,16 @@
 Code(),%0A
+
 %09%09%09%09%09%09ne
@@ -1132,281 +1132,8 @@
 %09%09%7D%0A
-%09%09%09%09if (verrechenbar == null) %7B%0A%09%09%09%09%09MessageDialog.openWarning(Display.getDefault().getActiveShell(), %22Warnung%22,%0A%09%09%09%09%09%09%22Warnung folgende Leistung '%22 + leistung.getCode()%0A%09%09%09%09%09%09%09+ %22' konnte im aktuellen Kontext (Fall, Konsultation, Gesetz) nicht verrechnet werden.%22);%0A%09%09%09%09%7D%0A
 %09%09%09%7D

return null if no tarmed service for current context found