Example usage for org.hibernate.criterion Restrictions le

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

Introduction

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

Prototype

public static SimpleExpression le(String propertyName, Object value) 

Source Link

Document

Apply a "less than or equal" constraint to the named property

Usage

From source file:com.lakeside.data.sqldb.PageBaseDao.java

License:Apache License

/**
 * ??Criterion,./*from   w  w w.ja v  a  2  s  .  c  o m*/
 */
protected Criterion buildPropertyFilterCriterion(final String propertyName, final Object propertyValue,
        final MatchType matchType) {
    Assert.hasText(propertyName, "propertyName?");
    Criterion criterion = null;
    try {

        //?MatchTypecriterion
        if (MatchType.EQ.equals(matchType)) {
            criterion = Restrictions.eq(propertyName, propertyValue);
        } else if (MatchType.LIKE.equals(matchType)) {
            criterion = Restrictions.like(propertyName, (String) propertyValue, MatchMode.ANYWHERE);
        } else if (MatchType.LE.equals(matchType)) {
            criterion = Restrictions.le(propertyName, propertyValue);
        } else if (MatchType.LT.equals(matchType)) {
            criterion = Restrictions.lt(propertyName, propertyValue);
        } else if (MatchType.GE.equals(matchType)) {
            criterion = Restrictions.ge(propertyName, propertyValue);
        } else if (MatchType.GT.equals(matchType)) {
            criterion = Restrictions.gt(propertyName, propertyValue);
        }
    } catch (Exception e) {
        throw ReflectionUtils.convertReflectionExceptionToUnchecked(e);
    }
    return criterion;
}

From source file:com.lewischooman.dao.MovieShowDAO.java

License:Open Source License

@Override
@SuppressWarnings(value = "unchecked")
public List<MovieShowDB> getMovieShowsByDateTheater(Date dateFrom, Date dateTo, Integer theaterId,
        boolean breakByTheater, Integer movieId) {
    Session session;//ww w. jav  a2  s . c o  m
    Criteria criteria;

    session = this.sessionFactory.getCurrentSession();
    criteria = session.createCriteria(MovieShowDB.class, "shw");
    if (dateFrom != null) {
        criteria.add(Restrictions.ge("shw.showDate", dateFrom));
    }
    if (dateTo != null) {
        criteria.add(Restrictions.le("shw.showDate", dateTo));
    }
    criteria.createAlias("shw.movie", "mov", JoinType.INNER_JOIN).createAlias("shw.hall", "hal",
            JoinType.INNER_JOIN);
    if (movieId != null) {
        criteria.add(Restrictions.eq("mov.id", movieId));
    }
    if (breakByTheater) {
        criteria.createAlias("hal.theater", "the", JoinType.INNER_JOIN);
        if (theaterId != null) {
            criteria.add(Restrictions.eq("the.id", theaterId));
        }
        criteria.addOrder(Order.asc("the.name"));
    }
    criteria.addOrder(Order.asc("mov.title")).addOrder(Order.asc("shw.showDate"))
            .addOrder(Order.asc("shw.showTime"));

    return (List<MovieShowDB>) criteria.list();
}

From source file:com.lp.server.anfrage.ejbfac.AnfrageReportFacBean.java

License:Open Source License

/**
 * Diese Methode liefert eine Liste von allen Anfragen zu einem bestimmten
 * Artikel, die nach den eingegebenen Kriterien des Benutzers
 * zusammengestellt wird. <br>//from w ww.  jav  a  2 s.  c  om
 * Achtung: Hibernate verwendet lazy initialization, d.h. der Zugriff auf
 * Collections muss innerhalb der Session erfolgen.
 * 
 * @param reportAnfragestatistikKriterienDtoI
 *            die Kriterien des Benutzers
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return ReportAnfragestatistikDto[] die Liste der Anfragen
 * @throws EJBExceptionLP
 *             Ausnahme
 */
private ReportAnfragestatistikDto[] getReportAnfragestatistik(
        ReportAnfragestatistikKriterienDto reportAnfragestatistikKriterienDtoI, TheClientDto theClientDto)
        throws EJBExceptionLP {
    ReportAnfragestatistikDto[] aResult = null;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;

    try {
        session = factory.openSession();

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

        // flranfragepositionlieferdatenReport > flranfragepositionReport
        Criteria critAnfragepositionReport = crit.createCriteria(
                AnfragepositionFac.FLR_ANFRAGEPOSITIONLIEFERDATENREPORT_FLRANFRAGEPOSITIONREPORT);

        // flranfragepositionlieferdatenReport > flranfragepositionReport >
        // flrartikel
        Criteria critArtikel = critAnfragepositionReport
                .createCriteria(AnfragepositionFac.FLR_ANFRAGEPOSITION_FLRARTIKEL);

        // flranfragepositionReport > flranfrage
        Criteria critAnfrage = critAnfragepositionReport
                .createCriteria(AnfragepositionFac.FLR_ANFRAGEPOSITION_FLRANFRAGE);

        // Einschraenkung auf den gewaehlten Artikel
        if (reportAnfragestatistikKriterienDtoI.getArtikelIId() != null) {
            critArtikel.add(Restrictions.eq("i_id", reportAnfragestatistikKriterienDtoI.getArtikelIId()));
        }

        // Einschraenkung der Anfragen auf den aktuellen Mandanten
        critAnfrage.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

        // Einschraenken nach Status
        critAnfrage.add(Restrictions.ne(AnfrageFac.FLR_ANFRAGE_ANFRAGESTATUS_C_NR,
                AnfrageServiceFac.ANFRAGESTATUS_ANGELEGT));
        critAnfrage.add(Restrictions.ne(AnfrageFac.FLR_ANFRAGE_ANFRAGESTATUS_C_NR,
                AnfrageServiceFac.ANFRAGESTATUS_STORNIERT));

        // Einschraenken nach Anfrageart
        critAnfrage.add(Restrictions.ne(AnfrageFac.FLR_ANFRAGE_ANFRAGEART_C_NR,
                AnfrageServiceFac.ANFRAGEART_LIEFERGRUPPE));

        // Einschraenkung nach Belegdatum von - bis
        if (reportAnfragestatistikKriterienDtoI.getDVon() != null) {
            critAnfrage.add(Restrictions.ge(AnfrageFac.FLR_ANFRAGE_T_BELEGDATUM,
                    reportAnfragestatistikKriterienDtoI.getDVon()));
        }

        if (reportAnfragestatistikKriterienDtoI.getDBis() != null) {
            critAnfrage.add(Restrictions.le(AnfrageFac.FLR_ANFRAGE_T_BELEGDATUM,
                    reportAnfragestatistikKriterienDtoI.getDBis()));
        }

        // es wird nach der Belegnummer sortiert
        critAnfrage.addOrder(Order.asc("c_nr"));

        List<?> list = crit.list();
        aResult = new ReportAnfragestatistikDto[list.size()];
        int iIndex = 0;
        Iterator<?> it = list.iterator();
        ReportAnfragestatistikDto reportDto = null;

        while (it.hasNext()) {
            FLRAnfragepositionlieferdatenReport flranfragepositionlieferdaten = (FLRAnfragepositionlieferdatenReport) it
                    .next();
            FLRAnfragepositionReport flranfrageposition = flranfragepositionlieferdaten
                    .getFlranfragepositionreport();
            FLRAnfrage flranfrage = flranfrageposition.getFlranfrage();

            reportDto = new ReportAnfragestatistikDto();

            reportDto.setAnfrageCNr(flranfrage.getC_nr());
            reportDto.setKundenname(
                    flranfrage.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1());

            Date datBelegdatum = flranfrage.getT_belegdatum();
            reportDto.setBelegdatumCNr(Helper.formatDatum(datBelegdatum, theClientDto.getLocUi()));

            reportDto.setIIndex(new Integer(iIndex));
            reportDto.setNAngebotenemenge(flranfragepositionlieferdaten.getN_anliefermenge());

            reportDto.setILieferzeit(flranfragepositionlieferdaten.getI_anlieferzeit());

            // der Preis wird in Mandantenwaehrung angezeigt, es gilt der
            // hinterlegte Wechselkurs
            Double ddWechselkurs = flranfrage.getF_wechselkursmandantwaehrungzuanfragewaehrung();

            BigDecimal bdPreisinmandantenwaehrung = flranfragepositionlieferdaten
                    .getN_nettogesamtpreisminusrabatt().multiply(new BigDecimal(ddWechselkurs.doubleValue()));
            bdPreisinmandantenwaehrung = Helper.rundeKaufmaennisch(bdPreisinmandantenwaehrung, 4);
            checkNumberFormat(bdPreisinmandantenwaehrung);

            reportDto.setNAngebotenerpreis(bdPreisinmandantenwaehrung);

            reportDto.setNAngefragtemenge(flranfrageposition.getN_menge());

            aResult[iIndex] = reportDto;
            iIndex++;
        }
    } finally {
        closeSession(session);
    }
    return aResult;
}

From source file:com.lp.server.anfrage.ejbfac.AnfrageReportFacBean.java

License:Open Source License

/**
 * Diese Methode liefert eine Liste von allen Lieferdaten der Anfragen eines
 * Mandanten, die nach den eingegebenen Kriterien des Benutzers
 * zusammengestellt wird. <br>/* w w  w  .  j ava2  s  .co m*/
 * Achtung: Hibernate verwendet lazy initialization, d.h. der Zugriff auf
 * Collections muss innerhalb der Session erfolgen.
 * 
 * @param kritDtoI
 *            die Kriterien des Benutzers
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return ReportAnfrageLieferdatenuebersichtDto[] alle gewuenschten
 *         Lieferdaten
 * @throws EJBExceptionLP
 *             Ausnahme
 */
