Example usage for org.hibernate.criterion Restrictions lt

List of usage examples for org.hibernate.criterion Restrictions lt

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions lt.

Prototype

public static SimpleExpression lt(String propertyName, Object value) 

Source Link

Document

Apply a "less than" constraint to the named property

Usage

From source file:com.lp.server.artikel.ejbfac.ReservierungFacBean.java

License:Open Source License

/**
 * Artikelreservierungen drucken./*from   w  ww  . j ava2s . c  o m*/
 * 
 * @todo in eine ReportFac verschieben.
 * 
 * @param artikelIId
 *            Integer
 * @param dVon
 *            Date
 * @param dBis
 *            Date
 * @param theClientDto der aktuelle Benutzer
 * @return JasperPrintLP
 * @throws EJBExceptionLP
 */
public JasperPrintLP printArtikelreservierungen(Integer artikelIId, java.sql.Date dVon, java.sql.Date dBis,
        TheClientDto theClientDto) throws EJBExceptionLP {
    if (artikelIId == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null"));
    }
    // Erstellung des Reports
    JasperPrintLP print = null;
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    index = -1;
    sAktuellerReport = ReservierungFac.REPORT_ARTIKELRESERVIERUNG;

    String eingeloggterMandant = theClientDto.getMandant();

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

    org.hibernate.Criteria reservierungen = session.createCriteria(FLRArtikelreservierung.class);
    reservierungen.createAlias(ReservierungFac.FLR_ARTIKELRESERVIERUNG_FLRARTIKEL, "a")
            .add(Restrictions.eq("a.i_id", artikelIId));
    if (dVon != null) {
        reservierungen.add(Restrictions.ge(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN, dVon));
    }
    if (dBis != null) {
        reservierungen.add(Restrictions.lt(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN, dBis));
    }

    reservierungen.addOrder(Order.asc(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN));

    List<?> resultList = reservierungen.list();
    Iterator<?> resultListIterator = resultList.iterator();
    int row = 0;

    Object[][] dataHelp = new Object[resultList.size()][7];

    while (resultListIterator.hasNext()) {
        FLRArtikelreservierung artikelreservierung = (FLRArtikelreservierung) resultListIterator.next();

        String sBelegnummer = null;
        String sStueckliste = null;
        String sZwangsSNR = null;
        String sPartner = null;
        String sProjektbezeichnung = null;

        if (artikelreservierung.getC_belegartnr().equals(LocaleFac.BELEGART_AUFTRAG)) {
            AuftragpositionDto auftragpositionDto = null;
            try {
                auftragpositionDto = getAuftragpositionFac()
                        .auftragpositionFindByPrimaryKey(artikelreservierung.getI_belegartpositionid());
                sZwangsSNR = auftragpositionDto.getCSeriennrchargennr();
            } catch (RemoteException ex1) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1);
            }
            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragpositionDto.getBelegIId());
            sBelegnummer = "A" + auftragDto.getCNr();

            sProjektbezeichnung = auftragDto.getCBezProjektbezeichnung();

            sPartner = getKundeFac()
                    .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto)
                    .getPartnerDto().formatTitelAnrede();

        } else if (artikelreservierung.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)) {
            com.lp.server.fertigung.service.LossollmaterialDto auftragpositionDto = null;
            try {
                auftragpositionDto = getFertigungFac()
                        .lossollmaterialFindByPrimaryKey(artikelreservierung.getI_belegartpositionid());
            } catch (RemoteException ex1) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1);
            }
            LosDto losDto = null;
            try {
                losDto = getFertigungFac().losFindByPrimaryKey(auftragpositionDto.getLosIId());
                sBelegnummer = "L" + losDto.getCNr();
                if (losDto.getStuecklisteIId() != null) {
                    StuecklisteDto stuecklisteDto = getStuecklisteFac()
                            .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto);
                    ArtikelDto dto = getArtikelFac().artikelFindByPrimaryKey(stuecklisteDto.getArtikelIId(),
                            theClientDto);
                    sStueckliste = dto.getCNr();
                }
                sProjektbezeichnung = losDto.getCProjekt();
                if (losDto.getAuftragIId() != null) {
                    AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(losDto.getAuftragIId());
                    sPartner = getKundeFac()
                            .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto)
                            .getPartnerDto().formatTitelAnrede();
                } else {
                    sPartner = "";
                }
            } catch (RemoteException ex3) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex3);
            }
        } else if (artikelreservierung.getC_belegartnr().equals(LocaleFac.BELEGART_KUECHE)) {

            SpeiseplanpositionDto speiseplanpositionDto = null;
            try {
                speiseplanpositionDto = getKuecheFac()
                        .speiseplanpositionFindByPrimaryKey(artikelreservierung.getI_belegartpositionid());
            } catch (RemoteException ex1) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1);
            }
            SpeiseplanDto speiseplanDto = null;
            try {
                speiseplanDto = getKuecheFac()
                        .speiseplanFindByPrimaryKey(speiseplanpositionDto.getSpeiseplanIId());
                sBelegnummer = "K";

                // Projekt= Speisekassa

                KassaartikelDto speisekassaDto = getKuecheFac()
                        .kassaartikelFindByPrimaryKey(speiseplanDto.getKassaartikelIId());

                sProjektbezeichnung = speisekassaDto.getCBez();

                // Kunde = Stuecklistebezeichnung
                StuecklisteDto stuecklisteDto = getStuecklisteFac()
                        .stuecklisteFindByPrimaryKey(speiseplanDto.getStuecklisteIId(), theClientDto);

                sPartner = stuecklisteDto.getArtikelDto().formatBezeichnung();

            } catch (RemoteException ex3) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex3);
            }
        }

        dataHelp[row][REPORT_RESERVIERUNGSLISTE_AUFTRAG] = sBelegnummer;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_STUECKLISTE] = sStueckliste;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_KUNDENNAME] = sPartner;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_PROJEKTNAME] = sProjektbezeichnung;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_LIEFERTERMIN] = artikelreservierung.getT_liefertermin();
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_MENGE] = artikelreservierung.getN_menge();
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_ZWANGSSERIENNUMMER] = sZwangsSNR;
        row++;

    }
    session.close();

    data = new Object[row][7];
    for (int i = 0; i < row; i++) {
        data[i] = dataHelp[i];
    }

    ArtikelDto dto = getArtikelFac().artikelFindByPrimaryKey(artikelIId, theClientDto);
    parameter.put("P_ARTIKEL", dto.formatArtikelbezeichnung());

    initJRDS(parameter, ReservierungFac.REPORT_MODUL, ReservierungFac.REPORT_ARTIKELRESERVIERUNG,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

    print = getReportPrint();
    return print;
}

From source file:com.lp.server.auftrag.ejbfac.AuftragFacBean.java

License:Open Source License

/**
 * Fuer eine bestimmte Auftragsart fuer einen bestimmten Zeitraum und eine
 * bestimmte Terminart (Belegdatum, Liefertermin, Finaltermin) den
 * Nettoauftragswert in Abhaengigkeit vom aktuellen Mandanten bestimmen. <br>
 * Beruecksichtigt werden koennen entweder alle offenen Auftraege oder alle
 * eingegangenen Auftraege.//w  ww. j av  a  2  s .c  om
 * 
 * @param cNrAuftragartI
 *            die Auftragart (Frei, Rahmen, Abruf)
 * @param whichKriteriumI
 *            welche Zeitraumart (Belegdatum, Liefertermin, Finaltermin)
 * @param gcBerechnungsdatumVonI
 *            ab diesem Datum
 * @param gcBerechnungsdatumBisI
 *            bis zu diesem Datum
 * @param offenOderEingegangenI
 *            sollen alle offenen oder alle eingegangengen Auftraegr
 *            beruecksichtigt werden
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return BigDecimal der Nettoauftragswert, 0 wenn keine offenen Positionen
 *         gefunden wurden
 * @throws EJBExceptionLP
 *             Ausnahme
 */
