/*******************************************************************************
* Copyright (c) 2005-2009, 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.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.rgw.tools.Money;
import ch.rgw.tools.TimeTool;
public class Zahlung extends PersistentObject {
public static final String DATE = "Datum";
public static final String AMMOUNT_CENTS = "Betragx100";
public static final String REMARK = "Bemerkung";
public static final String BILL_ID = "RechnungsID";
static final String TABLENAME = "ZAHLUNGEN";
static {
addMapping(TABLENAME, BILL_ID, "Betragx100=Betrag", "Datum=S:D:Datum", REMARK);
}
public Zahlung(Rechnung rn, Money Betrag, String text, TimeTool date){
create(null);
if (date == null) {
date = new TimeTool();
}
String Datum = date.toString(TimeTool.DATE_GER);
set(new String[] {
BILL_ID, AMMOUNT_CENTS, DATE, REMARK
}, rn.getId(), Betrag.getCentsAsString(), Datum, text);
new AccountTransaction(this);
rn.addTrace(Rechnung.PAYMENT, Betrag.getAmountAsString());
}
@Override
public boolean delete(){
StringBuilder sb = new StringBuilder();
sb.append("DELETE FROM KONTO WHERE ID=").append(getWrappedId());
getConnection().exec(sb.toString());
Rechnung rn = getRechnung();
if (rn != null) {
rn.addTrace(Rechnung.CORRECTION, "Zahlung gelöscht");
}
return super.delete();
}
public String getBemerkung(){
return get(REMARK);
}
public Rechnung getRechnung(){
return Rechnung.load(get(BILL_ID));
}
public Money getBetrag(){
return new Money(checkZero(get(AMMOUNT_CENTS)));
}
public String getDatum(){
return get(DATE);
}
public static Zahlung load(String id){
return new Zahlung(id);
}
protected Zahlung(){/* leer */}
protected Zahlung(String id){
super(id);
}
@Override
public String getLabel(){
StringBuilder sb = new StringBuilder();
sb.append(getDatum()).append(": ").append(getBetrag().getAmountAsString());
return sb.toString();
}
@Override
protected String getTableName(){
return TABLENAME;
}
public AccountTransaction getTransaction(){
Query<AccountTransaction> query = new Query<>(AccountTransaction.class);
query.add(AccountTransaction.FLD_PAYMENT_ID, Query.EQUALS, getId());
List<AccountTransaction> transactions = query.execute();
if(!transactions.isEmpty()) {
if(transactions.size() > 1) {
Logger logger = LoggerFactory.getLogger(Zahlung.class);
logger.warn("More than 1 transaction for payment. [" + storeToString() + "]");
}
return transactions.get(0);
}
return null;
}
}