Example usage for org.hibernate Criteria setMaxResults

List of usage examples for org.hibernate Criteria setMaxResults

Introduction

In this page you can find the example usage for org.hibernate Criteria setMaxResults.

Prototype

public Criteria setMaxResults(int maxResults);

Source Link

Document

Set a limit upon the number of objects to be retrieved.

Usage

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 {/*w  w w .j a  va  2s  .  com*/
            // 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.ArtikelFacBean.java

License:Open Source License

public void updateTrumphtopslog(String artikelnummer, String kurzbezeichnungMaterial, String importfileName,
        BigDecimal gewicht, long iBearbeitsungszeit, BigDecimal laserkostenProStunde, Integer lagerIId,
        String mandantCNr, boolean kalkulationsart1, int mehrverbrauchfuerlaserinmm, double breiteArtikel,
        double laengeArtikel, Double hoeheArtikel, TheClientDto theClientDto) throws EJBExceptionLP {

    TrumphtopslogDto ttlogDto = new TrumphtopslogDto();
    try {/*from   ww  w.j a v a2 s.c  o  m*/

        ttlogDto.setNGewicht(Helper.rundeKaufmaennisch(gewicht, 4));
        ttlogDto.setNGestpreisneu(new BigDecimal(0));
        ttlogDto.setCImportfilename(importfileName);
        ttlogDto.setIBearbeitungszeit((int) iBearbeitsungszeit);

        Query queryArt = em.createNamedQuery("ArtikelfindByCNrMandantCNr");
        queryArt.setParameter(1, artikelnummer);
        queryArt.setParameter(2, mandantCNr);
        Artikel artikel = (Artikel) queryArt.getSingleResult();
        ttlogDto.setArtikelIId(artikel.getIId());

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

        String query = "FROM FLRArtikellistespr aspr WHERE aspr.c_kbez ='" + kurzbezeichnungMaterial + "'";
        ;
        org.hibernate.Query kurzbez = session.createQuery(query);

        List subResults = kurzbez.list();

        if (subResults.size() > 0) {
            session.close();

            FLRArtikellistespr flrSpr = (FLRArtikellistespr) subResults.iterator().next();

            Integer artikelIIdMaterial = flrSpr.getId().getArtikelliste().getI_id();
            ttlogDto.setArtikelIIdMaterial(artikelIIdMaterial);
            if (subResults.size() > 1) {
                ttlogDto.setCError("Es wurden mehrer Artikel mit der Kurzbezeichnung '"
                        + kurzbezeichnungMaterial + "' gefunden.");
            }
            // Laserkosten=
            BigDecimal laserkosten = new BigDecimal(iBearbeitsungszeit / (double) 3600000)
                    .multiply(laserkostenProStunde);

            // PreisMNeu berechnen
            BigDecimal preisNeu = new BigDecimal(0);
            try {
                ArtikellagerDto artikellagerDto = getLagerFac().artikellagerFindByPrimaryKey(artikelIIdMaterial,
                        lagerIId);

                Artikel artikelMaterial = em.find(Artikel.class, artikelIIdMaterial);

                // Laserzeit in Minutenfaktor eintragen
                artikel.setFMinutenfaktor1((double) iBearbeitsungszeit / 60000);

                // Anzahl der moeglichen Teile berechnen
                int iAnzahlDerMoeglichenTeile = 0;

                int iAnzahl_1 = 0;
                int iAnzahl_2 = 0;
                double materialLaenge = 0;
                double materialBreite = 0;

                Geometrie geometrieMaterial = em.find(Geometrie.class, artikelIIdMaterial);

                if (geometrieMaterial != null) {
                    if (geometrieMaterial.getFBreite() != null) {
                        materialBreite = geometrieMaterial.getFBreite();

                    }
                    if (geometrieMaterial.getFTiefe() != null) {
                        materialLaenge = geometrieMaterial.getFTiefe();
                    }
                }

                // Geometrie des Artikels zurueckschreiben
                Geometrie geometrieArtikel = em.find(Geometrie.class, artikel.getIId());
                if (geometrieArtikel == null) {
                    geometrieArtikel = new Geometrie(artikel.getIId());
                }

                geometrieArtikel.setFBreite(laengeArtikel);
                geometrieArtikel.setFTiefe(breiteArtikel);
                if (hoeheArtikel != null) {
                    geometrieArtikel.setFHoehe(hoeheArtikel);
                }

                em.merge(geometrieArtikel);
                em.flush();

                // Mehrverbrauch fuer Laser
                laengeArtikel = laengeArtikel + 2 * mehrverbrauchfuerlaserinmm;
                breiteArtikel = breiteArtikel + 2 * mehrverbrauchfuerlaserinmm;

                iAnzahl_1 = (int) (materialLaenge / laengeArtikel) * (int) (materialBreite / breiteArtikel);
                iAnzahl_2 = (int) (materialLaenge / breiteArtikel) * (int) (materialBreite / laengeArtikel);

                if (iAnzahl_1 > iAnzahl_2) {
                    iAnzahlDerMoeglichenTeile = iAnzahl_1;
                } else {
                    iAnzahlDerMoeglichenTeile = iAnzahl_2;
                }

                // PJ 15468
                // Wenn das Teil zu grosz fuer die Blechtafel ist, dann wird
                // die gesamte Blechtafel berechnet
                // d.h. Es wird gerechnet, wie wenn 1 Stueck gefertigt wird
                if (iAnzahlDerMoeglichenTeile == 0) {
                    iAnzahlDerMoeglichenTeile = 1;
                }

                // Gewicht eintragen (Gewicht des Ausgangsmateiral / Anzahl
                // der Teile

                if (artikelMaterial.getFGewichtkg() != null && iAnzahlDerMoeglichenTeile != 0) {
                    artikel.setFGewichtkg(artikelMaterial.getFGewichtkg() / iAnzahlDerMoeglichenTeile);
                }

                if (kalkulationsart1 == true) {

                    BigDecimal preisProKilo = artikellagerDto.getNGestehungspreis();
                    if (artikelMaterial.getNUmrechnungsfaktor() != null
                            && artikelMaterial.getNUmrechnungsfaktor().doubleValue() != 0) {
                        preisProKilo = artikellagerDto.getNGestehungspreis()
                                .divide(artikelMaterial.getNUmrechnungsfaktor(), 4, BigDecimal.ROUND_HALF_EVEN);
                    }

                    // Materialkosten
                    BigDecimal materialkosten = preisProKilo.multiply(gewicht);

                    preisNeu = Helper.rundeKaufmaennisch(materialkosten.add(laserkosten), 4);
                } else {
                    if (iAnzahlDerMoeglichenTeile == 0) {
                        return;
                    }

                    preisNeu = Helper.rundeKaufmaennisch(artikellagerDto.getNGestehungspreis()
                            .divide(new BigDecimal(iAnzahlDerMoeglichenTeile), 4, BigDecimal.ROUND_HALF_EVEN)
                            .add(laserkosten), 4);
                }

                ttlogDto.setNGestpreisneu(preisNeu);

                // Gestehungspreis in Artikellager updaten
                ArtikellagerDto alDto = new ArtikellagerDto();
                alDto.setArtikelIId(artikel.getIId());
                alDto.setLagerIId(lagerIId);
                alDto.setMandantCNr(mandantCNr);
                alDto.setNGestehungspreis(preisNeu);
                getLagerFac().updateGestpreisArtikellager(alDto, theClientDto);

            } catch (RemoteException ex1) {
                // Wenn finderEx, dann kibts keinen preis
                ttlogDto.setCError("Kein Material-Gestehungspreis gefunden.");
            }

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

            org.hibernate.Criteria crit = session.createCriteria(FLRTrumphtopslog.class);
            crit.add(Restrictions.eq(ArtikelFac.FLR_TRUMPHTOPSLOS_ARTIKEL_I_ID, artikel.getIId()));
            crit.addOrder(Order.desc(ArtikelFac.FLR_TRUMPHTOPSLOS_T_ANLEGEN));

            crit.setMaxResults(1);
            List results = crit.list();

            if (results.size() > 0) {

                FLRTrumphtopslog log = (FLRTrumphtopslog) results.iterator().next();
                Trumphtopslog ttlogVorhanden = em.find(Trumphtopslog.class, log.getI_id());

                if (ttlogVorhanden.getNGestpreisneu().doubleValue() == ttlogDto.getNGestpreisneu()
                        .doubleValue()) {
                    // Wenn der Preis gleich ist, dann auslassen
                } else {
                    PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN
                    Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_TRUMPHTOPSLOG);
                    ttlogDto.setIId(pk);

                    erzeugeTrumphTopsLogeintrag(ttlogDto);

                }

                // Wenn der Preis geaendert ist, dann neuer Eintrag

            } else {
                // Neuer Eintrag
                PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN
                Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_TRUMPHTOPSLOG);
                ttlogDto.setIId(pk);

                erzeugeTrumphTopsLogeintrag(ttlogDto);
            }

            session.close();

            // Gestehungspreis in der Losbuchung updaten

            // Alle Lose die IN_PRODUKTION sind (d.h. noch keine
            // Ablieferungen haben) und den Artikel beinhalten

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

            String sQueryIstmaterial = "SELECT istmaterial, (SELECT sum(abl.n_menge) FROM FLRLosablieferung AS abl WHERE abl.flrlos.i_id=istmaterial.flrlossollmaterial.flrlos.i_id) "
                    + " FROM FLRLosistmaterial AS istmaterial WHERE istmaterial.flrlossollmaterial.flrlos.status_c_nr='"
                    + LocaleFac.STATUS_IN_PRODUKTION + "' AND istmaterial.flrlossollmaterial.flrartikel.i_id="
                    + artikel.getIId() + " AND istmaterial.b_abgang=1";

            org.hibernate.Query istmaterial = session.createQuery(sQueryIstmaterial);

            results = istmaterial.list();
            Iterator<?> resultListIterator = results.iterator();
            while (resultListIterator.hasNext()) {

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

                BigDecimal summeAblieferungen = (BigDecimal) o[1];

                if (summeAblieferungen == null || summeAblieferungen.doubleValue() == 0) {

                    FLRLosistmaterial flrLosistmaterial = (FLRLosistmaterial) o[0];

                    try {
                        BigDecimal bdPreisAlt = getLagerFac().getGestehungspreisEinerAbgangsposition(
                                LocaleFac.BELEGART_LOS, flrLosistmaterial.getI_id(), null);

                        if (preisNeu.doubleValue() != bdPreisAlt.doubleValue()) {
                            // Preis in Lager updaten

                            LagerbewegungDto lagerbewegungDto = getLagerFac()
                                    .getLetzteintrag(LocaleFac.BELEGART_LOS, flrLosistmaterial.getI_id(), null);

                            if (lagerbewegungDto != null) {

                                // Hole Urspruenge dazu
                                LagerabgangursprungDto[] urspruenge = getLagerFac()
                                        .lagerabgangursprungFindByLagerbewegungIIdBuchung(
                                                lagerbewegungDto.getIIdBuchung());

                                for (int i = 0; i < urspruenge.length; i++) {

                                    LagerbewegungDto[] lagerbewegungDtos = getLagerFac()
                                            .lagerbewegungFindByIIdBuchung(
                                                    urspruenge[i].getILagerbewegungidursprung());

                                    // Preis in Lager updaten
                                    getLagerFac().bucheZu(lagerbewegungDtos[0].getCBelegartnr(),
                                            lagerbewegungDtos[0].getIBelegartid(),
                                            lagerbewegungDtos[0].getIBelegartpositionid(),
                                            lagerbewegungDtos[0].getArtikelIId(),
                                            lagerbewegungDtos[0].getNMenge(), preisNeu,
                                            lagerbewegungDtos[0].getLagerIId(), null,
                                            lagerbewegungDtos[0].getTBelegdatum(), theClientDto, null, true);

                                }

                            }
                        }

                    } catch (RemoteException e) {
                        throwEJBExceptionLPRespectOld(e);
                    }
                }

            }

        } else {
            // Kein Material gefunden
            session.close();
            PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN
            Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_TRUMPHTOPSLOG);
            ttlogDto.setIId(pk);
            ttlogDto.setCError(
                    "Kein Materialartikel mit der Kurzbezeichnung '" + kurzbezeichnungMaterial + "' gefunden");
            ttlogDto.setNGestpreisneu(new BigDecimal(0));
            erzeugeTrumphTopsLogeintrag(ttlogDto);

        }
    } catch (NoResultException ex) {
        // Fehler
        ttlogDto.setCError("Kein Artikel mit der Nummer '" + artikelnummer + "' gefunden");
        ttlogDto.setNGestpreisneu(new BigDecimal(0));

        try {
            erzeugeTrumphTopsLogeintrag(ttlogDto);
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        int u = 0;

    }

}

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"));
    }//w  w  w.j  a va2  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.InventurFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public void inventurpreiseAufEkPreisSetzen(Integer inventurIId, TheClientDto theClientDto) {

    InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto);

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

    org.hibernate.Criteria crit = session.createCriteria(FLRInventurstand.class);
    crit.add(Restrictions.eq("inventur_i_id", inventurIId));

    List<?> results = crit.list();
    Iterator<?> resultListIteratorInventur = results.iterator();
    int row = 0;/*  ww  w  . j a  v a 2s .  co m*/
    while (resultListIteratorInventur.hasNext()) {
        FLRInventurstand flrInventurstand = (FLRInventurstand) resultListIteratorInventur.next();

        row++;
        System.out.println(row + " von " + results.size());

        java.math.BigDecimal inventurpeis = new BigDecimal(0);

        Session sessionZugang = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria critZugang = sessionZugang.createCriteria(FLRLagerbewegung.class);
        critZugang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_ARTIKEL_I_ID,
                flrInventurstand.getFlrartikel().getI_id()));
        critZugang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false)));
        critZugang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false)));
        critZugang.add(Restrictions.gt(LagerFac.FLR_LAGERBEWEGUNG_N_MENGE, new BigDecimal(0)));
        critZugang.add(
                Restrictions.gt(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, inventurDto.getTInventurdatum()));

        String[] arten = new String[2];
        arten[0] = LocaleFac.BELEGART_LOSABLIEFERUNG;
        arten[1] = LocaleFac.BELEGART_BESTELLUNG;
        critZugang.add(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, arten));
        critZugang.addOrder(Order.asc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));

        critZugang.setMaxResults(1);
        List<?> resultList = critZugang.list();

        if (resultList.size() > 0) {
            Iterator<?> resultListIterator = resultList.iterator();
            FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();
            inventurpeis = lagerbewegung.getN_einstandspreis();
        } else {
            // EK-Preis
            ArtikellieferantDto alDto;
            try {
                alDto = getArtikelFac().getArtikelEinkaufspreis(flrInventurstand.getFlrartikel().getI_id(),
                        new BigDecimal(1), theClientDto.getSMandantenwaehrung(), theClientDto);
                if (alDto != null && alDto.getNNettopreis() != null
                        && alDto.getNNettopreis().doubleValue() != 0) {
                    inventurpeis = alDto.getNNettopreis();
                } else {
                    continue;
                }
            } catch (RemoteException e) {
                throwEJBExceptionLPRespectOld(e);
            }

        }
        sessionZugang.close();
        // Updaten

        InventurstandDto inventurstandDto = inventurstandFindByPrimaryKey(flrInventurstand.getI_id());
        inventurstandDto.setNInventurpreis(inventurpeis);
        try {
            getInventurFac().updateInventurstand(inventurstandDto);
        } catch (RemoteException e) {
            throwEJBExceptionLPRespectOld(e);
        }

    }

    InventurDto dto = inventurFindByPrimaryKey(inventurIId, theClientDto);

    dto.setBAbwertungdurchgefuehrt(Helper.boolean2Short(false));
    dto.setTAbwertungdurchgefuehrt(null);

    getInventurFac().updateInventur(dto, theClientDto);

}

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