public BigDecimal berechneSummeAuftragsnettowert(String cNrAuftragartI, String whichKriteriumI,
        GregorianCalendar gcBerechnungsdatumVonI, GregorianCalendar gcBerechnungsdatumBisI,
        String offenOderEingegangenI, TheClientDto theClientDto) throws EJBExceptionLP {
    StringBuffer buff = new StringBuffer();
    buff.append(offenOderEingegangenI).append(", ").append(whichKriteriumI).append(", ").append(cNrAuftragartI)
            .append(", ").append("Von: ")
            .append(Helper.formatDatum(gcBerechnungsdatumVonI.getTime(), theClientDto.getLocUi()))
            .append(", Bis: ")
            .append(Helper.formatDatum(gcBerechnungsdatumBisI.getTime(), theClientDto.getLocUi()));

    myLogger.info(buff.toString());

    BigDecimal nSummeAuftragsnettowert = new BigDecimal(0);
    Session session = null;

    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();

        // Criteria duerfen keine Texts oder Blobs enthalten!

        // Criteria anlegen fuer alle referenzierten Objekte anlegen
        Criteria crit = session.createCriteria(FLRAuftragFuerUebersicht.class);

        // Einschraenken nach Mandant
        crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

        // Einschraenken nach Auftragart
        crit.add(Restrictions.eq(AuftragFac.FLR_AUFTRAG_AUFTRAGART_C_NR, cNrAuftragartI));

        if (whichKriteriumI.equals(AuftragFac.KRIT_BELEGDATUM)) {
            // Belegdatum von bis: flrauftrag.t_belegdatum
            if (gcBerechnungsdatumVonI != null) {
                crit.add(Restrictions.ge(AuftragFac.FLR_AUFTRAG_D_BELEGDATUM,
                        new java.sql.Date(gcBerechnungsdatumVonI.getTimeInMillis())));
            }

            if (gcBerechnungsdatumBisI != null) {
                crit.add(Restrictions.lt(AuftragFac.FLR_AUFTRAG_D_BELEGDATUM,
                        new java.sql.Date(gcBerechnungsdatumBisI.getTimeInMillis())));
            }
        } else if (whichKriteriumI.equals(AuftragFac.KRIT_LIEFERTERMIN)) {
            // Liefertermin von bis: flrauftrag.t_liefertermin
            if (gcBerechnungsdatumVonI != null) {
                crit.add(Restrictions.ge(AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN,
                        new java.sql.Date(gcBerechnungsdatumVonI.getTimeInMillis())));
            }

            if (gcBerechnungsdatumBisI != null) {
                crit.add(Restrictions.le(AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN,
                        new java.sql.Date(gcBerechnungsdatumBisI.getTimeInMillis())));
            }
        } else if (whichKriteriumI.equals(AuftragFac.KRIT_FINALTERMIN)) {
            // Belegdatum von bis: flrauftrag.t_finaltermin
            if (gcBerechnungsdatumVonI != null) {
                crit.add(Restrictions.ge(AuftragFac.FLR_AUFTRAG_T_FINALTERMIN,
                        new java.sql.Date(gcBerechnungsdatumVonI.getTimeInMillis())));
            }

            if (gcBerechnungsdatumBisI != null) {
                crit.add(Restrictions.le(AuftragFac.FLR_AUFTRAG_T_FINALTERMIN,
                        new java.sql.Date(gcBerechnungsdatumBisI.getTimeInMillis())));
            }
        }

        // Einschraenken nach Auftragstatus
        if (offenOderEingegangenI.equals(AuftragFac.AUFT_UMSATZUEBERSICHT_OFFEN)) {
            crit.add(Expression.or(
                    Restrictions.eq(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR,
                            AuftragServiceFac.AUFTRAGSTATUS_OFFEN),
                    Restrictions.eq(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR,
                            AuftragServiceFac.AUFTRAGSTATUS_TEILERLEDIGT)));
        } else if (offenOderEingegangenI.equals(AuftragFac.AUFT_UMSATZUEBERSICHT_EINGANG)) {
            crit.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR,
                    AuftragServiceFac.AUFTRAGSTATUS_ANGELEGT));
            crit.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR,
                    AuftragServiceFac.AUFTRAGSTATUS_STORNIERT));
        }

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

        if (offenOderEingegangenI.equals(AuftragFac.AUFT_UMSATZUEBERSICHT_OFFEN)) {
            nSummeAuftragsnettowert = berechneAuftragsnettowertOffen(list, session, theClientDto);
        } else if (offenOderEingegangenI.equals(AuftragFac.AUFT_UMSATZUEBERSICHT_EINGANG)) {
            nSummeAuftragsnettowert = berechneAuftragsnettowertEingang(list, theClientDto);
        }
    } 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);
        }
    }

    return nSummeAuftragsnettowert;
}

From source file:com.lp.server.bestellung.ejbfac.BestellungReportFacBean.java

License:Open Source License

public JasperPrintLP printBestellungenAlle(ReportJournalKriterienDto krit, TheClientDto theClientDto)
        throws EJBExceptionLP {
    Session session = null;/*from ww w  . j  a v  a 2s . c  o m*/
    try {
        this.useCase = UC_ALLE;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();

        boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF,
                theClientDto);

        // reportjournal: 00 Erzeugen einer Hibernate-Criteria-Query
        Criteria c = session.createCriteria(FLRBestellung.class);
        // reportjournal: 01 Filter nach Mandant
        c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // reportjournal: 02 Filter: nur eine Kostenstelle
        if (krit.kostenstelleIId != null) {
            c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
        }
        // reportjournal: 03 Filter: nur ein Lieferant
        if (krit.lieferantIId != null) {
            c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE,
                    krit.lieferantIId));
        }
        String sVon = null;
        String sBis = null;
        // reportjournal: 04 Datum von
        if (krit.dVon != null) {
            c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN, Helper.cutDate(krit.dVon)));
            sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi());
        }
        // reportjournal: 05 Datum bis
        if (krit.dBis != null) {
            c.add(Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN,
                    Helper.cutDate(Helper.addiereTageZuDatum(krit.dBis, 1))));
            sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi());
        }
        // reportjournalbelegnummer: 0 dazu muss ich das Belegnummernformat
        // und das
        // aktuelle Geschaeftsjahr des Mandanten kennen.
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        // reportjournal: 06 belegnummer von
        // reportjournalbelegnummer: 1 (von) hier funktionierts fast gleich
        // wie bei den Direktfiltern
        if (krit.sBelegnummerVon != null) {
            sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerVon);
            c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_C_NR, sVon));
        }
        // reportjournal: 07 belegnummer bis
        // reportjournalbelegnummer: 2 (bis) detto
        if (krit.sBelegnummerBis != null) {
            sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerBis);
            c.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_C_NR, sBis));
        }
        // reportjournal: 08 Sortierung nach Kostenstelle
        if (krit.bSortiereNachKostenstelle) {
            c.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
        }
        // reportjournal: 09 Sortierung nach Lieferant
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            c.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT).createCriteria(LieferantFac.FLR_PARTNER)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
        }
        // reportjournal: 10 Sortierung nach Belegnummer
        else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            c.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_NR));
        }

        // reportjournal: 11 Und nun zusammenbauen der Daten
        List<?> list = c.list();
        data = new Object[list.size()][7];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRBestellung b = (FLRBestellung) iter.next();
            // reportjournal: 12 Fuer die Performance: so wenige
            // ejb-Methoden wie moeglich aufrufen!
            data[i][ALLE_BELEGDATUM] = b.getT_belegdatum();
            data[i][ALLE_BESTELLNUMMER] = b.getC_nr();
            data[i][ALLE_STATUS] = b.getBestellungstatus_c_nr();
            if (darfEinkaufspreisSehen) {
                data[i][ALLE_BESTELLWERT] = b.getN_bestellwert();
            } else {
                data[i][ALLE_BESTELLWERT] = null;
            }
            data[i][ALLE_KOSTENSTELLENUMMER] = b.getFlrkostenstelle() != null ? b.getFlrkostenstelle().getC_nr()
                    : null;
            data[i][ALLE_LIEFERANT] = b.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1();
            data[i][ALLE_LIEFERTERMIN] = b.getT_liefertermin();
            i++;
        }
        Map<String, Object> map = new TreeMap<String, Object>();
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);
        // Waehrung
        map.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr());
        StringBuffer sSortierung = new StringBuffer();
        // Sortierung nach Kostenstelle
        // reportjournalparameter: 0 nach Kostenstelle
        map.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        // Sortierung nach Lieferant
        // reportjournalparameter: 1 nach Lieferanten
        map.put(LPReport.P_SORTIERENACHLIEFERANT,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.lieferant", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        // reportjournalparameter: 2 nach Belegnummer
        else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(
                    getTextRespectUISpr("bes.bestnr", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        StringBuffer sFilter = new StringBuffer();
        if (sVon != null) {
            sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sVon + " ");
        }
        if (sBis != null) {
            sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sBis + " ");
        }
        if (krit.kostenstelleIId != null) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId);
            sFilter.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" ");
            sFilter.append(kstDto.getCNr());
        }

        // reportjournalparameter: 3 Uebergabe
        map.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        map.put(LPReport.P_FILTER, sFilter.toString());
        initJRDS(map, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNGEN_ALLE,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        closeSession(session);
    }
    return getReportPrint();
}

