Example usage for org.hibernate.criterion Restrictions not

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

Introduction

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

Prototype

public static Criterion not(Criterion expression) 

Source Link

Document

Return the negation of an expression

Usage

From source file:com.jeysan.modules.orm.hibernate.HibernateDao.java

License:Apache License

/**
 * ??Criterion,./*from w  w  w .  j  ava  2 s.  c  om*/
 */
protected Criterion buildCriterion(final String propertyName, final Object propertyValue,
        final MatchType matchType) {
    Assert.hasText(propertyName, "propertyName?");
    Criterion criterion = null;
    //?MatchTypecriterion
    switch (matchType) {
    case EQ:
        criterion = Restrictions.eq(propertyName, propertyValue);
        break;
    case NEQ:
        if (propertyValue == null)
            criterion = Restrictions.isNotNull(propertyName);
        else
            criterion = Restrictions.not(Restrictions.eq(propertyName, propertyValue));
        break;
    case NULL:
        criterion = Restrictions.isNull(propertyName);
        break;
    case LIKE:
        criterion = Restrictions.like(propertyName, (String) propertyValue, MatchMode.ANYWHERE);
        break;

    case LE:
        criterion = Restrictions.le(propertyName, propertyValue);
        break;
    case LT:
        criterion = Restrictions.lt(propertyName, propertyValue);
        break;
    case GE:
        criterion = Restrictions.ge(propertyName, propertyValue);
        break;
    case GT:
        criterion = Restrictions.gt(propertyName, propertyValue);
    }
    return criterion;
}

From source file:com.kodemore.hibernate.criteria.KmAbstractCriteria.java

License:Open Source License

public void addIsNotIn(String property, Object[] v) {
    if (v == null || v.length == 0)
        addTrue();// w  w  w  . j a  v a2 s. c o m
    else
        _add(Restrictions.not(Restrictions.in(property, v)));
}

From source file:com.kodemore.hibernate.criteria.KmAbstractCriteria.java

License:Open Source License

public void addIsNotIn(String property, Collection<?> v) {
    if (v == null || v.isEmpty())
        addTrue();/*from  w w w  .j ava  2 s.  com*/
    else
        _add(Restrictions.not(Restrictions.in(property, v)));
}

From source file:com.krawler.common.util.BuildCriteria.java

License:Open Source License

private static Criterion getCriteriaByCondition(Object value, Integer criteriaVal, String propertyname) {
    Criterion Criteriaobj;//from   w w  w  . ja v  a2  s.  co  m

    switch (criteriaVal) {
    case ISNOTNULL:
        Criteriaobj = Restrictions.isNotNull(propertyname);
        break;
    case NOTIN:
        String[] strArr = String.valueOf(value).split(",");
        List ls = Arrays.asList(strArr);
        Criteriaobj = Restrictions.not(Restrictions.in(propertyname, ls));
        break;
    case LIKE:
        Criteriaobj = Restrictions.or(Restrictions.like(propertyname, value + "%"),
                Restrictions.like(propertyname, "% " + value + "%"));
        break;
    case LE:
        Criteriaobj = Restrictions.le(propertyname, value);
        break;
    case GE:
        Criteriaobj = Restrictions.ge(propertyname, value);
        break;
    case ISNULL:
        Criteriaobj = Restrictions.isNull(propertyname);
        break;
    case IN:
        strArr = String.valueOf(value).split(",");
        ls = Arrays.asList(strArr);
        Criteriaobj = Restrictions.in(propertyname, ls);
        break;
    case NE:
        Criteriaobj = Restrictions.ne(propertyname, value);
        break;
    case LT:
        Criteriaobj = Restrictions.lt(propertyname, value);
        break;
    case GT:
        Criteriaobj = Restrictions.gt(propertyname, value);
        break;
    case EQ:
    default:
        Criteriaobj = Restrictions.eq(propertyname, value);
        break;
    }
    return Criteriaobj;
}

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

License:Open Source License

/**
 * Bestelltliste pruefen. 1. Bestehende Eintraege. 2. Bestellungen pruefen,
 * ob die Bestelltwerte richtig eingetragen sind.
 * /*from w  w w.ja  v  a  2  s.c o  m*/
 * @param theClientDto der aktuelle Benutzer 
 */