License:Open Source License

public BigDecimal getGestehungspreisZumZeitpunkt(Integer artikelIId, Integer lagerIId,
        java.sql.Timestamp tsZeitpunkt, TheClientDto theClientDto) {
    if (artikelIId == null || tsZeitpunkt == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null || tsZeitpunkt == null"));
    }//from  w w w.  ja  va  2  s.c o  m

    ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto);

    // Wenn nicht lagerbewirtschaftet, dann auf KEIN_LAGER umstellen.
    if (!Helper.short2boolean(aDto.getBLagerbewirtschaftet())) {
        lagerIId = lagerFindByCNrByMandantCNr(LagerFac.LAGER_KEINLAGER, theClientDto.getMandant()).getIId();
    }

    if (aDto.getArtikelartCNr().equals(ArtikelFac.ARTIKELART_ARBEITSZEIT)) {
        ArtikellieferantDto dto = getArtikelFac().getArtikelEinkaufspreis(artikelIId, null, new BigDecimal(1),
                theClientDto.getSMandantenwaehrung(), new java.sql.Date(tsZeitpunkt.getTime()), theClientDto);
        if (dto != null) {
            if (dto.getNNettopreis() != null) {
                return dto.getNNettopreis();
            } else {
                return new BigDecimal(0);
            }
        } else {
            return new BigDecimal(0);
        }
    }

    BigDecimal gesamtwert = null;
    BigDecimal gesamtlagerstand = new BigDecimal(0.0000);

    LagerDto[] lagerDtos = new LagerDto[1];
    if (lagerIId != null) {
        LagerDto lagerDto = new LagerDto();
        lagerDto.setIId(lagerIId);
        lagerDtos[0] = lagerDto;
    } else {
        lagerDtos = lagerFindByMandantCNr(theClientDto.getMandant());
    }

    for (int i = 0; i < lagerDtos.length; i++) {

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

        session = factory.openSession();

        org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class);
        crit.setMaxResults(1);

        crit.add(Expression.le(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tsZeitpunkt))
                .createAlias(LagerFac.FLR_LAGERPLAETZE_FLRARTIKEL, "a").add(Expression.eq("a.i_id", artikelIId))
                .add(Expression.eq("b_historie", Helper.boolean2Short(false)));
        crit.createAlias(LagerFac.FLR_LAGERPLAETZE_FLRLAGER, "l");

        crit.add(Expression.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false)));

        crit.add(Expression.eq("l.i_id", lagerDtos[i].getIId()));

        crit.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM))
                .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));
        List<?> resultList = crit.list();
        Iterator<?> resultListIterator = resultList.iterator();

        if (resultListIterator.hasNext()) {
            if (gesamtwert == null) {
                gesamtwert = new BigDecimal(0.0000);
            }
            FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();

            // Wenns der Gestehungspreis eines bestimmten Lagers ist, dann
            // kann diesel sofort zurueckgegeben werden
            if (lagerIId != null) {
                return lagerbewegung.getN_gestehungspreis();
            }

            BigDecimal lpZp = getLagerstandZumZeitpunkt(artikelIId, lagerDtos[i].getIId(), tsZeitpunkt,
                    theClientDto);

            gesamtlagerstand = gesamtlagerstand.add(lpZp);
            gesamtwert = gesamtwert.add(lpZp.multiply(lagerbewegung.getN_gestehungspreis()));
        }

        session.close();
    }
    if (gesamtlagerstand.doubleValue() != 0) {
        return gesamtwert.divide(gesamtlagerstand, 4, BigDecimal.ROUND_HALF_EVEN);
    } else {
        if (gesamtwert == null) {
            return null;
        } else {
            return new BigDecimal(0.0000);
        }
    }
}

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