From source file:com.lp.server.bestellung.ejbfac.BestellungReportFacBean.java

License:Open Source License

public JasperPrintLP printBestellungWareneingangsJournal(ReportJournalKriterienDto krit,
        Integer artikelklasseIId, Integer artikelgruppeIId, String artikelCNrVon, String artikelCNrBis,
        String projektCBezeichnung, Integer auftragIId, boolean bMitWarenverbrauch, TheClientDto theClientDto)
        throws EJBExceptionLP, RemoteException {

    Session session = null;//w  w  w  .j a  v  a 2s. c  om
    useCase = UC_BESTELLUNG_WARENEINGANG;
    SessionFactory factory = FLRSessionFactory.getFactory();
    session = factory.openSession();

    boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF,
            theClientDto);

    Criteria c = session.createCriteria(FLRWareneingangspositionen.class);
    Criteria cWe = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRWARENEINGANG);
    Criteria cBesPos = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRBESTELLPOSITION);
    Criteria cArt = cBesPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL);
    Criteria cBestellung = cWe.createCriteria(WareneingangFac.FLR_WE_FLRBESTELLUNG);
    cBestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
    // Datum von
    if (krit.dVon != null) {
        cWe.add(Restrictions.ge(WareneingangFac.FLRSPALTE_T_WARENEINGANGSDATUM, Helper.cutDate(krit.dVon)));
    }
    // Datum bis
    if (krit.dBis != null) {

        java.sql.Date dBisTemp = Helper.cutDate(new java.sql.Date(krit.dBis.getTime() + 24 * 3600000));
        cWe.add(Restrictions.lt(WareneingangFac.FLRSPALTE_T_WARENEINGANGSDATUM, dBisTemp));
    }
    // Filter nach Projektbezeichnung
    if (projektCBezeichnung != null) {
        cBestellung.add(Restrictions.ilike(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG,
                "%" + projektCBezeichnung + "%"));
    }
    // Filter nach Auftrag
    if (auftragIId != null) {
        cBestellung.add(Restrictions.like(BestellungFac.FLR_BESTELLUNG_AUFTRAG_I_ID, auftragIId));
    }

    LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
    Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
    String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
            ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
    // reportjournal: 06 belegnummer von
    // reportjournalbelegnummer: 1 (von) hier funktionierts fast gleich
    // wie bei den Direktfiltern
    if (krit.sBelegnummerVon != null) {
        String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                sMandantKuerzel, krit.sBelegnummerVon);
        cBestellung.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_C_NR, sVon));
    }
    // reportjournal: 07 belegnummer bis
    // reportjournalbelegnummer: 2 (bis) detto
    if (krit.sBelegnummerBis != null) {
        String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                sMandantKuerzel, krit.sBelegnummerBis);
        cBestellung.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_C_NR, sBis));
    }
    // Einschraenkung nach einer bestimmten Kostenstelle
    if (krit.kostenstelleIId != null) {
        cBestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
    }

    // Einschraenkung nach einem bestimmten Lieferanten
    if (krit.lieferantIId != null) {
        cBestellung.add(
                Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, krit.lieferantIId));
    }

    if (artikelklasseIId != null) {
        cArt.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE)
                .add(Restrictions.eq("i_id", artikelklasseIId));
    }
    if (artikelgruppeIId != null) {
        cArt.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE)
                .add(Restrictions.eq("i_id", artikelgruppeIId));
    }
    if (artikelCNrVon != null) {
        cArt.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon));
    }
    if (artikelCNrBis != null) {
        cArt.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis));
    }

    // Sortierung nach Kostenstelle ist immer die erste Sortierung
    if (krit.bSortiereNachKostenstelle) {
        cBestellung.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
    }

    Map<String, Object> map = new TreeMap<String, Object>();

    if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_DATUM) {
        cWe.addOrder(Order.asc(WareneingangFac.FLRSPALTE_T_WARENEINGANGSDATUM));
        map.put(LPReport.P_SORTIERUNG,
                getTextRespectUISpr("bes.wedatum", theClientDto.getMandant(), theClientDto.getLocUi()));

    } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {
        cArt.addOrder(Order.asc(ArtikelFac.FLR_ARTIKEL_C_NR));
        map.put(LPReport.P_SORTIERUNG,
                getTextRespectUISpr("lp.artikel", theClientDto.getMandant(), theClientDto.getLocUi()));
    } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
        cBestellung.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_NR));
        map.put(LPReport.P_SORTIERUNG,
                getTextRespectUISpr("bes.belegnummer", theClientDto.getMandant(), theClientDto.getLocUi()));
    } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PROJEKT) {
        cBestellung.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG));
        map.put(LPReport.P_SORTIERUNG,
                getTextRespectUISpr("lp.projekt", theClientDto.getMandant(), theClientDto.getLocUi()));
    } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
        cBestellung.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT)
                .createCriteria(LieferantFac.FLR_PARTNER)
                .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
        map.put(LPReport.P_SORTIERUNG,
                getTextRespectUISpr("lp.partner", theClientDto.getMandant(), theClientDto.getLocUi()));
    } else {
        c.addOrder(Order.asc("i_id"));
        map.put(LPReport.P_SORTIERUNG, "i_id");
    }
    List<?> list = c.list();
    data = new Object[list.size()][REPORT_BSWARENEINGANGSJOURNAL_ANZAHL_SPALTEN];
    int i = 0;
    for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
        FLRWareneingangspositionen w = (FLRWareneingangspositionen) iter.next();
        if (w.getFlrwareneingang().getT_wareneingansdatum() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_DATUM] = w.getFlrwareneingang().getT_wareneingansdatum();
        }
        if (w.getFlrwareneingang().getFlrbestellung().getC_nr() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_BESTELLNUMMER] = w.getFlrwareneingang().getFlrbestellung()
                    .getC_nr();
        } else {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_BESTELLNUMMER] = "";
        }
        if (w.getFlrbestellposition().getFlrartikel().getC_nr() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_IDENT] = w.getFlrbestellposition().getFlrartikel().getC_nr();
        } else {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_IDENT] = "";
        }
        if (w.getFlrbestellposition().getC_bezeichnung() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_BEZEICHNUNG] = w.getFlrbestellposition().getC_bezeichnung();
        } else {
            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                    w.getFlrbestellposition().getFlrartikel().getI_id(), theClientDto);
            data[i][REPORT_BSWARENEINGANGSJOURNAL_BEZEICHNUNG] = artikelDto.formatBezeichnung();
        }
        if (bMitWarenverbrauch) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_WA_REFERENZ] = getLagerFac()
                    .getWarenausgangsreferenzSubreport(LocaleFac.BELEGART_BESTELLUNG, w.getI_id(), null,
                            theClientDto);
        }
        // SP903
        if (w.getFlrbestellposition().getPosition_i_id_artikelset() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_POSITION;
        } else {

            Session sessionSet = FLRSessionFactory.getFactory().openSession();

            sessionSet = factory.openSession();
            Criteria critSet = sessionSet.createCriteria(FLRBestellpositionReport.class);
            critSet.add(Restrictions.eq("position_i_id_artikelset", w.getFlrbestellposition().getI_id()));

            int iZeilen = critSet.list().size();

            if (iZeilen > 0) {
                data[i][REPORT_BSWARENEINGANGSJOURNAL_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_KOPF;
            }
            sessionSet.close();

        }

        data[i][REPORT_BSWARENEINGANGSJOURNAL_PROJEKT] = w.getFlrbestellposition().getFlrbestellung()
                .getC_bezprojektbezeichnung();
        data[i][REPORT_BSWARENEINGANGSJOURNAL_LIEFERANT] = w.getFlrbestellposition().getFlrbestellung()
                .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1();

        if (w.getN_geliefertemenge() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_MENGE] = w.getN_geliefertemenge();
        } else {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_MENGE] = new BigDecimal(0);
        }
        if (w.getN_gelieferterpreis() != null) {
            if (darfEinkaufspreisSehen) {

                BigDecimal kurs = new BigDecimal(w.getFlrwareneingang().getFlrbestellung()
                        .getF_wechselkursmandantwaehrungbestellungswaehrung());
                if (kurs.doubleValue() != 0) {
                    data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = w.getN_gelieferterpreis()
                            .divide(kurs, 4, BigDecimal.ROUND_HALF_EVEN);
                } else {
                    data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = new BigDecimal(0);
                }

            } else {
                data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = null;
            }
        } else {
            if (darfEinkaufspreisSehen) {
                data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = new BigDecimal(0);
            } else {
                data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = null;
            }
        }

        if (w.getN_einstandspreis() != null) {
            if (darfEinkaufspreisSehen) {

                BigDecimal kurs = new BigDecimal(w.getFlrwareneingang().getFlrbestellung()
                        .getF_wechselkursmandantwaehrungbestellungswaehrung());
                if (kurs.doubleValue() != 0) {
                    data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = w.getN_einstandspreis().divide(kurs,
                            4, BigDecimal.ROUND_HALF_EVEN);
                } else {
                    data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = new BigDecimal(0);
                }

            } else {
                data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = null;
            }
        } else {
            if (darfEinkaufspreisSehen) {
                data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = new BigDecimal(0);
            } else {
                data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = null;
            }
        }

        data[i][REPORT_BSWARENEINGANGSJOURNAL_LIEFERSCHEIN] = w.getFlrwareneingang().getC_lieferscheinnr();
        data[i][REPORT_BSWARENEINGANGSJOURNAL_LIEFERSCHEINDATUM] = w.getFlrwareneingang()
                .getT_lieferscheindatum();

        if (w.getFlrwareneingang().getFlreingangsrechnung() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_EINGANGSRECHNUNG] = w.getFlrwareneingang()
                    .getFlreingangsrechnung().getC_nr();
        }

        if (w.getFlrwareneingang().getFlrbestellung().getFlrkostenstelle() != null) {

            data[i][REPORT_BSWARENEINGANGSJOURNAL_KOSTENSTELLE] = w.getFlrwareneingang().getFlrbestellung()
                    .getFlrkostenstelle().getC_nr();
        }
        data[i][REPORT_BSWARENEINGANGSJOURNAL_ZUBUCHUNGSLAGER] = w.getFlrwareneingang().getFlrlager().getC_nr();
        data[i][REPORT_BSWARENEINGANGSJOURNAL_RABATTSATZ] = w.getFlrwareneingang().getF_rabattsatz();
        if (w.getFlrwareneingang().getFlrbestellung().getAuftrag_i_id() != null) {
            data[i][REPORT_BSWARENEINGANGSJOURNAL_AUFTRAG] = w.getFlrwareneingang().getFlrbestellung()
                    .getFlrauftrag().getC_nr();
        }
        if (w.getFlrbestellposition().getFlrartikel().getFlrartikelklasse() != null) {
            w.getFlrbestellposition().getFlrartikel().getFlrartikelklasse().getC_nr();
            data[i][REPORT_BSWARENEINGANGSJOURNAL_ARTIKELKLASSE] = w.getFlrbestellposition().getFlrartikel()
                    .getFlrartikelklasse().getC_nr();
        }
        if (w.getFlrbestellposition().getFlrartikel().getFlrartikelgruppe() != null) {
            w.getFlrbestellposition().getFlrartikel().getFlrartikelgruppe().getC_nr();
            data[i][REPORT_BSWARENEINGANGSJOURNAL_ARTIKELGRUPPE] = w.getFlrbestellposition().getFlrartikel()
                    .getFlrartikelgruppe().getC_nr();
        }

        data[i][REPORT_BSWARENEINGANGSJOURNAL_TRANSPORTKOSTEN] = w.getFlrwareneingang().getN_transportkosten();
        data[i][REPORT_BSWARENEINGANGSJOURNAL_BANKSPESEN] = w.getFlrwareneingang().getN_bankspesen();
        data[i][REPORT_BSWARENEINGANGSJOURNAL_ZOLLKOSTEN] = w.getFlrwareneingang().getN_zollkosten();
        data[i][REPORT_BSWARENEINGANGSJOURNAL_SONSTIGEKOSTEN] = w.getFlrwareneingang().getN_sonstigespesen();
        data[i][REPORT_BSWARENEINGANGSJOURNAL_GK_FAKTOR] = w.getFlrwareneingang().getF_gemeinkostenfaktor();

        i++;
    }

    if (krit.dBis != null) {
        map.put("P_BIS", new Timestamp(krit.dBis.getTime()));
    }
    if (krit.dVon != null) {
        map.put("P_VON", new Timestamp(krit.dVon.getTime()));
    }

    map.put("P_MIT_WARENVERBRAUCH", new Boolean(bMitWarenverbrauch));

    map.put(LPReport.P_REPORT_INFORMATION, "");
    initJRDS(map, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNG_JOURNAL_WARENEINGANG,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

    session.close();
    return getReportPrint();
}

