/**
* @see de.willuhn.jameica.hbci.gui.controller.UmsatzDetailControl#handleStore()
*/
public synchronized void handleStore() {
Umsatz u = getUmsatz();
try {
u.transactionBegin();
u.setKommentar((String)getKommentar().getValue());
u.setUmsatzTyp((UmsatzTyp)getUmsatzTyp().getValue());
u.setGegenkontoName(((AddressInput)getEmpfaengerName()).getText());
u.setGegenkontoNummer((String) getEmpfaengerKonto().getValue());
u.setGegenkontoBLZ((String) getEmpfaengerBLZ().getValue());
u.setZweck((String) getZweck().getValue());
u.setArt((String)getArt().getValue());
u.setBetrag((Double)getBetrag().getValue());
Date du = (Date)getDatum().getValue();
Double su = (Double)getSaldo().getValue();
// BUGZILLA 586
u.setSaldo(su);
Konto k = u.getKonto();
if (k.hasFlag(Konto.FLAG_OFFLINE) && u.isNewObject()) // BUGZILLA 1232
{
k.setSaldo(su);
k.store();
Application.getMessagingFactory().sendMessage(new SaldoMessage(k));
}
u.setCustomerRef((String)getCustomerRef().getValue());
u.setDatum(du);
u.setPrimanota((String)getPrimanota().getValue());
u.setValuta((Date)getValuta().getValue());
String gvcode = (String) getGvCode().getValue();
String add = null;
if (gvcode != null && gvcode.indexOf('/') != -1)
{
// Checken, ob wir den Add-Key raussplitten muessen
String[] values = gvcode.split("/");
if (values != null && values.length > 0)
{
gvcode = values[0];
if (values.length > 1)
add = values[1];
}
}
u.setGvCode(gvcode);
u.setAddKey(add);
String z = (String) getZweck().getValue();
// Erstmal die Zeilen loeschen
u.setZweck(null);
u.setZweck2(null);
u.setWeitereVerwendungszwecke(null);
// Und jetzt neu verteilen
String[] lines = VerwendungszweckUtil.split(z);
VerwendungszweckUtil.apply(u,lines);
u.store();
if (getEmpfaengerBLZ().hasChanged() ||
getEmpfaengerKonto().hasChanged() ||
getEmpfaengerName().hasChanged() ||
getZweck().hasChanged() ||
getBetrag().hasChanged() ||
getSaldo().hasChanged() ||
getDatum().hasChanged() ||
getValuta().hasChanged() ||
getPrimanota().hasChanged() ||
getArt().hasChanged() ||
getCustomerRef().hasChanged()
)
{
String[] fields = new String[]
{
u.getGegenkontoName(),
u.getGegenkontoNummer(),
u.getGegenkontoBLZ(),
HBCI.DATEFORMAT.format(u.getDatum()),
u.getZweck(),
k.getWaehrung() + " " + HBCI.DECIMALFORMAT.format(u.getBetrag())
};
String msg = i18n.tr("Umsatz [Gegenkonto: {0}, Kto. {1} BLZ {2}], Datum {3}, Zweck: {4}] {5} ge�ndert",fields);
k.addToProtokoll(msg,Protokoll.TYP_SUCCESS);
}
u.transactionCommit();
GUI.getStatusBar().setSuccessText(i18n.tr("Umsatz gespeichert"));
}
catch (ApplicationException e2)
{
try
{
u.transactionRollback();
}
catch (RemoteException e1)
{
Logger.error("unable to rollback transaction",e1);
}
GUI.getView().setErrorText(e2.getMessage());
}
catch (RemoteException e)
{
try
{
u.transactionRollback();
}
catch (RemoteException e1)
{
Logger.error("unable to rollback transaction",e1);
}