License:Open Source License

/**
 * Gibt das Datum der Letzten Zugangsbuchung zurueck
 * /*from w w w .j  av a2s .  c om*/
 * @param artikelIId
 *            4711
 * @param bAbgang
 *            Zu/Abgang
 * @throws EJBExceptionLP
 *             artikelIId == null
 * @return java.sql.Timestamp Timestamp der Letzten Buchung
 */
public java.sql.Timestamp getDatumLetzterZugangsOderAbgangsbuchung(Integer artikelIId, boolean bAbgang)
        throws EJBExceptionLP {
    if (artikelIId == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null"));
    }
    java.sql.Timestamp tsZeit = null;
    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_ABGANG, Helper.boolean2Short(bAbgang)));
    crit.add(Restrictions.gt(LagerFac.FLR_LAGERBEWEGUNG_N_MENGE, new BigDecimal(0)));
    crit.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));
    crit.setMaxResults(1);
    List<?> resultList = crit.list();

    if (resultList.size() > 0) {
        Iterator<?> resultListIterator = resultList.iterator();
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();
        tsZeit = new Timestamp(lagerbewegung.getT_buchungszeit().getTime());
    }
    session.close();
    return tsZeit;

}

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

License:Open Source License

public Integer getLetzteWEP_IID(Integer artikelIId) {
    if (artikelIId == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null"));
    }//from  ww w .  j  a  v  a2  s .  c  o m

    Integer wepIId = null;

    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_C_BELEGARTNR, LocaleFac.BELEGART_BESTELLUNG));
    crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false)));
    crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false)));
    crit.add(Restrictions.gt(LagerFac.FLR_LAGERBEWEGUNG_N_MENGE, new BigDecimal(0)));
    crit.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));
    crit.setMaxResults(1);
    List<?> resultList = crit.list();

    if (resultList.size() > 0) {
        Iterator<?> resultListIterator = resultList.iterator();
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();
        wepIId = lagerbewegung.getI_belegartpositionid();
    }
    session.close();
    return wepIId;

}

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