public ReportAnfrageLieferdatenuebersichtDto[] getListeReportAnfrageLiederdatenuebersicht(
        ReportAnfragelieferdatenuebersichtKriterienDto kritDtoI, TheClientDto theClientDto)
        throws EJBExceptionLP {
    ReportAnfrageLieferdatenuebersichtDto[] aResult = null;
    Session session = null;

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

        // Criteria duerfen keine Texts oder Blobs enthalten!

        // Criteria anlegen fuer flranfragepositionlieferdatenreport >
        // flranfragepositionreport > flranfrage
        Criteria crit = session.createCriteria(FLRAnfragepositionlieferdatenReport.class);

        Criteria critAnfrageposition = crit.createCriteria(
                AnfragepositionFac.FLR_ANFRAGEPOSITIONLIEFERDATENREPORT_FLRANFRAGEPOSITIONREPORT);

        Criteria critAnfrage = critAnfrageposition
                .createCriteria(AnfragepositionFac.FLR_ANFRAGEPOSITION_FLRANFRAGE);

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

        // Einschraenken nach Status
        critAnfrage.add(Restrictions.ne(AnfrageFac.FLR_ANFRAGE_ANFRAGESTATUS_C_NR,
                AnfrageServiceFac.ANFRAGESTATUS_ANGELEGT));
        critAnfrage.add(Restrictions.ne(AnfrageFac.FLR_ANFRAGE_ANFRAGESTATUS_C_NR,
                AnfrageServiceFac.ANFRAGESTATUS_STORNIERT));

        // Einschraenken nach Anfrageart
        critAnfrage.add(Restrictions.ne(AnfrageFac.FLR_ANFRAGE_ANFRAGEART_C_NR,
                AnfrageServiceFac.ANFRAGEART_LIEFERGRUPPE));

        // Belegdatum von bis: flranfragepositionlieferdatenreport >
        // flranfragepositionreport > flranfrage.t_belegdatum
        if (kritDtoI.getDVon() != null) {
            critAnfrage.add(Restrictions.ge(AnfrageFac.FLR_ANFRAGE_T_BELEGDATUM, kritDtoI.getDVon()));
        }

        if (kritDtoI.getDBis() != null) {
            critAnfrage.add(Restrictions.le(AnfrageFac.FLR_ANFRAGE_T_BELEGDATUM, kritDtoI.getDBis()));
        }

        // SK: Sortierung nach Bezeichnung und Bezeichnung2
        critAnfrageposition.addOrder(Property.forName("c_bez").asc());
        critAnfrageposition.addOrder(Property.forName("c_zbez").asc());
        // Artikelcnr von bis: flranfragepositionlieferdaten >
        // flranfrageposition > flrartikel.c_nr
        Criteria critArtikel = critAnfrageposition
                .createCriteria(AnfragepositionFac.FLR_ANFRAGEPOSITION_FLRARTIKEL);

        if (kritDtoI.getArtikelCNrVon() != null || kritDtoI.getArtikelCNrBis() != null) {

            String cNrIdentvon = kritDtoI.getArtikelCNrVon();
            String cNrIdentbis = kritDtoI.getArtikelCNrBis();

            if (cNrIdentvon != null && cNrIdentvon.length() > 0 && cNrIdentbis != null
                    && cNrIdentbis.length() > 0) {
                critArtikel.add(Restrictions.between("c_nr", cNrIdentvon, cNrIdentbis));
            } else if (cNrIdentvon != null && cNrIdentvon.length() > 0) {
                critArtikel.add(Restrictions.ge("c_nr", cNrIdentvon));
            } else if (cNrIdentbis != null && cNrIdentbis.length() > 0) {
                critArtikel.add(Restrictions.le("c_nr", cNrIdentbis));
            }
        }

        // nur Projekt
        if (kritDtoI.getBNurProjekt()) {
            critAnfrage.add(Restrictions.eq("c_bez", kritDtoI.getProjektCBez()));
        }

        // inklusive Lieferdaten == null; Hibernate: per default null valued
        // properties are included
        // aber: aufgrund der Implementierung gilt: inklusive Lieferdaten ==
        // 0
        if (!kritDtoI.getBMitLiefermengenNull()) {
            crit.add(Restrictions.ne(AnfragepositionFac.FLR_ANFRAGEPOSITIONLIEFERDATEN_N_ANLIEFERMENGE,
                    new BigDecimal(0)));
        }

        // Sortierung nach Projekt
        if (kritDtoI.getBSortierungNachProjekt()) {
            critAnfrage.addOrder(Property.forName("c_bez").asc());
        } else {
            // per default wird nach der Artikelcnr sortiert
            critArtikel.addOrder(Property.forName("c_nr").asc());
        }

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

        aResult = new ReportAnfrageLieferdatenuebersichtDto[list.size()];
        int iIndex = 0;
        Iterator<?> it = list.iterator();
        ReportAnfrageLieferdatenuebersichtDto reportDto = null;

        while (it.hasNext()) {
            FLRAnfragepositionlieferdatenReport flranfragepositionlieferdaten = (FLRAnfragepositionlieferdatenReport) it
                    .next();
            FLRAnfragepositionReport flranfrageposition = flranfragepositionlieferdaten
                    .getFlranfragepositionreport();
            FLRArtikel flrartikel = flranfrageposition.getFlrartikel();
            FLRAnfrage flranfrage = flranfrageposition.getFlranfrage();

            reportDto = new ReportAnfrageLieferdatenuebersichtDto();

            reportDto.setCNrArtikelcnr(flranfrageposition.getFlrartikel().getC_nr());
            reportDto.setNLiefermenge(flranfragepositionlieferdaten.getN_anliefermenge());
            reportDto.setEinheitCNr(flrartikel.getEinheit_c_nr().trim());
            reportDto.setArtikelIId(flrartikel.getI_id());
            reportDto.setNLieferpreisInAnfragewaehrung(
                    flranfragepositionlieferdaten.getN_nettogesamtpreisminusrabatt());
            reportDto.setAnfrageIId(flranfrage.getI_id());
            reportDto.setIAnlieferzeit(flranfragepositionlieferdaten.getI_anlieferzeit());
            reportDto.setLieferantName(
                    flranfrage.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1());
            reportDto.setAnfrageCNr(flranfrage.getC_nr());
            reportDto.setAnfrageCBez(flranfrage.getC_bez());
            reportDto.setWaehrungCNr(flranfrage.getWaehrung_c_nr_anfragewaehrung());
            reportDto.setFWechselkursMandantwaehrungZuAnfragewaehrung(
                    flranfrage.getF_wechselkursmandantwaehrungzuanfragewaehrung());

            aResult[iIndex] = reportDto;
            iIndex++;
        }
    } finally {
        closeSession(session);
    }
    return aResult;
}

From source file:com.lp.server.angebot.ejbfac.AngebotReportFacBean.java

License:Open Source License

/**
 * reportflr: 2 Diese Methode liefert eine Liste von allen
 * Angebotspositionen eines Mandanten, die nach den eingegebenen Kriterien
 * des Benutzers zusammengestellt wird. <br>
 * Achtung: Hibernate verwendet lazy initialization, d.h. der Zugriff auf
 * Collections muss innerhalb der Session erfolgen.
 * //from   ww  w. j  a v  a 2s .  c o  m
 * @param kritDtoI
 *            die Filter- und Sortierkriterien
 * @param cAktuellerReport
 *            wird fuer alle und offene Angebote verwendet
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return ReportAngebotpositionDto[] die Liste aller Positionen.
 * @throws EJBExceptionLP
 *             Ausnahme
 */
