Object name = BeanUtil.toString(objects[i]);
if (name != null && monitor != null)
monitor.log(i18n.tr("Speichere Datensatz {0}",name.toString()));
Umsatz u = (Umsatz) objects[i];
Konto k = u.getKonto();
String curr = k.getWaehrung();
out.write(NL + ":20:Hibiscus" + NL);
out.write(":25:" + k.getBLZ() + "/" + k.getKontonummer() + curr + NL);
if (showSaldo)
{
//(Schlusssaldo - Umsatzbetrag) > 0 -> Soll-Haben-Kennung f�r den Anfangssaldo = C
//(Credit), sonst D (Debit)
double anfangsSaldo = u.getSaldo() - u.getBetrag();
//Anfangssaldo aus dem Schlusssaldo ermitteln sowie Soll-Haben-Kennung
//Valuta Datum des Kontosaldos leider nicht verf�gbar, deswegen wird Datum der Umsatzwertstellung genommen
out.write(":60F:");
out.write(anfangsSaldo >= 0.0d ? "C" : "D");
out.write(DF_YYMMDD.format(u.getDatum()) + curr + df.format(anfangsSaldo).replace("-","") + NL);
}
out.write(":61:" + DF_YYMMDD.format(u.getValuta()) + DF_MMDD.format(u.getDatum()));
// Soll-Haben-Kennung f�r den Betrag ermitteln
double betrag = u.getBetrag();
out.write(betrag >= 0.0d ? "CR" : "DR");
out.write(df.format(betrag).replace("-",""));
String ref = StringUtils.trimToNull(u.getCustomerRef());
out.write("NTRF" + (ref != null ? ref : "NONREF") + NL);
String gvcode = u.getGvCode();
// Fallback, wenn wir keinen GV-Code haben. Das trifft u.a. bei Alt-Umsaetzen
// auf, als Hibiscus das Feld noch nicht unterstuetzte.
if (StringUtils.trimToNull(gvcode) == null)
gvcode = betrag >= 0.0d? "051" : "020";
out.write(":86:" + gvcode + "?00" + StringUtils.trimToEmpty(u.getArt()) + "?10" + StringUtils.trimToEmpty(u.getPrimanota()));
//Verwendungszweck
String[] lines = VerwendungszweckUtil.toArray(u);
for (int m=0;m<lines.length;++m)
{
// in MT940 sind nur max. 10 Zeilen zugelassen. Die restlichen muessen wir
// ignorieren. Siehe FinTS_3.0_Messages_Finanzdatenformate_2010-08-06_final_version.pdf
// (Seite 179, strukturierte Belegung des Feldes 86)
if (m > 9)
break;
out.write("?2" + Integer.toString(m) + lines[m]);
}
String blz = StringUtils.trimToNull(u.getGegenkontoBLZ());
String kto = StringUtils.trimToNull(u.getGegenkontoNummer());
String nam = StringUtils.trimToNull(u.getGegenkontoName());
String add = StringUtils.trimToNull(u.getAddKey());
if (blz != null) out.write("?30" + blz);
if (kto != null) out.write("?31" + kto);
if (nam != null) out.write("?32" + nam);
if (add != null) out.write("?34" + add);
out.write(NL);
if (showSaldo)
{
out.write(":62F:");
//Soll-Haben-Kennung f�r den Schlusssaldo ermitteln
double schlussSaldo = u.getSaldo();
out.write(schlussSaldo >= 0.0d ? "C" : "D");
out.write(DF_YYMMDD.format(u.getDatum()) + curr + df.format(schlussSaldo).replace("-","") + NL);
}
out.write("-" + NL);
}
}