From source file:com.lp.server.bestellung.ejbfac.BSMahnwesenFacBean.java

License:Open Source License

/**
 * erstellt Liefermahnungen, ABMahnungen oder beides ruft dazu die Methoden
 * echteLiefermahnungen() und (oder) echteABMahnungen() auf
 * ------------------//  ww  w  . ja v  a  2  s  . co m
 * ----------------------------------------------------------
 * 
 * @param echteLiefermahnung
 *            boolean
 * @param echteABMahnungen
 *            boolean
 * @param theClientDto
 *            String
 * @throws EJBExceptionLP
 * @return Integer
 *         ----------------------------------------------------------
 *         -----------------
 */
@TransactionAttribute(TransactionAttributeType.NEVER)
private Integer createMahnungen(boolean echteLiefermahnung, boolean echteABMahnungen, boolean liefererinnerung,
        TheClientDto theClientDto) throws EJBExceptionLP {

    Session session = null;
    try {
        // Mahnstufen des Mandanten holen
        BSMahnstufeDto bsmahnstufeDto[] = this.bsmahnstufeFindByMandantCNr(theClientDto.getMandant(),
                theClientDto);
        if (bsmahnstufeDto == null || bsmahnstufeDto.length == 0) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_KEINE_MAHNSTUFEN_EINGETRAGEN, "");
        }

        // mahnlaufIId generieren wird fuer Liefermahnung und ABMahnung
        // gebraucht
        Integer bsmahnlaufIId = null;
        BSMahnlaufDto bsmahnlaufDto = null;
        bsmahnlaufIId = context.getBusinessObject(BSMahnwesenFac.class).createBSMahnlauf(bsmahnlaufDto,
                theClientDto);
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria crit = session.createCriteria(FLRBestellpositionReport.class);

        // folgende Positionsarten werden ignoriert.
        Collection<String> cPositionsarten = new LinkedList<String>();
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_BETRIFFT);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_SEITENUMBRUCH);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_LEERZEILE);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTBAUSTEIN);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTEINGABE);
        crit.add(Restrictions.not(Restrictions
                .in(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, cPositionsarten)));

        // PJ 16536
        String queryString = "SELECT artgru_i_id FROM FLRMahngruppe m"
                + " WHERE m.flrartikelgruppe.mandant_c_nr ='" + theClientDto.getMandant() + "'";

        Session session2 = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Query query = session2.createQuery(queryString);
        List<?> results = query.list();
        Iterator<?> resultListIterator = results.iterator();

        Integer[] ids = new Integer[results.size()];
        int row = 0;
        while (resultListIterator.hasNext()) {
            Integer artgruIId = (Integer) resultListIterator.next();
            ids[row] = artgruIId;
            row++;
        }
        session2.close();
        if (ids.length > 0) {
            crit.createAlias("flrartikel", "a");
            crit.createAlias("a.flrartikelgruppe", "ag");

            crit.add(Restrictions.in("ag.i_id", ids));
        }

        Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
        // nach mandanten filtern
        critBestellung
                .add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // PJ 15165
        critBestellung.add(Restrictions.or(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS),
                Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS,
                        Helper.cutTimestamp(new Timestamp(System.currentTimeMillis())))));

        // nach Stati filtern
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(BestellungFac.BESTELLSTATUS_OFFEN);
        cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT);
        // SK added BESTELLSTATUS_TEILERLEDIGT
        cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT);
        critBestellung.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati));
        List<?> list = crit.list();

        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRBestellpositionReport flrbespos = (FLRBestellpositionReport) iter.next();
            /**
             * nur Liefermahnungen deren Status bestaetigt ist oder deren
             * Liefertermin vor heute ist
             */
            if (echteLiefermahnung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR
                    .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) {
                BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac()
                        .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto);
                if (bsmahnungdto.length > 0) {

                    Integer latest = 0;
                    for (int y = 0; y < bsmahnungdto.length; y++) {
                        if (bsmahnungdto[y].getMahnstufeIId() > latest) {
                            latest = bsmahnungdto[y].getMahnstufeIId();
                        }
                    }
                    for (int i = 0; i < bsmahnstufeDto.length; i++) {
                        if (latest.equals(bsmahnstufeDto[i].getIId())) {
                            echteLiefermahnungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto);
                        }
                    }
                } else {
                    echteLiefermahnungen(flrbespos, bsmahnlaufIId, null, theClientDto);
                }
            }

            // lt. WH
            boolean bEchteLiefermahnungVorhanden = false;
            BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac()
                    .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto);
            if (bsmahnungdto.length > 0) {
                for (int y = 0; y < bsmahnungdto.length; y++) {
                    if (bsmahnungdto[y].getMahnstufeIId() > 0) {
                        bEchteLiefermahnungVorhanden = true;
                    }
                }
            }

            if (bEchteLiefermahnungVorhanden == false) {

                /**
                 * nur ABMahnungen deren Status offen ist ausser der
                 * Liefertermin ist vor heute dann ist es eine Liefermahnung
                 */
                if (echteABMahnungen == true) {
                    // hier wird mahnstufe 0 uebergeben
                    for (int i = 0; i < bsmahnstufeDto.length; i++) {
                        if (bsmahnstufeDto[i].getIId().equals(new Integer(BSMahnwesenFac.MAHNSTUFE_0))) {
                            echteABMahnungen(flrbespos, bsmahnstufeDto[i], bsmahnlaufIId, theClientDto);
                        }
                    }
                }

                // lt. WH
                boolean bABLiefermahnungVorhanden = false;
                bsmahnungdto = getBSMahnwesenFac().bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(),
                        theClientDto);
                if (bsmahnungdto.length > 0) {
                    for (int y = 0; y < bsmahnungdto.length; y++) {
                        if (bsmahnungdto[y].getMahnstufeIId() == 0) {
                            bABLiefermahnungVorhanden = true;
                        }
                    }
                }

                if (bABLiefermahnungVorhanden == false) {

                    // lt. WH Liefererinnerung ist wie echte
                    // Liefermahnung,
                    // jedoch
                    // nur mit Mahnstufe -1
                    if (liefererinnerung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR
                            .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) {

                        if (flrbespos.getT_lieferterminbestaetigt() == null) {

                            // hier wird mahnstufe -1 uebergeben
                            for (int i = 0; i < bsmahnstufeDto.length; i++) {
                                if (bsmahnstufeDto[i].getIId()
                                        .equals(new Integer(BSMahnwesenFac.MAHNSTUFE_MINUS1))) {

                                    liefererinnerungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i],
                                            theClientDto);

                                }
                            }
                        }
                    }
                }
            }

        }
        return bsmahnlaufIId;
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}