private ReportAngebotpositionJournalDto[] getListeAngebotpositionenJournal(
        ReportAngebotJournalKriterienDto kritDtoI, String erledigungsgrundCNr, String cAktuellerReport,
        TheClientDto theClientDto) throws EJBExceptionLP {

    ReportAngebotpositionJournalDto[] aResult = null;
    Session session = null;
    // es gilt das Locale des Benutzers
    Locale locDruck = theClientDto.getLocUi();
    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(FLRAngebotpositionReport.class);
        Criteria critAngebot = crit.createCriteria(AngebotpositionFac.FLR_ANGEBOTPOSITION_FLRANGEBOT);

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

        // Einschraenken nach Status
        if (cAktuellerReport.equals(AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ALLE)) {
            if (kritDtoI.getBNurErledigteAngebote()) {
                critAngebot.add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_ANGEBOTSTATUS_C_NR,
                        AngebotServiceFac.ANGEBOTSTATUS_ERLEDIGT));
                if (erledigungsgrundCNr != null) {
                    critAngebot.add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_ANGEBOTERLEDIGUNGSGRUND_C_NR,
                            erledigungsgrundCNr));
                }
            } else {
                // PJ 07/0011040
                /*
                 * critAngebot.add(Restrictions.ne(
                 * AngebotFac.FLR_ANGEBOT_ANGEBOTSTATUS_C_NR,
                 * AngebotServiceFac.ANGEBOTSTATUS_ANGELEGT));
                 */
                critAngebot.add(Restrictions.ne(AngebotFac.FLR_ANGEBOT_ANGEBOTSTATUS_C_NR,
                        AngebotServiceFac.ANGEBOTSTATUS_STORNIERT));
            }
        } else if (cAktuellerReport.equals(AngebotReportFac.REPORT_ANGEBOT_JOURNAL_OFFENE)) {
            critAngebot.add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_ANGEBOTSTATUS_C_NR,
                    AngebotServiceFac.ANGEBOTSTATUS_OFFEN));
        }

        // UW 22.03.06 alle nicht alternativen Positionen mit positiver
        // Menge
        crit.add(Restrictions.isNotNull(AngebotpositionFac.FLR_ANGEBOTPOSITION_N_MENGE));
        crit.add(Restrictions.gt(AngebotpositionFac.FLR_ANGEBOTPOSITION_N_MENGE, new BigDecimal(0)));
        crit.add(Restrictions.eq(AngebotpositionFac.FLR_ANGEBOTPOSITION_B_ALTERNATIVE, new Short((short) 0)));

        // Einschraenkung nach einer bestimmten Kostenstelle
        if (kritDtoI.kostenstelleIId != null) {
            critAngebot
                    .add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_KOSTENSTELLE_I_ID, kritDtoI.kostenstelleIId));
        }

        // Einschraenkung nach einem bestimmten Kunden
        if (kritDtoI.kundeIId != null) {
            critAngebot
                    .add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_KUNDE_I_ID_ANGEBOTSADRESSE, kritDtoI.kundeIId));
        }

        // Einschraenkung nach einem bestimmten Vertreter
        if (kritDtoI.vertreterIId != null) {
            critAngebot.add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_VERTRETER_I_ID, kritDtoI.vertreterIId));
        }
        /*
         * // Belegdatum von bis: flrangebotposition >
         * flrangebot.t_belegdatum if (kritDtoI.dVon != null) {
         * critAngebot.add(Restrictions.ge(
         * AngebotFac.FLR_ANGEBOT_T_BELEGDATUM, kritDtoI.dVon)); }
         * 
         * if (kritDtoI.dBis != null) { critAngebot.add(Restrictions.le(
         * AngebotFac.FLR_ANGEBOT_T_BELEGDATUM, kritDtoI.dBis)); }
         */
        if (kritDtoI.dVon != null && kritDtoI.dBis != null) {
            Calendar cal = Calendar.getInstance();
            Timestamp von = null;
            cal.setTimeInMillis(kritDtoI.dVon.getTime());
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MILLISECOND, 0);
            von = new Timestamp(cal.getTimeInMillis());

            Timestamp bis = null;
            cal.setTimeInMillis(kritDtoI.dBis.getTime());
            cal.set(Calendar.MINUTE, 59);
            cal.set(Calendar.SECOND, 59);
            cal.set(Calendar.HOUR_OF_DAY, 23);
            bis = new Timestamp(cal.getTimeInMillis());
            critAngebot.add(Restrictions.between(AngebotFac.FLR_ANGEBOT_T_BELEGDATUM, von, bis));
        }

        // Einschraenkung nach Belegnummer von - bis
        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 (kritDtoI.sBelegnummerVon != null) {
            critAngebot.add(Restrictions.ge("c_nr", HelperServer.getBelegnummernFilterForHibernateCriterias(f,
                    iGeschaeftsjahr, sMandantKuerzel, kritDtoI.sBelegnummerVon)));
        }

        if (kritDtoI.sBelegnummerBis != null) {
            critAngebot.add(Restrictions.le("c_nr", HelperServer.getBelegnummernFilterForHibernateCriterias(f,
                    iGeschaeftsjahr, sMandantKuerzel, kritDtoI.sBelegnummerBis)));
        }

        // Sortierung nach Kostenstelle ist immer die erste Sortierung
        if (kritDtoI.bSortiereNachKostenstelle) {
            critAngebot.createCriteria(AngebotFac.FLR_ANGEBOT_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
        }

        // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle
        if (kritDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            critAngebot.createCriteria(AngebotFac.FLR_ANGEBOT_FLRKUNDE).createCriteria(KundeFac.FLR_PARTNER)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
        }

        // Sortierung nach Vertreter, eventuell innerhalb der Kostenstelle
        if (kritDtoI.iSortierung == ReportAngebotJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            critAngebot.createCriteria(AngebotFac.FLR_ANGEBOT_FLRVERTRETER)
                    .addOrder(Order.asc(PersonalFac.FLR_PERSONAL_C_KURZZEICHEN));
        }

        if (cAktuellerReport.equals(AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ALLE)) {
            if (kritDtoI.getBNurErledigteAngebote()) {
                critAngebot.addOrder(Order.asc(AngebotFac.FLR_ANGEBOT_ANGEBOTERLEDIGUNGSGRUND_C_NR));
            } else {
                critAngebot.addOrder(Order.asc("c_nr"));
            }
        } else {
            // es wird in jedem Fall nach der Belegnummer sortiert
            critAngebot.addOrder(Order.asc("c_nr"));
        }
        List<?> list = crit.list();
        aResult = new ReportAngebotpositionJournalDto[list.size()];
        int iIndex = 0;
        Iterator<?> it = list.iterator();
        ReportAngebotpositionJournalDto reportDto = null;

        while (it.hasNext()) {
            FLRAngebotpositionReport flrangebotposition = (FLRAngebotpositionReport) it.next();
            FLRAngebot flrangebot = flrangebotposition.getFlrangebot();
            FLRArtikel flrartikel = flrangebotposition.getFlrartikel();

            reportDto = new ReportAngebotpositionJournalDto();
            reportDto.setIId(flrangebot.getI_id());
            reportDto.setCNr(flrangebot.getC_nr());

            if (flrangebot.getAngeboterledigungsgrund_c_nr() != null) {
                AngeboterledigungsgrundDto angeboterledigungsgrundDto = getAngebotServiceFac()
                        .angeboterledigungsgrundFindByPrimaryKey(flrangebot.getAngeboterledigungsgrund_c_nr(),
                                theClientDto);
                reportDto.setAngeboterledigungsgrundCNr(angeboterledigungsgrundDto.getBezeichnung());
            }
            reportDto.setKundeCName1(flrangebot.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1());
            reportDto.setKundeCName2(flrangebot.getFlrkunde().getFlrpartner().getC_name2vornamefirmazeile2());
            reportDto.setKundeCName3(flrangebot.getFlrkunde().getFlrpartner().getC_name3vorname2abteilung());
            reportDto.setKundeStrasse(flrangebot.getFlrkunde().getFlrpartner().getC_strasse());
            if (flrangebot.getFlrkunde().getFlrpartner().getFlrlandplzort() != null) {
                reportDto.setKundePlz(flrangebot.getFlrkunde().getFlrpartner().getFlrlandplzort().getC_plz());
                reportDto.setKundeLkz(
                        flrangebot.getFlrkunde().getFlrpartner().getFlrlandplzort().getFlrland().getC_lkz());
                reportDto.setKundeOrt(
                        flrangebot.getFlrkunde().getFlrpartner().getFlrlandplzort().getFlrort().getC_name());
            }

            reportDto.setKundeEmail(flrangebot.getFlrkunde().getFlrpartner().getC_email());

            reportDto.setKundeFax(flrangebot.getFlrkunde().getFlrpartner().getC_fax());

            reportDto.setKundeTelefon(flrangebot.getFlrkunde().getFlrpartner().getC_telefon());

            AngebotDto angebotDto = getAngebotFac().angebotFindByPrimaryKey(flrangebot.getI_id(), theClientDto);
            if (angebotDto.getAnsprechpartnerIIdKunde() != null) {
                AnsprechpartnerDto ansprechpartnerDto = getAnsprechpartnerFac()
                        .ansprechpartnerFindByPrimaryKey(angebotDto.getAnsprechpartnerIIdKunde(), theClientDto);

                reportDto.setAnsprechpartnerNachname(
                        ansprechpartnerDto.getPartnerDto().getCName1nachnamefirmazeile1());
                reportDto.setAnsprechpartnerVorname(
                        ansprechpartnerDto.getPartnerDto().getCName2vornamefirmazeile2());
                reportDto.setAnsprechpartnerAnrede(ansprechpartnerDto.getPartnerDto().getAnredeCNr());
                reportDto.setAnsprechpartnerTitel(ansprechpartnerDto.getPartnerDto().getCTitel());

                reportDto.setAnsprechpartnerFax(ansprechpartnerDto.getCDirektfax());

                reportDto.setAnsprechpartnerFaxDw(ansprechpartnerDto.getCFax());

                reportDto.setAnsprechpartnerTelefon(ansprechpartnerDto.getCHandy());

                reportDto.setAnsprechpartnerTelefonDw(ansprechpartnerDto.getCTelefon());

                reportDto.setAnsprechpartnerEmail(ansprechpartnerDto.getCEmail());

            }

            reportDto.setKostenstelleCNr(flrangebot.getFlrkostenstelle().getC_nr());
            reportDto.setVertreterCName1(
                    getPersonalFac().personalFindByPrimaryKey(flrangebot.getVertreter_i_id(), theClientDto)
                            .getPartnerDto().formatFixName2Name1());
            reportDto.setProjektBez(flrangebot.getC_bez());
            reportDto.setRealisierungstermin(
                    Helper.formatDatum(flrangebot.getT_realisierungstermin(), theClientDto.getLocUi()));

            if (flrangebot.getAngeboterledigungsgrund_c_nr() != null)
                if (flrangebot.getAngeboterledigungsgrund_c_nr()
                        .equals(AngebotServiceFac.ANGEBOTERLEDIGUNGSGRUND_AUFTRAGERHALTEN)) {
                    AuftragDto[] auftrag = getAuftragFac().auftragFindByAngebotIId(flrangebot.getI_id(),
                            theClientDto);
                    if (auftrag != null && auftrag.length > 0) {
                        reportDto.setErledigungsgrundABNr(auftrag[0].getCNr());
                    }
                }

            // UW 08.03.06 Es kann sich um eine Ident, Handeingabe oder
            // AGStueckliste handeln
            String identCNr = null;
            String identCBez = null;

            if (flrangebotposition.getAngebotpositionart_c_nr()
                    .equals(AngebotServiceFac.ANGEBOTPOSITIONART_IDENT)) {
                identCNr = flrartikel.getC_nr();
                identCBez = getArtikelFac().formatArtikelbezeichnungEinzeiligOhneExc(flrartikel.getI_id(),
                        theClientDto.getLocUi());
            } else if (flrangebotposition.getAngebotpositionart_c_nr()
                    .equals(AngebotServiceFac.ANGEBOTPOSITIONART_AGSTUECKLISTE)) {
                identCBez = flrangebotposition.getFlragstkl().getC_bez();
            } else if (flrangebotposition.getAngebotpositionart_c_nr()
                    .equals(AngebotServiceFac.ANGEBOTPOSITIONART_HANDEINGABE)) {
                identCBez = getArtikelFac().formatArtikelbezeichnungEinzeiligOhneExc(flrartikel.getI_id(),
                        theClientDto.getLocUi());
            }

            reportDto.setArtikelCNr(identCNr);
            reportDto.setArtikelCBez(identCBez);

            reportDto.setNMenge(flrangebotposition.getN_menge());
            reportDto.setEinheitCNr(flrangebotposition.getEinheit_c_nr() == null ? ""
                    : flrangebotposition.getEinheit_c_nr().trim());
            reportDto.setDAuftragwahrscheinlichkeit(flrangebot.getF_auftragswahrscheinlichkeit());
            reportDto.setNWert(flrangebot.getN_gesamtangebotswertinangebotswaehrung());

            // Umrechnen in Mandantenwaehrung, Positionspreise sind in
            // Belegwaehrung abgelegt
            BigDecimal nPreisAmDruck = flrangebotposition
                    .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte();

            nPreisAmDruck = getBetragMalWechselkurs(nPreisAmDruck, Helper.getKehrwert(new BigDecimal(
                    flrangebot.getF_wechselkursmandantwaehrungzuangebotswaehrung().doubleValue())));

            reportDto.setNPreis(nPreisAmDruck);

            aResult[iIndex] = reportDto;
            iIndex++;
        }
    } 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 aResult;
}

From source file:com.lp.server.angebot.ejbfac.AngebotReportFacBean.java

License:Open Source License

/**
 * Alle abgelehnte Angebote drucken.//from  w w w  .j  av a 2  s  .c om
 * 
 * @param kritDtoI
 *            die Filter- und Sortierkriterien
 * @param theClientDto
 *            der atkuelle Benutzer
 * @return JasperPrint der Druck
 * @throws EJBExceptionLP
 *             Ausnahme
 */
