Example usage for org.hibernate.criterion Restrictions in

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

Introduction

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

Prototype

public static Criterion in(String propertyName, Collection values) 

Source Link

Document

Apply an "in" constraint to the named property.

Usage

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.  java2 s .co m*/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    // PJ 14202

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

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

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

    }
    if (dBis != null) {

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

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

    Query inventurliste = sessionInv.createQuery(sQuery);

    ArrayList alInventurliste = new ArrayList();

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

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

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

        alInventurliste.add(item);

    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            }

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

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

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

            }

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

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

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

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

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

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

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

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

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

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

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

            if (bWeReferenzAndrucken) {

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

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

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

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

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

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

                zeile[REPORT_ARTIKELSTATISTIK_MATERIALZUSCHLAG] = bi.getBdMaterialzuschlag();

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

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

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

        }

    }

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

        Object[] zeile = new Object[REPORT_ARTIKELSTATISTIK_ANZAHL_SPALTEN];

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

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

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

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

    }

    sessionInv.close();

    session.close();

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

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

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

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

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

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

                            boolean bGutschrift = false;

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

                            // SP18027

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

                        }
                    }

                }

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

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

            }

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

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

    } else {

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

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

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

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

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

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

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

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

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

                    }

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

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

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

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

                    al.add(zeile);
                }

            }

            // PJ17817

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

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

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

                zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = reportRahmenreservierungDto
                        .getTUebersteuerterLiefertermin();

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

                al.add(zeile);
            }

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

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

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

                zeile[REPORT_ARTIKELSTATISTIK_SORTIERDATUM] = dto.getTLiefertermin();

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

        }

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

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

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

        }

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

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

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

    }
}

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

License:Open Source License