From source file:com.lp.server.eingangsrechnung.ejbfac.EingangsrechnungFacBean.java

License:Open Source License

public int wiederholendeZusatzkostenAnlegen(TheClientDto theClientDto) {

    int iAnzahlAngelegt = 0;
    Session session = FLRSessionFactory.getFactory().openSession();

    Criteria crit = session.createCriteria(FLREingangsrechnung.class);

    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
    crit.add(Restrictions.eq("eingangsrechnungart_c_nr", EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN));

    crit.add(Restrictions.not(Restrictions.eq("status_c_nr", EingangsrechnungFac.STATUS_STORNIERT)));

    crit.add(Restrictions.isNull("t_wiederholenderledigt"));

    crit.add(Restrictions.isNull("eingangsrechnung_i_id_nachfolger"));
    crit.add(Restrictions.isNotNull("auftragwiederholungsintervall_c_nr"));

    crit.add(Restrictions.lt("t_belegdatum",
            Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000)))));

    List<?> resultList = crit.list();
    Iterator<?> resultListIterator = resultList.iterator();
    while (resultListIterator.hasNext()) {
        FLREingangsrechnung flrEingangsrechnung = (FLREingangsrechnung) resultListIterator.next();

        // Naechster faelliger Termin nach Heute
        Calendar cBeginn = Calendar.getInstance();
        cBeginn.setTimeInMillis(flrEingangsrechnung.getT_belegdatum().getTime());

        String intervall = flrEingangsrechnung.getAuftragwiederholungsintervall_c_nr();

        Timestamp tHeute = Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000)));

        if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2WOECHENTLICH)) {
            cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 14);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_WOECHENTLICH)) {
            cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 7);
        }/*from   ww  w .ja v a 2 s  .  c  om*/

        if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 1);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 2);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_3JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 3);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_4JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 4);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_5JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 5);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_MONATLICH)) {
            cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 1);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_QUARTAL)) {
            cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 3);
        }

        Date tBelegdatumNeu = new Date(cBeginn.getTimeInMillis());

        if (cBeginn.getTimeInMillis() < tHeute.getTime()) {

            Eingangsrechnung er = em.find(Eingangsrechnung.class, flrEingangsrechnung.getI_id());

            EingangsrechnungDto erDtoNeu = assembleEingangsrechnungDto(er);
            erDtoNeu.setIId(null);
            erDtoNeu.setDBelegdatum(tBelegdatumNeu);
            erDtoNeu.setStatusCNr(EingangsrechnungFac.STATUS_ANGELEGT);
            Integer idNeu = createEingangsrechnung(erDtoNeu, theClientDto).getIId();

            // Nachfolger setzten
            er.setEingangsrechnungIIdNachfolger(idNeu);
            iAnzahlAngelegt++;
        }

    }

    return iAnzahlAngelegt;
}

From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public ArrayList<Integer> erledigteLoseImZeitraumNachkalkulieren(java.sql.Date tVon, java.sql.Date tBis,
        TheClientDto theClientDto) {/*from   ww w.  j  a v  a  2s.  c om*/
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = factory.openSession();
    Criteria c = session.createCriteria(FLRLosablieferung.class);

    c.add(Restrictions.ge(FertigungFac.FLR_LOSABLIEFERUNG_T_AENDERN, tVon));

    c.add(Restrictions.lt(FertigungFac.FLR_LOSABLIEFERUNG_T_AENDERN, tBis));

    List<?> results = c.list();
    ArrayList<Integer> al = new ArrayList<Integer>();

    Iterator<?> resultListIterator = results.iterator();
    HashMap bereitsNachkalkuliert = new HashMap();

    while (resultListIterator.hasNext()) {
        FLRLosablieferung los = (FLRLosablieferung) resultListIterator.next();

        if (!bereitsNachkalkuliert.containsKey(los.getLos_i_id())) {
            try {
                getFertigungFac().aktualisiereNachtraeglichPreiseAllerLosablieferungen(los.getLos_i_id(),
                        theClientDto, true);
            } catch (RemoteException e) {
                throwEJBExceptionLPRespectOld(e);
            }
        }
        bereitsNachkalkuliert.put(los.getLos_i_id(), "");

    }

    return al;
}

From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java

License:Open Source License

public boolean istErstlos(LosDto losDto, TheClientDto theClientDto) {

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

        SessionFactory factory = FLRSessionFactory.getFactory();
        org.hibernate.Session session = factory.openSession();
        Criteria c = session.createCriteria(FLRLosReport.class);
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));

        c.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, losDto.getStuecklisteIId()));
        c.add(Restrictions.lt(FertigungFac.FLR_LOS_C_NR, losDto.getCNr()));
        c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
                new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT })));

        // Sortierung nach Losnummer
        c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR));
        c.setMaxResults(1);// www.ja  v a  2s . c o  m
        List<?> list = c.list();

        if (list.size() > 0) {
            return false;
        } else {
            return true;
        }
    } else {
        return false;
    }
}