public JasperPrintLP printAngebotAbgelehnte(ReportAngebotJournalKriterienDto kritDtoI,
        TheClientDto theClientDto) throws EJBExceptionLP {

    JasperPrintLP oPrint = null;
    StringBuffer buff = null;
    StringBuffer zbuff = null;
    cAktuellerReport = AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE;
    try {
        Session session = null;
        try {
            SessionFactory factory = FLRSessionFactory.getFactory();
            session = factory.openSession();
            // Criteria anlegen fuer alle referenzierten Objekte anlegen
            Criteria crit = session.createCriteria(FLRAngebot.class);
            // Einschraenken nach Mandant
            crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
            // Einschraenken nach Status
            crit.add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_ANGEBOTSTATUS_C_NR,
                    AngebotServiceFac.ANGEBOTSTATUS_ERLEDIGT));
            crit.add(Restrictions.isNotNull(AngebotFac.FLR_ANGEBOT_T_MANUELLERLEDIGT));
            crit.add(Restrictions.isNotNull(AngebotFac.FLR_ANGEBOT_ANGEBOTERLEDIGUNGSGRUND_C_NR));
            // Einschraenkung nach einem bestimmten Kunden
            if (kritDtoI.kundeIId != null) {
                crit.add(Restrictions.eq(AngebotFac.FLR_ANGEBOT_KUNDE_I_ID_ANGEBOTSADRESSE, kritDtoI.kundeIId));
            }
            if (kritDtoI.dVon != null) {
                crit.add(Restrictions.ge(AngebotFac.FLR_ANGEBOT_T_MANUELLERLEDIGT, kritDtoI.dVon));
            }

            if (kritDtoI.dBis != null) {
                crit.add(Restrictions.le(AngebotFac.FLR_ANGEBOT_T_MANUELLERLEDIGT, kritDtoI.dBis));
            }
            // es wird in jedem Fall nach der Belegnummer sortiert

            crit.addOrder(Order.asc(AngebotFac.FLR_ANGEBOT_ANGEBOTERLEDIGUNGSGRUND_C_NR));
            crit.addOrder(Order.asc("c_nr"));

            int iIndex = 0;
            List<?> list = crit.list();
            Iterator<?> it = list.iterator();
            int iAnzahlZeilen = list.size(); // Anzahl der Positionen
            int iAnzahlSpalten = 12; // Anzahl der Spalten in der Gruppe
            data = new Object[iAnzahlZeilen][iAnzahlSpalten];
            HashMap<String, Integer> hm = new HashMap<String, Integer>();
            while (it.hasNext()) {
                FLRAngebot flrangebot = (FLRAngebot) it.next();
                // erledigungsgruende zaehlen
                String erledigungsgrund = flrangebot.getAngeboterledigungsgrund_c_nr();
                Integer value = hm.get(erledigungsgrund);
                if (value == null) {
                    hm.put(erledigungsgrund, 1);
                } else {
                    hm.put(erledigungsgrund, value + 1); // wird ersetzt
                }
                // Daten fuer den Report
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_ANGEBOTCNR] = flrangebot
                        .getC_nr();
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_KUNDECNAME1] = flrangebot
                        .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_KOSTENSTELLECNR] = flrangebot
                        .getFlrkostenstelle().getC_nr();
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_VERTRETERCNAME1] = flrangebot
                        .getFlrvertreter().getFlrpartner().getC_name1nachnamefirmazeile1();
                if (flrangebot.getC_bez() != null) {
                    data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_PROJEKTBEZ] = flrangebot
                            .getC_bez();
                }
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_REALISIERUNGSTERMIN] = Helper
                        .formatDatum(flrangebot.getT_realisierungstermin(), theClientDto.getLocUi());
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_ANGEBOTERLEDIGUNGSGRUND] = flrangebot
                        .getAngeboterledigungsgrund_c_nr();
                if (flrangebot.getAngeboterledigungsgrund_c_nr() != null)
                    if (flrangebot.getAngeboterledigungsgrund_c_nr()
                            .equals(AngebotServiceFac.ANGEBOTERLEDIGUNGSGRUND_AUFTRAGERHALTEN)) {
                        AuftragDto[] auftrag = getAuftragFac().auftragFindByAngebotIId(flrangebot.getI_id(),
                                theClientDto);
                        data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_ERLEDIGUNGSGRUND_AB_NR] = auftrag[0]
                                .getCNr();
                    }
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_GESAMTANGEBOTSWERT] = flrangebot
                        .getN_gesamtangebotswertinangebotswaehrung();
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_INTERNERKOMMENTAR] = flrangebot
                        .getX_internerkommentar();
                data[iIndex][AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE_EXTERNERKOMMENTAR] = flrangebot
                        .getX_externerkommentar();

                iIndex++;
            }
            // erledigungsgruende nach der anzahl sortieren
            buff = new StringBuffer("");
            zbuff = new StringBuffer("");
            Map<Integer, String> sortedMap = new TreeMap<Integer, String>();
            for (Iterator<String> it3 = hm.keySet().iterator(); it3.hasNext();) {
                String cGrund = (String) it3.next();
                sortedMap.put(-hm.get(cGrund), cGrund); // negieren, damit
                // die reihenfolge
                // stimmt (die
                // grossen zahlen
                // zuerst), muss
                // nachher wieder
                // umgedreht werden
                buff.append(cGrund);
                buff.append("\n");
                zbuff.append(hm.get(cGrund));
                zbuff.append("\n");
            }
        } 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);
            }
        }
        // Erstellung des Report
        HashMap<String, Object> parameter = new HashMap<String, Object>();
        // die Parameter dem Report uebergeben
        parameter.put(LPReport.P_SORTIERUNG, buildSortierungAngebotJournal(kritDtoI, theClientDto));
        parameter.put(LPReport.P_FILTER, buildFilterAngebotJournal(kritDtoI, theClientDto));

        if (kritDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(true));
        } else {
            parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(false));
        }

        parameter.put("P_TITLE", getTextRespectUISpr("angb.print.abgelehnte", theClientDto.getMandant(),
                theClientDto.getLocUi()));
        String cBuffer = buff.toString().trim();
        parameter.put("P_STATISTIK_SPALTE1", cBuffer);
        parameter.put("P_STATISTIK_SPALTE2", zbuff.toString());
        parameter.put(P_MANDANTWAEHRUNG, theClientDto.getSMandantenwaehrung());

        initJRDS(parameter, AngebotReportFac.REPORT_MODUL, AngebotReportFac.REPORT_ANGEBOT_JOURNAL_ABGELEHNTE,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

        oPrint = getReportPrint();
    } catch (Throwable t) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_DRUCKEN, new Exception(t));
    }

    return oPrint;
}

From source file:com.lp.server.angebot.ejbfac.AngebotReportFacBean.java

License:Open Source License