@TransactionAttribute(TransactionAttributeType.NEVER)
public void pruefeBestelltliste(TheClientDto theClientDto) {
    Session session = FLRSessionFactory.getFactory().openSession();
    try {

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

        String hqlDelete = "delete FROM FLRArtikelbestellt";
        session.createQuery(hqlDelete).executeUpdate();

        session.close();

        // ------------------------------------------------------------------
        // ----
        // Alle Eintraege in den Bestellungen pruefen
        // ------------------------------------------------------------------
        // ----

        session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria besPos = session.createCriteria(FLRBestellposition.class);
        org.hibernate.Criteria best = besPos
                .createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
        // Filter auf den Mandanten
        best.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // keine Rahmenbestellungen.
        best.add(Restrictions.not(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR,
                BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR)));
        // keine stornierten und erledigten.
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(BestellungFac.BESTELLSTATUS_STORNIERT);
        cStati.add(BestellungFac.BESTELLSTATUS_ERLEDIGT);
        best.add(Restrictions.not(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)));
        // Query ausfuehren
        List<?> besposList = besPos.list();
        Iterator<?> besposListIterator = besposList.iterator();
        while (besposListIterator.hasNext()) {
            FLRBestellposition bespos = (FLRBestellposition) besposListIterator.next();
            if (bespos.getBestellpositionart_c_nr().equals(BestellpositionFac.BESTELLPOSITIONART_IDENT)
                    || bespos.getBestellpositionart_c_nr()
                            .equals(BestellpositionFac.BESTELLPOSITIONART_HANDEINGABE)) {
                if (bespos.getBestellpositionstatus_c_nr() != null && (bespos.getBestellpositionstatus_c_nr()
                        .equals(BestellpositionFac.BESTELLPOSITIONSTATUS_OFFEN)
                        || bespos.getBestellpositionstatus_c_nr()
                                .equals(BestellpositionFac.BESTELLPOSITIONSTATUS_BESTAETIGT)
                        || bespos.getBestellpositionstatus_c_nr()
                                .equals(BestellpositionFac.BESTELLPOSITIONSTATUS_TEILGELIEFERT))) {

                    // nur fuer Artikel
                    if (bespos.getFlrartikel() != null) {
                        BigDecimal bdMenge = new BigDecimal(0);
                        if (bespos.getN_offenemenge() != null) {
                            bdMenge = bespos.getN_offenemenge();
                        } else {
                            bdMenge = bespos.getN_menge();
                        }
                        ArtikelbestelltDto artikelBestelltDto = new ArtikelbestelltDto();
                        artikelBestelltDto.setArtikelIId(bespos.getFlrartikel().getI_id());
                        artikelBestelltDto.setCBelegartnr(LocaleFac.BELEGART_BESTELLUNG);
                        artikelBestelltDto.setIBelegartpositionid(bespos.getI_id());
                        artikelBestelltDto.setNMenge(bdMenge);

                        if (bespos.getT_uebersteuerterliefertermin() != null) {
                            artikelBestelltDto.setTLiefertermin(
                                    new java.sql.Timestamp(bespos.getT_uebersteuerterliefertermin().getTime()));
                        } else {
                            artikelBestelltDto.setTLiefertermin(new java.sql.Timestamp(
                                    bespos.getFlrbestellung().getT_liefertermin().getTime()));
                        }

                        // anlegen, negative Mengen werden ignoriert
                        if (artikelBestelltDto.getNMenge().compareTo(new BigDecimal(0)) > 0) {
                            getArtikelbestelltFac().createArtikelbestellt(artikelBestelltDto);
                            myLogger.warn(theClientDto.getIDUser(),
                                    "Bestelltliste nachgetragen: " + artikelBestelltDto);
                        }
                    }

                }
            }
            // Fuer allen anderen Stati darf es keine Reservierungen geben.
            else {
                // Schaun, ob es eine Reservierung gibt
                ArtikelbestelltDto artikelBestelltDto = artikelbestelltFindByBelegartCNrBelegartPositionIIdOhneExc(
                        LocaleFac.BELEGART_BESTELLUNG, bespos.getI_id());
                // wenn ja, dann loeschen
                if (artikelBestelltDto != null) {
                    Artikelbestellt toRemove = em.find(Artikelbestellt.class, artikelBestelltDto.getIId());
                    if (toRemove == null) {
                        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY,
                                "Fehler beo prufeBestelltliste. Artikelbestellt das Aufgrund von reservierung gel\u00F6scht werden soll konnte nicht gefunden werden. iid "
                                        + artikelBestelltDto.getIId());
                    }
                    try {
                        em.remove(toRemove);
                        em.flush();
                    } catch (EntityExistsException er) {
                        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, er);
                    }
                    myLogger.warn(theClientDto.getIDUser(),
                            "Bestellteintrag gel\u00F6scht: " + artikelBestelltDto);
                }
            }
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        if (session != null) {
            session.close();
        }
    }

}

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

