com.lp.server.projekt.ejbfac.ProjektReportFacBean.java Source code

Java tutorial

Introduction

Here is the source code for com.lp.server.projekt.ejbfac.ProjektReportFacBean.java

Source

/*******************************************************************************
 * HELIUM V, Open Source ERP software for sustained success
 * at small and medium-sized enterprises.
 * Copyright (C) 2004 - 2014 HELIUM V IT-Solutions GmbH
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published 
 * by the Free Software Foundation, either version 3 of theLicense, or 
 * (at your option) any later version.
 * 
 * According to sec. 7 of the GNU Affero General Public License, version 3, 
 * the terms of the AGPL are supplemented with the following terms:
 * 
 * "HELIUM V" and "HELIUM 5" are registered trademarks of 
 * HELIUM V IT-Solutions GmbH. The licensing of the program under the 
 * AGPL does not imply a trademark license. Therefore any rights, title and
 * interest in our trademarks remain entirely with us. If you want to propagate
 * modified versions of the Program under the name "HELIUM V" or "HELIUM 5",
 * you may only do so if you have a written permission by HELIUM V IT-Solutions 
 * GmbH (to acquire a permission please contact HELIUM V IT-Solutions
 * at trademark@heliumv.com).
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * Contact: developers@heliumv.com
 ******************************************************************************/
package com.lp.server.projekt.ejbfac;

import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.interceptor.Interceptors;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.lp.server.anfrage.service.AnfrageDto;
import com.lp.server.angebot.service.AngebotDto;
import com.lp.server.artikel.service.ArtikelDto;
import com.lp.server.artikel.service.ArtikelFac;
import com.lp.server.auftrag.service.AuftragDto;
import com.lp.server.auftrag.service.AuftragzeitenDto;
import com.lp.server.bestellung.service.BestellungDto;
import com.lp.server.fertigung.service.LosDto;
import com.lp.server.fertigung.service.LosablieferungDto;
import com.lp.server.lieferschein.service.LieferscheinDto;
import com.lp.server.partner.service.AnsprechpartnerDto;
import com.lp.server.partner.service.KundeFac;
import com.lp.server.partner.service.PartnerDto;
import com.lp.server.partner.service.PartnerFac;
import com.lp.server.personal.fastlanereader.generated.FLRTelefonzeiten;
import com.lp.server.personal.service.PersonalDto;
import com.lp.server.personal.service.PersonalgehaltDto;
import com.lp.server.personal.service.ReiseDto;
import com.lp.server.personal.service.TelefonzeitenDto;
import com.lp.server.personal.service.ZeiterfassungFac;
import com.lp.server.projekt.fastlanereader.ProjektHandler;
import com.lp.server.projekt.fastlanereader.ProjektverlaufHandler;
import com.lp.server.projekt.fastlanereader.generated.FLRHistory;
import com.lp.server.projekt.fastlanereader.generated.FLRProjekt;
import com.lp.server.projekt.service.BereichDto;
import com.lp.server.projekt.service.ProjektDto;
import com.lp.server.projekt.service.ProjektFac;
import com.lp.server.projekt.service.ProjektReportFac;
import com.lp.server.projekt.service.ProjektServiceFac;
import com.lp.server.projekt.service.ProjektVerlaufHelperDto;
import com.lp.server.rechnung.service.RechnungDto;
import com.lp.server.rechnung.service.RechnungFac;
import com.lp.server.rechnung.service.RechnungartDto;
import com.lp.server.system.service.LocaleFac;
import com.lp.server.system.service.MandantDto;
import com.lp.server.system.service.ReportJournalKriterienDto;
import com.lp.server.system.service.TheClientDto;
import com.lp.server.util.LPReport;
import com.lp.server.util.fastlanereader.FLRSessionFactory;
import com.lp.server.util.fastlanereader.service.query.FilterBlock;
import com.lp.server.util.fastlanereader.service.query.FilterKriterium;
import com.lp.server.util.fastlanereader.service.query.QueryParameters;
import com.lp.server.util.report.JasperPrintLP;
import com.lp.server.util.report.TimingInterceptor;
import com.lp.util.AufgeloesteFehlmengenDto;
import com.lp.util.EJBExceptionLP;
import com.lp.util.Helper;
import com.lp.util.LPDatenSubreport;

@Stateless
@Interceptors(TimingInterceptor.class)
public class ProjektReportFacBean extends LPReport implements ProjektReportFac, JRDataSource {

    @PersistenceContext
    private EntityManager em;

    private String cAktuellerReport = null;
    private Object[][] data = null;

    public JasperPrintLP printProjektverlauf(Integer projektIId, TheClientDto theClientDto)
            throws EJBExceptionLP, RemoteException {

        cAktuellerReport = ProjektReportFac.REPORT_PROJEKTVERLAUF;

        HashMap<String, Object> parameter = new HashMap<String, Object>();
        ProjektDto projektDto = getProjektFac().projektFindByPrimaryKey(projektIId);

        FilterKriterium[] filterKrit = new FilterKriterium[1];
        FilterKriterium krit1 = new FilterKriterium("projekt_i_id", true, projektDto.getIId().toString(),
                FilterKriterium.OPERATOR_EQUAL, false);

        filterKrit[0] = krit1;

        QueryParameters p = new QueryParameters(QueryParameters.UC_ID_PROJEKTVERLAUF, null,
                new FilterBlock(filterKrit, "AND"), null, null);

        ProjektverlaufHandler pv = new ProjektverlaufHandler();
        pv.setCurrentUser(theClientDto);
        pv.setQuery(p);

        LinkedHashMap<String, ProjektVerlaufHelperDto> hm = pv.setInhalt();

        PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(projektDto.getPartnerIId(), theClientDto);
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(projektDto.getMandantCNr(), theClientDto);

        Locale locDruck = Helper.string2Locale(partnerDto.getLocaleCNrKommunikation());

        parameter.put("P_PROJEKTNUMMER", projektDto.getCNr());
        parameter.put("P_TITEL", projektDto.getCTitel());
        parameter.put("P_KUNDE_ADRESSBLOCK", formatAdresseFuerAusdruck(partnerDto, null, mandantDto, locDruck));

        parameter.put("P_MANDANTENWAEHRUNG", theClientDto.getSMandantenwaehrung());

        ArrayList alDaten = new ArrayList();

        Iterator<String> it = hm.keySet().iterator();

        boolean bProjektHinzugefuegt = false;

        while (it.hasNext()) {
            ProjektVerlaufHelperDto belegDto = hm.get(it.next());

            String einrueckung = "";
            for (int i = 0; i < belegDto.getiEbene(); i++) {
                einrueckung = einrueckung + "   ";
            }

            String belegart = "Unbekannt";
            String belegnummer = "Unbekannt";
            Integer belegIId = null;

            String status = null;

            java.util.Date belegdatum = null;

            if (bProjektHinzugefuegt == false) {

                belegart = LocaleFac.BELEGART_PROJEKT;
                belegnummer = projektDto.getCNr();
                belegIId = projektDto.getIId();
                status = projektDto.getStatusCNr();

                Object[] oZeile = new Object[ProjektReportFac.REPORT_PROJEKTVERLAUF_ANZAHL_SPALTEN];
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGART] = belegart;
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGNUMMER] = belegnummer;
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_EBENE] = 0;
                belegdatum = projektDto.getTAnlegen();
                oZeile = befuelleZeileProjektverlaufMitZeitdaten(belegart, belegIId, oZeile, theClientDto);

                alDaten.add(oZeile);