private ReportAngebotsstatistikDto[] getReportAngebotsstatistik(
        ReportAngebotsstatistikKriterienDto reportAngebotsstatistikKriterienDtoI, TheClientDto theClientDto)
        throws EJBExceptionLP {

    ReportAngebotsstatistikDto[] aResult = null;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;//  w  w w  .j av  a 2 s .  c  o m

    try {
        session = factory.openSession();

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

        // flranfragepositionlieferdatenReport > flranfragepositionReport >
        // flrartikel
        Criteria critArtikel = crit.createCriteria("flrartikel");

        // flranfragepositionReport > flranfrage
        Criteria critAngebot = crit.createCriteria("flrangebot");

        // Einschraenkung der Anfragen auf den aktuellen Mandanten
        critAngebot.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

        critArtikel.add(Restrictions.eq("i_id", reportAngebotsstatistikKriterienDtoI.getArtikelIId()));

        // Einschraenkung nach Belegdatum von - bis
        if (reportAngebotsstatistikKriterienDtoI.getDVon() != null) {
            critAngebot.add(Restrictions.ge(AngebotFac.FLR_ANGEBOT_T_BELEGDATUM,
                    reportAngebotsstatistikKriterienDtoI.getDVon()));
        }

        if (reportAngebotsstatistikKriterienDtoI.getDBis() != null) {
            critAngebot.add(Restrictions.le(AngebotFac.FLR_ANGEBOT_T_BELEGDATUM,
                    reportAngebotsstatistikKriterienDtoI.getDBis()));
        }

        critAngebot.addOrder(Order.desc("c_nr"));
        crit.addOrder(Order.asc("i_sort"));

        List<?> list = crit.list();
        aResult = new ReportAngebotsstatistikDto[list.size()];
        int iIndex = 0;
        Iterator<?> it = list.iterator();
        ReportAngebotsstatistikDto reportDto = null;

        while (it.hasNext()) {
            FLRAngebotpositionReport flrangebotpositionlieferdaten = (FLRAngebotpositionReport) it.next();
            FLRAngebot flrangebot = flrangebotpositionlieferdaten.getFlrangebot();

            reportDto = new ReportAngebotsstatistikDto();
            reportDto.setAngebotCNr(flrangebot.getC_nr());
            reportDto.setKundenname(flrangebot.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1());

            Date datBelegdatum = new Date(flrangebot.getT_belegdatum().getTime());
            reportDto.setBelegdatumCNr(Helper.formatDatum(datBelegdatum, theClientDto.getLocUi()));

            reportDto.setIIndex(new Integer(iIndex));
            reportDto.setNAngebotenemenge(flrangebotpositionlieferdaten.getN_menge());

            // der Preis wird in Mandantenwaehrung angezeigt, es gilt der
            // hinterlegte Wechselkurs

            BigDecimal bdPreisinmandantenwaehrung = flrangebotpositionlieferdaten
                    .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte();

            reportDto.setNAngebotenerpreis(bdPreisinmandantenwaehrung);
            reportDto.setNMaterialzuschlag(flrangebotpositionlieferdaten.getN_materialzuschlag());

            reportDto.setNAngebotenemenge(flrangebotpositionlieferdaten.getN_menge());

            aResult[iIndex] = reportDto;
            iIndex++;
        }
    } finally {
        closeSession(session);
    }
    return aResult;
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printArtikelstatistik(Integer artikelIId, java.sql.Date dVon, java.sql.Date dBis,
        Integer iOption, boolean bMonatsstatistik, boolean bEingeschraenkt, boolean bMitHandlagerbewegungen,
        boolean bMitBewegungsvorschau, boolean bMitHistory, TheClientDto theClientDto) throws RemoteException {
    if (artikelIId == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null"));
    }//from w w w . jav a2  s  . co m

    boolean bWeReferenzAndrucken = false;
    try {
        ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ARTIKEL, ParameterFac.PARAMETER_WE_REFERENZ_IN_STATISTIK);
        bWeReferenzAndrucken = ((Boolean) parameter.getCWertAsObject()).booleanValue();

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

    // Erstellung des Reports
    HashMap<String, Object> parameter = new HashMap<String, Object>();

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

    org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class).createAlias("flrartikel", "a")
            .add(Restrictions.eq("a.i_id", artikelIId))

            .createAlias("flrlager", "l");

    if (bMitHistory == false) {
        crit.add(Restrictions.eq("b_historie", Helper.boolean2Short(false)));
    }

    parameter.put("P_MITBUCHUNGSDETAILS", new Boolean(bMitHistory));

    parameter.put("P_MITBEWEGUNGSVORSCHAU", new Boolean(bMitBewegungsvorschau));
    parameter.put("P_EINGESCHRAENKT", new Boolean(bEingeschraenkt));

    if (!getMandantFac().darfAnwenderAufZusatzfunktionZugreifen(
            MandantFac.ZUSATZFUNKTION_ZENTRALER_ARTIKELSTAMM, theClientDto)) {
        crit.add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant()));

    } else {
        if (getMandantFac().darfAnwenderAufZusatzfunktionZugreifen(MandantFac.ZUSATZFUNKTION_GETRENNTE_LAGER,
                theClientDto)) {
            crit.add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant()));

        }
    }
    // PJ 17221
    // crit.add(
    // Restrictions.not(Restrictions.eq("l.lagerart_c_nr",
    // LagerFac.LAGERART_WERTGUTSCHRIFT)));
    crit.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM))
            .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT))
            .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG));
    if (dVon != null) {
        crit.add(Restrictions.ge(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, dVon));
        parameter.put("P_VON", new java.sql.Timestamp(dVon.getTime()));
    }
    if (dBis != null) {
        crit.add(Restrictions.le(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, dBis));
        parameter.put("P_BIS", new java.sql.Timestamp(dBis.getTime()));
    }

    boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF,
            theClientDto);
    boolean darfVerkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_VERKAUF,
            theClientDto);
    parameter.put("P_RECHT_LP_DARF_PREISE_SEHEN_EINKAUF", darfEinkaufspreisSehen);
    parameter.put("P_RECHT_LP_DARF_PREISE_SEHEN_VERKAUF", darfVerkaufspreisSehen);
    if (iOption == ArtikelFac.REPORT_ARTIKELSTATISTIK_OPTION_ALLE) {
        parameter.put("P_MITSUMMENZEILE", new Boolean(false));
        parameter.put("P_BELEGARTEN",
                getTextRespectUISpr("lp.alle", theClientDto.getMandant(), theClientDto.getLocUi()));
        parameter.put("P_BELEGART_AUSWAHL", "lp.alle");
    } else if (iOption == ArtikelFac.REPORT_ARTIKELSTATISTIK_OPTION_EK) {
        parameter.put("P_MITSUMMENZEILE", new Boolean(true));
        parameter.put("P_BELEGARTEN",
                getTextRespectUISpr("lp.einkauf", theClientDto.getMandant(), theClientDto.getLocUi()));
        String[] belegarten = new String[1];
        belegarten[0] = LocaleFac.BELEGART_BESTELLUNG;
        crit.add(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, belegarten));
        parameter.put("P_BELEGART_AUSWAHL", "lp.einkauf");
    } else if (iOption == ArtikelFac.REPORT_ARTIKELSTATISTIK_OPTION_VK) {
        parameter.put("P_MITSUMMENZEILE", new Boolean(true));
        parameter.put("P_BELEGARTEN",
                getTextRespectUISpr("lp.verkauf", theClientDto.getMandant(), theClientDto.getLocUi()));
        String[] belegarten = new String[3];
        belegarten[0] = LocaleFac.BELEGART_RECHNUNG;
        belegarten[1] = LocaleFac.BELEGART_LIEFERSCHEIN;
        belegarten[2] = LocaleFac.BELEGART_GUTSCHRIFT;
        crit.add(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, belegarten));
        parameter.put("P_BELEGART_AUSWAHL", "lp.verkauf");
    } else if (iOption == ArtikelFac.REPORT_ARTIKELSTATISTIK_OPTION_FERTIGUNG) {
        parameter.put("P_MITSUMMENZEILE", new Boolean(true));
        parameter.put("P_BELEGARTEN",
                getTextRespectUISpr("lp.fertigung", theClientDto.getMandant(), theClientDto.getLocUi()));
        String[] belegarten = new String[2];
        belegarten[0] = LocaleFac.BELEGART_LOS;
        belegarten[1] = LocaleFac.BELEGART_LOSABLIEFERUNG;
        crit.add(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, belegarten));
        parameter.put("P_BELEGART_AUSWAHL", "lp.fertigung");
    }

    if (bMitHandlagerbewegungen == false) {
        String[] belegarten = new String[1];
        belegarten[0] = LocaleFac.BELEGART_HAND;
        crit.add(Restrictions.not(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, belegarten)));

    }
    parameter.put("P_MITHANDLAGERBEWEGUNGEN", new Boolean(bMitHandlagerbewegungen));

    if (bEingeschraenkt) {
        crit.setMaxResults(50);
    }

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

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

    ArrayList<Object[]> al = new ArrayList<Object[]>();

    // PJ 14202

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

    String sQuery = "FROM FLRInventurstand AS i WHERE i.flrartikel.i_id=" + artikelIId;
    if (dVon != null) {

        sQuery += " AND i.flrinventur.t_inventurdatum>='" + Helper.formatDateWithSlashes(dVon) + "'";

    }
    if (dBis != null) {

        sQuery += " AND i.flrinventur.t_inventurdatum<='" + Helper.formatDateWithSlashes(dBis) + "'";

    }
    sQuery += " ORDER BY i.flrinventur.t_inventurdatum DESC";

    Query inventurliste = sessionInv.createQuery(sQuery);

    ArrayList alInventurliste = new ArrayList();

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

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

    while (resultListInventur.hasNext()) {
        FLRInventurstand item = (FLRInventurstand) resultListInventur.next();

        alInventurliste.add(item);

    }

    while (resultListIterator.hasNext()) {
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();

        if (bMitHistory == true || lagerbewegung.getN_menge().doubleValue() > 0) {

            while (alInventurliste.size() > 0) {
                FLRInventurstand flr = (FLRInventurstand) alInventurliste.get(0);

                if (lagerbewegung.getT_belegdatum().getTime() <= flr.getFlrinventur().getT_inventurdatum()
                        .getTime()) {

                    Object[] zeile = new Object[REPORT_ARTIKELSTATISTIK_ANZAHL_SPALTEN];
                    zeile[REPORT_ARTIKELSTATISTIK_BEWEGUNGSVORSCHAU] = new Boolean(false);
                    zeile[REPORT_ARTIKELSTATISTIK_BELEGART] = "Inventurstand";

                    java.sql.Timestamp ts = new java.sql.Timestamp(
                            flr.getFlrinventur().getT_inventurdatum().getTime());
                    zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = ts;
                    zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM] = ts;
                    zeile[REPORT_ARTIKELSTATISTIK_BUCHUNGSZEIT] = ts;

                    zeile[REPORT_ARTIKELSTATISTIK_INVENTURMENGE] = flr.getN_inventurmenge();
                    zeile[REPORT_ARTIKELSTATISTIK_BELEGNUMMER] = flr.getFlrinventur().getC_bez();

                    al.add(zeile);
                    alInventurliste.remove(0);
                } else {
                    break;
                }
            }

            Object[] zeile = new Object[REPORT_ARTIKELSTATISTIK_ANZAHL_SPALTEN];
            zeile[REPORT_ARTIKELSTATISTIK_BEWEGUNGSVORSCHAU] = new Boolean(false);
            String sBelegartCNr = lagerbewegung.getFlrbelegart().getC_nr();
            zeile[REPORT_ARTIKELSTATISTIK_BELEGARTCNR] = sBelegartCNr;

            if (lagerbewegung.getFlrlager().getLagerart_c_nr().equals(LagerFac.LAGERART_WERTGUTSCHRIFT)) {
                zeile[REPORT_ARTIKELSTATISTIK_BELEGART] = LagerFac.LAGERART_WERTGUTSCHRIFT;
            } else {
                zeile[REPORT_ARTIKELSTATISTIK_BELEGART] = lagerbewegung.getC_belegartnr();
            }

            if (lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)
                    || lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_LOSABLIEFERUNG)) {
                LosDto losDto = getFertigungFac().losFindByPrimaryKey(lagerbewegung.getI_belegartid());
                if (losDto.getStuecklisteIId() != null) {
                    zeile[REPORT_ARTIKELSTATISTIK_STUECKLISTENARTIKEL] = getStuecklisteFac()
                            .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto)
                            .getArtikelDto().formatArtikelbezeichnung();
                } else {
                    zeile[REPORT_ARTIKELSTATISTIK_STUECKLISTENARTIKEL] = "Materialliste";
                }

                zeile[REPORT_ARTIKELSTATISTIK_LOS_STATUS] = losDto.getStatusCNr();
                zeile[REPORT_ARTIKELSTATISTIK_LOS_BEGINN] = losDto.getTProduktionsbeginn();
                zeile[REPORT_ARTIKELSTATISTIK_LOS_ENDE] = losDto.getTProduktionsende();
                zeile[REPORT_ARTIKELSTATISTIK_LOS_PROJEKT] = losDto.getCProjekt();

                zeile[REPORT_ARTIKELSTATISTIK_LOS_ABGELIFERT] = getFertigungFac()
                        .getErledigteMenge(losDto.getIId(), theClientDto);

                if (losDto.getAuftragIId() != null) {
                    zeile[REPORT_ARTIKELSTATISTIK_LOS_AUFTRAG] = getAuftragFac()
                            .auftragFindByPrimaryKey(losDto.getAuftragIId()).getCNr();
                }

            }

            if (lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_LIEFERSCHEIN)
                    || lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_RECHNUNG)) {

                Integer aufposIId = null;
                if (lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_RECHNUNG)) {
                    RechnungPositionDto rechPos = getRechnungFac()
                            .rechnungPositionFindByPrimaryKeyOhneExc(lagerbewegung.getI_belegartpositionid());
                    if (rechPos != null) {
                        aufposIId = rechPos.getAuftragpositionIId();
                    }
                } else if (lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_LIEFERSCHEIN)) {
                    LieferscheinpositionDto lsPos = getLieferscheinpositionFac()
                            .lieferscheinpositionFindByPrimaryKeyOhneExc(
                                    lagerbewegung.getI_belegartpositionid(), theClientDto);
                    if (lsPos != null) {
                        aufposIId = lsPos.getAuftragpositionIId();
                    }
                }

                if (aufposIId != null) {
                    AuftragpositionDto aufposDto = getAuftragpositionFac()
                            .auftragpositionFindByPrimaryKey(aufposIId);
                    AuftragDto aDto = getAuftragFac().auftragFindByPrimaryKey(aufposDto.getBelegIId());
                    zeile[REPORT_ARTIKELSTATISTIK_AUFTRAG_AUSLOESER] = aDto.getCNr();
                }

            }

            zeile[REPORT_ARTIKELSTATISTIK_LAGER] = lagerbewegung.getFlrlager().getC_nr();
            zeile[REPORT_ARTIKELSTATISTIK_SNRCHNR] = lagerbewegung.getC_seriennrchargennr();

            BigDecimal preis = new BigDecimal(0);
            BigDecimal wert = new BigDecimal(0);
            if (lagerbewegung.getB_abgang().intValue() == 0) {
                if (darfEinkaufspreisSehen) {

                    if (lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_GUTSCHRIFT)) {

                        RechnungPositionDto rechposDto = getRechnungFac()
                                .rechnungPositionFindByPrimaryKeyOhneExc(
                                        lagerbewegung.getI_belegartpositionid());

                        if (rechposDto != null) {
                            RechnungDto rechnungDto = getRechnungFac()
                                    .rechnungFindByPrimaryKey(rechposDto.getRechnungIId());

                            preis = rechposDto.getNNettoeinzelpreisplusversteckteraufschlagminusrabatte()
                                    .divide(rechnungDto.getNKurs(), 5, BigDecimal.ROUND_HALF_EVEN);
                            zeile[REPORT_ARTIKELSTATISTIK_PREIS] = Helper.rundeKaufmaennisch(preis, 4);
                        } else {
                            preis = lagerbewegung.getN_einstandspreis();
                            zeile[REPORT_ARTIKELSTATISTIK_PREIS] = Helper.rundeKaufmaennisch(preis, 4);
                        }

                    } else {
                        preis = lagerbewegung.getN_einstandspreis();
                        zeile[REPORT_ARTIKELSTATISTIK_PREIS] = Helper.rundeKaufmaennisch(preis, 4);
                    }

                } else {
                    zeile[REPORT_ARTIKELSTATISTIK_PREIS] = null;
                }
            } else {

                if (darfVerkaufspreisSehen) {
                    preis = lagerbewegung.getN_verkaufspreis();

                    if (lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)) {
                        preis = getLagerFac().getGemittelterGestehungspreisEinerAbgangsposition(
                                LocaleFac.BELEGART_LOS, lagerbewegung.getI_belegartpositionid());
                    }

                    zeile[REPORT_ARTIKELSTATISTIK_PREIS] = Helper.rundeKaufmaennisch(preis, 4);
                } else {
                    zeile[REPORT_ARTIKELSTATISTIK_PREIS] = null;
                }
            }

            if (bWeReferenzAndrucken) {

                zeile[REPORT_ARTIKELSTATISTIK_WE_REFERENZ] = getLagerFac().getWareneingangsreferenzSubreport(
                        lagerbewegung.getC_belegartnr(), lagerbewegung.getI_belegartpositionid(),
                        lagerbewegung.getC_seriennrchargennr(), false, theClientDto);
            }

            wert = preis.multiply(lagerbewegung.getN_menge());

            BigDecimal d = lagerbewegung.getN_menge();
            // Wenn Lagerabgang, dann negative Menge
            if (Helper.short2boolean(lagerbewegung.getB_abgang())) {
                d = d.negate();
            }
            zeile[REPORT_ARTIKELSTATISTIK_MENGE] = d;

            if (lagerbewegung.getFlrhersteller() != null) {
                zeile[REPORT_ARTIKELSTATISTIK_HERSTELLER] = lagerbewegung.getFlrhersteller().getC_nr();
            }
            if (lagerbewegung.getFlrland() != null) {
                zeile[REPORT_ARTIKELSTATISTIK_URSPRUNGSLAND] = lagerbewegung.getFlrland().getC_lkz();
            }

            try {
                BelegInfos bi = getLagerFac().getBelegInfos(lagerbewegung.getC_belegartnr(),
                        lagerbewegung.getI_belegartid(), lagerbewegung.getI_belegartpositionid(), theClientDto);
                zeile[REPORT_ARTIKELSTATISTIK_BELEGNUMMER] = bi.getBelegnummer();
                zeile[REPORT_ARTIKELSTATISTIK_FIRMA] = bi.getKundeLieferant();

                zeile[REPORT_ARTIKELSTATISTIK_VERLEIHFAKTOR] = bi.getVerleihfaktor();
                zeile[REPORT_ARTIKELSTATISTIK_VERLEIHTAGE] = bi.getVerleihtage();
                zeile[REPORT_ARTIKELSTATISTIK_BUCHUNGSZEIT] = lagerbewegung.getT_buchungszeit();
                if (lagerbewegung.getC_belegartnr().equals(LocaleFac.BELEGART_LIEFERSCHEIN)) {
                    zeile[REPORT_ARTIKELSTATISTIK_LIEFERTERMIN] = bi.getBelegdatum();
                }
                if (bi.getBelegdatum() != null) {
                    zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM] = bi.getBelegdatum();
                } else {
                    zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM] = lagerbewegung.getT_belegdatum();
                }

                zeile[REPORT_ARTIKELSTATISTIK_MATERIALZUSCHLAG] = bi.getBdMaterialzuschlag();

                zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM];
                // Wenn Belegdatum und Buchungsdatum gleich, dann wird die
                // Buchungszeit + Datum als Belegdatum verwendet
                if (Helper.cutTimestamp((Timestamp) zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM])
                        .equals(Helper.cutTimestamp((Timestamp) zeile[REPORT_ARTIKELSTATISTIK_BUCHUNGSZEIT]))) {
                    zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = lagerbewegung.getT_buchungszeit();
                }

                // Fuer Monatsstatistik
                Calendar c = Calendar.getInstance();
                if (bi.getBelegdatum() != null) {
                    c.setTimeInMillis(bi.getBelegdatum().getTime());
                } else {
                    c.setTimeInMillis(lagerbewegung.getT_buchungszeit().getTime());
                }
                c.set(Calendar.HOUR_OF_DAY, 0);
                c.set(Calendar.MINUTE, 0);
                c.set(Calendar.SECOND, 0);
                c.set(Calendar.MILLISECOND, 0);
                c.set(Calendar.DAY_OF_MONTH, 1);
                // Schon enthalten?

                al.add(zeile);
            } catch (RemoteException ex2) {
                throwEJBExceptionLPRespectOld(ex2);
            }

        }

    }

    //
    while (alInventurliste.size() > 0) {
        FLRInventurstand flr = (FLRInventurstand) alInventurliste.get(0);

        Object[] zeile = new Object[REPORT_ARTIKELSTATISTIK_ANZAHL_SPALTEN];

        zeile[REPORT_ARTIKELSTATISTIK_BELEGART] = "Inventurstand";
        zeile[REPORT_ARTIKELSTATISTIK_BEWEGUNGSVORSCHAU] = new Boolean(false);
        java.sql.Timestamp ts = new java.sql.Timestamp(flr.getFlrinventur().getT_inventurdatum().getTime());

        zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = ts;
        zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM] = ts;
        zeile[REPORT_ARTIKELSTATISTIK_BUCHUNGSZEIT] = ts;

        zeile[REPORT_ARTIKELSTATISTIK_INVENTURMENGE] = flr.getN_inventurmenge();
        zeile[REPORT_ARTIKELSTATISTIK_BELEGNUMMER] = flr.getFlrinventur().getC_bez();

        al.add(zeile);
        alInventurliste.remove(0);

    }

    sessionInv.close();

    session.close();

    ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKey(artikelIId, theClientDto);
    parameter.put("P_ARTIKEL", aDto.formatArtikelbezeichnung());
    parameter.put("P_ARTIKELEINHEIT", aDto.getEinheitCNr().trim());
    parameter.put("P_BESTELLEINHEIT", aDto.getEinheitCNrBestellung());
    parameter.put("P_MULTIPLIKATORBESTELLMENGE", aDto.getNUmrechnungsfaktor());
    parameter.put("P_BESTELLEINHEIT_INVERS", Helper.short2Boolean(aDto.getbBestellmengeneinheitInvers()));
    if (bMonatsstatistik == true) {
        sAktuellerReport = ArtikelReportFac.REPORT_MONATSSTATISTIK;
        for (int i = 0; i < al.size() - 1; i = i + 1) {
            for (int j = al.size() - 1; j > i; j = j - 1) {
                Object[] erstes = (Object[]) al.get(j - 1);
                Object[] zweites = (Object[]) al.get(j);

                if (((java.sql.Timestamp) erstes[REPORT_ARTIKELSTATISTIK_BELEGDATUM])
                        .before(((java.sql.Timestamp) zweites[REPORT_ARTIKELSTATISTIK_BELEGDATUM]))) {
                    Object[] temp = erstes;
                    al.set(j - 1, zweites);
                    al.set(j, temp);
                }
            }
        }
        // sortiere nach Jahr/Monat
        java.text.DateFormatSymbols symbols = new java.text.DateFormatSymbols(theClientDto.getLocUi());
        String[] defaultMonths = symbols.getMonths();

        GregorianCalendar cAktuell = new GregorianCalendar();
        if (al.size() > 0) {
            Object[] erste = (Object[]) al.get(al.size() - 1);
            Object[] letzte = (Object[]) al.get(0);

            cAktuell.setTimeInMillis(((Timestamp) letzte[REPORT_ARTIKELSTATISTIK_BELEGDATUM]).getTime());
            ArrayList alMonate = new ArrayList();
            while (cAktuell.getTimeInMillis() >= ((Timestamp) erste[REPORT_ARTIKELSTATISTIK_BELEGDATUM])
                    .getTime()) {
                BigDecimal mengeZugang = new BigDecimal(0);
                BigDecimal wertZugang = new BigDecimal(0);
                BigDecimal mengeAbgang = new BigDecimal(0);
                BigDecimal wertAbgang = new BigDecimal(0);
                for (int i = 0; i < al.size(); i++) {
                    Object[] zeile = (Object[]) al.get(i);
                    Timestamp d = (Timestamp) zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM];

                    Calendar cZeile = Calendar.getInstance();
                    cZeile.setTimeInMillis(d.getTime());

                    if (cAktuell.get(Calendar.MONTH) == cZeile.get(Calendar.MONTH)
                            && cAktuell.get(Calendar.YEAR) == cZeile.get(Calendar.YEAR)) {
                        BigDecimal mengeZeile = (BigDecimal) zeile[REPORT_ARTIKELSTATISTIK_MENGE];
                        BigDecimal preisZeile = (BigDecimal) zeile[REPORT_ARTIKELSTATISTIK_PREIS];
                        if (mengeZeile != null && preisZeile != null) {

                            boolean bGutschrift = false;

                            if (zeile[REPORT_ARTIKELSTATISTIK_BELEGART] != null
                                    && zeile[REPORT_ARTIKELSTATISTIK_BELEGART]
                                            .equals(LocaleFac.BELEGART_GUTSCHRIFT)) {
                                bGutschrift = true;
                            }

                            // SP18027

                            if (mengeZeile.doubleValue() > 0) {
                                if (bGutschrift == true) {
                                    mengeAbgang = mengeAbgang.subtract(mengeZeile.abs());
                                    wertAbgang = wertAbgang.subtract(mengeZeile.abs().multiply(preisZeile));
                                } else {
                                    mengeZugang = mengeZugang.add(mengeZeile);
                                    wertZugang = wertZugang.add(mengeZeile.multiply(preisZeile));
                                }
                            } else {
                                mengeAbgang = mengeAbgang.add(mengeZeile.abs());
                                wertAbgang = wertAbgang.add(mengeZeile.abs().multiply(preisZeile));
                            }

                        }
                    }

                }

                Object[] zeileMonate = new Object[KundeReportFac.REPORT_MONATSSTATISTIK_ANZAHL_FELDER];
                zeileMonate[REPORT_MONATSSTATISTIK_MONAT] = defaultMonths[cAktuell.get(Calendar.MONTH)];
                zeileMonate[REPORT_MONATSSTATISTIK_JAHR] = cAktuell.get(Calendar.YEAR);
                zeileMonate[REPORT_MONATSSTATISTIK_ABGANG_MENGE] = mengeAbgang;
                zeileMonate[REPORT_MONATSSTATISTIK_ABGANG_WERT] = wertAbgang;
                zeileMonate[REPORT_MONATSSTATISTIK_ZUGANG_MENGE] = mengeZugang;
                zeileMonate[REPORT_MONATSSTATISTIK_ZUGANG_WERT] = wertZugang;
                alMonate.add(zeileMonate);

                cAktuell.set(Calendar.DAY_OF_MONTH, 1);
                cAktuell.getTimeInMillis();
                cAktuell.set(Calendar.MONTH, cAktuell.get(Calendar.MONTH) - 1);
                cAktuell.getTimeInMillis();
                cAktuell.set(Calendar.DAY_OF_MONTH, cAktuell.getActualMaximum(Calendar.DAY_OF_MONTH));
                cAktuell.getTimeInMillis();

            }

            Object[][] dataTemp = new Object[1][1];
            data = (Object[][]) alMonate.toArray(dataTemp);

            initJRDS(parameter, ArtikelFac.REPORT_MODUL, ArtikelReportFac.REPORT_MONATSSTATISTIK,
                    theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
            return getReportPrint();
        } else {
            return null;
        }

    } else {

        if (bMitBewegungsvorschau == true) {
            // SP 1008 OHNE Internebestellung
            ArrayList<?> list = getInternebestellungFac().getBewegungsvorschauSortiert(artikelIId, false,
                    theClientDto);

            BewegungsvorschauDto[] returnArray = new BewegungsvorschauDto[list.size()];
            BewegungsvorschauDto[] dtos = (com.lp.server.bestellung.service.BewegungsvorschauDto[]) list
                    .toArray(returnArray);

            for (int i = 0; i < dtos.length; i++) {
                BewegungsvorschauDto dto = dtos[i];

                if (dto.getTLiefertermin() != null) {

                    Object[] zeile = new Object[REPORT_ARTIKELSTATISTIK_ANZAHL_SPALTEN];
                    zeile[REPORT_ARTIKELSTATISTIK_BEWEGUNGSVORSCHAU] = new Boolean(true);

                    if (dto.getCBelegartCNr() != null
                            && dto.getCBelegartCNr().equals(LocaleFac.BELEGART_LOSABLIEFERUNG)) {
                        LosDto losDto = getFertigungFac().losFindByPrimaryKey(dto.getIBelegIId());

                        zeile[REPORT_ARTIKELSTATISTIK_LOS_STATUS] = losDto.getStatusCNr();
                        zeile[REPORT_ARTIKELSTATISTIK_LOS_BEGINN] = losDto.getTProduktionsbeginn();
                        zeile[REPORT_ARTIKELSTATISTIK_LOS_ENDE] = losDto.getTProduktionsende();
                        zeile[REPORT_ARTIKELSTATISTIK_LOS_PROJEKT] = losDto.getCProjekt();

                        zeile[REPORT_ARTIKELSTATISTIK_LOS_ABGELIFERT] = getFertigungFac()
                                .getErledigteMenge(losDto.getIId(), theClientDto);

                        if (losDto.getAuftragIId() != null) {
                            zeile[REPORT_ARTIKELSTATISTIK_LOS_AUFTRAG] = getAuftragFac()
                                    .auftragFindByPrimaryKey(losDto.getAuftragIId()).getCNr();
                        }

                    }

                    zeile[REPORT_ARTIKELSTATISTIK_BELEGART] = dto.getCBelegartCNr();
                    zeile[REPORT_ARTIKELSTATISTIK_BELEGNUMMER] = dto.getCBelegnummer();

                    if (dto.getPartnerDto() != null) {
                        zeile[REPORT_ARTIKELSTATISTIK_FIRMA] = dto.getPartnerDto().formatFixTitelName1Name2();
                    } else {
                        zeile[REPORT_ARTIKELSTATISTIK_FIRMA] = dto.getCProjekt();
                    }

                    // PJ17836
                    zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = dto.getTLiefertermin();
                    if (dto.getTABTerminBestellung() != null) {
                        zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = new Timestamp(
                                dto.getTABTerminBestellung().getTime());
                    }

                    zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM] = dto.getTLiefertermin();
                    zeile[REPORT_ARTIKELSTATISTIK_BUCHUNGSZEIT] = dto.getTLiefertermin();
                    zeile[REPORT_ARTIKELSTATISTIK_LIEFERTERMIN] = dto.getTLiefertermin();
                    zeile[REPORT_ARTIKELSTATISTIK_MENGE] = dto.getNMenge();

                    al.add(zeile);
                }

            }

            // PJ17817

            ReportAnfragestatistikKriterienDto kritDtoI = new ReportAnfragestatistikKriterienDto();
            kritDtoI.setArtikelIId(artikelIId);
            ReportRahmenreservierungDto[] aReportRahmenreservierungDto = getReportRahmenreservierung(kritDtoI,
                    theClientDto);

            for (int i = 0; i < aReportRahmenreservierungDto.length; i++) {
                ReportRahmenreservierungDto reportRahmenreservierungDto = (ReportRahmenreservierungDto) aReportRahmenreservierungDto[i];
                Object[] zeile = new Object[REPORT_ARTIKELSTATISTIK_ANZAHL_SPALTEN];
                zeile[REPORT_ARTIKELSTATISTIK_BEWEGUNGSVORSCHAU] = new Boolean(true);
                zeile[REPORT_ARTIKELSTATISTIK_BELEGART] = "Rahmenreservierung";

                zeile[REPORT_ARTIKELSTATISTIK_BELEGNUMMER] = reportRahmenreservierungDto.getAuftragCNr();
                zeile[REPORT_ARTIKELSTATISTIK_FIRMA] = reportRahmenreservierungDto.getCKundenname();

                zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = reportRahmenreservierungDto
                        .getTUebersteuerterLiefertermin();

                zeile[REPORT_ARTIKELSTATISTIK_LIEFERTERMIN] = reportRahmenreservierungDto
                        .getTUebersteuerterLiefertermin();
                zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM] = reportRahmenreservierungDto
                        .getTUebersteuerterLiefertermin();
                zeile[REPORT_ARTIKELSTATISTIK_BUCHUNGSZEIT] = reportRahmenreservierungDto
                        .getTUebersteuerterLiefertermin();
                zeile[REPORT_ARTIKELSTATISTIK_MENGE] = reportRahmenreservierungDto.getNOffeneMenge().negate();

                al.add(zeile);
            }

            RahmenbestelltReportDto[] rahmenbestelltDtos = getReportRahmenbestelltDto(artikelIId, theClientDto);

            for (int i = 0; i < rahmenbestelltDtos.length; i++) {
                RahmenbestelltReportDto dto = rahmenbestelltDtos[i];
                Object[] zeile = new Object[REPORT_ARTIKELSTATISTIK_ANZAHL_SPALTEN];
                zeile[REPORT_ARTIKELSTATISTIK_BEWEGUNGSVORSCHAU] = new Boolean(true);
                zeile[REPORT_ARTIKELSTATISTIK_BELEGART] = "Rahmenbestellt";
                zeile[REPORT_ARTIKELSTATISTIK_BELEGNUMMER] = dto.getBestellnummer();
                zeile[REPORT_ARTIKELSTATISTIK_FIRMA] = dto.getLieferant();

                zeile[REPORT_ARTIKELSTATISTIK_LIEFERTERMIN] = dto.getTLiefertermin();
                zeile[REPORT_ARTIKELSTATISTIK_BELEGDATUM] = dto.getTLiefertermin();
                zeile[REPORT_ARTIKELSTATISTIK_BUCHUNGSZEIT] = dto.getTLiefertermin();

                zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = dto.getTLiefertermin();

                zeile[REPORT_ARTIKELSTATISTIK_MENGE] = dto.getOffenmenge();
                // Nettoeinzelpreis
                zeile[REPORT_ARTIKELSTATISTIK_PREIS] = dto.getPreis();
                al.add(zeile);
            }

        }

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

        for (int i = 0; i < al.size(); i++) {
            // Bei Bewegungsvorschau-Daten kann der Liefertermin fruehestens
            // morgen sein
            Object[] zeile = (Object[]) al.get(i);

            if (((Boolean) zeile[REPORT_ARTIKELSTATISTIK_BEWEGUNGSVORSCHAU]) == true) {
                Timestamp t = (Timestamp) zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM];
                if (t.before(tHeute)) {
                    zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = tMorgen;
                    al.set(i, zeile);
                }
            }

        }

        // PJ17836 immer nach diesem Sortierdatum sortieren
        for (int i = 0; i < al.size() - 1; i = i + 1) {
            for (int j = al.size() - 1; j > i; j = j - 1) {
                Object[] erstes = (Object[]) al.get(j - 1);
                Object[] zweites = (Object[]) al.get(j);

                if (((java.sql.Timestamp) erstes[REPORT_ARTIKELSTATISTIK_SORTIERDATUM])
                        .before(((java.sql.Timestamp) zweites[REPORT_ARTIKELSTATISTIK_SORTIERDATUM]))) {
                    Object[] temp = erstes;
                    al.set(j - 1, zweites);
                    al.set(j, temp);
                }
            }
        }
        index = -1;
        sAktuellerReport = ArtikelReportFac.REPORT_ARTIKELSTATISTIK;
        Object[][] returnArray = new Object[al.size()][16];
        data = (Object[][]) al.toArray(returnArray);

        initJRDS(parameter, ArtikelFac.REPORT_MODUL, ArtikelReportFac.REPORT_ARTIKELSTATISTIK,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();

    }
}

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