From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printOffene(java.sql.Date dStichtag, int iOptionStichtag, String belegNrVon,
        String belegNrBis, Integer kundeIId, Integer kostenstelleIId, Integer fertigungsgruppeIId,
        int iSortierung, TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;/*ww  w . j ava 2  s .c  o  m*/

    try {
        this.useCase = UC_OFFENE;
        this.index = -1;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLosReport.class);
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
        Map<String, Object> mapParameter = new TreeMap<String, Object>();

        if (kostenstelleIId != null) {
            KostenstelleDto kostenstelleDto = getSystemFac().kostenstelleFindByPrimaryKey(kostenstelleIId);
            mapParameter.put("P_KOSTENSTELLE", kostenstelleDto.formatKostenstellenbezeichnung());

            c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, kostenstelleIId));
        }
        boolean flrAuftragSchonVerwendet = false;
        if (kundeIId != null) {
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto);
            mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatFixTitelName1Name2());
            c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
            flrAuftragSchonVerwendet = true;
            c.add(Restrictions.eq("a." + AuftragFac.FLR_AUFTRAG_KUNDE_I_ID_AUFTRAGSADRESSE, kundeIId));
        }
        if (fertigungsgruppeIId != null) {
            c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId));
        }

        String[] stati = new String[4];
        stati[0] = LocaleFac.STATUS_AUSGEGEBEN;
        stati[1] = LocaleFac.STATUS_IN_PRODUKTION;
        stati[2] = LocaleFac.STATUS_TEILERLEDIGT;
        stati[3] = LocaleFac.STATUS_ANGELEGT;

        c.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati));

        if (dStichtag != null) {

            dStichtag = Helper.cutDate(dStichtag);

            // PJ 14420
            mapParameter.put("P_STICHTAG", dStichtag);

            Calendar cal = Calendar.getInstance();
            cal.setTimeInMillis(dStichtag.getTime());
            cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 1);

            dStichtag = new java.sql.Date(cal.getTimeInMillis());

            String datumsart = "";

            if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) {
                c.add(Restrictions.lt(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, dStichtag));

                datumsart = getTextRespectUISpr("lp.begintermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                c.add(Restrictions.lt(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE, dStichtag));
                datumsart = getTextRespectUISpr("lp.endetermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                if (flrAuftragSchonVerwendet == false) {
                    c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                    flrAuftragSchonVerwendet = true;
                    c.add(Restrictions.lt("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN, dStichtag));

                }
                datumsart = getTextRespectUISpr("bes.liefertermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            }

            mapParameter.put("P_DATUMSART", datumsart);

        }
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        if (belegNrVon != null) {
            String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrVon);
            c.add(Restrictions.ge(FertigungFac.FLR_LOS_C_NR, sVon));
            mapParameter.put("P_LOSNRVON", sVon);
        }
        if (belegNrBis != null) {
            String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrBis);
            c.add(Restrictions.le(FertigungFac.FLR_LOS_C_NR, sBis));
            mapParameter.put("P_LOSNRBIS", sBis);
        }

        // Sortierung
        if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KOSTENSTELLE) {
            c.createCriteria(FertigungFac.FLR_LOSREPORT_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDE) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN);
            c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN);

            c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));
            c.addOrder(Order.asc("k.i_id"));

            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDEUNDGEWAEHLTERTERMIN) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN);
            c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN);

            c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));

            if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) {
                c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN));
            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE));
            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                c.addOrder(Order.asc("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN));
            }

            mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("fert.kundeundtermin", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_LIEFERTERMIN) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN);
            c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN);

            c.addOrder(Order.asc("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN));
            c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));

            mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("fert.liefertermin", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ARTIKEL) {
            c.createAlias(FertigungFac.FLR_LOS_FLRSTUECKLISTE, "s");
            c.createAlias("s." + StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL, "art");
            c.addOrder(Order.asc("art.c_nr"));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_FERTIGUNGSGRUPPE) {
            c.createAlias(FertigungFac.FLR_LOSREPORT_FLRFERTIGUNGSGRUPPE, "f");
            c.addOrder(Order.asc("f.c_bez"));
            mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.fertigungsgruppe", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_BEGINN) {
            c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.beginn", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ENDE) {
            c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.ende", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else {
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.losnr", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        // 2tes sortierkriterium immer Losnr

        if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_BEGINN
                || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ENDE
                || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_LIEFERTERMIN
                || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDEUNDGEWAEHLTERTERMIN) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.addOrder(Order.asc("a.c_nr"));
        } else {

            c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR));
        }

        List<?> list = c.list();
        data = new Object[list.size()][OFFENE_SPALTENANZAHL];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLosReport los = (FLRLosReport) iter.next();

            if (los.getFlrauftrag() != null) {

                Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto);
                data[i][OFFENE_KUNDE] = partnerDto.formatFixTitelName1Name2();
                data[i][OFFENE_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
            }

            if (los.getFlrauftrag() != null) {
                data[i][OFFENE_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                data[i][OFFENE_PROJEKT] = los.getFlrauftrag().getC_bez();
                data[i][OFFENE_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
            }
            BigDecimal bdGeliefert = new BigDecimal(0);
            for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                bdGeliefert = bdGeliefert.add(item.getN_menge());
            }
            data[i][OFFENE_GELIEFERT] = bdGeliefert;
            if (los.getFlrstueckliste() != null) {
                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                        los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                data[i][OFFENE_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                data[i][OFFENE_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                data[i][OFFENE_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr();

                data[i][OFFENE_DETAILBEDARF] = getRahmenbedarfeFac()
                        .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                // Offene Fehlmengen
                data[i][OFFENE_FEHLMENGE] = getFehlmengeFac()
                        .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                        .lossollarbeitsplanFindByLosIId(los.getI_id());

                BigDecimal bdFertigungszeit = new BigDecimal(0);
                for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                    bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit());
                }
                data[i][OFFENE_FERTIGUNGSZEIT] = bdFertigungszeit;

                // Rahmenbestellt
                Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                        .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                    BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                            .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                    data[i][OFFENE_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                }
                data[i][OFFENE_RESERVIERUNGEN] = getReservierungFac()
                        .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                data[i][OFFENE_RAHMENRESERVIERUNGEN] = getReservierungFac()
                        .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

            } else {
                data[i][OFFENE_BEZEICHNUNG] = los.getC_projekt();
                data[i][OFFENE_ZUSATZBEZEICHNUNG] = null;
                data[i][OFFENE_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                        theClientDto.getMandant(), theClientDto.getLocUi());
            }

            GregorianCalendar gc = new GregorianCalendar();
            gc.setTime(los.getT_produktionsbeginn());
            data[i][OFFENE_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
            data[i][OFFENE_LOSGROESSE] = los.getN_losgroesse();
            data[i][OFFENE_LOSNUMMER] = los.getC_nr();
            data[i][OFFENE_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
            /**
             * @todo material PJ 4239
             */
            data[i][OFFENE_MATERIAL] = null;
            data[i][OFFENE_BEGINN] = los.getT_produktionsbeginn();
            data[i][OFFENE_ENDE] = los.getT_produktionsende();
            data[i][OFFENE_LOSSTATUS] = los.getStatus_c_nr();

            // PJ 15009

            String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                    + los.getI_id() + " AND flrfehlmenge.n_menge>0";
            Session session2 = FLRSessionFactory.getFactory().openSession();
            Query query = session2.createQuery(queryf);
            List<?> results = query.list();

            data[i][OFFENE_LOSHATFEHLMENGE] = new Boolean(false);
            if (results.size() > 0) {
                BigDecimal bd = (BigDecimal) results.iterator().next();

                if (bd != null && bd.doubleValue() > 0) {
                    data[i][OFFENE_LOSHATFEHLMENGE] = new Boolean(true);
                }
            }
            session2.close();
        }

        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_OFFENE,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (Exception t) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t);
    } finally {
        closeSession(session);
    }
}

