/*******************************************************************************
* Copyright (c) 2006-2010, G. Weirich and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.data;
import java.util.Comparator;
import java.util.List;
import ch.elexis.core.data.interfaces.IOptifier;
import ch.elexis.core.data.interfaces.IVerrechenbar;
import ch.elexis.core.data.util.MultiplikatorList;
import ch.elexis.data.VerrechenbarFavorites.Favorite;
import ch.rgw.tools.IFilter;
import ch.rgw.tools.JdbcLink;
import ch.rgw.tools.JdbcLink.Stm;
import ch.rgw.tools.Money;
import ch.rgw.tools.StringTool;
import ch.rgw.tools.TimeTool;
public abstract class VerrechenbarAdapter extends PersistentObject implements IVerrechenbar {
@Override
public String getLabel(){
return getText();
}
@Override
protected abstract String getTableName();
public String getCode(){
return null;
}
public String getCodeSystemName(){
return null;
}
public String getText(){
return null;
}
public IOptifier getOptifier(){
return optifier;
}
public Comparator<IVerrechenbar> getComparator(){
return comparator;
}
public IFilter getFilter(final Mandant m){
return ifilter;
}
public void setVKMultiplikator(final TimeTool von, TimeTool bis, final double factor,
final String typ){
StringBuilder sql = new StringBuilder();
String eoue = new TimeTool(TimeTool.END_OF_UNIX_EPOCH).toString(TimeTool.DATE_COMPACT);
if (bis == null) {
bis = new TimeTool(TimeTool.END_OF_UNIX_EPOCH);
}
String from = von.toString(TimeTool.DATE_COMPACT);
Stm stm = getConnection().getStatement();
sql.append("UPDATE VK_PREISE SET DATUM_BIS=").append(JdbcLink.wrap(from))
.append(" WHERE (DATUM_BIS=").append(JdbcLink.wrap(eoue))
.append(" OR DATUM_BIS='99991231') AND TYP=").append(JdbcLink.wrap(typ));
stm.exec(sql.toString());
sql.setLength(0);
sql.append("INSERT INTO VK_PREISE (ID,DATUM_VON,DATUM_BIS,MULTIPLIKATOR,TYP) VALUES (")
.append(JdbcLink.wrap(StringTool.unique("rtsu"))).append(",")
.append(JdbcLink.wrap(von.toString(TimeTool.DATE_COMPACT))).append(",")
.append(JdbcLink.wrap(bis.toString(TimeTool.DATE_COMPACT))).append(",")
.append(JdbcLink.wrap(Double.toString(factor))).append(",").append(JdbcLink.wrap(typ))
.append(");");
stm.exec(sql.toString());
getConnection().releaseStatement(stm);
}
public double getVKMultiplikator(final TimeTool date, final String typ){
return getMultiplikator(date, "VK_PREISE", typ);
}
public double getVKMultiplikator(final TimeTool date, final Fall fall){
return getMultiplikator(date, "VK_PREISE", fall.getAbrechnungsSystem());
}
public double getEKMultiplikator(final TimeTool date, final Fall fall){
return getMultiplikator(date, "EK_PREISE", fall.getAbrechnungsSystem());
}
private double getMultiplikator(final TimeTool date, final String table, final String typ){
MultiplikatorList multis = new MultiplikatorList(table, typ);
return multis.getMultiplikator(date);
}
public Money getKosten(final TimeTool dat){
return new Money(0);
}
public int getMinutes(){
return 0;
}
protected VerrechenbarAdapter(final String id){
super(id);
}
public String getCodeSystemCode(){
return "999";
}
protected VerrechenbarAdapter(){}
@Override
public VatInfo getVatInfo(){
return VatInfo.VAT_DEFAULT;
}
}