License:Open Source License

public void importiereMonatsbestellung(ArrayList<ImportMonatsbestellungDto> importMonatbestellung,
        TheClientDto theClientDto) {//from ww  w .j a  v a 2s.com

    // letzte Bestellung des Lieferanten suchen und nachsehen, ob diese in
    // diesem Monat bereits vorhanden ist.

    // PJ 17876
    Integer iMonatsbestellungsart = 0;
    try {
        ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_BESTELLUNG, ParameterFac.PARAMETER_MONATSBESTELLUNGSART);
        iMonatsbestellungsart = (Integer) parameter.getCWertAsObject();
    } catch (RemoteException e2) {
        throwEJBExceptionLPRespectOld(e2);
    }

    if (iMonatsbestellungsart == 2) {
        importiereBestellung(importMonatbestellung, theClientDto);
        return;
    }

    for (int i = 0; i < importMonatbestellung.size(); i++) {

        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = factory.openSession();
        Criteria c = session.createCriteria(FLRBestellung.class);
        c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE,
                importMonatbestellung.get(i).getLieferantIId()));

        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(importMonatbestellung.get(i).getWeDatum().getTime());

        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);

        c.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime()));

        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);

        SimpleDateFormat dateformat = new SimpleDateFormat("MMMM", theClientDto.getLocUi());
        dateformat.format(cal.getTime());

        String projektTextMonatsbestellung = "Monatsbestellung " + dateformat.format(cal.getTime()) + " "
                + cal.get(Calendar.YEAR);

        c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG,
                projektTextMonatsbestellung));

        c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime()));

        //
        String[] s = new String[2];
        s[0] = BestellungFac.BESTELLSTATUS_ERLEDIGT;
        s[1] = BestellungFac.BESTELLSTATUS_STORNIERT;
        c.add(Restrictions.not(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, s)));

        c.addOrder(Order.desc(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM));
        c.setMaxResults(1);

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

        Integer bestellungIId = null;

        if (list.size() > 0) {
            FLRBestellung b = (FLRBestellung) list.iterator().next();
            bestellungIId = b.getI_id();
        }

        Lieferant lieferant = em.find(Lieferant.class, importMonatbestellung.get(i).getLieferantIId());
        Partner partner = em.find(Partner.class, lieferant.getPartnerIId());

        if (bestellungIId == null) {

            BestellungDto bsdto = createBestellungDto(importMonatbestellung.get(i).getLieferantIId(),
                    theClientDto.getMandant(), theClientDto.getIDPersonal());

            try {
                BestellungtextDto bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr(
                        theClientDto.getMandant(), partner.getLocaleCNrKommunikation(),
                        MediaFac.MEDIAART_KOPFTEXT, theClientDto);
                if (bsText != null) {
                    bsdto.setBestelltextIIdKopftext(bsText.getIId());
                }
                bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr(
                        theClientDto.getMandant(), partner.getLocaleCNrKommunikation(),
                        MediaFac.MEDIAART_FUSSTEXT, theClientDto);
                if (bsText != null) {
                    bsdto.setBestelltextIIdFusstext(bsText.getIId());
                }
            } catch (RemoteException e1) {
                throwEJBExceptionLPRespectOld(e1);
            }

            bsdto.setDBelegdatum(new Date(cal.getTimeInMillis()));//
            bsdto.setDLiefertermin(new Timestamp(cal.getTimeInMillis()));

            bsdto.setCBez(projektTextMonatsbestellung);

            try {
                bestellungIId = getBestellungFac().createBestellung(bsdto, theClientDto);
            } catch (EJBExceptionLP e) {
                throw new EJBExceptionLP(e);
            } catch (RemoteException e) {
                throw new EJBExceptionLP(e);
            }

        }

        // Position anlegen
        try {
            BestellpositionDto bspos = createBestellPositionDto(bestellungIId,
                    importMonatbestellung.get(i).getLieferantIId(),
                    importMonatbestellung.get(i).getArtikelIId(), importMonatbestellung.get(i).getMenge(),
                    theClientDto);
            Integer bsPosIId = getBestellpositionFac().createBestellposition(bspos, theClientDto, null, null);

            // Wareneingang zu Verladedatum anlegen, wenn noch nicht
            // vorhanden

            if (iMonatsbestellungsart == 0) {
                Timestamp tVerladedatum = new java.sql.Timestamp(
                        importMonatbestellung.get(i).getWeDatum().getTime());

                Query query = em.createNamedQuery("WareneingangfindByBestellungIIdTWareneingangsdatum");
                query.setParameter(1, bestellungIId);
                query.setParameter(2, tVerladedatum);
                Collection<?> col = query.getResultList();

                Integer wareneingangId = null;

                if (col.size() > 0) {
                    Wareneingang we = (Wareneingang) col.iterator().next();
                    wareneingangId = we.getIId();
                } else {
                    WareneingangDto wedto = new WareneingangDto();
                    wedto.setBestellungIId(bestellungIId);
                    wedto.setCLieferscheinnr(importMonatbestellung.get(i).getLieferscheinnr());
                    wedto.setTLieferscheindatum(tVerladedatum);
                    wedto.setTWareneingangsdatum(tVerladedatum);
                    wedto.setLagerIId(lieferant.getLagerIIdZubuchungslager());
                    wedto.setNWechselkurs(new BigDecimal(1));
                    try {
                        wareneingangId = getWareneingangFac().createWareneingang(wedto, theClientDto);
                    } catch (RemoteException e) {
                        throw new EJBExceptionLP(e);
                    }
                }

                try {
                    WareneingangspositionDto weposDto = new WareneingangspositionDto();
                    weposDto.setBestellpositionIId(bsPosIId);
                    weposDto.setNGeliefertemenge(importMonatbestellung.get(i).getMenge());
                    weposDto.setPersonalIIdAendern(theClientDto.getIDPersonal());
                    weposDto.setPersonalIIdAnlegen(theClientDto.getIDPersonal());
                    weposDto.setTAendern(new Timestamp(System.currentTimeMillis()));
                    weposDto.setTAnlegen(weposDto.getTAendern());
                    weposDto.setWareneingangIId(wareneingangId);
                    BigDecimal nGeliefertpreis = bspos.getNNettogesamtpreis();
                    weposDto.setNGelieferterpreis(nGeliefertpreis);
                    getWareneingangFac().createWareneingangsposition(weposDto, theClientDto);

                    getBestellungFac().aktiviereBestellung(bestellungIId, theClientDto);

                    getBestellpositionFac().manuellAufVollstaendigGeliefertSetzen(bsPosIId, theClientDto);

                } catch (EJBExceptionLP e) {
                    throw new EJBExceptionLP(e);
                } catch (RemoteException e) {
                    throw new EJBExceptionLP(e);
                }
            }

        } catch (EJBExceptionLP e) {
            throw new EJBExceptionLP(e);
        } catch (RemoteException e) {
            throw new EJBExceptionLP(e);
        }
        session.close();
    }

}

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