From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printOffeneArbeitsgaenge(java.sql.Date dStichtag, int iOptionStichtag, String belegNrVon,
        String belegNrBis, Integer kundeIId, Integer kostenstelleIId, Integer fertigungsgruppeIId,
        Integer artikelgruppeIId, Integer maschineIId, boolean bSollstundenbetrachtung,
        TheClientDto theClientDto) {/*from  w  w  w.j a  v a2  s.co m*/
    Session session = null;

    try {
        this.useCase = UC_OFFENE_AG;
        this.index = -1;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLossollarbeitsplan.class);

        c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRLOS, "l", CriteriaSpecification.LEFT_JOIN);

        c.add(Restrictions.eq("l." + FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));

        c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_B_FERTIG, Helper.boolean2Short(false)));

        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        mapParameter.put("P_SOLLSTUNDENBETRACHTUNG", new Boolean(bSollstundenbetrachtung));
        if (artikelgruppeIId != null) {
            c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL, "artikel",
                    CriteriaSpecification.LEFT_JOIN);
            c.createAlias("artikel." + ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE, "artikelgruppe",
                    CriteriaSpecification.LEFT_JOIN);
            c.add(Restrictions.eq("artikelgruppe.i_id", artikelgruppeIId));

            ArtgruDto artgruDto = getArtikelFac().artgruFindByPrimaryKey(artikelgruppeIId, theClientDto);

            mapParameter.put("P_ARTIKELGRUPPE", artgruDto.getBezeichnung());
        }

        /*
         * if (kostenstelleIId != null) { KostenstelleDto kostenstelleDto =
         * getSystemFac() .kostenstelleFindByPrimaryKey(kostenstelleIId);
         * mapParameter.put("P_KOSTENSTELLE",
         * kostenstelleDto.formatKostenstellenbezeichnung());
         * 
         * c.add(Restrictions.eq("l." +
         * FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, kostenstelleIId));
         * }
         */
        boolean flrAuftragSchonVerwendet = false;
        if (kundeIId != null) {
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto);
            mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatFixTitelName1Name2());
            c.createAlias("l." + FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
            flrAuftragSchonVerwendet = true;
            c.add(Restrictions.eq("a." + AuftragFac.FLR_AUFTRAG_KUNDE_I_ID_AUFTRAGSADRESSE, kundeIId));
        }

        String[] stati = new String[4];
        stati[0] = LocaleFac.STATUS_AUSGEGEBEN;
        stati[1] = LocaleFac.STATUS_IN_PRODUKTION;
        stati[2] = LocaleFac.STATUS_TEILERLEDIGT;
        stati[3] = LocaleFac.STATUS_ANGELEGT;

        c.add(Restrictions.in("l." + FertigungFac.FLR_LOS_STATUS_C_NR, stati));

        if (dStichtag != null) {

            dStichtag = Helper.cutDate(dStichtag);

            // PJ 14420
            mapParameter.put("P_STICHTAG", dStichtag);

            Calendar cal = Calendar.getInstance();
            cal.setTimeInMillis(dStichtag.getTime());
            cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 1);

            dStichtag = new java.sql.Date(cal.getTimeInMillis());

            String datumsart = "";

            if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) {
                c.add(Restrictions.lt("l." + FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, dStichtag));

                datumsart = getTextRespectUISpr("lp.begintermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                c.add(Restrictions.lt("l." + FertigungFac.FLR_LOS_T_PRODUKTIONSENDE, dStichtag));
                datumsart = getTextRespectUISpr("lp.endetermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                if (flrAuftragSchonVerwendet == false) {
                    c.createAlias("l." + FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a",
                            CriteriaSpecification.LEFT_JOIN);
                    flrAuftragSchonVerwendet = true;
                    c.add(Restrictions.lt("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN, dStichtag));

                }
                datumsart = getTextRespectUISpr("bes.liefertermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            }

            mapParameter.put("P_DATUMSART", datumsart);

        }
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        if (belegNrVon != null) {
            String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrVon);
            c.add(Restrictions.ge("l." + FertigungFac.FLR_LOS_C_NR, sVon));
            mapParameter.put("P_LOSNRVON", sVon);
        }
        if (belegNrBis != null) {
            String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrBis);
            c.add(Restrictions.le("l." + FertigungFac.FLR_LOS_C_NR, sBis));
            mapParameter.put("P_LOSNRBIS", sBis);
        }

        if (maschineIId != null) {
            MaschineDto mDto = getZeiterfassungFac().maschineFindByPrimaryKey(maschineIId);
            c.add(Restrictions.eq("maschine_i_id", maschineIId));
            mapParameter.put("P_MASCHINE", mDto.getBezeichnung());
        }

        List<?> list = c.list();
        data = new Object[list.size()][OFFENE_AG_SPALTENANZAHL];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLossollarbeitsplan a = (FLRLossollarbeitsplan) iter.next();
            FLRLos los = a.getFlrlos();
            if (fertigungsgruppeIId != null && kostenstelleIId != null) {
                if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()
                        && los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                    i--;
                } else {
                    // skip
                }
            } else if (fertigungsgruppeIId != null && kostenstelleIId == null) {
                if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()) {
                    i--;
                } else {
                    // skip
                }
            } else if (fertigungsgruppeIId == null && kostenstelleIId != null) {
                if (los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                    i--;
                } else {
                    // skip
                }
            }
        }
        if (fertigungsgruppeIId != null || kostenstelleIId != null) {
            data = new Object[i][OFFENE_AG_SPALTENANZAHL];
        }
        i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLossollarbeitsplan a = (FLRLossollarbeitsplan) iter.next();
            FLRLos los = a.getFlrlos();
            if (fertigungsgruppeIId != null && kostenstelleIId != null) {
                if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()
                        && los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                    i--;
                } else {
                    data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                    data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                    data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                    ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(),
                            theClientDto);
                    data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                    if (Helper.short2boolean(a.getB_fertig())) {
                        data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                    } else {

                        data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                    }

                    if (bSollstundenbetrachtung == true) {
                        data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                                LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null,
                                theClientDto);

                    }

                    if (a.getFlrmaschine() != null) {
                        data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                        data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                                .getC_identifikationsnr();
                        data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine()
                                .getC_inventarnummer();
                    }

                    if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                        data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe()
                                .getC_nr();
                    } else {
                        data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                    }

                    if (a.getI_maschinenversatztage() != null) {
                        data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                                (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                    } else {
                        data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                    }

                    if (los.getFlrauftrag() != null) {

                        Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                        PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId,
                                theClientDto);
                        data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                        data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                    }

                    if (los.getFlrauftrag() != null) {
                        data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                        data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                        data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                    }
                    BigDecimal bdGeliefert = new BigDecimal(0);
                    for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                        FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                        bdGeliefert = bdGeliefert.add(item.getN_menge());
                    }
                    data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                    if (los.getFlrstueckliste() != null) {
                        ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                                los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                        data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                        data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                        data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr();

                        data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                                .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                        // Offene Fehlmengen
                        data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                                .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                        LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                                .lossollarbeitsplanFindByLosIId(los.getI_id());

                        BigDecimal bdFertigungszeit = new BigDecimal(0);
                        for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                            bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit());
                        }
                        data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                        // Rahmenbestellt
                        Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                                .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                        if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                            BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                    .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                            data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                        }
                        data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                                .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                        data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                                .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                    } else {
                        data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                        data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                        data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                                theClientDto.getMandant(), theClientDto.getLocUi());
                    }

                    GregorianCalendar gc = new GregorianCalendar();
                    gc.setTime(los.getT_produktionsbeginn());
                    data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                    data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                    data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                    data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                    /**
                     * @todo material PJ 4239
                     */
                    data[i][OFFENE_AG_MATERIAL] = null;
                    data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                    data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                    data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                    // PJ 15009

                    String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                            + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                    Session session2 = FLRSessionFactory.getFactory().openSession();
                    Query query = session2.createQuery(queryf);
                    List<?> results = query.list();

                    data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                    if (results.size() > 0) {
                        BigDecimal bd = (BigDecimal) results.iterator().next();

                        if (bd != null && bd.doubleValue() > 0) {
                            data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                        }
                    }
                    session2.close();
                }
            } else if (fertigungsgruppeIId != null || kostenstelleIId != null) {
                if (fertigungsgruppeIId != null) {
                    if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()) {
                        i--;
                    } else {
                        data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                        data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                        data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                        ArtikelDto aDto = getArtikelFac()
                                .artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto);
                        data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                        if (Helper.short2boolean(a.getB_fertig())) {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                        } else {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                        }

                        if (bSollstundenbetrachtung == true) {
                            data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                                    LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null,
                                    theClientDto);

                        }

                        if (a.getFlrmaschine() != null) {
                            data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                            data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                                    .getC_identifikationsnr();
                            data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine()
                                    .getC_inventarnummer();
                        }

                        if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe()
                                    .getC_nr();
                        } else {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                        }

                        if (a.getI_maschinenversatztage() != null) {
                            data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                                    (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                        } else {
                            data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                        }

                        if (los.getFlrauftrag() != null) {

                            Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId,
                                    theClientDto);
                            data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                            data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                        }

                        if (los.getFlrauftrag() != null) {
                            data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                            data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                            data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                        }
                        BigDecimal bdGeliefert = new BigDecimal(0);
                        for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                            FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                            bdGeliefert = bdGeliefert.add(item.getN_menge());
                        }
                        data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                        if (los.getFlrstueckliste() != null) {
                            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                                    los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                            data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                            data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel()
                                    .getC_nr();

                            data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                                    .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                            // Offene Fehlmengen
                            data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                                    .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                            LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(los.getI_id());

                            BigDecimal bdFertigungszeit = new BigDecimal(0);
                            for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                                bdFertigungszeit = bdFertigungszeit
                                        .add(lossollarbeitsplanDto[j].getNGesamtzeit());
                            }
                            data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                            // Rahmenbestellt
                            Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                                    .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                            if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                                BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                        .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                                data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                            }
                            data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                            data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                        } else {
                            data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                            data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                                    theClientDto.getMandant(), theClientDto.getLocUi());
                        }

                        GregorianCalendar gc = new GregorianCalendar();
                        gc.setTime(los.getT_produktionsbeginn());
                        data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                        data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                        data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                        data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                        /**
                         * @todo material PJ 4239
                         */
                        data[i][OFFENE_AG_MATERIAL] = null;
                        data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                        data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                        data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                        // PJ 15009

                        String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                                + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                        Session session2 = FLRSessionFactory.getFactory().openSession();
                        Query query = session2.createQuery(queryf);
                        List<?> results = query.list();

                        data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                        if (results.size() > 0) {
                            BigDecimal bd = (BigDecimal) results.iterator().next();

                            if (bd != null && bd.doubleValue() > 0) {
                                data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                            }
                        }
                        session2.close();
                    }
                } else if (kostenstelleIId != null) {
                    if (los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                        i--;
                    } else {
                        data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                        data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                        data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                        ArtikelDto aDto = getArtikelFac()
                                .artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto);
                        data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                        if (Helper.short2boolean(a.getB_fertig())) {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                        } else {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                        }
                        if (bSollstundenbetrachtung == true) {
                            data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                                    LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null,
                                    theClientDto);

                        }
                        if (a.getFlrmaschine() != null) {
                            data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                            data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                                    .getC_identifikationsnr();
                            data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine()
                                    .getC_inventarnummer();
                        }
                        if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe()
                                    .getC_nr();
                        } else {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                        }

                        if (a.getI_maschinenversatztage() != null) {
                            data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                                    (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                        } else {
                            data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                        }

                        if (los.getFlrauftrag() != null) {

                            Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId,
                                    theClientDto);
                            data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                            data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                        }

                        if (los.getFlrauftrag() != null) {
                            data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                            data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                            data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                        }
                        BigDecimal bdGeliefert = new BigDecimal(0);
                        for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                            FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                            bdGeliefert = bdGeliefert.add(item.getN_menge());
                        }
                        data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                        if (los.getFlrstueckliste() != null) {
                            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                                    los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                            data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                            data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel()
                                    .getC_nr();

                            data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                                    .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                            // Offene Fehlmengen
                            data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                                    .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                            LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(los.getI_id());

                            BigDecimal bdFertigungszeit = new BigDecimal(0);
                            for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                                bdFertigungszeit = bdFertigungszeit
                                        .add(lossollarbeitsplanDto[j].getNGesamtzeit());
                            }
                            data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                            // Rahmenbestellt
                            Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                                    .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                            if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                                BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                        .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                                data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                            }
                            data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                            data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                        } else {
                            data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                            data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                                    theClientDto.getMandant(), theClientDto.getLocUi());
                        }

                        GregorianCalendar gc = new GregorianCalendar();
                        gc.setTime(los.getT_produktionsbeginn());
                        data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                        data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                        data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                        data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                        /**
                         * @todo material PJ 4239
                         */
                        data[i][OFFENE_AG_MATERIAL] = null;
                        data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                        data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                        data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                        // PJ 15009

                        String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                                + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                        Session session2 = FLRSessionFactory.getFactory().openSession();
                        Query query = session2.createQuery(queryf);
                        List<?> results = query.list();

                        data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                        if (results.size() > 0) {
                            BigDecimal bd = (BigDecimal) results.iterator().next();

                            if (bd != null && bd.doubleValue() > 0) {
                                data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                            }
                        }
                        session2.close();
                    }
                }
            } else {

                data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(),
                        theClientDto);
                data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                if (Helper.short2boolean(a.getB_fertig())) {
                    data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                } else {
                    data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                }
                if (bSollstundenbetrachtung == true) {
                    data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                            LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null, theClientDto);

                }
                if (a.getFlrmaschine() != null) {
                    data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                    data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                            .getC_identifikationsnr();
                    data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine().getC_inventarnummer();
                }
                if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                    data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe().getC_nr();
                } else {
                    data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                }

                if (a.getI_maschinenversatztage() != null) {
                    data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                            (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                } else {
                    data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                }

                if (los.getFlrauftrag() != null) {

                    Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                    PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto);
                    data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                    data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                }

                if (los.getFlrauftrag() != null) {
                    data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                    data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                    data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                }
                BigDecimal bdGeliefert = new BigDecimal(0);
                for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                    FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                    bdGeliefert = bdGeliefert.add(item.getN_menge());
                }
                data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                if (los.getFlrstueckliste() != null) {
                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                            los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                    data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                    data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                    data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr();

                    data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                            .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                    // Offene Fehlmengen
                    data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                            .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                    LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                            .lossollarbeitsplanFindByLosIId(los.getI_id());

                    BigDecimal bdFertigungszeit = new BigDecimal(0);
                    for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                        bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit());
                    }
                    data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                    // Rahmenbestellt
                    Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                            .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                    if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                        BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                        data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                    }
                    data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                            .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                    data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                            .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                } else {
                    data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                    data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                    data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                            theClientDto.getMandant(), theClientDto.getLocUi());
                }

                GregorianCalendar gc = new GregorianCalendar();
                gc.setTime(los.getT_produktionsbeginn());
                data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                /**
                 * @todo material PJ 4239
                 */
                data[i][OFFENE_AG_MATERIAL] = null;
                data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                // PJ 15009

                String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                        + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                Session session2 = FLRSessionFactory.getFactory().openSession();
                Query query = session2.createQuery(queryf);
                List<?> results = query.list();

                data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                if (results.size() > 0) {
                    BigDecimal bd = (BigDecimal) results.iterator().next();

                    if (bd != null && bd.doubleValue() > 0) {
                        data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                    }
                }
                session2.close();
            }
        }
        // Sortieren nach Artikelgruppe + AG-Beginn

        for (int k = data.length - 1; k > 0; --k) {
            for (int j = 0; j < k; ++j) {
                Object[] a1 = (Object[]) data[j];
                Object[] a2 = (Object[]) data[j + 1];

                if (((String) a1[OFFENE_AG_AG_ARTIKELGRUPPPE])
                        .compareTo((String) a2[OFFENE_AG_AG_ARTIKELGRUPPPE]) > 0) {
                    data[j] = a2;
                    data[j + 1] = a1;
                } else if (((String) a1[OFFENE_AG_AG_ARTIKELGRUPPPE])
                        .compareTo((String) a2[OFFENE_AG_AG_ARTIKELGRUPPPE]) == 0) {
                    java.util.Date k1 = (java.util.Date) a1[OFFENE_AG_AG_BEGINN];
                    java.util.Date k2 = (java.util.Date) a2[OFFENE_AG_AG_BEGINN];

                    if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                        k1 = (java.util.Date) a1[OFFENE_AG_ENDE];
                        k2 = (java.util.Date) a2[OFFENE_AG_ENDE];
                    } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                        k1 = (java.util.Date) a1[OFFENE_AG_LIEFERTERMIN];

                        if (k1 == null) {
                            k1 = new Date(0);
                        }

                        k2 = (java.util.Date) a2[OFFENE_AG_LIEFERTERMIN];

                        if (k2 == null) {
                            k2 = new Date(0);
                        }

                    }

                    k1 = Helper.cutDate(k1);
                    k2 = Helper.cutDate(k2);

                    if (k1.after(k2)) {
                        data[j] = a2;
                        data[j + 1] = a1;
                    } else if (k1.equals(k2)) {

                        String l1 = (String) a1[OFFENE_AG_LOSNUMMER];
                        String l2 = (String) a1[OFFENE_AG_LOSNUMMER];
                        if (l1.compareTo(l2) > 0) {
                            data[j] = a2;
                            data[j + 1] = a1;
                        }

                    }
                }
            }
        }

        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_OFFENE_AG,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (Exception t) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t);
    } finally {
        closeSession(session);
    }
}