License:Open Source License

/**
 * Diese Methode liefert eine Liste von allen Auftraegen zu einem bestimmten
 * Artikel, die nach den eingegebenen Kriterien des Benutzers
 * zusammengestellt wird. <br>//from w  w  w  .  j  a  v  a2  s  .c  om
 * Achtung: Hibernate verwendet lazy initialization, d.h. der Zugriff auf
 * Collections muss innerhalb der Session erfolgen.
 * 
 * @param kritDtoI
 *            die Kriterien des Benutzers
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return ReportRahmenreservierungDto[] die Liste der Auftraege
 * @throws EJBExceptionLP
 *             Ausnahme
 */
public ReportRahmenreservierungDto[] getReportRahmenreservierung(ReportAnfragestatistikKriterienDto kritDtoI,
        TheClientDto theClientDto) throws EJBExceptionLP {
    ReportRahmenreservierungDto[] aResult = null;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;

    try {

        session = factory.openSession();

        // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
        // Haupttabelle anlegen,
        // nach denen ich filtern und sortieren kann
        Criteria critAuftragposition = session.createCriteria(FLRAuftragpositionReport.class);

        // flrauftragpositionreport > flrauftrag
        Criteria critAuftrag = critAuftragposition
                .createCriteria(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRAUFTRAG);

        // Einschraenken auf Rahmenauftraege des Mandanten
        critAuftrag.add(Restrictions.eq(AuftragFac.FLR_AUFTRAG_MANDANT_C_NR, theClientDto.getMandant()));
        critAuftrag.add(
                Restrictions.eq(AuftragFac.FLR_AUFTRAG_AUFTRAGART_C_NR, AuftragServiceFac.AUFTRAGART_RAHMEN));

        // keine stornierten oder erledigten Auftraege.
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(AuftragServiceFac.AUFTRAGSTATUS_STORNIERT);
        cStati.add(AuftragServiceFac.AUFTRAGSTATUS_ERLEDIGT);
        critAuftrag.add(Restrictions.not(Restrictions.in(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR, cStati)));

        // Einschraenkung auf den gewaehlten Artikel
        if (kritDtoI.getArtikelIId() != null) {
            critAuftragposition.add(Restrictions.eq(AuftragpositionFac.FLR_AUFTRAGPOSITION_ARTIKEL_I_ID,
                    kritDtoI.getArtikelIId()));
        }
        /*
         * // die offene Menge muss != null > 0 sein
         * critAuftragposition.add(
         * Restrictions.isNotNull(AuftragpositionFac.
         * FLR_AUFTRAGPOSITION_N_MENGE));
         * critAuftragposition.add(Restrictions.gt(AuftragpositionFac.
         * FLR_AUFTRAGPOSITION_N_OFFENEMENGE, new BigDecimal(0)));
         */
        // Einschraenkung nach Rahmentermin von - bis
        if (kritDtoI.getDVon() != null) {
            critAuftragposition.add(Restrictions.ge(
                    AuftragpositionFac.FLR_AUFTRAGPOSITION_T_UEBERSTEUERTERLIEFERTERMIN, kritDtoI.getDVon()));
        }

        if (kritDtoI.getDBis() != null) {
            critAuftragposition.add(Restrictions.le(
                    AuftragpositionFac.FLR_AUFTRAGPOSITION_T_UEBERSTEUERTERLIEFERTERMIN, kritDtoI.getDBis()));
        }

        // es wird nach Belegnummer und Artikel sortiert
        critAuftrag.addOrder(Order.asc(AuftragFac.FLR_AUFTRAG_C_NR));

        List<?> list = critAuftrag.list();
        aResult = new ReportRahmenreservierungDto[list.size()];
        Iterator<?> it = list.iterator();
        int iIndex = 0;

        while (it.hasNext()) {
            FLRAuftragpositionReport flrauftragposition = (FLRAuftragpositionReport) it.next();
            FLRAuftragReport flrauftrag = flrauftragposition.getFlrauftrag();
            FLRPartner flrpartner = flrauftrag.getFlrkunde().getFlrpartner();

            ReportRahmenreservierungDto reportDto = new ReportRahmenreservierungDto();

            reportDto.setAuftragCNr(flrauftrag.getC_nr());
            reportDto.setAuftragIId(flrauftrag.getI_id());
            reportDto.setArtikelIId(flrauftragposition.getArtikel_i_id());
            reportDto.setCBez(flrauftrag.getC_bez());
            reportDto.setCKundenname(flrpartner.getC_name1nachnamefirmazeile1());
            reportDto.setTUebersteuerterLiefertermin(
                    new Timestamp(flrauftragposition.getT_uebersteuerterliefertermin().getTime()));
            reportDto.setNMenge(flrauftragposition.getN_menge());
            // offene (rahmenmenge-abgerufenemenge)
            reportDto.setNOffeneMenge(flrauftragposition.getN_offenerahmenmenge());
            // geliefert

            if (flrauftragposition.getN_offenerahmenmenge() != null) {
                reportDto.setNGelieferteMenge(
                        flrauftragposition.getN_menge().subtract(flrauftragposition.getN_offenerahmenmenge()));
            } else {
                reportDto.setNGelieferteMenge(flrauftragposition.getN_menge());
            }

            aResult[iIndex] = reportDto;
            iIndex++;
        }
    } finally {
        try {
            session.close();
        } catch (HibernateException he) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
        }
    }
    return aResult;
}

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

