public PaymentStatistic processKZ(File csvFile, LoggingHandler lh) throws IOException {

    CsvReader reader = null;
    ArrayList<PaymentRecord> recordList = new ArrayList();
    Double sum = 0.0;
    PaymentStatistic statisticAll = new PaymentStatistic();

    try {

      reader = new CsvReader(csvFile.getCanonicalPath());
      reader.setDelimiter(';');
      reader.readHeaders();

      // Headers ohne Spaces mittels trim
      String[] headers = new String[reader.getHeaderCount()];
      for (int i = 0; i < reader.getHeaderCount(); i++) {
        headers[i] = reader.getHeader(i).trim();
      }
      reader.setHeaders(headers);
      // http://www.csvreader.com/java_csv_samples.php
      // http://javacsv.sourceforge.net/

      PaymentRecord record = new PaymentRecord(reader);
      recordList.add(record);

      while (true) {
        try {

          PaymentRecord newRecord = new PaymentRecord(reader);

          if (newRecord.getKontoNr() == record.getKontoNr()) {
            // nicht verarbeiten, gleicher Kunde
            recordList.add(newRecord);
            sum = sum + newRecord.getBetragNr();
            record = newRecord;
            continue;
          }

          // unterschiedliche Kundennummer, alte Belege verarbeiten
          if (sum == 0.0) {
            PaymentStatistic statistic = processKZPaymentRecord(recordList, lh);
            statisticAll.addStatistic(statistic);
          }
          // System.out.println("Kunde " + record.getKontoStr() + "OP: " + sum);
          recordList = new ArrayList();
          sum = 0.0;
          recordList.add(newRecord);
          sum = sum + newRecord.getBetragNr();
          record = newRecord;
          continue;

        } catch (Throwable th) {
          // kein neuer record mehr, Liste verarbeiten
          if (sum == 0.0) {
            PaymentStatistic statistic = processKZPaymentRecord(recordList, lh);
            statisticAll.addStatistic(statistic);
          }
        }
        break;
      }

      reader.close();

    } catch (Throwable th) {
      lh.getLogger(Globals.LOGGINGKZ).log(Level.SEVERE, null, th);
      return statisticAll;
    }
    return statisticAll;
  }