License:Open Source License

public LossollarbeitsplanDto[] getAlleOffenenZeiternFuerStueckrueckmeldung(Integer personalIId,
        TheClientDto theClientDto) {//  w ww  . j  a v  a2s . co  m

    ArrayList<LossollarbeitsplanDto> alDaten = new ArrayList<LossollarbeitsplanDto>();
    HashMap ids = new HashMap();
    try {

        Integer taetigkeitIId_Kommt = getZeiterfassungFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_KOMMT, theClientDto).getIId();
        Integer taetigkeitIId_Geht = getZeiterfassungFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_GEHT, theClientDto).getIId();

        Session session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria liste = session.createCriteria(FLRZeitdaten.class);
        liste.add(Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_PERSONAL_I_ID, personalIId));

        liste.add(Restrictions.or(
                Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_TAETIGKEIT_I_ID, taetigkeitIId_Kommt),
                Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_TAETIGKEIT_I_ID, taetigkeitIId_Geht)));
        liste.add(Expression.lt(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT,
                new Timestamp(System.currentTimeMillis())));

        liste.add(
                Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_B_AUTOMATIKBUCHUNG, Helper.boolean2Short(false)));

        liste.addOrder(Order.desc(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT));
        liste.setMaxResults(1);
        List<?> letztesKommt = liste.list();

        Iterator it = letztesKommt.iterator();

        Timestamp tVon = Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()));

        if (it.hasNext()) {
            tVon = new Timestamp(((FLRZeitdaten) it.next()).getT_zeit().getTime());
        }

        boolean bTheoretischeIstZeit = false;

        try {
            ParametermandantDto parameterIstZeit = (ParametermandantDto) getParameterFac().getMandantparameter(
                    theClientDto.getMandant(), ParameterFac.KATEGORIE_PERSONAL,
                    ParameterFac.PARAMETER_THEORETISCHE_IST_ZEIT_RECHNUNG);

            bTheoretischeIstZeit = ((Boolean) parameterIstZeit.getCWertAsObject());

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

        ZeitdatenDto[] dtos = getZeiterfassungFac().zeitdatenFindZeitdatenEinesTagesUndEinerPerson(personalIId,
                tVon, new Timestamp(System.currentTimeMillis()));

        boolean bRuestenSchonVorhanden = false;

        for (int i = dtos.length - 1; i >= 0; i--) {
            if (dtos[i].getCBelegartnr() != null && dtos[i].getIBelegartid() != null) {

                if (dtos[i].getCBelegartnr().equals(LocaleFac.BELEGART_LOS)
                        && dtos[i].getIBelegartpositionid() != null) {

                    try {
                        Lossollarbeitsplan lossollarbeitsplan = em.find(Lossollarbeitsplan.class,
                                dtos[i].getIBelegartpositionid());
                        if (lossollarbeitsplan != null) {
                            if (!Helper.short2boolean(lossollarbeitsplan.getBNurmaschinenzeit())
                                    && !Helper.short2boolean(lossollarbeitsplan.getBFertig())) {
                                LossollarbeitsplanDto sollDto = assembleLossollarbeitsplanDto(
                                        lossollarbeitsplan);

                                // PJ 16233
                                if (bTheoretischeIstZeit) {
                                    if (!ids.containsKey(sollDto.getIId())) {
                                        // PJ 16035 Ruesten nur das letzte
                                        if (sollDto.getAgartCNr() == null) {
                                            if (bRuestenSchonVorhanden == false) {
                                                bRuestenSchonVorhanden = true;
                                                alDaten.add(sollDto);
                                                ids.put(sollDto.getIId(), sollDto.getIId());
                                            }
                                        } else {
                                            alDaten.add(sollDto);
                                            ids.put(sollDto.getIId(), sollDto.getIId());
                                        }

                                    }
                                } else {
                                    alDaten.add(sollDto);
                                }
                            }
                        }

                    } catch (NoResultException fe) {
                        // keiner da
                    }
                }
            }
        }

        // nun nach Losnr und AG sortieren
        // Nach Fertigungsgruppe sortieren
        for (int k = alDaten.size() - 1; k > 0; --k) {
            for (int j = 0; j < k; ++j) {
                LossollarbeitsplanDto a1 = (LossollarbeitsplanDto) alDaten.get(j);
                LossollarbeitsplanDto a2 = (LossollarbeitsplanDto) alDaten.get(j + 1);

                LosDto l1 = losFindByPrimaryKey(a1.getLosIId());
                LosDto l2 = losFindByPrimaryKey(a2.getLosIId());

                String s1 = l1.getCNr();

                if (a1.getIUnterarbeitsgang() != null) {
                    s1 += Helper.fitString2LengthAlignRight(a1.getIUnterarbeitsgang() + "", 10, ' ');
                } else {
                    s1 += Helper.fitString2LengthAlignRight("", 10, ' ');
                }
                s1 += Helper.fitString2LengthAlignRight(a1.getIArbeitsgangnummer() + "", 10, ' ');

                String s2 = l2.getCNr();
                if (a2.getIUnterarbeitsgang() != null) {
                    s2 += Helper.fitString2LengthAlignRight(a2.getIUnterarbeitsgang() + "", 10, ' ');
                } else {
                    s2 += Helper.fitString2LengthAlignRight("", 10, ' ');
                }
                s2 += Helper.fitString2LengthAlignRight(a2.getIArbeitsgangnummer() + "", 10, ' ');

                if (s1.compareTo(s2) > 0) {
                    alDaten.set(j, a2);
                    alDaten.set(j + 1, a1);
                }
            }

        }

    } catch (RemoteException e) {
        throwEJBExceptionLPRespectOld(e);
    }

    LossollarbeitsplanDto[] returnArray = new LossollarbeitsplanDto[alDaten.size()];
    return (LossollarbeitsplanDto[]) alDaten.toArray(returnArray);
}

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