License:Open Source License

public Hashtable getAnzahlRahmenbestellt(Integer artikelIId, TheClientDto theClientDto) throws EJBExceptionLP {
    BigDecimal bdReserviert = new BigDecimal(0);
    Hashtable<String, Object> retHashtable = new Hashtable<String, Object>();
    String sBestellungCNr = null;
    Collection<String> aBestellungsCNr = new ArrayList<String>();
    Session session = null;/*from   w w  w .j  a  v a2s. co m*/
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria crit = session.createCriteria(FLRBestellpositionReport.class);
        Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);

        Criteria critArtikel = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL);
        // nur diesen Artikel
        critArtikel.add(Restrictions.eq("i_id", artikelIId));
        // Filter nach Mandant
        critBestellung
                .add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // keine stornierten oder erledigten Bestellungen.
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(BestellungFac.BESTELLSTATUS_STORNIERT);
        cStati.add(BestellungFac.BESTELLSTATUS_ERLEDIGT);
        critBestellung.add(
                Restrictions.not(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)));
        // Nur Rahmenbestellungen
        critBestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR,
                BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR));
        // Query ausfuehren
        List<?> list = crit.list();
        FLRBestellpositionReport[] aResult = new FLRBestellpositionReport[list.size()];
        aResult = (FLRBestellpositionReport[]) list.toArray(aResult);
        for (int i = 0; i < aResult.length; i++) {
            // Rahmenbestellnr, Achtung nur einmal pro Positionen noetig.
            if (!aBestellungsCNr.contains(aResult[i].getFlrbestellung().getC_nr())) {
                aBestellungsCNr.add(aResult[i].getFlrbestellung().getC_nr());
            }
            // negative Rahmenreservierungen bleiben unberuecksichtigt.
            if (aResult[i].getN_offenemenge() != null && aResult[i].getN_offenemenge().doubleValue() > 0) {
                bdReserviert = bdReserviert.add(aResult[i].getN_offenemenge());
            }
        }

        if (bdReserviert != null) {
            retHashtable.put(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL, bdReserviert);
        }
        if (aBestellungsCNr.size() > 0) {
            retHashtable.put(ArtikelbestelltFac.KEY_RAHMENBESTELLT_BELEGCNR, aBestellungsCNr);
        }
    } finally {
        try {
            session.close();
        } catch (HibernateException he) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER, he);
        }
    }
    return retHashtable;
}

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

License:Open Source License

public String generiereNeueArtikelnummer(String beginnArtikelnummer, TheClientDto theClientDto) {

    if (beginnArtikelnummer == null) {

        beginnArtikelnummer = "";

        try {//from   w ww.  jav  a 2 s . co m
            // PJ18234
            ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_ARTIKEL, ParameterFac.PARAMETER_STARTWERT_ARTIKELNUMMER);
            String startwert = parameter.getCWert();
            if (startwert != null && startwert.trim().length() > 1) {
                beginnArtikelnummer = startwert.trim();
            }
        } catch (RemoteException e) {
            throwEJBExceptionLPRespectOld(e);
        }
    }

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

    org.hibernate.Criteria crit = session.createCriteria(FLRArtikel.class);
    crit.add(Restrictions.like("c_nr", beginnArtikelnummer, MatchMode.START));
    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

    String[] art = new String[1];
    art[0] = ArtikelFac.ARTIKELART_HANDARTIKEL;
    crit.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKEL_ARTIKELART_C_NR, art)));

    crit.addOrder(Order.desc("c_nr"));
    crit.setMaxResults(1);
    List<?> results = crit.list();
    Iterator<?> resultListIterator = results.iterator();

    if (results.size() > 0) {
        FLRArtikel flrArtikel = (FLRArtikel) resultListIterator.next();

        String letzteArtikelnummer = flrArtikel.getC_nr();
        int iStartZahl = -1;
        int iEndeZahl = -1;
        boolean bEndeFound = false;
        int i = 0;
        while (i < letzteArtikelnummer.length()) {

            char c = letzteArtikelnummer.charAt(i);
            // wenn 0-9
            if (c > 47 && c < 58) {
                iStartZahl = i;
                iEndeZahl = iStartZahl;
                for (int j = i; j < letzteArtikelnummer.length(); j++) {
                    char d = letzteArtikelnummer.charAt(j);
                    if (d > 47 && d < 58) {
                        iEndeZahl = j;
                        if (j == letzteArtikelnummer.length() - 1) {
                            bEndeFound = true;
                        }
                    } else {
                        bEndeFound = true;
                        break;
                    }
                }
            }
            i++;
            if (bEndeFound) {
                break;
            }
        }
        if (iStartZahl >= 0 && iEndeZahl >= 0) {
            String zahlenteil = letzteArtikelnummer.substring(iStartZahl, iEndeZahl + 1);

            long zahl = new Long(zahlenteil);

            while (1 == 1) {

                zahl++;

                String zahlenteilNeu = new String(zahl + "");

                if (zahlenteilNeu.length() > zahlenteil.length()) {
                    // PJ 14917
                    String s = "";
                    for (int k = 0; k < zahlenteilNeu.length(); k++) {
                        s += "?";
                    }

                    return letzteArtikelnummer.substring(0, iStartZahl) + s
                            + letzteArtikelnummer.substring(iEndeZahl + 1);
                }

                int iNeueLaenge = zahlenteilNeu.length();
                if (iNeueLaenge < zahlenteil.length()) {
                    iNeueLaenge = zahlenteil.length();
                }
                zahlenteilNeu = Helper.fitString2LengthAlignRight(zahl + "", iNeueLaenge, '0');
                // Neue Artikelnummer zusammenbauen

                String neueArtNr = letzteArtikelnummer.substring(0, iStartZahl) + zahlenteilNeu
                        + letzteArtikelnummer.substring(iEndeZahl + 1);

                Query query = em.createNamedQuery("ArtikelfindByCNrMandantCNr");
                query.setParameter(1, neueArtNr);
                query.setParameter(2, theClientDto.getMandant());
                Collection<?> cl = query.getResultList();
                if (cl.size() > 0) {

                    continue;

                }

                return neueArtNr;
            }

        }
    }
    session.close();

    return beginnArtikelnummer;
}

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  .j a va 2  s .  c  om

    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

