/** @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.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 (objects == null || !(objects instanceof UmsatzTree[]))
      throw new ApplicationException(i18n.tr("Bitte wählen Sie die zu exportierenden Umsätze aus"));

    UmsatzTree[] t = (UmsatzTree[]) objects;
    if (t.length == 0)
      throw new ApplicationException(i18n.tr("Bitte wählen Sie die zu exportierenden Umsätze aus"));

    UmsatzTree tree = t[0];
    List list = tree.getUmsatzTree();
    Konto k = tree.getKonto();

    String subTitle =
        i18n.tr(
            "Zeitraum {0} - {1}, {2}",
            HBCI.DATEFORMAT.format(tree.getStart()),
            HBCI.DATEFORMAT.format(tree.getEnd()),
            k == null ? i18n.tr("alle Konten") : k.getBezeichnung());

    Reporter reporter = null;
    try {
      reporter = new Reporter(os, monitor, i18n.tr("Umsatzkategorien"), subTitle, list.size());

      reporter.addHeaderColumn(i18n.tr("Kategorie"), Element.ALIGN_CENTER, 130, Color.LIGHT_GRAY);
      reporter.addHeaderColumn(i18n.tr("Einnahmen"), Element.ALIGN_CENTER, 30, Color.LIGHT_GRAY);
      reporter.addHeaderColumn(i18n.tr("Ausgaben"), Element.ALIGN_CENTER, 30, Color.LIGHT_GRAY);
      reporter.addHeaderColumn(i18n.tr("Betrag"), Element.ALIGN_CENTER, 30, Color.LIGHT_GRAY);
      reporter.createHeader();

      // Iteration ueber die Kategorien
      for (int i = 0; i < list.size(); ++i) {
        renderNode(reporter, (UmsatzTreeNode) list.get(i), 0);
        reporter.setNextRecord();
      }
      if (monitor != null) monitor.setStatus(ProgressMonitor.STATUS_DONE);
    } catch (Exception e) {
      if (monitor != null) monitor.setStatus(ProgressMonitor.STATUS_ERROR);
      Logger.error("error while creating report", e);
      throw new ApplicationException(
          i18n.tr("Fehler beim Erzeugen der Auswertung: {0}", e.getMessage()), e);
    } finally {
      if (reporter != null) {
        try {
          reporter.close();
        } catch (Exception e) {
          Logger.error("unable to close report", e);
        }
      }
    }
  }
 /** @see de.willuhn.jameica.search.Result#getName() */
 public String getName() {
   try {
     Konto k = u.getKonto();
     String[] params =
         new String[] {
           HBCI.DATEFORMAT.format(u.getTermin()),
           HBCI.DECIMALFORMAT.format(u.getBetrag()),
           k.getWaehrung(),
           u.getGegenkontoName(),
           u.getZweck(),
           k.getLongName(),
         };
     I18N i18n = Application.getPluginLoader().getPlugin(HBCI.class).getResources().getI18N();
     return i18n.tr("{0}: {1} {2} an {3} - {4} (via {5})", params);
   } catch (RemoteException re) {
     Logger.error("unable to determin result name", re);
     return null;
   }
 }
  /** @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()));
    }
  }
Example #6
0
    /** @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event) */
    public void handleEvent(Event event) {
      if (chart == null) return;

      try {
        int start = ((Integer) getRange().getValue()).intValue();

        Konto k = konto;
        if (k == null) // Das ist der Fall, wenn das Kontoauswahlfeld verfuegbar ist
        k = (Konto) getKontoAuswahl().getValue();

        if (start == startPrev && k == kPrev) return; // Auswahl nicht geaendert

        chart.removeAllData();

        Date date = null;

        if (start < 0) {
          // Keine Anzahl von Tagen angegeben. Dann nehmen wir den
          // aeltesten gefundenen Umsatz als Beginn
          String query = "select min(valuta) from umsatz";
          if (k != null) query += " where konto_id = " + k.getID();

          date =
              (Date)
                  Settings.getDBService()
                      .execute(
                          query,
                          null,
                          new ResultSetExtractor() {
                            public Object extract(ResultSet rs)
                                throws RemoteException, SQLException {
                              if (!rs.next()) return null;
                              return rs.getDate(1);
                            }
                          });
        } else {
          long d = start * 24l * 60l * 60l * 1000l;
          date = DateUtil.startOfDay(new Date(System.currentTimeMillis() - d));
        }

        if (date == null) {
          Logger.info("no start date, no entries, skipping chart");
          return;
        }

        chart.setTitle(i18n.tr("Saldo-Verlauf seit {0}", HBCI.DATEFORMAT.format(date)));

        if (k == null) // wir zeichnen einen Stacked-Graph ueber alle Konten
        {
          DBIterator it = Settings.getDBService().createList(Konto.class);
          ChartDataSaldoSumme s = new ChartDataSaldoSumme();
          while (it.hasNext()) {
            ChartDataSaldoVerlauf v = new ChartDataSaldoVerlauf((Konto) it.next(), date);
            chart.addData(v);
            s.add(v.getData());
          }

          ChartDataSaldoTrend t = new ChartDataSaldoTrend();
          t.add(s.getData());
          chart.addData(s);
          chart.addData(t);
        } else // Ansonsten nur fuer eine
        {
          ChartDataSaldoVerlauf s = new ChartDataSaldoVerlauf(k, date);
          ChartDataSaldoTrend t = new ChartDataSaldoTrend();
          t.add(s.getData());
          chart.addData(s);
          chart.addData(t);
        }

        if (event != null) chart.redraw(); // nur neu laden, wenn via Select ausgeloest

        kPrev = k;
        startPrev = start;
      } catch (Exception e) {
        Logger.error("unable to redraw chart", e);
        Application.getMessagingFactory()
            .sendMessage(
                new StatusBarMessage(
                    i18n.tr("Fehler beim Aktualisieren des Saldo-Verlaufs"),
                    StatusBarMessage.TYPE_ERROR));
      }
    }