* Speichert den Geld-Transfer.
* @return true, wenn das Speichern erfolgreich war.
*/
public synchronized boolean handleStore()
{
HibiscusTransfer t = null;
try
{
t = this.getTransfer();
t.transactionBegin();
Double d = (Double) getBetrag().getValue();
t.setBetrag(d == null ? Double.NaN : d.doubleValue());
t.setKonto((Konto)getKontoAuswahl().getValue());
t.setZweck((String)getZweck().getValue());
t.setZweck2(getZweck2().getText()); // "getText()" ist wichtig, weil das ein DialogInput ist
String kto = (String)getEmpfaengerKonto().getValue();
String blz = (String)getEmpfaengerBlz().getValue();
String name = getEmpfaengerName().getText();
t.setGegenkontoNummer(kto);
t.setGegenkontoBLZ(blz);
t.setGegenkontoName(name);
// Geaenderte Verwendungszwecke uebernehmen. Allerdings nur, wenn
// der Dialog tatsaechlich geoffnet und auf "Uebernehmen" geklickt wurde
String[] lines = (String[]) this.zweckDialog.getData();
if (lines != null)
t.setWeitereVerwendungszwecke(lines);
t.store();
Boolean store = (Boolean) getStoreEmpfaenger().getValue();
if (store.booleanValue())
{
HibiscusAddress e = (HibiscusAddress) Settings.getDBService().createObject(HibiscusAddress.class,null);
e.setBlz(blz);
e.setKontonummer(kto);
e.setName(name);
// Zu schauen, ob die Adresse bereits existiert, ueberlassen wir der Action
new EmpfaengerAdd().handleAction(e);
}
t.transactionCommit();
Application.getMessagingFactory().sendMessage(new StatusBarMessage(i18n.tr("Auftrag gespeichert"),StatusBarMessage.TYPE_SUCCESS));
if (t.getBetrag() > Settings.getUeberweisungLimit())
GUI.getView().setErrorText(i18n.tr("Warnung: Auftragslimit �berschritten: {0} ", HBCI.DECIMALFORMAT.format(Settings.getUeberweisungLimit()) + " " + getKonto().getWaehrung()));
return true;
}
catch (Exception e)
{
if (t != null) {
try {
t.transactionRollback();
}
catch (Exception xe) {
Logger.error("rollback failed",xe);
}
}