private RahmenbestelltReportDto[] getReportRahmenbestelltDto(Integer artikelIId, TheClientDto theClientDto)
        throws RemoteException {
    Session session;//from  w w w .ja va 2 s. c  o m
    SessionFactory factory = FLRSessionFactory.getFactory();
    session = factory.openSession();
    Criteria crit = session.createCriteria(FLRBestellpositionReport.class);
    Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);

    Criteria critArtikel = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL);
    // nur diesen Artikel
    critArtikel.add(Restrictions.eq("i_id", artikelIId));
    // Filter nach Mandant
    critBestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
    // keine stornierten oder erledigten Bestellungen.
    Collection<String> cStati = new LinkedList<String>();
    cStati.add(BestellungFac.BESTELLSTATUS_STORNIERT);
    cStati.add(BestellungFac.BESTELLSTATUS_ERLEDIGT);
    critBestellung
            .add(Restrictions.not(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)));
    // Nur Rahmenbestellungen
    critBestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR,
            BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR));
    // Query ausfuehren
    List<?> list = crit.list();

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

    RahmenbestelltReportDto[] dtos = new RahmenbestelltReportDto[list.size()];

    while (resultListIterator.hasNext()) {
        FLRBestellpositionReport besPos = (FLRBestellpositionReport) resultListIterator.next();

        RahmenbestelltReportDto dto = new RahmenbestelltReportDto();

        dto.setBestellnummer(besPos.getFlrbestellung().getC_nr());

        dto.setLieferant(
                besPos.getFlrbestellung().getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1());

        dto.setProjekt(besPos.getFlrbestellung().getC_bezprojektbezeichnung());

        if (besPos.getT_uebersteuerterliefertermin() != null) {
            dto.setTLiefertermin(besPos.getT_uebersteuerterliefertermin());

        } else {
            if (besPos.getFlrbestellung().getT_liefertermin() != null) {
                dto.setTLiefertermin(new Timestamp(besPos.getFlrbestellung().getT_liefertermin().getTime()));
            }
        }
        // Rahmenmenge ist die Menge der Rahmenposition
        dto.setRahmenmenge(besPos.getN_menge());

        BigDecimal bdOffen = besPos.getN_offenemenge();

        dto.setOffenmenge(bdOffen);
        // Nettoeinzelpreis

        dto.setPreis(besPos.getN_nettogesamtpreis());

        BestellpositionDto bestellpositionDto = getBestellpositionFac()
                .bestellpositionFindByPrimaryKey(besPos.getI_id());

        dto.setAbNummer(bestellpositionDto.getCABNummer());

        dto.settAbTermin(bestellpositionDto.getTAuftragsbestaetigungstermin());

        dto.setAbKommentar(bestellpositionDto.getCABKommentar());

        dtos[row] = dto;
        row++;
    }

    session.close();
    return dtos;
}

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>/*w  w  w.jav a 2 s . c o 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 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;
}