                bProjektHinzugefuegt = true;
            }

            BigDecimal bdVKMaterialwert = null;
            BigDecimal bdVKAZWert = null;

            BigDecimal bdEKMaterialwert = null;
            BigDecimal bdEKAZWert = null;

            BigDecimal bdGestMaterialwert = null;
            BigDecimal bdGestAZWert = null;

            Object[] oZeile = new Object[ProjektReportFac.REPORT_PROJEKTVERLAUF_ANZAHL_SPALTEN];

            if (belegDto.getBelegDto() instanceof AngebotDto) {
                AngebotDto dto = (AngebotDto) belegDto.getBelegDto();
                belegart = LocaleFac.BELEGART_ANGEBOT;
                belegnummer = dto.getCNr();
                belegIId = dto.getIId();

                bdGestMaterialwert = getAngebotFac().berechneGestehungswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, true, theClientDto);
                bdGestAZWert = getAngebotFac().berechneGestehungswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, true, theClientDto);

                bdVKMaterialwert = getAngebotFac().berechneVerkaufswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdVKAZWert = getAngebotFac().berechneVerkaufswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);
                belegdatum = dto.getTBelegdatum();

                status = dto.getStatusCNr();

            } else if (belegDto.getBelegDto() instanceof AuftragDto) {
                AuftragDto dto = (AuftragDto) belegDto.getBelegDto();
                belegart = LocaleFac.BELEGART_AUFTRAG;
                belegnummer = dto.getCNr();
                belegIId = dto.getIId();

                bdGestMaterialwert = getAuftragFac().berechneGestehungswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, true, theClientDto);
                bdGestAZWert = getAuftragFac().berechneGestehungswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, true, theClientDto);

                bdVKMaterialwert = getAuftragFac().berechneVerkaufswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdVKAZWert = getAuftragFac().berechneVerkaufswertSoll(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);
                belegdatum = dto.getTBelegdatum();

                status = dto.getStatusCNr();

                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_AUFTRAG_BESTELLNUMMER] = dto.getCBestellnummer();
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_LIEFERTERMIN] = dto.getDLiefertermin();

            } else if (belegDto.getBelegDto() instanceof LieferscheinDto) {
                LieferscheinDto dto = (LieferscheinDto) belegDto.getBelegDto();
                belegart = LocaleFac.BELEGART_LIEFERSCHEIN;
                belegnummer = dto.getCNr();

                bdGestMaterialwert = getLieferscheinFac().berechneGestehungswertIst(dto.getIId(), null,
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdGestAZWert = getLieferscheinFac().berechneGestehungswertIst(dto.getIId(), null,
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);

                bdVKMaterialwert = getLieferscheinFac().berechneVerkaufswertIst(dto.getIId(), null,
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdVKAZWert = getLieferscheinFac().berechneVerkaufswertIst(dto.getIId(), null,
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);
                belegdatum = dto.getTBelegdatum();

                status = dto.getStatusCNr();

            } else if (belegDto.getBelegDto() instanceof RechnungDto) {
                RechnungDto dto = (RechnungDto) belegDto.getBelegDto();
                belegart = dto.getRechnungartCNr();
                belegnummer = dto.getCNr();

                boolean bGutschrift = false;

                RechnungartDto raDto = getRechnungServiceFac()
                        .rechnungartFindByPrimaryKey(RechnungFac.RECHNUNGART_GUTSCHRIFT, theClientDto);

                if (raDto.getRechnungtypCNr().equals(RechnungFac.RECHNUNGTYP_GUTSCHRIFT)) {
                    bGutschrift = true;
                }

                bdGestMaterialwert = getRechnungFac().berechneGestehungswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdGestAZWert = getRechnungFac().berechneGestehungswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);

                bdVKMaterialwert = getRechnungFac().berechneVerkaufswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdVKAZWert = getRechnungFac().berechneVerkaufswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);

                if (bGutschrift == true) {
                    if (bdGestMaterialwert != null) {
                        bdGestMaterialwert = bdGestMaterialwert.negate();
                    }
                    if (bdGestAZWert != null) {
                        bdGestAZWert = bdGestAZWert.negate();
                    }
                    if (bdVKMaterialwert != null) {
                        bdVKMaterialwert = bdVKMaterialwert.negate();
                    }
                    if (bdVKAZWert != null) {
                        bdVKAZWert = bdVKAZWert.negate();
                    }
                }

                belegdatum = dto.getTBelegdatum();

                status = dto.getStatusCNr();

            } else if (belegDto.getBelegDto() instanceof BestellungDto) {
                BestellungDto dto = (BestellungDto) belegDto.getBelegDto();
                belegart = LocaleFac.BELEGART_BESTELLUNG;
                belegnummer = dto.getCNr();

                bdEKMaterialwert = getBestellungFac().berechneEinkaufswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdEKAZWert = getBestellungFac().berechneEinkaufswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);
                belegdatum = dto.getDBelegdatum();

                status = dto.getStatusCNr();

                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_LIEFERANT] = getLieferantFac()
                        .lieferantFindByPrimaryKey(dto.getLieferantIIdBestelladresse(), theClientDto)
                        .getPartnerDto().formatFixName1Name2();

                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_LIEFERTERMIN] = dto.getDLiefertermin();

            } else if (belegDto.getBelegDto() instanceof AnfrageDto) {
                AnfrageDto dto = (AnfrageDto) belegDto.getBelegDto();
                belegart = LocaleFac.BELEGART_ANFRAGE;
                belegnummer = dto.getCNr();

                bdEKMaterialwert = getAnfrageFac().berechneEinkaufswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARTIKEL, theClientDto);
                bdEKAZWert = getBestellungFac().berechneEinkaufswertIst(dto.getIId(),
                        ArtikelFac.ARTIKELART_ARBEITSZEIT, theClientDto);

                belegdatum = dto.getTBelegdatum();

                status = dto.getStatusCNr();

                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_LIEFERANT] = getLieferantFac()
                        .lieferantFindByPrimaryKey(dto.getLieferantIIdAnfrageadresse(), theClientDto)
                        .getPartnerDto().formatFixName1Name2();

            } else if (belegDto.getBelegDto() instanceof LosDto) {
                LosDto dto = (LosDto) belegDto.getBelegDto();
                belegart = LocaleFac.BELEGART_LOS;
                belegnummer = dto.getCNr();
                belegIId = dto.getIId();

                status = dto.getStatusCNr();

                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_LOS_BEGINN] = dto.getTProduktionsbeginn();
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_LOS_ENDE] = dto.getTProduktionsende();

                BigDecimal ablMenge = new BigDecimal(0);
                BigDecimal ablWert = new BigDecimal(0);
                LosablieferungDto[] ablDtos = getFertigungFac().losablieferungFindByLosIId(dto.getIId(), true,
                        theClientDto);
                for (int i = 0; i < ablDtos.length; i++) {
                    ablMenge = ablMenge.add(ablDtos[i].getNMenge());
                    ablWert = ablWert.add(ablDtos[i].getNMaterialwert().multiply(ablDtos[i].getNMenge()));
                }

                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_MATERIALWERT_LOS] = ablWert;
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_LOS_ABGELIEFERTE_MENGE] = ablMenge;

            } else if (belegDto.getBelegDto() instanceof ReiseDto) {
                ReiseDto reiseDto = (ReiseDto) belegDto.getBelegDto();

                belegart = "Reise";
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_REISE_KOMMENTAR] = reiseDto.getCKommentar();
                bdGestMaterialwert = reiseDto.getNKostenDesAbschnitts();

            } else if (belegDto.getBelegDto() instanceof TelefonzeitenDto) {
                TelefonzeitenDto telefonzeitenDto = (TelefonzeitenDto) belegDto.getBelegDto();
                belegart = "Telefon";

                // Die Kosten kommen aus dem Stundensatz
                Calendar c = Calendar.getInstance();
                c.setTimeInMillis(telefonzeitenDto.getTVon().getTime());

                PersonalgehaltDto pgDto = getPersonalFac().personalgehaltFindLetztePersonalgehalt(
                        telefonzeitenDto.getPersonalIId(), c.get(Calendar.YEAR), c.get(Calendar.MONTH));

                if (telefonzeitenDto.getTBis() != null) {
                    Double dauer = new Double(
                            ((double) (telefonzeitenDto.getTBis().getTime() - telefonzeitenDto.getTVon().getTime())
                                    / 3600000));

                    oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_AZ_DAUER] = dauer;

                    if (pgDto != null && pgDto.getNStundensatz() != null) {

                        oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_AZ_KOSTEN] = pgDto.getNStundensatz()
                                .multiply(new BigDecimal(dauer));

                    }
                }

                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_TELEFON_KOMMENTAR_EXTERN] = telefonzeitenDto
                        .getXKommentarext();
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_TELEFON_KOMMENTAR_INTERN] = telefonzeitenDto
                        .getXKommentarint();

            }

            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGDATUM] = belegdatum;

            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGART] = belegart;
            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGNUMMER] = belegnummer;
            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_EBENE] = belegDto.getiEbene();

            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_VKWERT_MATERIAL] = bdVKMaterialwert;
            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_VKWERT_AZ] = bdVKAZWert;

            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_GESTWERT_MATERIAL] = bdGestMaterialwert;
            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_GESTWERT_AZ] = bdGestAZWert;

            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_EKWERT_MATERIAL] = bdEKMaterialwert;
            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_EKWERT_AZ] = bdEKAZWert;

            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_STATUS] = status;

            oZeile = befuelleZeileProjektverlaufMitZeitdaten(belegart, belegIId, oZeile, theClientDto);

            if (belegDto.getBelegDto() instanceof LosDto) {
                oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_AZWERT_LOS] = new BigDecimal(
                        ((BigDecimal) oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_AZ_KOSTEN]).doubleValue());
            }

            alDaten.add(oZeile);
        }

        Object[][] returnArray = new Object[alDaten.size()][ProjektReportFac.REPORT_PROJEKTVERLAUF_ANZAHL_SPALTEN];
        data = (Object[][]) alDaten.toArray(returnArray);

        initJRDS(parameter, ProjektReportFac.REPORT_MODUL, ProjektReportFac.REPORT_PROJEKTVERLAUF,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

        return getReportPrint();
    }

    private Object[] befuelleZeileProjektverlaufMitZeitdaten(String belegart, Integer belegIId, Object[] oZeile,
            TheClientDto theClientDto) {

        if (belegart != null && belegIId != null) {
            AuftragzeitenDto[] azDtos = getZeiterfassungFac().getAllZeitenEinesBeleges(belegart, belegIId, null,
                    null, null, null, true, false, theClientDto);

            double zeiten = 0;
            BigDecimal bdKosten = new BigDecimal(0);
            for (int i = 0; i < azDtos.length; i++) {
                if (azDtos[i] != null && azDtos[i].getDdDauer() != null) {
                    zeiten = zeiten + azDtos[i].getDdDauer().doubleValue();
                }

                if (azDtos[i] != null && azDtos[i].getBdKosten() != null) {
                    bdKosten = bdKosten.add(azDtos[i].getBdKosten());
                }

            }

            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_AZ_DAUER] = new Double(zeiten);
            oZeile[ProjektReportFac.REPORT_PROJEKTVERLAUF_AZ_KOSTEN] = bdKosten;
        }
        return oZeile;
    }

    public JasperPrintLP printProjekt(Integer iIdProjektI, Integer iAnzahlKopienI, Boolean bMitLogo,
            TheClientDto theClientDto) throws EJBExceptionLP, RemoteException {
        JasperPrintLP aJasperPrint = null;

        try {
            ProjektDto projektDto = getProjektFac().projektFindByPrimaryKey(iIdProjektI);
            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(projektDto.getPartnerIId(),
                    theClientDto);
            MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(projektDto.getMandantCNr(),
                    theClientDto);
            cAktuellerReport = ProjektReportFac.REPORT_PROJEKT;
            // dem Report seine Parameter setzen
            HashMap<String, Object> parameter = new HashMap<String, Object>();

            Locale locDruck = Helper.string2Locale(partnerDto.getLocaleCNrKommunikation());

            if (partnerDto.getPartnerklasseIId() != null) {
                parameter.put("P_PARTNERKLASSE",
                        getPartnerFac()
                                .partnerklasseFindByPrimaryKey(partnerDto.getPartnerklasseIId(), theClientDto)
                                .getBezeichnung());
            }

            parameter.put("P_BEREICH",
                    getProjektServiceFac().bereichFindByPrimaryKey(projektDto.getBereichIId()).getCBez());

            if (partnerDto.getBrancheIId() != null) {
                parameter.put("P_BRANCHE", getPartnerServicesFac()
                        .brancheFindByPrimaryKey(partnerDto.getBrancheIId(), theClientDto).getBezeichnung());
            }
            parameter.put("P_MANDANTADRESSE", Helper.formatMandantAdresse(mandantDto));

            parameter.put("P_TITEL", projektDto.getCTitel());
            parameter.put("P_PROJEKTNUMMER", projektDto.getCNr());
            parameter.put("P_KOPFTEXT", Helper.formatStyledTextForJasper(projektDto.getXFreetext()));
            parameter.put("P_KATEGORIE", projektDto.getKategorieCNr());

            parameter.put("P_WAHRSCHEINLICHKEIT", projektDto.getIWahrscheinlichkeit());
            parameter.put("P_UMSATZGEPLANT", projektDto.getNUmsatzgeplant());

            parameter.put("P_ZIELTERMIN", "" + Helper.formatDatum(projektDto.getTZielwunschdatum(), locDruck));
            parameter.put("P_ERLEDIGUNGSDATUM", "" + Helper.formatDatum(projektDto.getTErledigt(), locDruck));
            parameter.put("P_BELEGDATUM", "" + Helper.formatDatum(projektDto.getTAnlegen(), locDruck));
            parameter.put("P_KUNDE_ADRESSBLOCK", formatAdresseFuerAusdruck(partnerDto, null, mandantDto, locDruck));

            if (projektDto.getAnsprechpartnerIId() != null) {
                AnsprechpartnerDto ansprechpartnerDto = getAnsprechpartnerFac()
                        .ansprechpartnerFindByPrimaryKey(projektDto.getAnsprechpartnerIId(), theClientDto);
                parameter.put(LPReport.P_ANSPRECHPARTNER, ansprechpartnerDto.getPartnerDto().formatFixName1Name2());

                parameter.put(LPReport.P_ANSPRECHPARTNERHANDY, ansprechpartnerDto.getCHandy());

                parameter.put(LPReport.P_ANSPRECHPARTNERDW, ansprechpartnerDto.getCTelefon());

                parameter.put(LPReport.P_ANSPRECHPARTNEREMAIL, ansprechpartnerDto.getCEmail());

                parameter.put(LPReport.P_ANSPRECHPARTNERFAX, ansprechpartnerDto.getCDirektfax());

                String sTelefon = getPartnerFac().partnerkommFindRespectPartnerAsStringOhneExec(
                        ansprechpartnerDto.getIId(), partnerDto, PartnerFac.KOMMUNIKATIONSART_TELEFON,
                        theClientDto.getMandant(), theClientDto);

                parameter.put(LPReport.P_ANSPRECHPARTNERTELEFON, sTelefon != null ? sTelefon : "");

            }
            SessionFactory factory = FLRSessionFactory.getFactory();
            Session session = null;

            try {
                session = factory.openSession();
                // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
                // Haupttabelle anlegen,
                // nach denen ich filtern und sortieren kann
                Criteria crit = session.createCriteria(FLRHistory.class);

                crit.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projektDto.getIId()));
                crit.addOrder(Order.desc(ProjektFac.FLR_HISTORY_T_BELEGDATUM));
                List<?> resultList = crit.list();
                if (resultList.size() == 0) {
                    data = new Object[1][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ANZAHL_SPALTEN];
                    parameter.put("P_OHNEPOSITION", new Boolean(true));
                } else {
                    parameter.put("P_OHNEPOSITION", new Boolean(false));
                    Iterator<?> it = resultList.iterator();
                    int i = 0;
                    data = new Object[resultList
                            .size()][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ANZAHL_SPALTEN];
                    while (it.hasNext()) {
                        FLRHistory history = (FLRHistory) it.next();
                        data[i][ProjektReportFac.REPORT_PROJEKT_POSITION] = i;
                        data[i][ProjektReportFac.REPORT_PROJEKT_ERZEUGER] = history.getFlrpersonal().getFlrpartner()
                                .getC_name1nachnamefirmazeile1();
                        data[i][ProjektReportFac.REPORT_PROJEKT_HISTORY_BELEGDATUM] = Helper
                                .formatDatum(history.getT_belegdatum(), locDruck);
                        data[i][ProjektReportFac.REPORT_PROJEKT_HISTORY_TEXT] = history.getX_text();
                        data[i][ProjektReportFac.REPORT_PROJEKT_TITEL] = history.getC_titel();

                        if (history.getFlrhistoryart() != null) {
                            data[i][ProjektReportFac.REPORT_PROJEKT_HISTORYART] = history.getFlrhistoryart()
                                    .getC_bez();

                            data[i][ProjektReportFac.REPORT_PROJEKT_ROT] = history.getFlrhistoryart().getI_rot();
                            data[i][ProjektReportFac.REPORT_PROJEKT_BLAU] = history.getFlrhistoryart().getI_blau();
                            data[i][ProjektReportFac.REPORT_PROJEKT_GRUEN] = history.getFlrhistoryart()
                                    .getI_gruen();
                        }
                        i++;
                    }
                }
            } catch (Throwable t) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FLR, new Exception(t));
            } finally {
                try {
                    session.close();
                } catch (HibernateException he) {
                    throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
                }
            }

            initJRDS(parameter, ProjektReportFac.REPORT_MODUL, cAktuellerReport, theClientDto.getMandant(),
                    locDruck, theClientDto);

            aJasperPrint = getReportPrint();

        } catch (RemoteException ex) {
            throwEJBExceptionLPRespectOld(ex);
        } catch (Throwable t) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_DRUCKEN, new Exception(t));
        }

        return aJasperPrint;
    }

    public JasperPrintLP printProjektAlle(ReportJournalKriterienDto reportJournalKriterienDtoI, Date dStichtag,
            Integer bereichIId, boolean belegdatumStattZieltermin, TheClientDto theClientDto)
            throws EJBExceptionLP, RemoteException {
        JasperPrintLP oPrint = null;
        int iAnzahlZeilen = 0;
        cAktuellerReport = ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE;
        Locale locDruck;

        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = null;
        // vom Stichtag die Uhrzeit abschneiden
        dStichtag = Helper.cutDate(dStichtag);

        try {
            session = factory.openSession();
            // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
            // Haupttabelle anlegen,
            // nach denen ich filtern und sortieren kann
            Criteria critProjekt = session.createCriteria(FLRProjekt.class);

            // Einschraenkung auf den aktuellen Mandanten
            critProjekt.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_MANDANT_C_NR, theClientDto.getMandant()));

            critProjekt.add(Restrictions.not(Restrictions.eq(ProjektFac.FLR_PROJEKT_STATUS_C_NR,
                    ProjektServiceFac.PROJEKT_STATUS_STORNIERT)));

            // Einschraenkung nach Belegdatum von - bis
            String sVon = null;
            String sBis = null;

            if (reportJournalKriterienDtoI.dVon != null) {

                if (belegdatumStattZieltermin) {
                    critProjekt.add(
                            Restrictions.ge(ProjektFac.FLR_PROJEKT_T_ANLEGEN, reportJournalKriterienDtoI.dVon));
                } else {
                    critProjekt.add(
                            Restrictions.ge(ProjektFac.FLR_PROJEKT_T_ZIELDATUM, reportJournalKriterienDtoI.dVon));
                }

                sVon = Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi());
            }

            if (reportJournalKriterienDtoI.dBis != null) {
                if (belegdatumStattZieltermin) {
                    critProjekt.add(
                            Restrictions.le(ProjektFac.FLR_PROJEKT_T_ANLEGEN, reportJournalKriterienDtoI.dBis));
                } else {
                    critProjekt.add(
                            Restrictions.le(ProjektFac.FLR_PROJEKT_T_ZIELDATUM, reportJournalKriterienDtoI.dBis));
                }
                sBis = Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi());
            }

            if (reportJournalKriterienDtoI.sBelegnummerVon != null) {
                sVon = reportJournalKriterienDtoI.sBelegnummerVon;
                critProjekt.add(Restrictions.ge(ProjektFac.FLR_PROJEKT_C_NR, new Integer(sVon)));
            }

            critProjekt.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_BEREICH_I_ID, bereichIId));

            if (reportJournalKriterienDtoI.sBelegnummerBis != null) {
                sBis = reportJournalKriterienDtoI.sBelegnummerBis;
                critProjekt.add(Restrictions.le(ProjektFac.FLR_PROJEKT_C_NR, new Integer(sBis)));
            }

            // Einschraenkung nach einer bestimmten Perosn
            if (reportJournalKriterienDtoI.personalIId != null) {
                critProjekt.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_PERSONAL_I_ID_ZUGEWIESENER,
                        reportJournalKriterienDtoI.personalIId));
            }

            // Sortierung nach Personal ist immer die erste Sortierung
            if (reportJournalKriterienDtoI.bSortiereNachPersonal) {
                critProjekt.createCriteria(ProjektFac.FLR_PROJEKT_FLRPERSONALZUGEWIESENER)
                        .createCriteria(KundeFac.FLR_PARTNER)
                        .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
            }

            // Sortierung nach Partner,
            if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
                critProjekt.createCriteria(ProjektFac.FLR_PROJEKT_FLRPARTNER)
                        .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
            }
            // es wird in jedem Fall nach der Iid sortiert
            critProjekt.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_C_NR));

            List<?> list = critProjekt.list();
            Iterator<?> it = list.iterator();

            while (it.hasNext()) {
                FLRProjekt projekt = (FLRProjekt) it.next();
                session = factory.openSession();
                Criteria critHistory = session.createCriteria(FLRHistory.class);
                critHistory.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projekt.getI_id()));
                List<?> historyList = critHistory.list();
                if (historyList.size() != 0) {
                    iAnzahlZeilen = iAnzahlZeilen + historyList.size();
                }
                iAnzahlZeilen++;
            }
            data = new Object[iAnzahlZeilen][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ANZAHL_SPALTEN];
            int i = 0;
            it = list.iterator();

            while (it.hasNext()) {
                FLRProjekt projekt = (FLRProjekt) it.next();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PROJEKTTITEL] = projekt.getC_titel();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PROJEKTKATEGORIE] = projekt
                        .getKategorie_c_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PROJEKTCNR] = projekt.getC_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_KUNDECNAME1] = projekt.getFlrpartner()
                        .getC_name1nachnamefirmazeile1();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_STATUS] = projekt.getStatus_c_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_TYP] = projekt.getTyp_c_nr();
                if (projekt.getPersonal_i_id_internerledigt() != null) {
                    PersonalDto personalDto = getPersonalFac()
                            .personalFindByPrimaryKey(projekt.getPersonal_i_id_internerledigt(), theClientDto);
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_INTERNERLEDIGT_PERSON] = personalDto
                            .getPartnerDto().formatAnrede();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_INTERNERLEDIGT_ZEIT] = projekt
                            .getT_internerledigt();
                }
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_WAHRSCHEINLICHKEIT] = projekt
                        .getI_wahrscheinlichkeit();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_GEPLANTERUMSATZ] = projekt
                        .getN_umsatzgeplant();

                locDruck = Helper.string2Locale(projekt.getFlrpartner().getLocale_c_nr_kommunikation());
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZIELTERMIN] = Helper
                        .formatDatum(projekt.getT_zielwunschdatum(), locDruck);
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_BELEGDATUM] = Helper
                        .formatDatum(projekt.getT_anlegen(), locDruck);
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ERLEDIGUNGSDATUM] = Helper
                        .formatDatumZeit(projekt.getT_erledigungsdatum(), locDruck);

                Calendar calendar = new GregorianCalendar();
                calendar.setTime(new Date(projekt.getT_zielwunschdatum().getTime()));
                int KW = calendar.get(Calendar.WEEK_OF_YEAR); // Kalendarwochen

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZIELWOCHE] = "" + KW;

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PRIO] = projekt.getI_prio();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_TEXT] = projekt.getX_freetext();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ERZEUGER] = projekt.getFlrpersonalErzeuger()
                        .getFlrpartner().getC_name1nachnamefirmazeile1();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZUGEWIESENER] = projekt
                        .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZEIT] = projekt.getT_zeit();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_DAUER] = projekt.getD_dauer();
                //
                //

                Criteria crit1 = session.createCriteria(FLRHistory.class);
                crit1.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projekt.getI_id()));
                List<?> resultList = crit1.list();
                Iterator<?> itHistory = resultList.iterator();
                i++;

                while (itHistory.hasNext()) {
                    FLRHistory history = (FLRHistory) itHistory.next();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PROJEKTCNR] = projekt.getC_nr();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZUGEWIESENER] = projekt
                            .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_HISTORY_MITARBEITER] = history
                            .getFlrpersonal().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_HISTORY_BELEGDATUM] = Helper
                            .formatDatum(history.getT_belegdatum(), locDruck);
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_HISTORY_TEXT] = history.getX_text();
                    i++;
                }

            }

        } catch (Throwable t) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FLR, new Exception(t));
        } finally {
            try {
                session.close();
            } catch (HibernateException he) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
            }
        }
        // die Parameter dem Report uebergeben
        HashMap<String, Object> parameter = new HashMap<String, Object>();

        parameter.put(LPReport.P_SORTIERUNG, buildSortierungProjektAlle(reportJournalKriterienDtoI, theClientDto));

        parameter.put("P_BEREICH", getProjektServiceFac().bereichFindByPrimaryKey(bereichIId).getCBez());
        parameter.put("P_BELEGDATUM_STATT_ZIELTERMIN", new Boolean(belegdatumStattZieltermin));

        parameter.put(LPReport.P_FILTER, buildFilterProjektAlle(reportJournalKriterienDtoI, theClientDto));

        if (reportJournalKriterienDtoI.personalIId != null) {
            parameter.put(LPReport.P_SORTIERENACHPERSONAL, new Boolean(true));
        } else {
            parameter.put(LPReport.P_SORTIERENACHPERSONAL, new Boolean(false));
        }

        parameter.put("P_TITLE",
                getTextRespectUISpr("proj.print.alle", theClientDto.getMandant(), theClientDto.getLocUi()));

        initJRDS(parameter, ProjektReportFac.REPORT_MODUL, cAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        oPrint = getReportPrint();

        return oPrint;
    }

    public JasperPrintLP printProjektErledigt(ReportJournalKriterienDto reportJournalKriterienDtoI, Date dStichtag,
            Integer bereichIId, boolean interneErledigungBeruecksichtigen, TheClientDto theClientDto)
            throws EJBExceptionLP, RemoteException {
        JasperPrintLP oPrint = null;

        cAktuellerReport = ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT;
        Locale locDruck;
        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = null;
        // vom Stichtag die Uhrzeit abschneiden
        dStichtag = Helper.cutDate(dStichtag);
        try {
            session = factory.openSession();
            // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
            // Haupttabelle anlegen,
            // nach denen ich filtern und sortieren kann
            Criteria crit = session.createCriteria(FLRProjekt.class);
            // Einschraenkung auf den aktuellen Mandanten
            crit.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_MANDANT_C_NR, theClientDto.getMandant()));
            crit.add(Restrictions.not(Restrictions.eq(ProjektFac.FLR_PROJEKT_STATUS_C_NR,
                    ProjektServiceFac.PROJEKT_STATUS_STORNIERT)));

            crit.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_BEREICH_I_ID, bereichIId));
            // Einschraenkung nach Status Offen, Erledigt

            if (interneErledigungBeruecksichtigen == false) {
                Collection<String> cStati = new LinkedList<String>();
                cStati.add(ProjektServiceFac.PROJEKT_STATUS_ERLEDIGT);
                crit.add(Restrictions.in(ProjektFac.FLR_PROJEKT_STATUS_C_NR, cStati));
            }

            if (reportJournalKriterienDtoI.dVon != null) {

                if (interneErledigungBeruecksichtigen == true) {

                    crit.add(Restrictions.or(
                            Restrictions.and(Restrictions.isNotNull(ProjektFac.FLR_PROJEKT_T_INTERNERLEDIGT),
                                    Restrictions.ge(ProjektFac.FLR_PROJEKT_T_INTERNERLEDIGT,
                                            reportJournalKriterienDtoI.dVon)),
                            Restrictions.ge(ProjektFac.FLR_PROJEKT_T_ERLEDIGUNGSDATUM,
                                    reportJournalKriterienDtoI.dVon)));

                } else {
                    crit.add(Restrictions.ge(ProjektFac.FLR_PROJEKT_T_ERLEDIGUNGSDATUM,
                            reportJournalKriterienDtoI.dVon));
                }
            }

            if (reportJournalKriterienDtoI.dBis != null) {

                Date d = Helper.addiereTageZuDatum(reportJournalKriterienDtoI.dBis, 1);

                if (interneErledigungBeruecksichtigen == true) {
                    crit.add(Restrictions.or(
                            Restrictions.and(Restrictions.isNotNull(ProjektFac.FLR_PROJEKT_T_INTERNERLEDIGT),
                                    Restrictions.lt(ProjektFac.FLR_PROJEKT_T_INTERNERLEDIGT, d)),
                            Restrictions.lt(ProjektFac.FLR_PROJEKT_T_ERLEDIGUNGSDATUM, d)));
                } else {
                    crit.add(Restrictions.lt(ProjektFac.FLR_PROJEKT_T_ERLEDIGUNGSDATUM, d));
                }

            }
            // Einschraenkung nach einer bestimmten Perosn
            if (reportJournalKriterienDtoI.personalIId != null) {
                crit.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_PERSONAL_I_ID_ERLEDIGER,
                        reportJournalKriterienDtoI.personalIId));
            }
            // Sortierung nach Partner,
            if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
                crit.createCriteria(ProjektFac.FLR_PROJEKT_FLRPARTNER)
                        .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
                crit.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_T_ERLEDIGUNGSDATUM));
                crit.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_C_NR));

            }

            crit.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_KATEGORIE_C_NR));
            List<?> list = crit.list();
            ArrayList<Object[]> alDaten = new ArrayList<Object[]>();
            Iterator<?> it = list.iterator();

            while (it.hasNext()) {
                FLRProjekt projekt = (FLRProjekt) it.next();
                Object[] oZeile = new Object[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ANZAHL_SPALTEN];

                if (interneErledigungBeruecksichtigen == true && projekt.getT_internerledigt() != null
                        && projekt.getT_erledigungsdatum() != null) {

                    // Wenn intern-Erledigt und normal erledigt, dann gilt jenes
                    // Datum, das frueher war

                    if (projekt.getT_internerledigt().getTime() <= projekt.getT_erledigungsdatum().getTime()) {
                        if (reportJournalKriterienDtoI.dVon != null && projekt.getT_internerledigt()
                                .getTime() < reportJournalKriterienDtoI.dVon.getTime()) {
                            continue;
                        }

                        if (reportJournalKriterienDtoI.dBis != null && projekt.getT_internerledigt()
                                .getTime() > reportJournalKriterienDtoI.dBis.getTime()) {
                            continue;
                        }

                    }

                }

                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PROJEKTTITEL] = projekt.getC_titel();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PROJEKTKATEGORIE] = projekt
                        .getKategorie_c_nr();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PROJEKTCNR] = projekt.getC_nr();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_TYP] = projekt.getTyp_c_nr();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_KUNDECNAME1] = projekt.getFlrpartner()
                        .getC_name1nachnamefirmazeile1();

                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_WAHRSCHEINLICHKEIT] = projekt
                        .getI_wahrscheinlichkeit();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_GEPLANTERUMSATZ] = projekt
                        .getN_umsatzgeplant();
                if (projekt.getPersonal_i_id_internerledigt() != null) {
                    PersonalDto personalDto = getPersonalFac()
                            .personalFindByPrimaryKey(projekt.getPersonal_i_id_internerledigt(), theClientDto);
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_INTERNERLEDIGT_PERSON] = personalDto
                            .getPartnerDto().formatAnrede();
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_INTERNERLEDIGT_ZEIT] = projekt
                            .getT_internerledigt();
                }
                locDruck = Helper.string2Locale(projekt.getFlrpartner().getLocale_c_nr_kommunikation());
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZIELTERMIN] = Helper
                        .formatDatum(projekt.getT_zielwunschdatum(), locDruck);
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_BELEGDATUM] = Helper
                        .formatDatum(projekt.getT_anlegen(), locDruck);
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ERLEDIGUNGSDATUM] = Helper
                        .formatDatumZeit(projekt.getT_erledigungsdatum(), locDruck);
                if (projekt.getB_verrechenbar().equals(new Integer(1).shortValue())) {
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_B_VERRECHENBAR] = "verrechenbar";
                } else {
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_B_VERRECHENBAR] = null;
                }
                if (projekt.getB_freigegeben().equals(new Integer(1).shortValue())) {
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_FREIGEGEBEN] = "freigegeben";
                } else {
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_FREIGEGEBEN] = null;
                }

                Calendar calendar = new GregorianCalendar();
                calendar.setTime(new Date(projekt.getT_zielwunschdatum().getTime()));
                int KW = calendar.get(Calendar.WEEK_OF_YEAR); // Kalendarwochen

                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZIELWOCHE] = "" + KW;

                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PRIO] = projekt.getI_prio();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_TEXT] = Helper
                        .formatStyledTextForJasper(projekt.getX_freetext());
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ERZEUGER] = projekt.getFlrpersonalErzeuger()
                        .getFlrpartner().getC_name1nachnamefirmazeile1();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZUGEWIESENER] = projekt
                        .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                if (projekt.getPersonal_i_id_erlediger() != null) {
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ERLEDIGER] = projekt
                            .getFlrpersonalErlediger().getFlrpartner().getC_name1nachnamefirmazeile1();
                }
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZEIT] = projekt.getT_zeit();
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_DAUER] = projekt.getD_dauer();

                // Gesamte Dauer eines Projektes
                Double ddArbeitszeitist = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                        LocaleFac.BELEGART_PROJEKT, projekt.getI_id(), null, null, null, null, theClientDto);
                oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_GESAMTDAUER] = ddArbeitszeitist;

                Criteria crit1 = session.createCriteria(FLRHistory.class);
                crit1.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projekt.getI_id()));
                List<?> resultList = crit1.list();
                Iterator<?> itHistory = resultList.iterator();
                alDaten.add(oZeile);
                while (itHistory.hasNext()) {
                    FLRHistory history = (FLRHistory) itHistory.next();

                    oZeile = new Object[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ANZAHL_SPALTEN];

                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PROJEKTCNR] = projekt.getC_nr();
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZUGEWIESENER] = projekt
                            .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_HISTORY_MITARBEITER] = history
                            .getFlrpersonal().getFlrpartner().getC_name1nachnamefirmazeile1();
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_HISTORY_BELEGDATUM] = Helper
                            .formatDatum(history.getT_belegdatum(), locDruck);
                    oZeile[ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_HISTORY_TEXT] = history.getX_text();
                    alDaten.add(oZeile);

                }
            }
            Object[][] returnArray = new Object[alDaten
                    .size()][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ANZAHL_SPALTEN];
            data = (Object[][]) alDaten.toArray(returnArray);

        } catch (RemoteException e) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_IN_ZEITDATEN, new Exception(e));
        } finally {
            try {
                session.close();
            } catch (HibernateException he) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
            }
        }

        // die Parameter dem Report uebergeben
        HashMap<String, Object> parameter = new HashMap<String, Object>();
        parameter.put(LPReport.P_FILTER, buildFilterProjektErledigt(reportJournalKriterienDtoI, theClientDto));
        parameter.put("P_BEREICH", getProjektServiceFac().bereichFindByPrimaryKey(bereichIId).getCBez());
        parameter.put("P_INTERNEERLEDIGUNGBERUECKSICHTIGEN", interneErledigungBeruecksichtigen);
        parameter.put("P_TITLE",
                getTextRespectUISpr("proj.print.erledigt", theClientDto.getMandant(), theClientDto.getLocUi()));
        initJRDS(parameter, ProjektReportFac.REPORT_MODUL, cAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);
        oPrint = getReportPrint();
        return oPrint;
    }

    @TransactionAttribute(TransactionAttributeType.NEVER)
    public JasperPrintLP printProjektOffene(ReportJournalKriterienDto reportJournalKriterienDtoI, Date dStichtag,
            Integer bereichIId, TheClientDto theClientDto) throws EJBExceptionLP, RemoteException {

        JasperPrintLP oPrint = null;
        int iAnzahlZeilen = 0;
        cAktuellerReport = ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE;
        Locale locDruck;

        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = null;
        // vom Stichtag die Uhrzeit abschneiden
        dStichtag = Helper.cutDate(dStichtag);

        try {
            session = factory.openSession();
            // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
            // Haupttabelle anlegen,
            // nach denen ich filtern und sortieren kann
            Criteria critProjekt = session.createCriteria(FLRProjekt.class);

            // Einschraenkung auf den aktuellen Mandanten
            critProjekt.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_MANDANT_C_NR, theClientDto.getMandant()));
            critProjekt.add(Restrictions.not(Restrictions.eq(ProjektFac.FLR_PROJEKT_STATUS_C_NR,
                    ProjektServiceFac.PROJEKT_STATUS_STORNIERT)));
            critProjekt.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_BEREICH_I_ID, bereichIId));
            // Einschraenkung nach Status Offen, Erledigt
            Collection<String> cStati = new LinkedList<String>();
            cStati.add(ProjektServiceFac.PROJEKT_STATUS_OFFEN);
            cStati.add(ProjektServiceFac.PROJEKT_STATUS_ANGELEGT);
            critProjekt.add(Restrictions.in(ProjektFac.FLR_PROJEKT_STATUS_C_NR, cStati));

            // Das Belegdatum muss vor dem Stichtag liegen
            critProjekt.add(Restrictions.le(ProjektFac.FLR_PROJEKT_T_ANLEGEN, dStichtag));

            // Einschraenkung nach einer bestimmten Perosn
            if (reportJournalKriterienDtoI.personalIId != null) {
                critProjekt.add(Restrictions.eq(ProjektFac.FLR_PROJEKT_PERSONAL_I_ID_ZUGEWIESENER,
                        reportJournalKriterienDtoI.personalIId));
            }

            // Sortierung nach Personal ist immer die erste Sortierung
            if (reportJournalKriterienDtoI.bSortiereNachPersonal) {
                critProjekt.createCriteria(ProjektFac.FLR_PROJEKT_FLRPERSONALZUGEWIESENER)
                        .createCriteria(KundeFac.FLR_PARTNER)
                        .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
            }

            // Sortierung nach Partner,
            if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
                critProjekt.createCriteria(ProjektFac.FLR_PROJEKT_FLRPARTNER)
                        .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
                critProjekt.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_TYP_C_NR));
                critProjekt.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_I_PRIO));
                critProjekt.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_KATEGORIE_C_NR));
            }
            // es wird in jedem Fall nach der Belegnummer sortiert
            critProjekt.addOrder(Order.asc(ProjektFac.FLR_PROJEKT_C_NR));

            List<?> list = critProjekt.list();
            Iterator<?> it = list.iterator();
            while (it.hasNext()) {
                FLRProjekt projekt = (FLRProjekt) it.next();
                session = factory.openSession();
                Criteria critHistory = session.createCriteria(FLRHistory.class);
                critHistory.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projekt.getI_id()));
                List<?> historyList = critHistory.list();
                if (historyList.size() != 0) {
                    iAnzahlZeilen = iAnzahlZeilen + historyList.size();
                }
                iAnzahlZeilen++;
            }

            data = new Object[iAnzahlZeilen][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANZAHL_SPALTEN];
            int i = 0;
            it = list.iterator();
            while (it.hasNext()) {
                FLRProjekt projekt = (FLRProjekt) it.next();
                if (projekt.getI_id() == 7689) {
                    System.out.println("x");
                }
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTTITEL] = projekt.getC_titel();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTKATEGORIE] = projekt
                        .getKategorie_c_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTCNR] = projekt.getC_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_STATUS] = projekt.getStatus_c_nr();
                if (projekt.getPersonal_i_id_internerledigt() != null) {
                    PersonalDto personalDto = getPersonalFac()
                            .personalFindByPrimaryKey(projekt.getPersonal_i_id_internerledigt(), theClientDto);
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_INTERNERLEDIGT_PERSON] = personalDto
                            .getPartnerDto().formatAnrede();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_INTERNERLEDIGT_ZEIT] = projekt
                            .getT_internerledigt();
                }
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_WAHRSCHEINLICHKEIT] = projekt
                        .getI_wahrscheinlichkeit();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_GEPLANTERUMSATZ] = projekt
                        .getN_umsatzgeplant();
                // Gesamte Dauer eines Projektes
                Double ddArbeitszeitist = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                        LocaleFac.BELEGART_PROJEKT, projekt.getI_id(), null, null, null, null, theClientDto);
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_GESAMTDAUER] = ddArbeitszeitist;
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_KUNDECNAME1] = projekt.getFlrpartner()
                        .getC_name1nachnamefirmazeile1();
                locDruck = Helper.string2Locale(projekt.getFlrpartner().getLocale_c_nr_kommunikation());
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZIELTERMIN] = Helper
                        .formatDatum(projekt.getT_zielwunschdatum(), locDruck);
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_BELEGDATUM] = Helper
                        .formatDatum(projekt.getT_anlegen(), locDruck);

                Calendar calendar = new GregorianCalendar();
                calendar.setTime(new Date(projekt.getT_zielwunschdatum().getTime()));
                int KW = calendar.get(Calendar.WEEK_OF_YEAR); // Kalendarwochen

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZIELWOCHE] = "" + KW;

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PRIO] = projekt.getI_prio();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_TEXT] = projekt.getX_freetext();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ERZEUGER] = projekt.getFlrpersonalErzeuger()
                        .getFlrpartner().getC_name1nachnamefirmazeile1();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZUGEWIESENER] = projekt
                        .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZEIT] = projekt.getT_zeit();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_DAUER] = projekt.getD_dauer();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_B_VERRECHENBAR] = Helper
                        .short2Boolean(projekt.getB_verrechenbar());
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_B_FREIGEGEBEN] = Helper
                        .short2Boolean(projekt.getB_freigegeben());
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_DATEINAME] = projekt.getC_dateiname();
                // try {
                if (projekt.getFlransprechpartner() != null
                        && (projekt.getFlransprechpartner().getI_id() != null)) {
                    if (projekt.getFlransprechpartner().getFlrpartneransprechpartner() != null
                            && projekt.getFlransprechpartner().getFlrpartneransprechpartner().getI_id() != null) {
                        data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANSPRECHPARTNERCNAME1] = projekt
                                .getFlransprechpartner().getFlrpartneransprechpartner()
                                .getC_name1nachnamefirmazeile1();
                        data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANSPRECHPARTNER] = (projekt
                                .getFlransprechpartner().getFlrpartneransprechpartner()
                                .getC_name1nachnamefirmazeile1()
                                + " "
                                + (projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                        .getC_name2vornamefirmazeile2() == null
                                                ? ""
                                                : projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                                        .getC_name2vornamefirmazeile2())
                                + " "
                                + (projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                        .getC_name3vorname2abteilung() == null ? ""
                                                : projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                                        .getC_name3vorname2abteilung())).trim();
                    }
                }
                // } catch (Exception e) {
                // e.printStackTrace();
                // }
                //
                Criteria crit1 = session.createCriteria(FLRHistory.class);
                crit1.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projekt.getI_id()));
                List<?> resultList = crit1.list();
                Iterator<?> itHistory = resultList.iterator();
                i++;
                while (itHistory.hasNext()) {
                    FLRHistory history = (FLRHistory) itHistory.next();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTCNR] = projekt.getC_nr();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZUGEWIESENER] = projekt
                            .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_MITARBEITER] = history
                            .getFlrpersonal().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_BELEGDATUM] = Helper
                            .formatDatum(history.getT_belegdatum(), locDruck);
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_TEXT] = history.getX_text();
                    i++;
                }
            }

        } catch (Throwable t) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FLR, new Exception(t));
        } finally {
            try {
                session.close();
            } catch (HibernateException he) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
            }
        }
        // die Parameter dem Report uebergeben
        HashMap<String, Object> parameter = new HashMap<String, Object>();

        parameter.put(LPReport.P_SORTIERUNG,
                buildSortierungProjektOffene(reportJournalKriterienDtoI, theClientDto));
        parameter.put("P_BEREICH", getProjektServiceFac().bereichFindByPrimaryKey(bereichIId).getCBez());
        parameter.put(LPReport.P_FILTER, buildFilterProjektOffene(reportJournalKriterienDtoI, theClientDto));

        if (reportJournalKriterienDtoI.personalIId != null) {
            parameter.put(LPReport.P_SORTIERENACHPERSONAL, new Boolean(true));
        } else {
            parameter.put(LPReport.P_SORTIERENACHPERSONAL, new Boolean(false));
        }

        parameter.put("P_TITLE",
                getTextRespectUISpr("proj.print.offene", theClientDto.getMandant(), theClientDto.getLocUi()));

        initJRDS(parameter, ProjektReportFac.REPORT_MODUL, cAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        oPrint = getReportPrint();

        return oPrint;
    }

    private Object[] projektFuerAktivitaetsuebersichtBefuellen(Integer projektIId, TheClientDto theClientDto) {

        Object[] oZeile = new Object[REPORT_AKTIVITAETSUEBERSICHT_ANZAHL_SPALTEN];

        ProjektDto projektDto = null;
        try {
            projektDto = getProjektFac().projektFindByPrimaryKey(projektIId);

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_VON] = projektDto.getTAnlegen();
            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BIS] = projektDto.getTZielwunschdatum();

            BereichDto bDto = getProjektServiceFac().bereichFindByPrimaryKey(projektDto.getBereichIId());
            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_BEREICH] = bDto.getCBez();

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_PERSONAL_ERZEUGER] = getPersonalFac()
                    .personalFindByPrimaryKey(projektDto.getPersonalIIdErzeuger(), theClientDto).getPartnerDto()
                    .formatFixName1Name2();
            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_PERSONAL_MITARBEITER] = getPersonalFac()
                    .personalFindByPrimaryKey(projektDto.getPersonalIIdZugewiesener(), theClientDto).getPartnerDto()
                    .formatFixName1Name2();

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGART] = LocaleFac.BELEGART_PROJEKT;

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGNUMMER] = projektDto.getCNr();

            if (projektDto.getPersonalIIdInternerledigt() != null) {
                PersonalDto personalDto = getPersonalFac()
                        .personalFindByPrimaryKey(projektDto.getPersonalIIdInternerledigt(), theClientDto);
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_INTERNERLEDIGT_PERSON] = personalDto
                        .getPartnerDto().formatAnrede();
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_INTERNERLEDIGT_ZEIT] = projektDto
                        .getTInternerledigt();
            }

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGTEXT] = projektDto.getCTitel() + " "
                    + projektDto.getXFreetext();

            PartnerDto pDto = getPartnerFac().partnerFindByPrimaryKey(projektDto.getPartnerIId(), theClientDto);

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER] = pDto.formatTitelAnrede();
            if (pDto.getLandplzortDto() != null) {
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PLZ] = pDto.getLandplzortDto().getCPlz();
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_LKZ] = pDto.getLandplzortDto().getLandDto()
                        .getCLkz();
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_ORT] = pDto.getLandplzortDto().getOrtDto()
                        .getCName();
            }

            SessionFactory factory = FLRSessionFactory.getFactory();
            Session session = factory.openSession();
            Criteria crit = session.createCriteria(FLRHistory.class);

            crit.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                    .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projektDto.getIId()));
            crit.addOrder(Order.desc(ProjektFac.FLR_HISTORY_T_BELEGDATUM));
            List<?> resultListHistory = crit.list();

            Iterator<?> it = resultListHistory.iterator();

            ArrayList<Object[]> alSub = new ArrayList<Object[]>();
            while (it.hasNext()) {
                FLRHistory history = (FLRHistory) it.next();

                Object[] oSub = new Object[5];

                oSub[0] = history.getT_belegdatum();
                oSub[1] = history.getFlrpersonal().getFlrpartner().getC_name1nachnamefirmazeile1();
                oSub[2] = history.getX_text();
                if (history.getFlrhistoryart() != null) {
                    oSub[3] = history.getFlrhistoryart().getC_bez();
                }
                oSub[4] = history.getC_titel();
                alSub.add(oSub);
            }

            String[] fieldnames = new String[] { "F_DATUM", "F_PERSONAL", "F_TEXT", "F_ART", "F_TITEL" };

            Object[][] dataSub = new Object[alSub.size()][fieldnames.length];
            dataSub = (Object[][]) alSub.toArray(dataSub);

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEG_SUBREPORT] = new LPDatenSubreport(dataSub,
                    fieldnames);

            session.close();
        } catch (RemoteException ex3) {
            throwEJBExceptionLPRespectOld(ex3);
        }
        return oZeile;

    }

    @TransactionAttribute(TransactionAttributeType.NEVER)
    public JasperPrintLP printAktivitaetsuebersicht(java.sql.Timestamp tVon, java.sql.Timestamp tBis,
            boolean bGesamtinfo, TheClientDto theClientDto) {

        cAktuellerReport = ProjektReportFac.REPORT_PROJEKT_JOURNAL_AKTIVITAETSUEBERSICHT;

        HashMap<String, Object> parameter = new HashMap<String, Object>();

        ArrayList alDaten = new ArrayList();

        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = factory.openSession();

        HashMap hmProjekte = new HashMap();

        String sQuery = "select distinct  zeitdaten.c_belegartnr,zeitdaten.i_belegartid, zeitdaten.personal_i_id from FLRZeitdaten zeitdaten WHERE  zeitdaten.c_belegartnr is not null AND zeitdaten.t_zeit>='"
                + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime())) + "' AND zeitdaten.t_zeit<='"
                + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime()))
                + "' AND zeitdaten.flrpersonal.mandant_c_nr='" + theClientDto.getMandant() + "'";

        org.hibernate.Query inventurliste = session.createQuery(sQuery);

        List<?> resultList = inventurliste.list();

        Iterator<?> resultListIterator = resultList.iterator();

        int row = 0;
        while (resultListIterator.hasNext()) {

            Object[] o = (Object[]) resultListIterator.next();

            Integer personalIId = (Integer) o[2];

            try {
                PersonalDto personalDto = getPersonalFac().personalFindByPrimaryKey(personalIId, theClientDto);
                Object[] oZeile = new Object[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_ANZAHL_SPALTEN];

                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGART] = o[0];
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PERSONAL] = personalDto.getPartnerDto()
                        .formatFixName1Name2();

                String sBezeichnung = "";
                PartnerDto partnerDto = null;
                if (((String) o[0]).equals(LocaleFac.BELEGART_AUFTRAG)) {
                    AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey((Integer) o[1]);
                    oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGNUMMER] = auftragDto.getCNr();

                    sBezeichnung = auftragDto.getCBezProjektbezeichnung();
                    partnerDto = getKundeFac()
                            .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto)
                            .getPartnerDto();
                } else if (((String) o[0]).equals(LocaleFac.BELEGART_LOS)) {
                    com.lp.server.fertigung.service.LosDto losDto = getFertigungFac()
                            .losFindByPrimaryKey((Integer) o[1]);
                    oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGNUMMER] = losDto.getCNr();

                    sBezeichnung = losDto.getCProjekt();

                    if (losDto.getAuftragIId() != null) {

                        AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(losDto.getAuftragIId());

                        partnerDto = getKundeFac()
                                .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto)
                                .getPartnerDto();
                    }

                } else if (((String) o[0]).equals(LocaleFac.BELEGART_PROJEKT)) {

                    if (!hmProjekte.containsKey((Integer) o[1])) {
                        hmProjekte.put((Integer) o[1], "");
                    }

                    oZeile = projektFuerAktivitaetsuebersichtBefuellen((Integer) o[1], theClientDto);

                } else if (((String) o[0]).equals(LocaleFac.BELEGART_ANGEBOT)) {
                    AngebotDto angebotDto = getAngebotFac().angebotFindByPrimaryKey((Integer) o[1], theClientDto);
                    oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGNUMMER] = angebotDto.getCNr();

                    sBezeichnung = angebotDto.getCBez();

                    partnerDto = getKundeFac()
                            .kundeFindByPrimaryKey(angebotDto.getKundeIIdAngebotsadresse(), theClientDto)
                            .getPartnerDto();

                    // oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_VON]
                    // = projektDto.getTAnlegen();
                    // oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BIS]
                    // = projektDto.getTZielwunschdatum();

                }

                AuftragzeitenDto[] dtos = getZeiterfassungFac().getAllZeitenEinesBeleges((String) o[0],
                        (Integer) o[1], null, personalIId, tVon, tBis, false, false, theClientDto);

                if (dtos.length > 0 && (((String) o[0]).equals(LocaleFac.BELEGART_PROJEKT) != true)) {
                    oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_VON] = dtos[0].getTsBeginn();
                    oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BIS] = dtos[dtos.length - 1].getTsEnde();
                }

                double zeiten = 0;
                for (int i = 0; i < dtos.length; i++) {
                    if (dtos[i] != null && dtos[i].getDdDauer() != null) {
                        zeiten = zeiten + dtos[i].getDdDauer().doubleValue();
                    }
                }
                Double dDauer = new Double(zeiten);

                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_DAUER] = dDauer;

                if (!((String) o[0]).equals(LocaleFac.BELEGART_PROJEKT)) {

                    if (partnerDto != null) {
                        oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER] = partnerDto
                                .formatTitelAnrede();

                        if (partnerDto.getLandplzortDto() != null) {
                            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_LKZ] = partnerDto
                                    .getLandplzortDto().getLandDto().getCLkz();
                            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PLZ] = partnerDto
                                    .getLandplzortDto().getCPlz();
                            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_ORT] = partnerDto
                                    .getLandplzortDto().getOrtDto().getCName();
                        }

                    } else {
                        oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER] = "";
                    }
                    oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGTEXT] = sBezeichnung;

                }
                row++;

                alDaten.add(oZeile);
            } catch (RemoteException ex1) {
                // Zeitdaten falsch
            }
        }
        session.close();

        // Telefonzeiten

        session = factory.openSession();
        org.hibernate.Criteria crit = session.createCriteria(FLRTelefonzeiten.class)
                .createAlias(ZeiterfassungFac.FLR_TELEFONZEITEN_FLRPERSONAL, "p")
                .add(Restrictions.eq("p.mandant_c_nr", theClientDto.getMandant()));

        crit.add(Restrictions.ge(ZeiterfassungFac.FLR_TELEFONZEITEN_T_VON, tVon));
        crit.add(Restrictions.lt(ZeiterfassungFac.FLR_TELEFONZEITEN_T_VON, tBis));

        List<?> list = crit.list();
        Iterator<?> iterator = list.iterator();

        while (iterator.hasNext()) {
            FLRTelefonzeiten flrTelefonzeiten = (FLRTelefonzeiten) iterator.next();

            Object[] oZeile = new Object[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_ANZAHL_SPALTEN];

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGART] = "Telefon";
            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGTEXT] = flrTelefonzeiten.getX_kommentarext();

            if (flrTelefonzeiten.getT_bis() != null) {
                java.sql.Time tTemp = new java.sql.Time(
                        flrTelefonzeiten.getT_bis().getTime() - flrTelefonzeiten.getT_von().getTime() - 3600000);
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_DAUER] = Helper.time2Double(tTemp);
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BIS] = new Timestamp(
                        flrTelefonzeiten.getT_bis().getTime());
            }

            oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_VON] = new Timestamp(
                    flrTelefonzeiten.getT_von().getTime());

            if (flrTelefonzeiten.getFlrpartner() != null) {

                com.lp.server.partner.service.PartnerDto partnerDto = getPartnerFac()
                        .partnerFindByPrimaryKey(flrTelefonzeiten.getFlrpartner().getI_id(), theClientDto);
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER] = partnerDto
                        .formatFixTitelName1Name2();

            } else {
                oZeile[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER] = "";
            }

        }

        // Projekte, welche wiese Woche angelegt wurde, bzw. ein neues Detail
        // hinzugefuegt wurde

        Criteria critProjekt = session.createCriteria(FLRHistory.class);

        critProjekt.add(Restrictions.between(ProjektFac.FLR_HISTORY_T_BELEGDATUM, tVon, tBis));

        critProjekt.createAlias("flrprojekt", "p")
                .add(Restrictions.eq("p.mandant_c_nr", theClientDto.getMandant()));

        List<?> resultListVorher = critProjekt.list();

        Iterator<?> itVorher = resultListVorher.iterator();

        while (itVorher.hasNext()) {
            FLRHistory history = (FLRHistory) itVorher.next();

            if (!hmProjekte.containsKey(history.getProjekt_i_id())) {
                if (!hmProjekte.containsKey(history.getProjekt_i_id())) {
                    hmProjekte.put(history.getProjekt_i_id(), "");
                }
                Object[] z = projektFuerAktivitaetsuebersichtBefuellen(history.getProjekt_i_id(), theClientDto);
                alDaten.add(z);
            }

        }

        session.close();

        session = factory.openSession();

        critProjekt = session.createCriteria(FLRProjekt.class);

        critProjekt.add(Restrictions.between(ProjektFac.FLR_PROJEKT_T_ANLEGEN, tVon, tBis));
        critProjekt.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

        resultListVorher = critProjekt.list();

        itVorher = resultListVorher.iterator();

        while (itVorher.hasNext()) {
            FLRProjekt projekt = (FLRProjekt) itVorher.next();

            if (!hmProjekte.containsKey(projekt.getI_id())) {

                Object[] z = projektFuerAktivitaetsuebersichtBefuellen(projekt.getI_id(), theClientDto);
                alDaten.add(z);

            }

        }

        session.close();

        // Nach Artikel sortieren
        for (int i = alDaten.size() - 1; i > 0; --i) {
            for (int j = 0; j < i; ++j) {
                Object[] a = (Object[]) alDaten.get(j);
                Object[] b = (Object[]) alDaten.get(j + 1);
                if (((String) a[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER])
                        .compareTo(((String) b[ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER])) > 0) {
                    Object[] h = a;
                    alDaten.set(j, b);
                    alDaten.set(j + 1, h);
                }
            }
        }

        Object[][] returnArray = new Object[alDaten
                .size()][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_ANZAHL_SPALTEN];
        data = (Object[][]) alDaten.toArray(returnArray);

        parameter.put("P_VON", tVon);
        parameter.put("P_BIS", tBis);
        parameter.put("P_GESAMTINFO", new Boolean(bGesamtinfo));

        initJRDS(parameter, ProjektReportFac.REPORT_MODUL, cAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        return getReportPrint();

    }

    @TransactionAttribute(TransactionAttributeType.NEVER)
    public JasperPrintLP printProjektOffeneAuswahlListe(TheClientDto theClientDto)
            throws EJBExceptionLP, RemoteException {

        JasperPrintLP oPrint = null;
        int iAnzahlZeilen = 0;
        cAktuellerReport = ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE;
        Locale locDruck;

        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = null;

        try {
            session = factory.openSession();
            // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
            // Haupttabelle anlegen,
            // nach denen ich filtern und sortieren kann

            Query query = session.createQuery(ProjektHandler.lastQuery);
            List<?> list = query.list();
            Iterator<?> it = list.iterator();
            while (it.hasNext()) {
                FLRProjekt projekt = (FLRProjekt) it.next();
                session = factory.openSession();
                Criteria crit1 = session.createCriteria(FLRHistory.class);
                crit1.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projekt.getI_id()));
                List<?> resultList = crit1.list();
                if (resultList.size() != 0) {
                    iAnzahlZeilen = iAnzahlZeilen + resultList.size();
                }
                iAnzahlZeilen++;
            }
            data = new Object[iAnzahlZeilen][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANZAHL_SPALTEN];
            int i = 0;
            it = list.iterator();
            while (it.hasNext()) {
                FLRProjekt projekt = (FLRProjekt) it.next();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTTITEL] = projekt.getC_titel();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTKATEGORIE] = projekt
                        .getKategorie_c_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTCNR] = projekt.getC_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_STATUS] = projekt.getStatus_c_nr();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_KUNDECNAME1] = projekt.getFlrpartner()
                        .getC_name1nachnamefirmazeile1();
                if (projekt.getFlrpartner().getFlrlandplzort() != null) {
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_LKZ] = projekt.getFlrpartner()
                            .getFlrlandplzort().getFlrland().getC_lkz();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PLZ] = projekt.getFlrpartner()
                            .getFlrlandplzort().getC_plz();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ORT] = projekt.getFlrpartner()
                            .getFlrlandplzort().getFlrort().getC_name();
                }

                locDruck = Helper.string2Locale(projekt.getFlrpartner().getLocale_c_nr_kommunikation());
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZIELTERMIN] = Helper
                        .formatDatum(projekt.getT_zielwunschdatum(), locDruck);
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_BELEGDATUM] = Helper
                        .formatDatum(projekt.getT_anlegen(), locDruck);
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_TYP] = projekt.getTyp_c_nr();

                Calendar calendar = new GregorianCalendar();
                calendar.setTime(new Date(projekt.getT_zielwunschdatum().getTime()));
                int KW = calendar.get(Calendar.WEEK_OF_YEAR); // Kalendarwochen

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZIELWOCHE] = "" + KW;

                // Gesamte Dauer eines Projektes
                Double ddArbeitszeitist = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                        LocaleFac.BELEGART_PROJEKT, projekt.getI_id(), null, null, null, null, theClientDto);
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_GESAMTDAUER] = ddArbeitszeitist;

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PRIO] = projekt.getI_prio();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_TEXT] = projekt.getX_freetext();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ERZEUGER] = projekt.getFlrpersonalErzeuger()
                        .getFlrpartner().getC_name1nachnamefirmazeile1();

                if (projekt.getPersonal_i_id_internerledigt() != null) {
                    PersonalDto personalDto = getPersonalFac()
                            .personalFindByPrimaryKey(projekt.getPersonal_i_id_internerledigt(), theClientDto);
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_INTERNERLEDIGT_PERSON] = personalDto
                            .getPartnerDto().formatAnrede();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_INTERNERLEDIGT_ZEIT] = projekt
                            .getT_internerledigt();
                }

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZUGEWIESENER] = projekt
                        .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZEIT] = projekt.getT_zeit();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_WAHRSCHEINLICHKEIT] = projekt
                        .getI_wahrscheinlichkeit();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_GEPLANTERUMSATZ] = projekt
                        .getN_umsatzgeplant();

                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_DAUER] = projekt.getD_dauer();
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_B_VERRECHENBAR] = Helper
                        .short2Boolean(projekt.getB_verrechenbar());
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_B_FREIGEGEBEN] = Helper
                        .short2Boolean(projekt.getB_freigegeben());
                data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_DATEINAME] = projekt.getC_dateiname();
                // try {
                if (projekt.getFlransprechpartner() != null
                        && (projekt.getFlransprechpartner().getI_id() != null)) {
                    if (projekt.getFlransprechpartner().getFlrpartneransprechpartner() != null
                            && projekt.getFlransprechpartner().getFlrpartneransprechpartner().getI_id() != null) {
                        data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANSPRECHPARTNERCNAME1] = projekt
                                .getFlransprechpartner().getFlrpartneransprechpartner()
                                .getC_name1nachnamefirmazeile1();
                        data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANSPRECHPARTNER] = (projekt
                                .getFlransprechpartner().getFlrpartneransprechpartner()
                                .getC_name1nachnamefirmazeile1()
                                + " "
                                + (projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                        .getC_name2vornamefirmazeile2() == null
                                                ? ""
                                                : projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                                        .getC_name2vornamefirmazeile2())
                                + " "
                                + (projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                        .getC_name3vorname2abteilung() == null ? ""
                                                : projekt.getFlransprechpartner().getFlrpartneransprechpartner()
                                                        .getC_name3vorname2abteilung())).trim();
                    }
                }
                //
                Criteria critHistory = session.createCriteria(FLRHistory.class);
                critHistory.createCriteria(ProjektFac.FLR_HISTORY_FLRPROJEKT)
                        .add(Restrictions.eq(ProjektFac.FLR_PROJEKT_I_ID, projekt.getI_id()));
                List<?> rlHistory = critHistory.list();
                Iterator<?> itHistory = rlHistory.iterator();
                i++;
                while (itHistory.hasNext()) {
                    FLRHistory history = (FLRHistory) itHistory.next();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTCNR] = projekt.getC_nr();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZUGEWIESENER] = projekt
                            .getFlrpersonalZugewiesener().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_MITARBEITER] = history
                            .getFlrpersonal().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_BELEGDATUM] = Helper
                            .formatDatum(history.getT_belegdatum(), locDruck);
                    data[i][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_TEXT] = history.getX_text();
                    i++;
                }
            }

        } catch (Throwable t) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FLR, new Exception(t));
        } finally {
            try {
                session.close();
            } catch (HibernateException he) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
            }
        }
        // die Parameter dem Report uebergeben
        HashMap<String, Object> parameter = new HashMap<String, Object>();

        parameter.put("P_TITLE",
                getTextRespectUISpr("proj.print.offene", theClientDto.getMandant(), theClientDto.getLocUi()));

        initJRDS(parameter, ProjektReportFac.REPORT_MODUL, cAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        oPrint = getReportPrint();

        return oPrint;
    }

    public Object getFieldValue(JRField field) throws JRException {
        Object value = null;
        String fieldName = field.getName();
        if (cAktuellerReport.equals(ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE)) {
            if ("F_CNR".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTCNR];
            } else if ("F_STATUS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_STATUS];
            } else if ("F_PARTNER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_KUNDECNAME1];
            } else if ("F_ORT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ORT];
            } else if ("F_LKZ".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_LKZ];
            } else if ("F_PLZ".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PLZ];
            } else if ("F_TYP".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_TYP];
            } else if ("F_ZIELTERMIN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZIELTERMIN];
            } else if ("F_BELEGDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZIELTERMIN];
            } else if ("F_ERLEDIGUNGSDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ERLEDIGUNGSDATUM];
            } else if ("F_KATEGORIE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTKATEGORIE];
            } else if ("F_TITEL".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PROJEKTTITEL]);
            } else if ("F_PRIO".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_PRIO];
            } else if ("F_ERZEUGER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ERZEUGER];
            } else if ("F_DAUER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_DAUER];
            } else if ("F_ZEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZEIT];
            } else if ("F_ZUGEWIESENER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZUGEWIESENER];
            } else if ("F_ZIELWOCHE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ZIELWOCHE];
            } else if ("F_TEXT".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_TEXT]);
            } else if ("F_WER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_MITARBEITER];
            } else if ("F_WANN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_BELEGDATUM];
            } else if ("F_WAS".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_HISTORY_TEXT]);
            } else if ("F_ANSPRECHPARTNER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANSPRECHPARTNER];
            } else if ("F_DATEINAME".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_DATEINAME];
            } else if ("F_FREIGEGEBEN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_B_FREIGEGEBEN];
            } else if ("F_VERRECHENBAR".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_B_VERRECHENBAR];
            } else if ("F_ANSPRECHPARTNERCNAME1".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_ANSPRECHPARTNERCNAME1];
            } else if ("F_WAHRSCHEINLICHKEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_WAHRSCHEINLICHKEIT];
            } else if ("F_UMSATZGEPLANT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_GEPLANTERUMSATZ];
            } else if ("F_GESAMTDAUER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_GESAMTDAUER];
            } else if ("F_INTERNERLEDIGT_PERSON".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_INTERNERLEDIGT_PERSON];
            } else if ("F_INTERNERLEDIGT_ZEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_OFFENE_INTERNERLEDIGT_ZEIT];
            }

        } else if (cAktuellerReport.equals(ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE)) {
            if ("F_CNR".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PROJEKTCNR];
            } else if ("F_PARTNER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_KUNDECNAME1];
            } else if ("F_ZIELTERMIN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZIELTERMIN];
            } else if ("F_BELEGDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZIELTERMIN];
            } else if ("F_ERLEDIGUNGSDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ERLEDIGUNGSDATUM];
            } else if ("F_KATEGORIE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PROJEKTKATEGORIE];
            } else if ("F_TITEL".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PROJEKTTITEL]);
            } else if ("F_STATUS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_STATUS];
            } else if ("F_TYP".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_TYP];
            } else if ("F_PRIO".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_PRIO];
            } else if ("F_ERZEUGER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ERZEUGER];
            } else if ("F_DAUER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_DAUER];
            } else if ("F_ZEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZEIT];
            } else if ("F_ZUGEWIESENER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZUGEWIESENER];
            } else if ("F_ZIELWOCHE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_ZIELWOCHE];
            } else if ("F_TEXT".equals(fieldName)) {
                value = Helper
                        .formatStyledTextForJasper(data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_TEXT]);
            } else if ("F_WER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_HISTORY_MITARBEITER];
            } else if ("F_WANN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_HISTORY_BELEGDATUM];
            } else if ("F_WAS".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_HISTORY_TEXT]);
            } else if ("F_WAHRSCHEINLICHKEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_WAHRSCHEINLICHKEIT];
            } else if ("F_UMSATZGEPLANT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_GEPLANTERUMSATZ];
            } else if ("F_INTERNERLEDIGT_PERSON".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_INTERNERLEDIGT_PERSON];
            } else if ("F_INTERNERLEDIGT_ZEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ALLE_INTERNERLEDIGT_ZEIT];
            }

        } else if (cAktuellerReport.equals(ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT)) {
            if ("F_CNR".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PROJEKTCNR];
            } else if ("F_PARTNER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_KUNDECNAME1];
            } else if ("F_TYP".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_TYP];
            } else if ("F_ZIELTERMIN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZIELTERMIN];
            } else if ("F_BELEGDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_BELEGDATUM];
            } else if ("F_ERLEDIGUNGSDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ERLEDIGUNGSDATUM];
            } else if ("F_KATEGORIE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PROJEKTKATEGORIE];
            } else if ("F_TITEL".equals(fieldName)) {
                // CK: lt WH ist der Titel des Projektes kein Styled Text
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PROJEKTTITEL];
            } else if ("F_STATUS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_STATUS];
            } else if ("F_PRIO".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_PRIO];
            } else if ("F_ERZEUGER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ERZEUGER];
            } else if ("F_ERLEDIGER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ERLEDIGER];
            } else if ("F_BELEGDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_BELEGDATUM];
            } else if ("F_ZEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZEIT];
            } else if ("F_ZUGEWIESENER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZUGEWIESENER];
            } else if ("F_ZIELWOCHE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_ZIELWOCHE];
            } else if ("F_DAUER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_DAUER];
            } else if ("F_TEXT".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_TEXT]);
            } else if ("F_WER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_HISTORY_MITARBEITER];
            } else if ("F_WANN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_HISTORY_BELEGDATUM];
            } else if ("F_WAS".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_HISTORY_TEXT]);
            } else if ("F_VERRECHENBAR".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_B_VERRECHENBAR]);
            } else if ("F_FREIGEGEBEN".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(
                        data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_FREIGEGEBEN]);
            } else if ("F_GESAMTDAUER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_GESAMTDAUER];
            } else if ("F_WAHRSCHEINLICHKEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_WAHRSCHEINLICHKEIT];
            } else if ("F_UMSATZGEPLANT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_GEPLANTERUMSATZ];
            } else if ("F_INTERNERLEDIGT_PERSON".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_INTERNERLEDIGT_PERSON];
            } else if ("F_INTERNERLEDIGT_ZEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_JOURNAL_ERLEDIGT_INTERNERLEDIGT_ZEIT];
            }

        }

        else if (cAktuellerReport.equals(ProjektReportFac.REPORT_PROJEKT)) {
            if ("F_POSITION".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_POSITION];
            } else if ("F_TEXT".equals(fieldName)) {
                value = Helper.formatStyledTextForJasper(data[index][ProjektReportFac.REPORT_PROJEKT_HISTORY_TEXT]);
            } else if ("F_ERZEUGER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_ERZEUGER];
            } else if ("F_DATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_HISTORY_BELEGDATUM];
            } else if ("F_ERLEDIGUNGSDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_ERLEDIGUNGSDATUM];
            }

            else if ("F_HISTORYART".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_HISTORYART];
            } else if ("F_TITEL".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_TITEL];
            } else if ("F_ROT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_ROT];
            } else if ("F_GRUEN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_GRUEN];
            } else if ("F_BLAU".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKT_BLAU];
            }

        } else if (cAktuellerReport.equals(ProjektReportFac.REPORT_PROJEKT_JOURNAL_AKTIVITAETSUEBERSICHT)) {
            if ("F_BELEGDETAIL".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEG_SUBREPORT];
            } else if ("F_BELEGART".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGART];
            } else if ("F_BELEGNUMMER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGNUMMER];
            } else if ("F_BELEGTEXT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BELEGTEXT];
            } else if ("F_DAUER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_DAUER];
            } else if ("F_PARTNER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PARTNER];
            } else if ("F_LKZ".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_LKZ];
            } else if ("F_PLZ".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PLZ];
            } else if ("F_ORT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_ORT];
            } else if ("F_PERSONAL".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PERSONAL];
            } else if ("F_PROJEKT_PERSONAL_ERZEUGER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_PERSONAL_ERZEUGER];
            } else if ("F_PROJEKT_BEREICH".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_BEREICH];
            } else if ("F_PROJEKT_PERSONAL_MITARBEITER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_PERSONAL_MITARBEITER];
            } else if ("F_VON".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_VON];
            } else if ("F_BIS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_BIS];
            } else if ("F_PROJEKT_INTERNERLEDIGT_PERSON".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_INTERNERLEDIGT_PERSON];
            } else if ("F_PROJEKT_INTERNERLEDIGT_ZEIT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_AKTIVITAETSUEBERSICHT_PROJEKT_INTERNERLEDIGT_ZEIT];
            }
        } else if (cAktuellerReport.equals(ProjektReportFac.REPORT_PROJEKTVERLAUF)) {
            if ("F_BELEGART".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGART];
            } else if ("F_BELEGNUMMER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGNUMMER];
            } else if ("F_AZ_DAUER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_AZ_DAUER];
            } else if ("F_AZ_KOSTEN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_AZ_KOSTEN];
            } else if ("F_MATERIALWERT_LOS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_MATERIALWERT_LOS];
            } else if ("F_AZWERT_LOS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_AZWERT_LOS];
            } else if ("F_GESTWERT_AZ".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_GESTWERT_AZ];
            } else if ("F_GESTWERT_MATERIAL".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_GESTWERT_MATERIAL];
            } else if ("F_VKWERT_AZ".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_VKWERT_AZ];
            } else if ("F_VKWERT_MATERIAL".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_VKWERT_MATERIAL];
            } else if ("F_EKWERT_AZ".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_EKWERT_AZ];
            } else if ("F_EKWERT_MATERIAL".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_EKWERT_MATERIAL];
            } else if ("F_EBENE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_EBENE];
            } else if ("F_ABLIEFERMENGE_LOS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_LOS_ABGELIEFERTE_MENGE];
            } else if ("F_LIEFERANT".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_LIEFERANT];
            } else if ("F_STATUS".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_STATUS];
            } else if ("F_AUFTRAG_BESTELLNUMMER".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_AUFTRAG_BESTELLNUMMER];
            } else if ("F_LIEFERTERMIN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_LIEFERTERMIN];
            } else if ("F_LOS_BEGINN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_LOS_BEGINN];
            } else if ("F_LOS_ENDE".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_LOS_ENDE];
            } else if ("F_BELEGDATUM".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_BELEGDATUM];
            } else if ("F_REISE_KOMMENTAR".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_REISE_KOMMENTAR];
            } else if ("F_TELEFON_KOMMENTAR_EXTERN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_TELEFON_KOMMENTAR_EXTERN];
            } else if ("F_TELEFON_KOMMENTAR_INTERN".equals(fieldName)) {
                value = data[index][ProjektReportFac.REPORT_PROJEKTVERLAUF_TELEFON_KOMMENTAR_INTERN];
            }

        }

        return value;
    }

    public boolean next() throws JRException {
        index++;
        return (index < data.length);
    }

    private String buildSortierungProjektAlle(ReportJournalKriterienDto reportJournalKriterienDtoI,
            TheClientDto theClientDto) {

        StringBuffer buff = new StringBuffer(
                getTextRespectUISpr("lp.sortierungnach", theClientDto.getMandant(), theClientDto.getLocUi()));
        buff.append(" ");

        if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) {
            buff.append(getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()))
                    .append(", ");
        }

        if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            buff.append(getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()))
                    .append(", ");
        }

        buff.append(getTextRespectUISpr("auft.auftragsnummer", theClientDto.getMandant(), theClientDto.getLocUi()));

        return buff.toString();
    }

    private String buildFilterProjektAlle(ReportJournalKriterienDto reportJournalKriterienDtoI,
            TheClientDto theClientDto) throws EJBExceptionLP {
        StringBuffer buff = new StringBuffer("");

        // Belegdatum
        if (reportJournalKriterienDtoI.dVon != null || reportJournalKriterienDtoI.dBis != null) {
            buff.append(getTextRespectUISpr("bes.belegdatum", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.dVon != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.dBis != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi()));
        }

        // Kostenstelle
        if (reportJournalKriterienDtoI.kostenstelleIId != null) {
            buff.append(" ").append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(getSystemFac()
                    .kostenstelleFindByPrimaryKey(reportJournalKriterienDtoI.kostenstelleIId).getCNr());
        }

        // Kunde
        if (reportJournalKriterienDtoI.kundeIId != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ")
                    .append(getKundeFac().kundeFindByPrimaryKey(reportJournalKriterienDtoI.kundeIId, theClientDto)
                            .getPartnerDto().getCName1nachnamefirmazeile1());
        }

        // Auftragsnummer
        if (reportJournalKriterienDtoI.sBelegnummerVon != null
                || reportJournalKriterienDtoI.sBelegnummerBis != null) {
            buff.append(" ").append(
                    getTextRespectUISpr("auft.auftragsnummer", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.sBelegnummerVon != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(reportJournalKriterienDtoI.sBelegnummerVon);
        }

        if (reportJournalKriterienDtoI.sBelegnummerBis != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(reportJournalKriterienDtoI.sBelegnummerBis);
        }

        String cBuffer = buff.toString().trim();

        return cBuffer;
    }

    private String buildFilterProjektErledigt(ReportJournalKriterienDto reportJournalKriterienDtoI,
            TheClientDto theClientDto) throws EJBExceptionLP {

        StringBuffer buff = new StringBuffer("");

        // Belegdatum
        if (reportJournalKriterienDtoI.dVon != null || reportJournalKriterienDtoI.dBis != null) {
            buff.append(getTextRespectUISpr("bes.belegdatum", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.dVon != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.dBis != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi()));
        }

        // Kostenstelle
        if (reportJournalKriterienDtoI.kostenstelleIId != null) {
            buff.append(" ").append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(getSystemFac()
                    .kostenstelleFindByPrimaryKey(reportJournalKriterienDtoI.kostenstelleIId).getCNr());
        }

        // Kunde
        if (reportJournalKriterienDtoI.kundeIId != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ")
                    .append(getKundeFac().kundeFindByPrimaryKey(reportJournalKriterienDtoI.kundeIId, theClientDto)
                            .getPartnerDto().getCName1nachnamefirmazeile1());
        }

        // Auftragsnummer
        if (reportJournalKriterienDtoI.sBelegnummerVon != null
                || reportJournalKriterienDtoI.sBelegnummerBis != null) {
            buff.append(" ").append(
                    getTextRespectUISpr("auft.auftragsnummer", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.sBelegnummerVon != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(reportJournalKriterienDtoI.sBelegnummerVon);
        }

        if (reportJournalKriterienDtoI.sBelegnummerBis != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(reportJournalKriterienDtoI.sBelegnummerBis);
        }

        String cBuffer = buff.toString().trim();

        return cBuffer;
    }

    private String buildSortierungProjektOffene(ReportJournalKriterienDto reportJournalKriterienDtoI,
            TheClientDto theClientDto) {

        StringBuffer buff = new StringBuffer(
                getTextRespectUISpr("lp.sortierungnach", theClientDto.getMandant(), theClientDto.getLocUi()));
        buff.append(" ");

        if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) {
            buff.append(getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()))
                    .append(", ");
        }

        if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            buff.append(getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()))
                    .append(", ");
        }

        buff.append(getTextRespectUISpr("auft.auftragsnummer", theClientDto.getMandant(), theClientDto.getLocUi()));

        return buff.toString();
    }

    private String buildFilterProjektOffene(ReportJournalKriterienDto reportJournalKriterienDtoI,
            TheClientDto theClientDto) throws EJBExceptionLP {

        StringBuffer buff = new StringBuffer("");

        // Belegdatum
        if (reportJournalKriterienDtoI.dVon != null || reportJournalKriterienDtoI.dBis != null) {
            buff.append(getTextRespectUISpr("bes.belegdatum", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.dVon != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.dBis != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi()));
        }

        // Kostenstelle
        if (reportJournalKriterienDtoI.kostenstelleIId != null) {
            buff.append(" ").append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(getSystemFac()
                    .kostenstelleFindByPrimaryKey(reportJournalKriterienDtoI.kostenstelleIId).getCNr());
        }

        // Kunde
        if (reportJournalKriterienDtoI.kundeIId != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ")
                    .append(getKundeFac().kundeFindByPrimaryKey(reportJournalKriterienDtoI.kundeIId, theClientDto)
                            .getPartnerDto().getCName1nachnamefirmazeile1());
        }

        // Auftragsnummer
        if (reportJournalKriterienDtoI.sBelegnummerVon != null
                || reportJournalKriterienDtoI.sBelegnummerBis != null) {
            buff.append(" ").append(
                    getTextRespectUISpr("auft.auftragsnummer", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        if (reportJournalKriterienDtoI.sBelegnummerVon != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(reportJournalKriterienDtoI.sBelegnummerVon);
        }

        if (reportJournalKriterienDtoI.sBelegnummerBis != null) {
            buff.append(" ")
                    .append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            buff.append(" ").append(reportJournalKriterienDtoI.sBelegnummerBis);
        }

        String cBuffer = buff.toString().trim();

        return cBuffer;
    }

}