private RahmenbestelltReportDto[] getReportRahmenbestelltDto(Integer artikelIId, TheClientDto theClientDto)
        throws RemoteException {
    Session session;//from   w w  w.  j  ava 2s.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>/*from   w  ww  . java 2 s .  c om*/
 * Achtung: Hibernate verwendet lazy initialization, d.h. der Zugriff auf
 * Collections muss innerhalb der Session erfolgen.
 * 
 * @param kritDtoI
 *            die Kriterien des Benutzers
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return ReportRahmenreservierungDto[] die Liste der Auftraege
 * @throws EJBExceptionLP
 *             Ausnahme
 */
public ReportRahmenreservierungDto[] getReportRahmenreservierung(ReportAnfragestatistikKriterienDto kritDtoI,
        TheClientDto theClientDto) throws EJBExceptionLP {
    ReportRahmenreservierungDto[] aResult = null;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;

    try {

        session = factory.openSession();

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

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

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

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

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

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

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

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

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

            ReportRahmenreservierungDto reportDto = new ReportRahmenreservierungDto();

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

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

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

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

License:Open Source License

/**
 * Fehlmengen komplett neu erzeugen// w  w w.  j a  va 2  s  .  c om
 * 
 * @param theClientDto der aktuelle Benutzer 
 * @throws EJBExceptionLP
 */
@TransactionAttribute(TransactionAttributeType.NEVER)
public void pruefeFehlmengen(TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;
    try {
        session = FLRSessionFactory.getFactory().openSession();

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

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

        Criteria cLosmat = session.createCriteria(FLRLossollmaterial.class);
        Criteria cLos = cLosmat.createCriteria(FertigungFac.FLR_LOSSOLLMATERIAL_FLRLOS);
        // Filter nach Status
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(FertigungFac.STATUS_AUSGEGEBEN);
        cStati.add(FertigungFac.STATUS_GESTOPPT);
        cStati.add(FertigungFac.STATUS_IN_PRODUKTION);
        cStati.add(FertigungFac.STATUS_TEILERLEDIGT);
        cLos.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, cStati));

        // Query ausfuehren
        List<?> listLosmat = cLosmat.list();
        for (Iterator<?> iter = listLosmat.iterator(); iter.hasNext();) {
            FLRLossollmaterial item = (FLRLossollmaterial) iter.next();
            BigDecimal bdAusgegeben = getFertigungFac().getAusgegebeneMenge(item.getI_id(), null, theClientDto);
            BigDecimal bdFehlmenge = item.getN_menge().subtract(bdAusgegeben.abs());

            // gibt es ein Fehlmenge?
            if (bdFehlmenge.compareTo(new BigDecimal(0)) > 0) {
                // Eintrag suchen
                ArtikelfehlmengeDto fmDto = new ArtikelfehlmengeDto();
                fmDto.setArtikelIId(item.getFlrartikel().getI_id());
                fmDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                fmDto.setIBelegartpositionid(item.getI_id());
                fmDto.setNMenge(bdFehlmenge);
                fmDto.setTLiefertermin(new java.sql.Date(item.getFlrlos().getT_produktionsbeginn().getTime()));

                // PJ17994
                fmDto.setTLiefertermin(Helper.addiereTageZuDatum(
                        new java.sql.Date(item.getFlrlos().getT_produktionsbeginn().getTime()),
                        item.getI_beginnterminoffset()));

                context.getBusinessObject(FehlmengeFac.class).createArtikelfehlmenge(fmDto);
                myLogger.warn(theClientDto.getIDUser(), "Fehlmenge nachgetragen: " + fmDto);

            } else {

                BigDecimal fehlmenge = item.getN_menge().abs().subtract(bdAusgegeben.abs());

                if (fehlmenge.doubleValue() > 0) {
                    ArtikelfehlmengeDto fmDto = new ArtikelfehlmengeDto();
                    fmDto.setArtikelIId(item.getFlrartikel().getI_id());
                    fmDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
                    fmDto.setIBelegartpositionid(item.getI_id());

                    fmDto.setNMenge(item.getN_menge().subtract(bdAusgegeben));
                    // PJ17994
                    fmDto.setTLiefertermin(Helper.addiereTageZuDatum(
                            new java.sql.Date(item.getFlrlos().getT_produktionsende().getTime()),
                            item.getI_beginnterminoffset()));

                    context.getBusinessObject(FehlmengeFac.class).createArtikelfehlmenge(fmDto);
                    myLogger.warn(theClientDto.getIDUser(), "Fehlmenge nachgetragen: " + fmDto);
                }
            }
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

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;/*from w ww  . java  2  s . 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.InventurFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public void inventurDurchfuehren(Integer inventurIId, boolean bNichtInventierteArtikelAufNullSetzen,
        TheClientDto theClientDto) throws EJBExceptionLP {

    InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto);

    myLogger.logKritisch("Inventur Start:" + new Timestamp(System.currentTimeMillis()));

    // Inventurdatum auf morgen 00:00 setzen
    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(inventurDto.getTInventurdatum().getTime());
    c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1);

    Timestamp ts = new Timestamp(c.getTimeInMillis());
    inventurDto.setTInventurdatum(Helper.cutTimestamp(ts));

    if (Helper.short2boolean(inventurDto.getBInventurdurchgefuehrt()) == true) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_INVENTUR_BEREITS_DURCHGEFUEHRT,
                new Exception("Helper.short2boolean(inventurDto.getBInventurdurchgefuehrt())==true"));
    }//from   www .j a  v  a 2s. c o m

    try {

        // Wenn nur ein Lager angegeben, dann Inventur auch nur fuer ein
        // Lager durchfuehren
        LagerDto[] lagerDtos = null;
        if (inventurDto.getLagerIId() == null) {
            lagerDtos = getLagerFac().lagerFindByMandantCNr(theClientDto.getMandant());
        } else {
            lagerDtos = new LagerDto[1];
            lagerDtos[0] = getLagerFac().lagerFindByPrimaryKey(inventurDto.getLagerIId());
        }
        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = factory.openSession();

        Criteria artikelQuery = session.createCriteria(FLRArtikel.class);
        artikelQuery.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()))
                .add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKELLISTE_ARTIKELART_C_NR,
                        new String[] { ArtikelFac.ARTIKELART_HANDARTIKEL })));
        artikelQuery.addOrder(Order.asc("i_id"));

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

        Iterator<?> resultListIterator = resultList.iterator();
        int ii = 0;
        while (resultListIterator.hasNext()) {
            FLRArtikel artikel = (FLRArtikel) resultListIterator.next();
            ii += 1;

            // myLogger.logKritisch(artikel.getC_nr()+": "+new
            // Integer(ii).toString());
            // long t=System.currentTimeMillis();
            for (int i = 0; i < lagerDtos.length; i++) {
                long l = System.currentTimeMillis();

                // wenn bNichtInventierteArtikelAufNullSetzen==true, dann
                // artikel mit jetzt auf lagerstand null setzen
                if (bNichtInventierteArtikelAufNullSetzen == true
                        && Helper.short2boolean(artikel.getB_lagerbewirtschaftet()) == true) {
                    if (Helper.short2boolean(artikel.getB_chargennrtragend()) == false
                            && Helper.short2boolean(artikel.getB_seriennrtragend()) == false) {

                        InventurlisteDto[] ilDtos = inventurlisteFindByInventurIIdLagerIIdArtikelIId(
                                inventurIId, lagerDtos[i].getIId(), artikel.getI_id(), theClientDto);
                        if (ilDtos.length < 1) {
                            InventurlisteDto inventurlisteDto = new InventurlisteDto();
                            inventurlisteDto.setArtikelIId(artikel.getI_id());
                            inventurlisteDto.setLagerIId(lagerDtos[i].getIId());
                            inventurlisteDto.setInventurIId(inventurIId);
                            inventurlisteDto.setNInventurmenge(new BigDecimal(0));
                            getInventurFac().createInventurliste(inventurlisteDto, false, theClientDto);
                        }
                    }
                }

                InventurstandDto inventurstandDtoVorhanden = inventurstandfindByInventurIIdArtikelIIdLagerIIdOhneExc(
                        inventurIId, lagerDtos[i].getIId(), artikel.getI_id(), theClientDto);
                if (inventurstandDtoVorhanden == null) {
                    java.math.BigDecimal gestpreis = getLagerFac().getGestehungspreisZumZeitpunkt(
                            artikel.getI_id(), lagerDtos[i].getIId(), inventurDto.getTInventurdatum(),
                            theClientDto);

                    if (gestpreis == null) {
                        gestpreis = new BigDecimal(0);
                    }
                    InventurstandDto inventurstandDto = new InventurstandDto();
                    inventurstandDto.setArtikelIId(artikel.getI_id());
                    inventurstandDto.setInventurIId(inventurIId);
                    inventurstandDto.setLagerIId(lagerDtos[i].getIId());
                    inventurstandDto
                            .setNInventurmenge(getInventurstand(artikel.getI_id(), lagerDtos[i].getIId(),
                                    inventurDto.getIId(), inventurDto.getTInventurdatum(), theClientDto));
                    inventurstandDto.setNInventurpreis(gestpreis);
                    getInventurFac().createInventurstand(inventurstandDto, theClientDto);
                }
            }
            // myLogger.logKritisch("*"+ new
            // Long(System.currentTimeMillis()-t).toString());
            // t=System.currentTimeMillis();
        }
        session.close();

    }

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

    InventurDto inventur = inventurFindByPrimaryKey(inventurIId, theClientDto);

    inventur.setBInventurdurchgefuehrt(Helper.boolean2Short(true));
    inventur.setTInventurdurchgefuehrt(new Timestamp(System.currentTimeMillis()));
    inventur.setPersonalIIdInventurdurchgefuehrt(theClientDto.getIDPersonal());

    getInventurFac().updateInventur(inventur, theClientDto);

    myLogger.logKritisch("Inventur Ende:" + new Timestamp(System.currentTimeMillis()));

}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public String pruefeQuickLagerstandGegenEchtenLagerstand(Integer artikelIIdInput, TheClientDto theClientDto) {

    LagerDto[] lagerDtos = lagerFindByMandantCNr(theClientDto.getMandant());

    String[] handartikel = new String[1];
    handartikel[0] = ArtikelFac.ARTIKELART_HANDARTIKEL;

    Session session = FLRSessionFactory.getFactory().openSession();
    org.hibernate.Criteria crit = session.createCriteria(FLRArtikel.class);
    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
    // crit.add(Restrictions.eq("i_id", 6901));
    crit.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKEL_ARTIKELART_C_NR, handartikel)));
    crit.add(Expression.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, new Short((short) 1)));

    if (artikelIIdInput != null) {
        crit.add(Restrictions.eq("i_id", artikelIIdInput));
    }/*  w ww .j  a v  a  2 s.  com*/

    crit.addOrder(Order.asc("c_nr"));
    List<?> resultList = crit.list();

    int zaehler = 1;
    byte[] CRLFAscii = { 13, 10 };
    String rueckgabe = "ZAEHLER;ARTIKEL_I_ID;ARTIKEL_C_NR;LAGER;QUICK;LAGERSTAND" + new String(CRLFAscii);
    String sql = "";
    Iterator<?> resultListIterator = resultList.iterator();

    while (resultListIterator.hasNext()) {
        FLRArtikel flrArtikel = (FLRArtikel) resultListIterator.next();
        for (int i = 0; i < lagerDtos.length; i++) {
            LagerDto lagerDto = lagerDtos[i];

            String ausgabe = flrArtikel.getI_id() + ";" + flrArtikel.getC_nr() + ";";

            ausgabe += lagerDto.getCNr() + ";";
            BigDecimal quicklagerstand = new BigDecimal(0);
            Artikellager artikellager = em.find(Artikellager.class,
                    new ArtikellagerPK(flrArtikel.getI_id(), lagerDto.getIId()));
            if (artikellager == null) {
                ausgabe += "0;";
            } else {
                quicklagerstand = artikellager.getNLagerstand();
            }
            ausgabe += quicklagerstand.toString() + ";";
            BigDecimal echterlagerstand = getLagerstandZumZeitpunkt(flrArtikel.getI_id(), lagerDto.getIId(),
                    new java.sql.Timestamp(System.currentTimeMillis() + 3600000 * 24), theClientDto);
            ausgabe += echterlagerstand.toString() + ";";

            if (quicklagerstand.doubleValue() != echterlagerstand.doubleValue()) {
                rueckgabe += zaehler + ";" + ausgabe + new String(CRLFAscii);

                System.out.println(zaehler + ";" + ausgabe);

                String update = "UPDATE WW_ARTIKELLAGER SET N_LAGERSTAND=" + echterlagerstand.doubleValue()
                        + " WHERE ARTIKEL_I_ID=" + flrArtikel.getI_id() + " AND LAGER_I_ID="
                        + lagerDto.getIId();
                System.out.println(update + ";" + new String(CRLFAscii));

                sql += update + ";" + new String(CRLFAscii);

                zaehler++;
            }
        }
    }
    session.close();
    return rueckgabe + sql;
}

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

License:Open Source License

public void pruefeQuickLagerstandGegenEchtenLagerstandUndFuehreAus(Integer artikelIIdInput,
        TheClientDto theClientDto) {//from  w w  w.java  2 s.  c  o m

    LagerDto[] lagerDtos = lagerFindByMandantCNr(theClientDto.getMandant());

    String[] handartikel = new String[1];
    handartikel[0] = ArtikelFac.ARTIKELART_HANDARTIKEL;

    Session session = FLRSessionFactory.getFactory().openSession();
    org.hibernate.Criteria crit = session.createCriteria(FLRArtikel.class);
    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
    // crit.add(Restrictions.eq("i_id", 6901));
    crit.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKEL_ARTIKELART_C_NR, handartikel)));
    crit.add(Expression.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, new Short((short) 1)));

    if (artikelIIdInput != null) {
        crit.add(Restrictions.eq("i_id", artikelIIdInput));
    }

    crit.addOrder(Order.asc("c_nr"));
    List<?> resultList = crit.list();

    int zaehler = 1;
    byte[] CRLFAscii = { 13, 10 };

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

    while (resultListIterator.hasNext()) {
        FLRArtikel flrArtikel = (FLRArtikel) resultListIterator.next();
        for (int i = 0; i < lagerDtos.length; i++) {
            LagerDto lagerDto = lagerDtos[i];

            String ausgabe = flrArtikel.getI_id() + ";" + flrArtikel.getC_nr() + ";";

            ausgabe += lagerDto.getCNr() + ";";
            BigDecimal quicklagerstand = new BigDecimal(0);
            Artikellager artikellager = em.find(Artikellager.class,
                    new ArtikellagerPK(flrArtikel.getI_id(), lagerDto.getIId()));
            if (artikellager == null) {
                ausgabe += "0;";
            } else {
                quicklagerstand = artikellager.getNLagerstand();
            }
            ausgabe += quicklagerstand.toString() + ";";
            BigDecimal echterlagerstand = getLagerstandZumZeitpunkt(flrArtikel.getI_id(), lagerDto.getIId(),
                    new java.sql.Timestamp(System.currentTimeMillis() + 3600000 * 24), theClientDto);
            ausgabe += echterlagerstand.toString() + ";";

            if (quicklagerstand.doubleValue() != echterlagerstand.doubleValue()) {

                // System.out.println(zaehler + ";" + ausgabe);

                String update = "UPDATE WW_ARTIKELLAGER SET N_LAGERSTAND=" + echterlagerstand.doubleValue()
                        + " WHERE ARTIKEL_I_ID=" + flrArtikel.getI_id() + " AND LAGER_I_ID="
                        + lagerDto.getIId();
                System.out.println(update + ";--BEREITS_AUSGEFUEHRT" + new String(CRLFAscii));

                artikellager.setNLagerstand(echterlagerstand);
                em.flush();

                zaehler++;
            }
        }
    }
    session.close();

}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public String pruefeVerbrauchteMenge(TheClientDto theClientDto) {

    System.out.println("ZAEHLER;I_ID_BUCHUNG;ARTIKEL_I_ID;ARTIKEL_C_NR;POSITIONSMENGE;VERBRAUCHTEMENGE");
    byte[] CRLFAscii = { 13, 10 };
    String rueckgabe = "ZAEHLER;I_ID_BUCHUNG;ARTIKEL_I_ID;ARTIKEL_C_NR;POSITIONSMENGE;VERBRAUCHTEMENGE"
            + new String(CRLFAscii);
    String[] handartikel = new String[1];
    handartikel[0] = ArtikelFac.ARTIKELART_HANDARTIKEL;

    Session sessionArtikel = FLRSessionFactory.getFactory().openSession();
    org.hibernate.Criteria critArtikel = sessionArtikel.createCriteria(FLRArtikel.class);
    critArtikel.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
    // crit.add(Restrictions.eq("i_id", 13995));
    critArtikel.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKEL_ARTIKELART_C_NR, handartikel)));
    critArtikel.add(Expression.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, new Short((short) 1)));

    critArtikel.addOrder(Order.asc("c_nr"));
    List<?> resultListArtikel = critArtikel.list();
    Iterator<?> resultListIteratorArtikel = resultListArtikel.iterator();
    int row = 0;//from w w w.  j  a  v a 2 s  .com

    while (resultListIteratorArtikel.hasNext()) {
        FLRArtikel flrArtikel = (FLRArtikel) resultListIteratorArtikel.next();

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

        session = factory.openSession();

        org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class)
                .createAlias(LagerFac.FLR_LAGERPLAETZE_FLRLAGER, "l");
        crit.add(Expression.not(Expression.in("l.c_nr", new String[] { LagerFac.LAGER_KEINLAGER })));
        crit.add(Expression.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(true)));
        crit.add(Expression.eq(LagerFac.FLR_LAGERBEWEGUNG_ARTIKEL_I_ID, flrArtikel.getI_id()));

        crit.addOrder(Order.asc(LagerFac.FLR_LAGERBEWEGUNG_I_ID_BUCHUNG))
                .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));

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

        int lastColumn = -1;

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

            if (lastColumn == lagerbewegung.getI_id_buchung().intValue()) {
            } else {

                BigDecimal verbrauchteMenge = new BigDecimal(0);

                Query query = em.createNamedQuery("LagerabgangursprungfindByILagerbewegungid");
                query.setParameter(1, lagerbewegung.getI_id_buchung());
                Collection<?> cl = query.getResultList();
                // if (cl.isEmpty()) {
                // verbrauchteMenge = new BigDecimal(0);
                // }
                // else {
                LagerabgangursprungDto[] dtos = assembleLagerabgangursprungDtos(cl);

                for (int i = 0; i < dtos.length; i++) {
                    verbrauchteMenge = verbrauchteMenge.add(dtos[i].getNVerbrauchtemenge());
                }

                if (lagerbewegung.getN_menge().compareTo(verbrauchteMenge) != 0) {
                    row++;

                    String zeile = row + ";" + lagerbewegung.getI_id_buchung() + ";"
                            + lagerbewegung.getArtikel_i_id() + ";" + lagerbewegung.getFlrartikel().getC_nr()
                            + ";" + lagerbewegung.getN_menge() + ";" + verbrauchteMenge;
                    System.out.println(zeile);

                    rueckgabe += zeile + new String(CRLFAscii);

                }
                lastColumn = lagerbewegung.getI_id_buchung().intValue();
            }
        }

        session.close();
    }
    sessionArtikel.close();
    return rueckgabe;
}

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    }

    session.close();

    return new BigDecimal(0);
}