License:Open Source License

public void createLosgutschlechtMitMaschine(LosgutschlechtDto losgutschlechtDto, TheClientDto theClientDto) {

    createLosgutschlecht(losgutschlechtDto, theClientDto);

    // Bei Aenderungen auch in PersonalFacBeanWS.bucheZeitMitStueckmeldung
    // aendern!!!!!

    LossollarbeitsplanDto lossollDto = lossollarbeitsplanFindByPrimaryKey(
            losgutschlechtDto.getLossollarbeitsplanIId());

    Query query = em.createNamedQuery("LossollarbeitsplanfindByLosIIdIArbeitsgangnummer");
    query.setParameter(1, lossollDto.getLosIId());
    query.setParameter(2, lossollDto.getIArbeitsgangnummer());
    Collection<?> cl = query.getResultList();

    // Beschreibung lt. WH: Es muessen zusaetzlich alle Sollpositionen
    // desselben AG welche die AG-Art Laufzeit haben und nur
    // Maschinenzeit
    // sind, ebenfalls dieselben Gut-Schlecht-Stueck gebucht werden

    // WH: Wenn der Ausloeser der niedrigste UAG im AG ist und
    // Umspannzeit ist, dann Gut-Schlecht-Stueck auf Maschinenzeit
    // buchen//w  ww. jav a  2 s . c  o  m

    boolean bIchBinDerErsteUnterarbeitsgangMitUmsapnnzeit = false;

    if (cl != null) {
        Iterator<?> iterator = cl.iterator();
        while (iterator.hasNext()) {
            Lossollarbeitsplan lossollarbeitsplanTemp = (Lossollarbeitsplan) iterator.next();
            if (lossollarbeitsplanTemp.getAgartCNr() != null
                    && lossollarbeitsplanTemp.getAgartCNr().equals(StuecklisteFac.AGART_UMSPANNZEIT)) {

                if (lossollarbeitsplanTemp.getIId().equals(lossollDto.getIId())) {
                    bIchBinDerErsteUnterarbeitsgangMitUmsapnnzeit = true;

                }
                break;
            }
        }

        if (bIchBinDerErsteUnterarbeitsgangMitUmsapnnzeit == true) {
            iterator = cl.iterator();
            while (iterator.hasNext()) {
                Lossollarbeitsplan lossollarbeitsplanTemp = (Lossollarbeitsplan) iterator.next();

                if (!lossollarbeitsplanTemp.getIId().equals(losgutschlechtDto.getLossollarbeitsplanIId())) {

                    if (lossollarbeitsplanTemp.getAgartCNr() != null && (Helper
                            .short2boolean(lossollarbeitsplanTemp.getBNurmaschinenzeit())
                            && lossollarbeitsplanTemp.getAgartCNr().equals(StuecklisteFac.AGART_LAUFZEIT))) {

                        losgutschlechtDto.setLossollarbeitsplanIId(lossollarbeitsplanTemp.getIId());

                        // Die letzte Maschinenzeit des Arbeitganges
                        // verwenden
                        Session session = FLRSessionFactory.getFactory().openSession();
                        org.hibernate.Criteria liste = session.createCriteria(FLRMaschinenzeitdaten.class);
                        if (lossollarbeitsplanTemp.getMaschineIId() != null)
                            // Maschine nur filtern wenn im Arbeitsgang
                            // definiert, sonst erste verwenden (bei ?? fuer
                            // Maschine am Terminal)
                            liste.add(Expression.eq("maschine_i_id", lossollarbeitsplanTemp.getMaschineIId()));
                        liste.add(Expression.eq("lossollarbeitsplan_i_id", lossollarbeitsplanTemp.getIId()));

                        liste.addOrder(Order.desc("t_von"));
                        liste.setMaxResults(1);
                        List<?> letztesKommt = liste.list();

                        Iterator it = letztesKommt.iterator();

                        if (it.hasNext()) {
                            FLRMaschinenzeitdaten mz = (FLRMaschinenzeitdaten) it.next();
                            losgutschlechtDto.setMaschinenzeitdatenIId(mz.getI_id());
                            losgutschlechtDto.setZeitdatenIId(null);
                            createLosgutschlecht(losgutschlechtDto, theClientDto);
                        }

                    }
                }
            }
        }

    }

}