/** @see de.willuhn.jameica.hbci.io.print.PrintSupportUeberweisung#printContent() */ Print printContent() throws ApplicationException { Object data = this.getContext(); if (data instanceof TablePart) data = ((TablePart) data).getSelection(); if (!(data instanceof BaseUeberweisung[])) throw new ApplicationException(i18n.tr("Bitte wählen Sie mindestens einen Auftrag aus")); try { DefaultGridLook look = new DefaultGridLook(); look.setHeaderBackground(new RGB(220, 220, 220)); LineBorder border = new LineBorder(new RGB(100, 100, 100)); border.setGapSize(3); look.setCellBorder(border); GridPrint table = new GridPrint("l:p:n, l:d:n, l:d:n, l:p:g, r:p:n, l:p:n", look); table.addHeader(new TextPrint(i18n.tr("Datum"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Konto"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Gegenkonto"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Zweck"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Betrag"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Ausgeführt"), fontTinyBold)); BaseUeberweisung[] list = (BaseUeberweisung[]) data; TextStyle typeDone = new TextStyle().font(fontTiny).foreground(new RGB(120, 120, 120)); TextStyle typeOpen = new TextStyle().font(fontTiny).foreground(new RGB(0, 0, 0)); for (BaseUeberweisung u : list) { TextStyle style = u.ausgefuehrt() ? typeDone : typeOpen; Konto k = u.getKonto(); String usage = VerwendungszweckUtil.toString(u, "\n"); Date ausgefuehrt = u.getAusfuehrungsdatum(); table.add(new TextPrint(HBCI.DATEFORMAT.format(u.getTermin()), style)); table.add(new TextPrint(k.getLongName(), style)); table.add( new TextPrint( i18n.tr( "{0}\nIBAN {1}, BIC {2}", u.getGegenkontoName(), u.getGegenkontoNummer(), u.getGegenkontoBLZ()), style)); table.add(new TextPrint(usage, style)); table.add( new TextPrint(HBCI.DECIMALFORMAT.format(u.getBetrag()) + " " + k.getWaehrung(), style)); if (ausgefuehrt != null) table.add(new TextPrint(HBCI.DATEFORMAT.format(ausgefuehrt), style)); else table.add(new TextPrint(i18n.tr(u.ausgefuehrt() ? "ja" : "nein"), style)); } return table; } catch (RemoteException re) { Logger.error("unable to print data", re); throw new ApplicationException(i18n.tr("Druck fehlgeschlagen: {0}", re.getMessage())); } }
/** @see de.willuhn.jameica.gui.dialogs.AbstractDialog#paint(org.eclipse.swt.widgets.Composite) */ protected void paint(Composite parent) throws Exception { Container group = new SimpleContainer(parent); group.addHeadline(i18n.tr("Details des Dauerauftrages")); Input kto = new LabelInput(auftrag.getKonto().getKontonummer()); kto.setComment(auftrag.getKonto().getBezeichnung()); group.addLabelPair(i18n.tr("Eigenes Konto"), kto); Input empfName = new LabelInput(auftrag.getGegenkontoName()); group.addLabelPair(i18n.tr("Name des Empfänger"), empfName); Input empfKto = new LabelInput(auftrag.getGegenkontoNummer()); empfKto.setComment( auftrag.getGegenkontoBLZ() + "/" + HBCIUtils.getNameForBLZ(auftrag.getGegenkontoBLZ())); group.addLabelPair(i18n.tr("Konto des Empfängers"), empfKto); LabelInput betrag = new LabelInput( HBCI.DECIMALFORMAT.format(auftrag.getBetrag()) + " " + auftrag.getKonto().getWaehrung()); betrag.setColor(Color.ERROR); group.addLabelPair(i18n.tr("Betrag"), betrag); group.addSeparator(); Date e = auftrag.getErsteZahlung(); String se = i18n.tr("Zum nächstmöglichen Termin"); if (e != null) se = HBCI.DATEFORMAT.format(e); Input ersteZahlung = new LabelInput(se); group.addLabelPair(i18n.tr("Erste Zahlung"), ersteZahlung); Date l = auftrag.getLetzteZahlung(); String sl = i18n.tr("keine End-Datum vorgegeben"); if (l != null) sl = HBCI.DATEFORMAT.format(l); Input letzteZahlung = new LabelInput(sl); group.addLabelPair(i18n.tr("Letzte Zahlung"), letzteZahlung); Input turnus = new LabelInput(TurnusHelper.createBezeichnung(auftrag.getTurnus())); group.addLabelPair(i18n.tr("Zahlungsturnus"), turnus); group.addHeadline(i18n.tr("Verwendungszweck")); group.addText(VerwendungszweckUtil.toString(auftrag, "\n"), false); if (auftrag.isActive()) group.addText( i18n.tr("Sind Sie sicher, daß Sie diese Änderungen jetzt zur Bank senden wollen?") + "\n", true); else group.addText( i18n.tr("Sind Sie sicher, daß Sie diesen Dauerauftrag jetzt ausführen wollen?") + "\n", true); super.paint(parent); getShell().setMinimumSize(getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT)); }
/** @see de.willuhn.jameica.hbci.io.print.AbstractPrintSupport#printContent() */ Print printContent() throws ApplicationException { Object data = this.ctx; if (data == null) throw new ApplicationException(i18n.tr("Bitte wählen Sie einen Auftrag aus")); if (data instanceof TablePart) data = ((TablePart) data).getSelection(); if (!(data instanceof SammelTransfer)) throw new ApplicationException(i18n.tr("Bitte wählen Sie einen Auftrag aus")); try { SammelTransfer a = (SammelTransfer) data; Konto k = a.getKonto(); // Das Haupt-Layout GridPrint grid = new GridPrint("l:d:g"); // Die eigentlich Tabelle mit den Werten { DefaultGridLook look = new DefaultGridLook(5, 5); GridPrint table = new GridPrint("l:p:n, l:d:g", look); // Bezeichnung table.add(new TextPrint(i18n.tr("Bezeichnung"), fontNormal)); table.add(new TextPrint(notNull(a.getBezeichnung()), fontBold)); // Konto table.add(new TextPrint(i18n.tr("Konto"), fontNormal)); table.add(new TextPrint(notNull(k != null ? k.getLongName() : null), fontNormal)); // Termin Date termin = a.getTermin(); table.add(new TextPrint(i18n.tr("Fällig am"), fontNormal)); table.add(new TextPrint(termin == null ? "-" : HBCI.DATEFORMAT.format(termin), fontNormal)); // Summe table.add(new TextPrint(i18n.tr("Summe"), fontNormal)); table.add( new TextPrint( HBCI.DECIMALFORMAT.format(a.getSumme()) + " " + k.getWaehrung(), fontBold)); // Ausfuehrungsstatus Date ausgefuehrt = a.getAusfuehrungsdatum(); table.add(new TextPrint(i18n.tr("Ausgeführt"), fontNormal)); if (ausgefuehrt != null) table.add(new TextPrint(HBCI.DATEFORMAT.format(ausgefuehrt), fontBold)); else table.add(new TextPrint(a.ausgefuehrt() ? "Ja" : "Nein", fontBold)); grid.add(table); // Zum Haupt-Layout hinzufuegen } // Leerzeile grid.add(new LineBreakPrint(fontNormal)); grid.add(new LineBreakPrint(fontNormal)); // Liste der Buchungen grid.add(new TextPrint(i18n.tr("Enthaltene Buchungen"), fontBold)); // Leerzeile grid.add(new LineBreakPrint(fontNormal)); DBIterator buchungen = a.getBuchungen(); if (buchungen.size() > 0) { DefaultGridLook look = new DefaultGridLook(); look.setHeaderBackground(new RGB(220, 220, 220)); LineBorder border = new LineBorder(new RGB(100, 100, 100)); border.setGapSize(3); look.setCellBorder(border); GridPrint table = new GridPrint("r:d:n, l:d:n, l:p:g, l:p:n, r:p:n", look); table.addHeader(new TextPrint(i18n.tr("Nr."), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Gegenkonto"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Zweck"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Typ"), fontTinyBold)); table.addHeader(new TextPrint(i18n.tr("Betrag"), fontTinyBold)); int count = 0; while (buchungen.hasNext()) { SammelTransferBuchung b = (SammelTransferBuchung) buchungen.next(); String usage = VerwendungszweckUtil.toString(b, "\n"); table.add(new TextPrint(Integer.toString(++count), fontTiny)); table.add( new TextPrint( i18n.tr( "{0}, Kto. {1}, BLZ {2}", b.getGegenkontoName(), b.getGegenkontoNummer(), b.getGegenkontoBLZ()), fontTiny)); table.add(new TextPrint(usage, fontTiny)); table.add(new TextPrint(notNull(TextSchluessel.get(b.getTextSchluessel())), fontTiny)); table.add( new TextPrint( HBCI.DECIMALFORMAT.format(b.getBetrag()) + " " + k.getWaehrung(), fontTiny)); } grid.add(table); // Zum Haupt-Layout hinzufuegen } else { grid.add(new TextPrint("- " + i18n.tr("keine") + " -", fontTiny)); } return grid; } catch (RemoteException re) { Logger.error("unable to print data", re); throw new ApplicationException(i18n.tr("Druck fehlgeschlagen: {0}", re.getMessage())); } }
/** * @see de.willuhn.jameica.hbci.io.Exporter#doExport(java.lang.Object[], * de.willuhn.jameica.hbci.io.IOFormat, java.io.OutputStream, de.willuhn.util.ProgressMonitor) */ public void doExport(Object[] objects, IOFormat format, OutputStream os, ProgressMonitor monitor) throws RemoteException, ApplicationException { if (os == null) throw new ApplicationException(i18n.tr("Kein Ausgabe-Ziel für die Datei angegeben")); if (format == null) throw new ApplicationException(i18n.tr("Kein Ausgabe-Format angegeben")); if (objects == null || objects.length == 0) throw new ApplicationException(i18n.tr("Keine zu exportierenden Daten angegeben")); if (!(objects instanceof SammelTransfer[])) throw new ApplicationException( i18n.tr("Die zu exportierenden Daten enthalten keine Sammel-Aufträge")); DtausDateiWriter writer = null; try { writer = new DtausDateiWriter(os); for (int i = 0; i < objects.length; ++i) { SammelTransfer transfer = (SammelTransfer) objects[i]; Konto konto = transfer.getKonto(); GenericIterator buchungen = transfer.getBuchungen(); monitor.setPercentComplete(0); monitor.setStatusText(i18n.tr("Exportiere logische Datei Nr. {0}", "" + (i + 1))); double factor = 100d / buchungen.size(); int count = 0; int success = 0; long kundenNummer = 0; String s = konto.getKundennummer(); try { kundenNummer = Long.parseLong(s); } catch (Exception e) { monitor.log(i18n.tr("Ignoriere Kundennummer {0}: ungültig", s)); } long blz = 0; s = konto.getBLZ(); try { blz = Long.parseLong(s); } catch (Exception e) { monitor.log(i18n.tr("Ignoriere BLZ {0}: ungültig", s)); } writer.open(); writer.setAAusfuehrungsdatum(transfer.getTermin()); writer.setABLZBank(blz); String type = (transfer instanceof SammelUeberweisung) ? "GK" : "LK"; writer.setAGutschriftLastschrift(type); writer.setAKonto(Long.parseLong(konto.getKontonummer())); writer.setAKundenname(konto.getName()); writer.writeASatz(); while (buchungen.hasNext()) { // Mit diesem Factor sollte sich der Fortschrittsbalken // bis zum Ende der DTAUS-Datei genau auf 100% bewegen monitor.setPercentComplete((int) ((++count) * factor)); SammelTransferBuchung buchung = (SammelTransferBuchung) buchungen.next(); monitor.log(i18n.tr("Exportiere Datensatz {0}", buchung.getGegenkontoName())); writer.setCBetragInEuro(buchung.getBetrag()); writer.setCBLZEndbeguenstigt(Long.parseLong(buchung.getGegenkontoBLZ())); writer.setCBLZErstbeteiligtesInstitut(blz); writer.setCKonto(Long.parseLong(buchung.getGegenkontoNummer())); writer.setCName(buchung.getGegenkontoName()); writer.setCInterneKundennummer(kundenNummer); writer.setCTextschluessel(mapTextschluesselToDtaus(buchung)); String[] lines = VerwendungszweckUtil.toArray(buchung); for (String line : lines) writer.addCVerwendungszweck(line); writer.writeCSatz(); success++; } monitor.setStatusText(i18n.tr("{0} Aufträge erfolgreich exportiert", "" + success)); } writer.writeESatz(); } catch (OperationCanceledException oce) { Logger.info("operation cancelled"); monitor.setStatusText(i18n.tr("Export abgebrochen")); monitor.setStatus(ProgressMonitor.STATUS_CANCEL); } catch (ApplicationException ae) { throw ae; } catch (DtausException dta) { Logger.error(dta.getMessage(), dta); throw new ApplicationException(i18n.tr(dta.getLocalizedMessage())); } catch (Exception e) { throw new RemoteException(i18n.tr("Fehler beim Export der Daten"), e); } finally { if (writer != null) { try { writer.close(); os = null; } catch (Exception e) { Logger.error("error while closing dtaus writer", e); } } // Outputstream schliessen, falls das noch nicht geschehen ist if (os != null) { try { os.close(); } catch (Throwable t) { Logger.error("unable to close file", t); } } } }