License:Open Source License

public BigDecimal getAbgewertetenGestehungspreis(BigDecimal gestpreis, Integer artikelIId, Integer lagerIId,
        Timestamp tStichtag, int iMonate, double dProzent) {
    Session session = FLRSessionFactory.getFactory().openSession();

    org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class);
    crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_ARTIKEL_I_ID, artikelIId));

    crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false)));

    if (lagerIId != null) {
        crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_LAGER_I_ID, lagerIId));
    }//from w  w  w. j  a  v a2  s .  c  o m

    if (tStichtag != null) {
        crit.add(Restrictions.le(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tStichtag));
    } else {
        crit.add(Restrictions.lt(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM,
                Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + 24 * 3600000))));
    }

    // CK: Kundenwunsch am 2009-03-04: Handbuchungen und
    // Inventurbuchungen
    // sollen nicht beruecksichtigt werden
    String[] belegarten = new String[2];
    belegarten[0] = LocaleFac.BELEGART_INVENTUR;
    belegarten[1] = LocaleFac.BELEGART_HAND;
    crit.add(Restrictions.not(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, belegarten)));

    // CK: Kundenwunsch am 2009-03-04: Es muessen sowohl
    // Zubuchungen, als auch Abbuchungen
    // beruecksichtigt werden
    // crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper
    // .boolean2Short(false)));
    crit.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));

    List results = crit.list();
    Iterator resultListIterator = results.iterator();

    ArrayList<FLRLagerbewegung> alZugaenge = new ArrayList<FLRLagerbewegung>();

    while (resultListIterator.hasNext()) {
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();

        if (lagerbewegung.getN_menge().doubleValue() > 0) {
            // Datum des letzten Zugangs
            alZugaenge.add(lagerbewegung);
        }
    }

    if (alZugaenge.size() > 0) {
        // Lagerbewegungen nach Belegdatum sortieren
        for (int m = alZugaenge.size() - 1; m > 0; --m) {
            for (int n = 0; n < m; ++n) {
                FLRLagerbewegung o1 = (FLRLagerbewegung) alZugaenge.get(n);
                FLRLagerbewegung o2 = (FLRLagerbewegung) alZugaenge.get(n + 1);

                if (o1.getT_belegdatum().before(o2.getT_belegdatum())) {
                    alZugaenge.set(n, o2);
                    alZugaenge.set(n + 1, o1);
                }
            }
        }

        // nun zaehlt das juengste Belegdatum
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) alZugaenge.get(0);

        java.util.Calendar cAbDemWirdAbgewertet = java.util.Calendar.getInstance();
        if (tStichtag != null) {
            cAbDemWirdAbgewertet.setTimeInMillis(tStichtag.getTime());
        }

        cAbDemWirdAbgewertet.set(java.util.Calendar.MONTH,
                cAbDemWirdAbgewertet.get(java.util.Calendar.MONTH) - iMonate);

        double dAbwertung = 0;
        while (dAbwertung < 100
                && lagerbewegung.getT_buchungszeit().getTime() < cAbDemWirdAbgewertet.getTimeInMillis()) {
            dAbwertung += dProzent;
            cAbDemWirdAbgewertet.set(java.util.Calendar.MONTH,
                    cAbDemWirdAbgewertet.get(java.util.Calendar.MONTH) - 1);
        }

        return Helper.rundeKaufmaennisch(gestpreis.multiply(new BigDecimal(1 - (dAbwertung / 100))), 4);

    }

    session.close();

    return new BigDecimal(0);
}