Example usage for org.hibernate.criterion Restrictions le

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

Introduction

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

Prototype

public static SimpleExpression le(String propertyName, Object value) 

Source Link

Document

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

Usage

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public BigDecimal getVerbrauchteMengeEinesArtikels(Integer artikelIId, java.sql.Timestamp tVon,
        java.sql.Timestamp tBis, TheClientDto theClientDto) {
    Session session = FLRSessionFactory.getFactory().openSession();
    // PJ 14006/*  ww  w  .j ava 2  s  .co  m*/

    org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class).createAlias("flrartikel", "a")
            .add(Restrictions.eq("a.i_id", artikelIId)).createAlias("flrlager", "l")
            .add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant()));
    crit.add(Restrictions.ge(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tVon));
    crit.add(Restrictions.le(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tBis));

    crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false)));
    crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(true)));
    crit.add(Restrictions.not(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR,
            new String[] { LocaleFac.BELEGART_HAND, LocaleFac.BELEGART_LOSABLIEFERUNG })));

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

    BigDecimal bdMenge = new BigDecimal(0);

    while (resultListIterator.hasNext()) {
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();
        if (lagerbewegung.getN_menge().doubleValue() > 0) {
            bdMenge = bdMenge.add(lagerbewegung.getN_menge());
        }
    }

    return bdMenge;
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public BigDecimal getLosablieferungenEinesArtikels(Integer artikelIId, java.sql.Timestamp tVon,
        java.sql.Timestamp tBis, TheClientDto theClientDto) {
    Session session = FLRSessionFactory.getFactory().openSession();
    // PJ 14006/* w w w .  j a v a2s .c om*/
    org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class).createAlias("flrartikel", "a")
            .add(Restrictions.eq("a.i_id", artikelIId)).createAlias("flrlager", "l")
            .add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant()));
    crit.add(Restrictions.ge(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tVon));
    crit.add(Restrictions.le(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tBis));

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

    crit.add(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR,
            new String[] { LocaleFac.BELEGART_LOSABLIEFERUNG }));

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

    BigDecimal bdMenge = new BigDecimal(0);

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

        bdMenge = bdMenge.add(lagerbewegung.getN_menge());

    }

    return bdMenge;
}

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

License:Open Source License

public JasperPrintLP printLieferantumsatzstatistik(Timestamp tVon, Timestamp tBis,
        boolean bWareneingangspositionen, Integer iOptionKundengruppierung, Integer iOptionGruppierung,
        Integer iOptionSortierung, TheClientDto theClientDto) throws EJBExceptionLP, RemoteException {
    List<String> gruppierung = new ArrayList<String>();

    String[] monate = new DateFormatSymbols(theClientDto.getLocUi()).getMonths();

    if (iOptionGruppierung
            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) {

        ArtklaDto[] artklDtos = getArtikelFac().artklaFindByMandantCNr(theClientDto);
        for (int i = 0; i < artklDtos.length; i++) {
            gruppierung.add(artklDtos[i].getCNr());
        }//from  w  w w .  j ava2  s  . com
    } else if (iOptionGruppierung
            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) {

        ArtgruDto[] artgruDtos = getArtikelFac().artgruFindByMandantCNr(theClientDto);
        for (int i = 0; i < artgruDtos.length; i++) {
            gruppierung.add(artgruDtos[i].getCNr());
        }
    } else if (iOptionGruppierung
            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {

        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(tVon.getTime());
        c.set(Calendar.DAY_OF_YEAR, 1);
        while (c.getTime().before(tBis)) {
            gruppierung.add(c.get(Calendar.YEAR) + "");
            c.set(Calendar.YEAR, c.get(Calendar.YEAR) + 1);

        }

    } else if (iOptionGruppierung
            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {

        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(tVon.getTime());
        c.set(Calendar.MONTH, 1);
        while (c.getTime().before(tBis)) {

            gruppierung.add(monate[c.get(Calendar.MONTH)] + " " + c.get(Calendar.YEAR));
            c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);

        }

    }

    tVon = Helper.cutTimestamp(tVon);
    tBis = Helper.cutTimestamp(tBis);

    BigDecimal gesamtUmsatz = new BigDecimal(0);
    Session session = FLRSessionFactory.getFactory().openSession();

    org.hibernate.Criteria crit = session.createCriteria(FLRLieferant.class);
    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

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

    ArrayList<Object> gesamtListe = new ArrayList<Object>();

    // Leere Spalten entfernen

    boolean[] bSpalteAndrucken = new boolean[gruppierung.size()];

    while (resultListIterator.hasNext()) {
        FLRLieferant lieferant = (FLRLieferant) resultListIterator.next();

        LieferantDto lieferantDto = getLieferantFac().lieferantFindByPrimaryKey(lieferant.getI_id(),
                theClientDto);

        KundeUmsatzstatistikDto kdums = new KundeUmsatzstatistikDto(gruppierung.size() + 1);
        kdums.setSKunde(lieferant.getFlrpartner().getC_name1nachnamefirmazeile1());
        kdums.setIZahlungsziel(lieferantDto.getZahlungszielIId());
        kdums.setILieferart(lieferantDto.getLieferartIId());
        kdums.setISpediteur(lieferantDto.getIdSpediteur());

        kdums.setSKundengruppierung("");
        // Branche/Partnerklasse hinzufuegen

        if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE
                && lieferant.getFlrpartner().getBranche_i_id() != null) {
            kdums.setSKundengruppierung(getPartnerServicesFac()
                    .brancheFindByPrimaryKey(lieferant.getFlrpartner().getBranche_i_id(), theClientDto)
                    .getBezeichnung());
        } else if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE
                && lieferant.getFlrpartner().getPartnerklasse_i_id() != null) {
            kdums.setSKundengruppierung(getPartnerFac().partnerklasseFindByPrimaryKey(
                    lieferant.getFlrpartner().getPartnerklasse_i_id(), theClientDto).getBezeichnung());
        }

        if (bWareneingangspositionen) {
            Session session2 = FLRSessionFactory.getFactory().openSession();

            org.hibernate.Criteria crit2 = session2.createCriteria(FLRWareneingangspositionen.class)
                    .createAlias("flrwareneingang", "w").createAlias("w.flrbestellung", "b")
                    .createAlias("b.flrlieferant", "l").add(Restrictions.eq("l.i_id", lieferant.getI_id()))
                    .createAlias("l.flrpartner", "p");
            crit2.add(Restrictions.isNotNull(WareneingangFac.FLR_WEPOS_N_EINSTANDSPREIS));

            // SP1115
            crit2.createAlias("flrbestellposition", "bp")
                    .add(Restrictions.isNull("bp.position_i_id_artikelset"));

            String[] stati = new String[2];
            stati[0] = BestellungFac.BESTELLSTATUS_ANGELEGT;
            stati[1] = BestellungFac.BESTELLSTATUS_STORNIERT;

            crit2.add(Restrictions
                    .not(Restrictions.in("b." + BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, stati)));

            Calendar c = Calendar.getInstance();
            c.setTime(tVon);
            c.set(Calendar.HOUR_OF_DAY, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MILLISECOND, 0);
            crit2.add(Restrictions.ge("w." + WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, c.getTime()));

            c.setTime(tBis);
            c.set(Calendar.HOUR_OF_DAY, 23);
            c.set(Calendar.MINUTE, 59);
            c.set(Calendar.SECOND, 59);
            c.set(Calendar.MILLISECOND, 999);
            crit2.add(Restrictions.le("w." + WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, c.getTime()));
            crit2.addOrder(Order.asc("p.c_name1nachnamefirmazeile1"));

            List<?> results2 = crit2.list();
            Iterator<?> resultListIterator2 = results2.iterator();
            while (resultListIterator2.hasNext()) {
                FLRWareneingangspositionen wepos = (FLRWareneingangspositionen) resultListIterator2.next();

                BigDecimal umsatz = wepos.getN_einstandspreis();

                // Mit Welchselkurs zu Mandantenwaehrung multiplizieren
                if (wepos.getFlrwareneingang().getN_wechselkurs() != null
                        && wepos.getFlrwareneingang().getN_wechselkurs().doubleValue() != 0) {
                    umsatz = umsatz.divide(wepos.getFlrwareneingang().getN_wechselkurs(), 4,
                            BigDecimal.ROUND_HALF_EVEN);

                }

                // Bei Handeingabe ist Umsatz gleich Deckungsbeitrag und
                // kommt in die Kategorie Unbekannt
                if (wepos.getFlrbestellposition().getBestellpositionart_c_nr()
                        .equals(LocaleFac.POSITIONSART_HANDEINGABE)
                        && iOptionGruppierung
                                .intValue() != LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR
                        && iOptionGruppierung
                                .intValue() != LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {
                    umsatz = umsatz.multiply(wepos.getN_geliefertemenge());
                    kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz);
                    // GESAMTSUMME
                    kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz));
                } else if (wepos.getFlrbestellposition().getBestellpositionart_c_nr()
                        .equals(LocaleFac.POSITIONSART_IDENT)
                        || (wepos.getFlrbestellposition().getBestellpositionart_c_nr()
                                .equals(LocaleFac.POSITIONSART_HANDEINGABE)
                                && ((iOptionGruppierung
                                        .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR)
                                        || iOptionGruppierung
                                                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT))) {
                    umsatz = umsatz.multiply(wepos.getN_geliefertemenge());

                    // GESAMTSUMME
                    kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz));

                    // Aufteilen auf Gruppe
                    if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) {
                        if (wepos.getFlrbestellposition().getFlrartikel().getFlrartikelklasse() != null) {
                            // Bei richtiger Artikelklasse einfuegen

                            for (int j = 0; j < gruppierung.size(); j++) {
                                if (gruppierung.get(j).equals(wepos.getFlrbestellposition().getFlrartikel()
                                        .getFlrartikelklasse().getC_nr())) {
                                    kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                            .add(umsatz);
                                    bSpalteAndrucken[j] = true;
                                }
                            }
                        } else {
                            kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz);
                        }
                    } else if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) {
                        if (wepos.getFlrbestellposition().getFlrartikel().getFlrartikelgruppe() != null) {
                            // Bei richtiger Gruppe einfuegen

                            for (int j = 0; j < gruppierung.size(); j++) {
                                if (gruppierung.get(j).equals(wepos.getFlrbestellposition().getFlrartikel()
                                        .getFlrartikelgruppe().getC_nr())) {

                                    kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                            .add(umsatz);
                                    bSpalteAndrucken[j] = true;
                                }
                            }
                        } else {
                            kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz);
                        }
                    } else if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {

                        Calendar cZeile = Calendar.getInstance();
                        cZeile.setTimeInMillis(wepos.getFlrwareneingang().getT_wareneingansdatum().getTime());
                        String jahr = cZeile.get(Calendar.YEAR) + "";

                        for (int j = 0; j < gruppierung.size(); j++) {
                            if (gruppierung.get(j).equals(jahr)) {

                                kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1].add(umsatz);
                                bSpalteAndrucken[j] = true;
                            }
                        }

                    } else if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {
                        Calendar cZeile = Calendar.getInstance();
                        cZeile.setTimeInMillis(wepos.getFlrwareneingang().getT_wareneingansdatum().getTime());
                        String jahrMonat = monate[cZeile.get(Calendar.MONTH)] + " " + cZeile.get(Calendar.YEAR);

                        for (int j = 0; j < gruppierung.size(); j++) {
                            if (gruppierung.get(j).equals(jahrMonat)) {

                                kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1].add(umsatz);
                                bSpalteAndrucken[j] = true;
                            }
                        }
                    }
                }
            }
            session2.close();

            if (results2.size() > 0) {
                gesamtListe.add(kdums);

                gesamtUmsatz = gesamtUmsatz.add(kdums.getBdUmsatz());
            }
        } else {
            // Eingangsrechnung
            Session session2 = FLRSessionFactory.getFactory().openSession();

            org.hibernate.Criteria crit2 = session2.createCriteria(FLREingangsrechnungReport.class)
                    .createAlias("flrlieferant", "l");
            crit2.add(Restrictions.eq("l.i_id", lieferant.getI_id()));
            crit2.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, Helper.cutTimestamp(tVon)));

            Calendar c = Calendar.getInstance();
            c.setTime(tBis);
            c.set(Calendar.HOUR_OF_DAY, 23);
            c.set(Calendar.MINUTE, 59);
            c.set(Calendar.SECOND, 59);
            c.set(Calendar.MILLISECOND, 999);
            crit2.add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, c.getTime()));

            List<?> results2 = crit2.list();
            Iterator<?> resultListIterator2 = results2.iterator();

            while (resultListIterator2.hasNext()) {
                FLREingangsrechnungReport er = (FLREingangsrechnungReport) resultListIterator2.next();

                if (iOptionGruppierung
                        .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {

                    Calendar cZeile = Calendar.getInstance();
                    cZeile.setTimeInMillis(er.getT_belegdatum().getTime());
                    String jahr = cZeile.get(Calendar.YEAR) + "";

                    for (int j = 0; j < gruppierung.size(); j++) {
                        if (gruppierung.get(j).equals(jahr)) {

                            kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                    .add(er.getN_betrag().subtract(er.getN_ustbetrag()));

                            kdums.setBdUmsatz(
                                    kdums.getBdUmsatz().add(er.getN_betrag().subtract(er.getN_ustbetrag())));

                            bSpalteAndrucken[j] = true;
                        }
                    }

                } else if (iOptionGruppierung
                        .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {

                    Calendar cZeile = Calendar.getInstance();
                    cZeile.setTimeInMillis(er.getT_belegdatum().getTime());

                    String jahrMonat = monate[cZeile.get(Calendar.MONTH)] + " " + cZeile.get(Calendar.YEAR);

                    for (int j = 0; j < gruppierung.size(); j++) {
                        if (gruppierung.get(j).equals(jahrMonat)) {

                            kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                    .add(er.getN_betrag().subtract(er.getN_ustbetrag()));

                            kdums.setBdUmsatz(
                                    kdums.getBdUmsatz().add(er.getN_betrag().subtract(er.getN_ustbetrag())));

                            bSpalteAndrucken[j] = true;
                        }
                    }

                } else {

                    kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0]
                            .add(er.getN_betrag().subtract(er.getN_ustbetrag()));
                    kdums.setBdUmsatz(kdums.getBdUmsatz().add(er.getN_betrag().subtract(er.getN_ustbetrag())));
                }
            }

            if (results2.size() > 0) {
                gesamtListe.add(kdums);

                gesamtUmsatz = gesamtUmsatz.add(kdums.getBdUmsatz());
            }

        }
    }
    session.close();

    JasperPrintLP print = null;

    // NACH UMSATZ SORTIEREN
    int n = gesamtListe.size();
    Object temp;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            double a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getBdUmsatz().doubleValue();
            double b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getBdUmsatz().doubleValue();
            if (a < b) {
                temp = gesamtListe.get(j);
                gesamtListe.set(j, gesamtListe.get(j + 1));
                gesamtListe.set(j + 1, temp);
            }

        }
    }

    // ABC-Klassifizierung
    // A=80%
    // B=15%
    // C=5%

    double dTempUmsatz = gesamtUmsatz.doubleValue();

    ParametermandantDto mandantparameterA = null;
    ParametermandantDto mandantparameterB = null;
    try {
        mandantparameterA = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_KUNDENBEWERTUNG_WERT_A);
        mandantparameterB = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_KUNDENBEWERTUNG_WERT_B);

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

    BigDecimal paramBUmsatz = gesamtUmsatz.multiply((new BigDecimal(mandantparameterB.getCWert())
            .divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN)));

    BigDecimal paramAUmsatz = gesamtUmsatz.multiply((new BigDecimal(mandantparameterA.getCWert())
            .divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN)));

    for (int i = 0; i < gesamtListe.size(); i++) {
        KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(i);

        if (dTempUmsatz < gesamtUmsatz.doubleValue()
                - (paramAUmsatz.doubleValue() + paramBUmsatz.doubleValue())) {
            dto.setAbcKlassifizierung("C");
        } else if (dTempUmsatz < paramBUmsatz.doubleValue()) {
            dto.setAbcKlassifizierung("B");
        } else {
            dto.setAbcKlassifizierung("A");
        }

        dTempUmsatz = dTempUmsatz - dto.getBdUmsatz().doubleValue();

        gesamtListe.set(i, dto);
    }

    // Nach Name sortieren

    // NACH NAME SORTIEREN, Wenn angegeben

    if (iOptionSortierung
            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_FIRMANNAME) {
        n = gesamtListe.size();
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSKunde();
                String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSKunde();
                if (a.compareTo(b) > 0) {
                    temp = gesamtListe.get(j);
                    gesamtListe.set(j, gesamtListe.get(j + 1));
                    gesamtListe.set(j + 1, temp);
                }
            }
        }
    }

    // Nach Branche/Partnerklasse Gruppieren

    if (iOptionKundengruppierung
            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE
            || iOptionKundengruppierung
                    .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE) {
        n = gesamtListe.size();
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSKundengruppierung();
                String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSKundengruppierung();
                if (a.compareTo(b) > 0) {
                    temp = gesamtListe.get(j);
                    gesamtListe.set(j, gesamtListe.get(j + 1));
                    gesamtListe.set(j + 1, temp);
                }
            }
        }

    }

    // SPALTENHEADER entfernen, wenn Spalte leer
    for (int i = bSpalteAndrucken.length; i > 0; i--) {
        if (bSpalteAndrucken[i - 1] == false) {
            gruppierung.remove(i - 1);
        }
    }

    int[] spaltenDrucken = new int[gruppierung.size() + 1];
    spaltenDrucken[0] = 0;
    int x = 1;
    for (int i = 1; i < bSpalteAndrucken.length + 1; i++) {
        if (bSpalteAndrucken[i - 1] == true) {
            spaltenDrucken[x] = i;
            x++;
        }
    }

    int seiten_breite = (gruppierung.size() / 8) + 1;

    for (int i = 0; i < seiten_breite; i++) {
        index = -1;

        sAktuellerReport = LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK;

        data = new Object[gesamtListe.size()][15];
        for (int j = 0; j < gesamtListe.size(); j++) {
            KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(j);
            data[j][REPORT_LIEFERANTUMSATZSTATISTIK_LIEFERANTGRUPPIERUNG] = dto.getSKundengruppierung();
            data[j][REPORT_LIEFERANTUMSATZSTATISTIK_LIEFERANT] = dto.getSKunde();
            data[j][REPORT_LIEFERANTUMSATZSTATISTIK_UMSATZ] = dto.getBdUmsatz();
            data[j][REPORT_LIEFERANTUMSATZSTATISTIK_ABCKLASSE] = dto.getAbcKlassifizierung();
            data[j][REPORT_LIEFERANTUMSATZSTATISTIK_ZAHLUNGSZIEL] = getMandantFac()
                    .zahlungszielFindByIIdLocaleOhneExc(dto.getIZahlungsziel(), theClientDto.getLocMandant(),
                            theClientDto);
            data[j][REPORT_LIEFERANTUMSATZSTATISTIK_LIEFERART] = getLocaleFac().lieferartFindByIIdLocaleOhneExc(
                    dto.getILieferart(), theClientDto.getLocMandant(), theClientDto);
            data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPEDITEUR] = getMandantFac()
                    .spediteurFindByPrimaryKey(dto.getISpediteur()).getCNamedesspediteurs();

            try {
                if (i == 0) {
                    data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE1] = dto.getSubSummeUmsatz()[0];
                } else {
                    data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE1] = dto
                            .getSubSummeUmsatz()[spaltenDrucken[0 + (i * 8)]];
                }
                data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE2] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[1 + (i * 8)]];
                data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE3] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[2 + (i * 8)]];
                data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE4] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[3 + (i * 8)]];
                data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE5] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[4 + (i * 8)]];
                data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE6] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[5 + (i * 8)]];
                data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE7] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[6 + (i * 8)]];
                data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE8] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[7 + (i * 8)]];
            } catch (ArrayIndexOutOfBoundsException ex1) {
                // nothing
            }

        }

        HashMap<String, Object> parameter = new HashMap<String, Object>();
        parameter.put("P_VON", tVon);
        parameter.put("P_BIS", tBis);

        if (bWareneingangspositionen) {
            parameter.put("P_BASIS", getTextRespectUISpr("bes.wareneingangsposition", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else {
            parameter.put("P_BASIS", getTextRespectUISpr("er.eingangsrechnung", theClientDto.getMandant(),
                    theClientDto.getLocUi()));

        }

        if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE) {
            parameter.put("P_GRUPPIERUNGLIEFERANT",
                    getTextRespectUISpr("lp.branche", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE) {
            parameter.put("P_GRUPPIERUNGLIEFERANT", "Partnerklasse");
        }

        if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) {
            parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelklasse", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) {
            parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelgruppe", theClientDto.getMandant(),
                    theClientDto.getLocUi()));

        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {
            parameter.put("P_GRUPPIERUNG",
                    getTextRespectUISpr("lp.jahr", theClientDto.getMandant(), theClientDto.getLocUi()));

        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {
            parameter.put("P_GRUPPIERUNG",
                    getTextRespectUISpr("lp.monat", theClientDto.getMandant(), theClientDto.getLocUi()));

        }
        if (iOptionSortierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_SORTIERUNG_FIRMANNAME) {
            parameter.put("P_SORTIERUNG", "Firmenname");
        } else if (iOptionSortierung
                .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) {
            parameter.put("P_SORTIERUNG",
                    getTextRespectUISpr("er.umsatz", theClientDto.getMandant(), theClientDto.getLocUi()));

        }

        try {

            parameter.put("P_GRUPPEA", mandantparameterA.getCWertAsObject());
            parameter.put("P_GRUPPEB", mandantparameterB.getCWertAsObject());

            if (i == 0) {
                parameter.put("Spalte1", "Unbekannt");
                parameter.put("Spalte2", gruppierung.get(0 + (i * 8)));
                parameter.put("Spalte3", gruppierung.get(1 + (i * 8)));
                parameter.put("Spalte4", gruppierung.get(2 + (i * 8)));
                parameter.put("Spalte5", gruppierung.get(3 + (i * 8)));
                parameter.put("Spalte6", gruppierung.get(4 + (i * 8)));
                parameter.put("Spalte7", gruppierung.get(5 + (i * 8)));
                parameter.put("Spalte8", gruppierung.get(6 + (i * 8)));

            } else {

                parameter.put("Spalte1", gruppierung.get(7 + (i * 8) - 8));
                parameter.put("Spalte2", gruppierung.get(8 + (i * 8) - 8));
                parameter.put("Spalte3", gruppierung.get(1 + (i * 8)));
                parameter.put("Spalte4", gruppierung.get(2 + (i * 8)));
                parameter.put("Spalte5", gruppierung.get(3 + (i * 8)));
                parameter.put("Spalte6", gruppierung.get(4 + (i * 8)));
                parameter.put("Spalte7", gruppierung.get(5 + (i * 8)));
                parameter.put("Spalte8", gruppierung.get(6 + (i * 80)));

            }

        } catch (IndexOutOfBoundsException ex1) {
            // nothing
        }
        initJRDS(parameter, LagerReportFac.REPORT_MODUL, sAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        if (print == null) {
            print = getReportPrint();
        } else {
            print = Helper.addReport2Report(print, getReportPrint().getPrint());
        }
    }

    return print;

}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printKundeumsatzstatistik(Timestamp tVon, Timestamp tBis, Integer iOptionKundengruppierung,
        boolean bUmsatz, Integer iOptionGruppierung, Integer iOptionSortierung, Integer iSortierbasisJahre,
        boolean bVerwendeStatistikadresse, boolean bMitNichtLagerbewertetenArtikeln, boolean ohneDBBetrachtung,
        TheClientDto theClientDto) throws EJBExceptionLP, RemoteException {
    List<String> gruppierung = new ArrayList<String>();

    tVon = Helper.cutTimestamp(tVon);//w  w w .j a  v  a 2 s  . c om
    tBis = Helper.cutTimestamp(tBis);
    String[] monate = new DateFormatSymbols(theClientDto.getLocUi()).getMonths();
    try {
        if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) {

            ArtklaDto[] artklDtos = getArtikelFac().artklaFindByMandantCNr(theClientDto);
            for (int i = 0; i < artklDtos.length; i++) {
                gruppierung.add(artklDtos[i].getCNr());
            }
        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) {

            ArtgruDto[] artgruDtos = getArtikelFac().artgruFindByMandantCNr(theClientDto);
            for (int i = 0; i < artgruDtos.length; i++) {
                gruppierung.add(artgruDtos[i].getCNr());
            }
        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) {

            FertigungsgruppeDto[] ftgruDtos = getStuecklisteFac()
                    .fertigungsgruppeFindByMandantCNr(theClientDto.getMandant(), theClientDto);
            for (int i = 0; i < ftgruDtos.length; i++) {
                gruppierung.add(ftgruDtos[i].getCBez());
            }
        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {

            Calendar c = Calendar.getInstance();
            c.setTimeInMillis(tVon.getTime());
            c.set(Calendar.DAY_OF_YEAR, 1);
            while (c.getTime().before(tBis)) {
                gruppierung.add(c.get(Calendar.YEAR) + "");
                c.set(Calendar.YEAR, c.get(Calendar.YEAR) + 1);

            }

        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {

            Calendar c = Calendar.getInstance();
            c.setTimeInMillis(tVon.getTime());
            c.set(Calendar.MONTH, 1);
            while (c.getTime().before(tBis)) {

                gruppierung.add(monate[c.get(Calendar.MONTH)] + " " + c.get(Calendar.YEAR));
                c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);

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

    BigDecimal gesamtUmsatz = new BigDecimal(0);
    BigDecimal gesamtDeckungsbeitrag = new BigDecimal(0);
    Session session = FLRSessionFactory.getFactory().openSession();

    org.hibernate.Criteria crit = session.createCriteria(FLRKunde.class);
    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

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

    ArrayList<Object> gesamtListe = new ArrayList<Object>();

    // Leere Spalten entfernen

    boolean[] bSpalteAndrucken = new boolean[gruppierung.size()];
    int iKunde = 0;
    while (resultListIterator.hasNext()) {
        FLRKunde kunde = (FLRKunde) resultListIterator.next();
        iKunde++;
        System.out.println(iKunde + " von " + results.size());

        KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kunde.getI_id(), theClientDto);

        KundeUmsatzstatistikDto kdums = new KundeUmsatzstatistikDto(gruppierung.size() + 1);
        kdums.setSKunde(kunde.getFlrpartner().getC_name1nachnamefirmazeile1());
        kdums.setIZahlungsziel(kundeDto.getZahlungszielIId());
        kdums.setILieferart(kundeDto.getLieferartIId());
        kdums.setISpediteur(kundeDto.getSpediteurIId());
        kdums.setIKundennummer(kundeDto.getIKundennummer());

        if (kundeDto.getPartnerDto().getLandplzortDto() != null) {
            kdums.setSLkz(kundeDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz());
            kdums.setSPlz(kundeDto.getPartnerDto().getLandplzortDto().getCPlz());
        }

        kdums.setSKundengruppierung("");
        // Branche/Partnerklasse hinzufuegen

        if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE
                && kunde.getFlrpartner().getBranche_i_id() != null) {
            kdums.setSKundengruppierung(getPartnerServicesFac()
                    .brancheFindByPrimaryKey(kunde.getFlrpartner().getBranche_i_id(), theClientDto)
                    .getBezeichnung());
        } else if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE
                && kunde.getFlrpartner().getPartnerklasse_i_id() != null) {
            kdums.setSKundengruppierung(getPartnerFac()
                    .partnerklasseFindByPrimaryKey(kunde.getFlrpartner().getPartnerklasse_i_id(), theClientDto)
                    .getBezeichnung());
        }

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

        org.hibernate.Criteria crit2 = session2.createCriteria(FLRRechnungPosition.class)
                .createAlias("flrrechnung", "r");

        if (bVerwendeStatistikadresse) {
            crit2.createAlias("r.flrstatistikadresse", "k");
        } else {
            crit2.createAlias("r.flrkunde", "k");
        }

        crit2.add(Restrictions.eq("k.i_id", kunde.getI_id())).createAlias("k.flrpartner", "p")
                .createAlias("r." + RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART, "ra");

        // PJ 14808
        crit2.add(Restrictions.or(
                Restrictions.isNotNull(
                        RechnungFac.FLR_RECHNUNGPOSITION_N_NETTOEINZELPREIS_PLUS_AUFSCHLAG_MINUS_RABATT),
                Restrictions.eq(RechnungFac.FLR_RECHNUNGPOSITIONSART_POSITIONSART_C_NR,
                        RechnungFac.POSITIONSART_RECHNUNG_LIEFERSCHEIN)));

        // projekt 3568
        String[] arten = new String[2];
        arten[0] = RechnungFac.RECHNUNGART_ANZAHLUNG;
        arten[1] = RechnungFac.RECHNUNGART_PROFORMARECHNUNG;

        crit2.add(Restrictions.not(Restrictions.in("ra.c_nr", arten)));

        String[] stati = new String[2];
        stati[0] = RechnungFac.STATUS_ANGELEGT;
        stati[1] = RechnungFac.STATUS_STORNIERT;

        crit2.add(Restrictions.not(Restrictions.in("r." + RechnungFac.FLR_RECHNUNG_STATUS_C_NR, stati)));

        Calendar c = Calendar.getInstance();
        c.setTime(tVon);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        crit2.add(Restrictions.ge("r." + RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, c.getTime()));

        c.setTime(tBis);
        c.set(Calendar.HOUR_OF_DAY, 23);
        c.set(Calendar.MINUTE, 59);
        c.set(Calendar.SECOND, 59);
        c.set(Calendar.MILLISECOND, 999);
        crit2.add(Restrictions.le("r." + RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, c.getTime()));

        // SP903
        crit2.add(Restrictions.isNull("position_i_id_artikelset"));

        crit2.addOrder(Order.asc("p.c_name1nachnamefirmazeile1"));

        List<?> results2 = crit2.list();
        Iterator<?> resultListIterator2 = results2.iterator();

        int iPos = 0;
        while (resultListIterator2.hasNext()) {
            FLRRechnungPosition rechpos = (FLRRechnungPosition) resultListIterator2.next();

            iPos++;

            // 16882 Ohne Lagerbewertete Artikel
            if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT)
                    && rechpos.getFlrartikel() != null
                    && !Helper.short2boolean(rechpos.getFlrartikel().getB_lagerbewertet())) {

                if (bMitNichtLagerbewertetenArtikeln == false) {
                    continue;
                }
            }

            if (iPos % 100 == 0) {
                System.out.println(iPos + " von " + results2.size());
            }

            // Erstumsatz?
            Session sessionEU = FLRSessionFactory.getFactory().openSession();

            org.hibernate.Criteria critEU = session2.createCriteria(FLRRechnung.class)
                    .createAlias("flrkunde", "k").add(Restrictions.eq("k.i_id", kunde.getI_id()));

            critEU.add(Restrictions.lt(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, tVon));

            String[] statiErstumsatz = new String[1];
            statiErstumsatz[0] = RechnungFac.STATUS_STORNIERT;
            critEU.add(
                    Restrictions.not(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, statiErstumsatz)));
            critEU.setFetchSize(1);
            List<?> resultsEU = critEU.list();
            if (resultsEU.size() < 1) {
                kdums.setBErstumsatz(true);
            }
            sessionEU.close();

            // ENDE Erstumsatz

            boolean bGutschrift = false;

            BigDecimal umsatz = rechpos.getN_nettoeinzelpreis_plus_aufschlag_minus_rabatt();
            // Gutschrift oder Wertgutschrift
            if (rechpos.getFlrrechnung().getFlrrechnungart().getC_nr()
                    .equals(RechnungFac.RECHNUNGART_GUTSCHRIFT)
                    || rechpos.getFlrrechnung().getFlrrechnungart().getC_nr()
                            .equals(RechnungFac.RECHNUNGART_WERTGUTSCHRIFT)) {
                bGutschrift = true;
                umsatz = new BigDecimal(0).subtract(umsatz);

            }

            // Mit Welchselkurs zu Mandantenwaehrung dividieren
            if (rechpos.getFlrrechnung().getN_kurs() != null
                    && rechpos.getFlrrechnung().getN_kurs().doubleValue() != 0
                    && !rechpos.getPositionsart_c_nr().equals(RechnungFac.POSITIONSART_RECHNUNG_LIEFERSCHEIN)) {
                umsatz = umsatz.divide(rechpos.getFlrrechnung().getN_kurs(), 4, BigDecimal.ROUND_HALF_EVEN);

            }

            // Bei Handeingabe ist Umsatz gleich Deckungsbeitrag und kommt
            // in die Kategorie Unbekannt
            if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)
                    && iOptionGruppierung
                            .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR
                    && iOptionGruppierung
                            .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {
                umsatz = umsatz.multiply(rechpos.getN_menge());
                kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz);
                kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0].add(umsatz);
                // GESAMTSUMME
                kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz));
                kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(umsatz));

            } else if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT) || (rechpos
                    .getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)
                    && iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR)
                    || (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)
                            && iOptionGruppierung
                                    .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT)) {

                if (rechpos.getPosition_i_id_artikelset() == null) {

                    umsatz = umsatz.multiply(rechpos.getN_menge());
                    BigDecimal gestwert = new BigDecimal(0);

                    BigDecimal deckungsbeitrag = new BigDecimal(0);
                    if (ohneDBBetrachtung == false) {
                        if (!rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)) {

                            if (rechpos.getSetartikel_set().size() == 0) {
                                gestwert = getGestpreisFuerUmsatzStatistik(rechpos, bGutschrift);
                            } else {
                                Iterator it = rechpos.getSetartikel_set().iterator();
                                while (it.hasNext()) {
                                    gestwert = gestwert.add(getGestpreisFuerUmsatzStatistik(
                                            (FLRRechnungPosition) it.next(), bGutschrift));
                                }
                            }
                        }

                        // Mit Welchselkurs zu Mandantenwaehrung dividieren
                        if (rechpos.getFlrrechnung().getN_kurs() != null
                                && rechpos.getFlrrechnung().getN_kurs().doubleValue() != 0) {
                            gestwert = gestwert.divide(rechpos.getFlrrechnung().getN_kurs(), 4,
                                    BigDecimal.ROUND_HALF_EVEN);
                        }

                        deckungsbeitrag = umsatz.subtract(gestwert);
                    }

                    // GESAMTSUMME
                    if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)) {
                        deckungsbeitrag = umsatz;
                    }

                    kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(deckungsbeitrag));

                    kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz));

                    // Aufteilen auf Gruppe
                    if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) {
                        if (rechpos.getFlrartikel().getFlrartikelklasse() != null) {
                            // Bei richtiger Artikelklasse einfuegen

                            for (int j = 0; j < gruppierung.size(); j++) {
                                if (gruppierung.get(j)
                                        .equals(rechpos.getFlrartikel().getFlrartikelklasse().getC_nr())) {
                                    kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                            .add(umsatz);
                                    kdums.getSubSummeDeckungsbeitrag()[j
                                            + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                    .add(deckungsbeitrag);
                                    bSpalteAndrucken[j] = true;
                                }
                            }
                        } else {
                            kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz);
                            kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0]
                                    .add(deckungsbeitrag);
                        }
                    } else if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) {
                        if (rechpos.getFlrartikel().getFlrartikelgruppe() != null) {
                            // Bei richtiger Gruppe einfuegen

                            for (int j = 0; j < gruppierung.size(); j++) {
                                if (gruppierung.get(j)
                                        .equals(rechpos.getFlrartikel().getFlrartikelgruppe().getC_nr())) {
                                    kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                            .add(umsatz);
                                    kdums.getSubSummeDeckungsbeitrag()[j
                                            + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                    .add(deckungsbeitrag);
                                    bSpalteAndrucken[j] = true;
                                }
                            }
                        } else {
                            kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz);
                            kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0]
                                    .add(deckungsbeitrag);
                        }
                    } else if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) {

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

                        String queryString = "SELECT stkl.flrfertigungsgruppe FROM FLRStueckliste AS stkl"
                                + " WHERE stkl.artikel_i_id= " + rechpos.getFlrartikel().getI_id();

                        Query query = sessionFTGruppe.createQuery(queryString);
                        List<?> resultList = query.list();
                        Iterator<?> resultListIteratorFTGruppe = resultList.iterator();
                        if (resultListIteratorFTGruppe.hasNext()) {
                            FLRFertigungsgruppe gru = (FLRFertigungsgruppe) resultListIteratorFTGruppe.next();

                            if (gru != null) {
                                // Bei richtiger Gruppe einfuegen
                                for (int j = 0; j < gruppierung.size(); j++) {
                                    if (gruppierung.get(j).equals(gru.getC_bez())) {
                                        kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                                .add(umsatz);
                                        kdums.getSubSummeDeckungsbeitrag()[j
                                                + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                        .add(deckungsbeitrag);
                                        bSpalteAndrucken[j] = true;
                                    }
                                }
                            } else {
                                kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz);
                                kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0]
                                        .add(deckungsbeitrag);
                            }
                            sessionFTGruppe.close();
                        }
                    } else if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {

                        Calendar cZeile = Calendar.getInstance();
                        cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime());
                        String jahr = cZeile.get(Calendar.YEAR) + "";

                        // Bei richtiger Gruppe einfuegen
                        for (int j = 0; j < gruppierung.size(); j++) {
                            if (gruppierung.get(j).equals(jahr)) {
                                kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1].add(umsatz);
                                kdums.getSubSummeDeckungsbeitrag()[j
                                        + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1].add(deckungsbeitrag);
                                bSpalteAndrucken[j] = true;
                            }
                        }

                    } else if (iOptionGruppierung
                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {

                        Calendar cZeile = Calendar.getInstance();
                        cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime());
                        String jahrMonat = monate[cZeile.get(Calendar.MONTH)] + " " + cZeile.get(Calendar.YEAR);

                        // Bei richtiger Gruppe einfuegen
                        for (int j = 0; j < gruppierung.size(); j++) {
                            if (gruppierung.get(j).equals(jahrMonat)) {
                                kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1].add(umsatz);
                                kdums.getSubSummeDeckungsbeitrag()[j
                                        + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1].add(deckungsbeitrag);
                                bSpalteAndrucken[j] = true;
                            }
                        }

                    }
                }
            }
            // Wenn Rechnungsposition ein LS ist, dann dessen Positionen
            // verwenden
            else if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_LIEFERSCHEIN)) {
                Integer lieferscheinIId = rechpos.getFlrlieferschein().getI_id();

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

                org.hibernate.Criteria crit3 = session3.createCriteria(FLRLieferscheinposition.class);
                crit3.createAlias("flrlieferschein", "l");
                crit3.add(Restrictions.eq("l.i_id", lieferscheinIId));
                // SP903
                crit3.add(Restrictions.isNull("position_i_id_artikelset"));
                crit3.add(Restrictions
                        .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_NETTOGESAMTPREIS));
                crit3.add(Restrictions.not(Restrictions
                        .eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE, new BigDecimal(0))));

                List<?> results3 = crit3.list();
                Iterator<?> resultListIterator3 = results3.iterator();
                while (resultListIterator3.hasNext()) {
                    FLRLieferscheinposition lieferscheinpos = (FLRLieferscheinposition) resultListIterator3
                            .next();

                    // 16882 Ohne Lagerbewertete Artikel
                    if (lieferscheinpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT)
                            && lieferscheinpos.getFlrartikel() != null
                            && !Helper.short2boolean(lieferscheinpos.getFlrartikel().getB_lagerbewertet())) {
                        if (bMitNichtLagerbewertetenArtikeln == false) {
                            continue;
                        }
                    }

                    // PJ 14525
                    BigDecimal umsatzLs = lieferscheinpos
                            .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt()
                            .divide(rechpos.getFlrrechnung().getN_kurs(), 4, BigDecimal.ROUND_HALF_EVEN);
                    umsatzLs = umsatzLs.multiply(lieferscheinpos.getN_menge());

                    if (lieferscheinpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)
                            && iOptionGruppierung
                                    .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR
                            && iOptionGruppierung
                                    .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {
                        kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs);
                        kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0]
                                .add(umsatzLs);
                        // GESAMTSUMME
                        kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatzLs));
                        kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(umsatzLs));

                    } else if (lieferscheinpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT)
                            || (lieferscheinpos.getPositionsart_c_nr()
                                    .equals(LocaleFac.POSITIONSART_HANDEINGABE)
                                    && iOptionGruppierung
                                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR)
                            || (lieferscheinpos.getPositionsart_c_nr()
                                    .equals(LocaleFac.POSITIONSART_HANDEINGABE)
                                    && iOptionGruppierung
                                            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT)) {
                        BigDecimal gestpreis = new BigDecimal(0);
                        BigDecimal deckungsbeitrag = new BigDecimal(0);
                        if (ohneDBBetrachtung == false) {
                            try {

                                /**
                                 * @todo Berechnung fuer negative
                                 *       Lieferscheinpositionen einbauen
                                 */
                                if (lieferscheinpos.getN_menge().doubleValue() < 0) {
                                    if (umsatz != null) {
                                        gestpreis = umsatz;
                                    }
                                } else {

                                    if (!rechpos.getPositionsart_c_nr()
                                            .equals(LocaleFac.POSITIONSART_HANDEINGABE)) {

                                        // PJ 16882
                                        if (lieferscheinpos.getFlrartikel() != null
                                                && Helper.short2boolean(lieferscheinpos.getFlrartikel()
                                                        .getB_lagerbewirtschaftet()) == false
                                                && !lieferscheinpos.getFlrartikel().getArtikelart_c_nr()
                                                        .equals(ArtikelFac.ARTIKELART_ARBEITSZEIT)) {
                                            gestpreis = new BigDecimal(0);
                                        } else {
                                            gestpreis = getLagerFac()
                                                    .getGemittelterGestehungspreisEinerAbgangsposition(
                                                            LocaleFac.BELEGART_LIEFERSCHEIN,
                                                            lieferscheinpos.getI_id());
                                            gestpreis = gestpreis.multiply(lieferscheinpos.getN_menge());
                                        }

                                    }
                                }
                            } catch (RemoteException ex2) {
                                if (ex2.getCause() instanceof EJBExceptionLP) {
                                    if (((EJBExceptionLP) ex2.getCause())
                                            .getCode() == EJBExceptionLP.ARTIKEL_KEINE_LAGERBUCHUNG_VORHANDEN) {
                                        // DANN ALLES OK
                                    } else {
                                        throwEJBExceptionLPRespectOld(ex2);
                                    }
                                } else {
                                    throwEJBExceptionLPRespectOld(ex2);
                                }
                            }
                            deckungsbeitrag = umsatzLs.subtract(gestpreis);
                        }

                        // GESAMTSUMME

                        if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)) {
                            deckungsbeitrag = umsatzLs;
                        }

                        kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatzLs));
                        kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(deckungsbeitrag));

                        if (iOptionGruppierung
                                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) {
                            if (lieferscheinpos.getFlrartikel().getFlrartikelklasse() != null) {
                                // Bei richtiger Artikelklasse einfuegen

                                for (int j = 0; j < gruppierung.size(); j++) {
                                    if (gruppierung.get(j).equals(
                                            lieferscheinpos.getFlrartikel().getFlrartikelklasse().getC_nr())) {
                                        kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                                .add(umsatzLs);
                                        kdums.getSubSummeDeckungsbeitrag()[j
                                                + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                        .add(deckungsbeitrag);
                                        bSpalteAndrucken[j] = true;

                                    }
                                }
                            } else {
                                kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs);
                                kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0]
                                        .add(deckungsbeitrag);
                            }
                        } else if (iOptionGruppierung
                                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) {
                            if (lieferscheinpos.getFlrartikel().getFlrartikelgruppe() != null) {
                                // Bei richtiger Gruppe einfuegen

                                for (int j = 0; j < gruppierung.size(); j++) {
                                    if (gruppierung.get(j).equals(
                                            lieferscheinpos.getFlrartikel().getFlrartikelgruppe().getC_nr())) {
                                        kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                                .add(umsatzLs);
                                        kdums.getSubSummeDeckungsbeitrag()[j
                                                + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                        .add(deckungsbeitrag);
                                        bSpalteAndrucken[j] = true;

                                    }
                                }
                            } else {
                                kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs);
                                kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0]
                                        .add(deckungsbeitrag);
                            }
                        } else if (iOptionGruppierung
                                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) {

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

                            String queryString = "SELECT stkl.flrfertigungsgruppe FROM FLRStueckliste AS stkl"
                                    + " WHERE stkl.artikel_i_id= " + lieferscheinpos.getFlrartikel().getI_id();

                            Query query = sessionFTGruppe.createQuery(queryString);
                            List<?> resultList = query.list();
                            Iterator<?> resultListIteratorFTGruppe = resultList.iterator();

                            if (resultListIteratorFTGruppe.hasNext()) {
                                FLRFertigungsgruppe gru = (FLRFertigungsgruppe) resultListIteratorFTGruppe
                                        .next();

                                if (gru != null) {
                                    // Bei richtiger Gruppe einfuegen
                                    for (int j = 0; j < gruppierung.size(); j++) {
                                        if (gruppierung.get(j).equals(gru.getC_bez())) {
                                            kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                                    .add(umsatzLs);
                                            kdums.getSubSummeDeckungsbeitrag()[j
                                                    + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                            .add(deckungsbeitrag);
                                            bSpalteAndrucken[j] = true;
                                        }
                                    }
                                } else {
                                    kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs);
                                    kdums.getSubSummeDeckungsbeitrag()[0] = kdums
                                            .getSubSummeDeckungsbeitrag()[0].add(deckungsbeitrag);
                                }
                                sessionFTGruppe.close();
                            }
                        } else if (iOptionGruppierung
                                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {

                            Calendar cZeile = Calendar.getInstance();
                            cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime());
                            String jahr = cZeile.get(Calendar.YEAR) + "";

                            for (int j = 0; j < gruppierung.size(); j++) {
                                if (gruppierung.get(j).equals(jahr)) {
                                    kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                            .add(umsatzLs);
                                    kdums.getSubSummeDeckungsbeitrag()[j
                                            + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                    .add(deckungsbeitrag);
                                    bSpalteAndrucken[j] = true;
                                }
                            }
                        } else if (iOptionGruppierung
                                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) {

                            Calendar cZeile = Calendar.getInstance();
                            cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime());
                            String jahrMonat = monate[cZeile.get(Calendar.MONTH)] + " "
                                    + cZeile.get(Calendar.YEAR);

                            for (int j = 0; j < gruppierung.size(); j++) {
                                if (gruppierung.get(j).equals(jahrMonat)) {
                                    kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1]
                                            .add(umsatzLs);
                                    kdums.getSubSummeDeckungsbeitrag()[j
                                            + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1]
                                                    .add(deckungsbeitrag);
                                    bSpalteAndrucken[j] = true;
                                }
                            }
                        }
                    }

                }
                session3.close();

            }
        }
        session2.close();
        if (results2.size() > 0) {
            gesamtListe.add(kdums);

            gesamtUmsatz = gesamtUmsatz.add(kdums.getBdUmsatz());
            gesamtDeckungsbeitrag = gesamtDeckungsbeitrag.add(kdums.getBdDeckungsbeitrag());
        }
    }
    session.close();

    JasperPrintLP print = null;

    // NACH UMSATZ SORTIEREN
    int n = gesamtListe.size();
    Object temp;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {

            if (bUmsatz == true) {

                double a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getBdUmsatz().doubleValue();
                double b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getBdUmsatz().doubleValue();

                if (iOptionGruppierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR
                        && iOptionSortierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) {
                    if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_AKTUELLESJAHR) {
                        a = ((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeUmsatz().length - 1].doubleValue();
                        b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1))
                                .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeUmsatz().length - 1].doubleValue();
                    } else if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_VORJAHR
                            && ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSubSummeUmsatz().length > 1) {
                        a = ((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeUmsatz().length - 2].doubleValue();
                        b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1))
                                .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeUmsatz().length - 2].doubleValue();
                    }
                }

                if (a < b) {
                    temp = gesamtListe.get(j);
                    gesamtListe.set(j, gesamtListe.get(j + 1));
                    gesamtListe.set(j + 1, temp);
                }
            } else {
                double a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getBdDeckungsbeitrag().doubleValue();
                double b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getBdDeckungsbeitrag()
                        .doubleValue();

                if (iOptionGruppierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR
                        && iOptionSortierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) {
                    if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_AKTUELLESJAHR) {
                        a = ((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeDeckungsbeitrag().length - 1].doubleValue();
                        b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1))
                                .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeDeckungsbeitrag().length - 1].doubleValue();
                    } else if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_VORJAHR
                            && ((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                    .getSubSummeDeckungsbeitrag().length > 1) {
                        a = ((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeDeckungsbeitrag().length - 2].doubleValue();
                        b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1))
                                .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j))
                                        .getSubSummeDeckungsbeitrag().length - 2].doubleValue();
                    }
                }

                if (a < b) {
                    temp = gesamtListe.get(j);
                    gesamtListe.set(j, gesamtListe.get(j + 1));
                    gesamtListe.set(j + 1, temp);
                }

            }
        }
    }

    // ABC-Klassifizierung
    // A=80%
    // B=15%
    // C=5%

    double dTempUmsatz = gesamtUmsatz.doubleValue();
    double dTempDeckungsbeitrag = gesamtDeckungsbeitrag.doubleValue();

    ParametermandantDto mandantparameterA = null;
    ParametermandantDto mandantparameterB = null;
    try {
        mandantparameterA = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_KUNDENBEWERTUNG_WERT_A);
        mandantparameterB = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_KUNDENBEWERTUNG_WERT_B);

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

    BigDecimal paramBUmsatz = gesamtUmsatz.multiply((new BigDecimal(mandantparameterB.getCWert())
            .divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN)));

    BigDecimal paramAUmsatz = gesamtUmsatz.multiply((new BigDecimal(mandantparameterA.getCWert())
            .divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN)));

    BigDecimal paramBDeckungsbeitrag = gesamtDeckungsbeitrag
            .multiply((new BigDecimal(mandantparameterB.getCWert()).divide(new BigDecimal(100), 4,
                    BigDecimal.ROUND_HALF_EVEN)));

    BigDecimal paramADeckungsbeitrag = gesamtDeckungsbeitrag
            .multiply((new BigDecimal(mandantparameterA.getCWert()).divide(new BigDecimal(100), 4,
                    BigDecimal.ROUND_HALF_EVEN)));

    for (int i = 0; i < gesamtListe.size(); i++) {
        KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(i);

        if (bUmsatz == true) {
            if (dTempUmsatz < gesamtUmsatz.doubleValue()
                    - (paramAUmsatz.doubleValue() + paramBUmsatz.doubleValue())) {
                dto.setAbcKlassifizierung("C");
            } else if (dTempUmsatz < paramBUmsatz.doubleValue()) {
                dto.setAbcKlassifizierung("B");
            } else {
                dto.setAbcKlassifizierung("A");
            }

            dTempUmsatz = dTempUmsatz - dto.getBdUmsatz().doubleValue();
        } else {
            if (dTempDeckungsbeitrag < gesamtDeckungsbeitrag.doubleValue()
                    - (paramADeckungsbeitrag.doubleValue() + paramBDeckungsbeitrag.doubleValue())) {
                dto.setAbcKlassifizierung("C");
            } else if (dTempDeckungsbeitrag < paramBDeckungsbeitrag.doubleValue()) {
                dto.setAbcKlassifizierung("B");
            } else {
                dto.setAbcKlassifizierung("A");
            }

            dTempDeckungsbeitrag = dTempDeckungsbeitrag - dto.getBdDeckungsbeitrag().doubleValue();

        }
        gesamtListe.set(i, dto);
    }

    // Nach Name sortieren

    // NACH NAME SORTIEREN, Wenn angegeben

    if (iOptionSortierung
            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_FIRMANNAME) {
        n = gesamtListe.size();
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSKunde();
                String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSKunde();
                if (a.compareTo(b) > 0) {
                    temp = gesamtListe.get(j);
                    gesamtListe.set(j, gesamtListe.get(j + 1));
                    gesamtListe.set(j + 1, temp);
                }
            }
        }
    }

    else if (iOptionSortierung.intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_LKZ) {
        n = gesamtListe.size();
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSLkz();
                String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSLkz();
                if (a.compareTo(b) > 0) {
                    temp = gesamtListe.get(j);
                    gesamtListe.set(j, gesamtListe.get(j + 1));
                    gesamtListe.set(j + 1, temp);
                } else if (a.compareTo(b) == 0) {
                    String plz1 = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSPlz();
                    String plz2 = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSPlz();

                    if (plz1.compareTo(plz2) > 0) {
                        temp = gesamtListe.get(j);
                        gesamtListe.set(j, gesamtListe.get(j + 1));
                        gesamtListe.set(j + 1, temp);
                    }

                }
            }
        }
    }

    // Nach Branche/Partnerklasse Gruppieren

    if (iOptionKundengruppierung
            .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE
            || iOptionKundengruppierung
                    .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE) {
        n = gesamtListe.size();
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - 1 - i; j++) {
                String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSKundengruppierung();
                String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSKundengruppierung();
                if (a.compareTo(b) > 0) {
                    temp = gesamtListe.get(j);
                    gesamtListe.set(j, gesamtListe.get(j + 1));
                    gesamtListe.set(j + 1, temp);
                }
            }
        }

    }

    // SPALTENHEADER entfernen, wenn Spalte leer
    for (int i = bSpalteAndrucken.length; i > 0; i--) {
        if (bSpalteAndrucken[i - 1] == false) {
            gruppierung.remove(i - 1);
        }
    }

    int[] spaltenDrucken = new int[gruppierung.size() + 1];
    spaltenDrucken[0] = 0;
    int x = 1;
    for (int i = 1; i < bSpalteAndrucken.length + 1; i++) {
        if (bSpalteAndrucken[i - 1] == true) {
            spaltenDrucken[x] = i;
            x++;
        }
    }

    int seiten_breite = (gruppierung.size() / 8) + 1;

    for (int i = 0; i < seiten_breite; i++) {
        index = -1;
        if (bUmsatz == true) {
            sAktuellerReport = LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK;
        } else {
            sAktuellerReport = LagerReportFac.REPORT_KUNDEDBSTATISTIK;
        }
        data = new Object[gesamtListe.size()][28];
        for (int j = 0; j < gesamtListe.size(); j++) {
            KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(j);
            data[j][REPORT_KUNDEUMSATZSTATISTIK_KUNDENGRUPPIERUNG] = dto.getSKundengruppierung();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_KUNDE] = dto.getSKunde();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_UMSATZ] = dto.getBdUmsatz();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_PLZ] = dto.getSPlz();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_LKZ] = dto.getSLkz();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_KUNDENNUMMER] = dto.getIKundennummer();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_DECKUNGSBEITRAG] = dto.getBdDeckungsbeitrag();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_ERSTUMSATZ] = new Boolean(dto.isBErstumsatz());
            data[j][REPORT_KUNDEUMSATZSTATISTIK_ABCKLASSE] = dto.getAbcKlassifizierung();
            data[j][REPORT_KUNDEUMSATZSTATISTIK_ZAHLUNGSZIEL] = getMandantFac()
                    .zahlungszielFindByIIdLocaleOhneExc(dto.getIZahlungsziel(), theClientDto.getLocMandant(),
                            theClientDto);
            data[j][REPORT_KUNDEUMSATZSTATISTIK_LIEFERART] = getLocaleFac().lieferartFindByIIdLocaleOhneExc(
                    dto.getILieferart(), theClientDto.getLocMandant(), theClientDto);
            data[j][REPORT_KUNDEUMSATZSTATISTIK_SPEDITEUR] = getMandantFac()
                    .spediteurFindByPrimaryKey(dto.getISpediteur()).getCNamedesspediteurs();

            try {
                if (i == 0) {
                    data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1] = dto.getSubSummeUmsatz()[0];
                    data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1DB] = dto.getSubSummeDeckungsbeitrag()[0];
                } else {
                    data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1] = dto
                            .getSubSummeUmsatz()[spaltenDrucken[0 + (i * 8)]];
                    data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1DB] = dto
                            .getSubSummeDeckungsbeitrag()[spaltenDrucken[0 + (i * 8)]];
                }
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE2] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[1 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE2DB] = dto
                        .getSubSummeDeckungsbeitrag()[spaltenDrucken[1 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE3] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[2 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE3DB] = dto
                        .getSubSummeDeckungsbeitrag()[spaltenDrucken[2 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE4] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[3 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE4DB] = dto
                        .getSubSummeDeckungsbeitrag()[spaltenDrucken[3 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE5] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[4 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE5DB] = dto
                        .getSubSummeDeckungsbeitrag()[spaltenDrucken[4 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE6] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[5 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE6DB] = dto
                        .getSubSummeDeckungsbeitrag()[spaltenDrucken[5 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE7] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[6 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE7DB] = dto
                        .getSubSummeDeckungsbeitrag()[spaltenDrucken[6 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE8] = dto
                        .getSubSummeUmsatz()[spaltenDrucken[7 + (i * 8)]];
                data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE8DB] = dto
                        .getSubSummeDeckungsbeitrag()[spaltenDrucken[7 + (i * 8)]];
            } catch (ArrayIndexOutOfBoundsException ex1) {
                // nothing
            }

        }

        HashMap<String, Object> parameter = new HashMap<String, Object>();
        parameter.put("P_VON", tVon);
        parameter.put("P_BIS", tBis);

        if (bUmsatz == true) {
            parameter.put("P_UMSATZ", new Boolean(true));
        } else {
            parameter.put("P_UMSATZ", new Boolean(false));
        }

        if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE) {
            parameter.put("P_GRUPPIERUNGKUNDE",
                    getTextRespectUISpr("lp.branche", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iOptionKundengruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE) {
            parameter.put("P_GRUPPIERUNGKUNDE", "Partnerklasse");
        }

        if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) {
            parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelklasse", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) {
            parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelgruppe", theClientDto.getMandant(),
                    theClientDto.getLocUi()));

        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) {
            parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.fertigungsgruppe", theClientDto.getMandant(),
                    theClientDto.getLocUi()));

        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {
            parameter.put("P_GRUPPIERUNG",
                    getTextRespectUISpr("lp.jahr", theClientDto.getMandant(), theClientDto.getLocUi()));

        } else if (iOptionGruppierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) {
            parameter.put("P_GRUPPIERUNG",
                    getTextRespectUISpr("lp.monat", theClientDto.getMandant(), theClientDto.getLocUi()));

        }
        if (iOptionSortierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_FIRMANNAME) {
            parameter.put("P_SORTIERUNG", "Firmenname");
        } else if (iOptionSortierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) {
            parameter.put("P_SORTIERUNG",
                    getTextRespectUISpr("er.umsatz", theClientDto.getMandant(), theClientDto.getLocUi()));

        } else if (iOptionSortierung
                .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_LKZ) {
            parameter.put("P_SORTIERUNG",
                    getTextRespectUISpr("lp.lkzplz", theClientDto.getMandant(), theClientDto.getLocUi()));

        }
        parameter.put("P_STATISTIKADRESSE", new Boolean(bVerwendeStatistikadresse));

        parameter.put("P_MITNICHTLAGERBEWERTETENARTIKELN", new Boolean(bMitNichtLagerbewertetenArtikeln));
        parameter.put("P_OHNE_DBBETRACHTUNG", new Boolean(ohneDBBetrachtung));

        try {

            parameter.put("P_GRUPPEA", mandantparameterA.getCWertAsObject());
            parameter.put("P_GRUPPEB", mandantparameterB.getCWertAsObject());

            if (i == 0) {
                parameter.put("Spalte1", "Unbekannt");
                parameter.put("Spalte2", gruppierung.get(0 + (i * 8)));
                parameter.put("Spalte3", gruppierung.get(1 + (i * 8)));
                parameter.put("Spalte4", gruppierung.get(2 + (i * 8)));
                parameter.put("Spalte5", gruppierung.get(3 + (i * 8)));
                parameter.put("Spalte6", gruppierung.get(4 + (i * 8)));
                parameter.put("Spalte7", gruppierung.get(5 + (i * 8)));
                parameter.put("Spalte8", gruppierung.get(6 + (i * 8)));

            } else {

                parameter.put("Spalte1", gruppierung.get(7 + (i * 8) - 8));
                parameter.put("Spalte2", gruppierung.get(8 + (i * 8) - 8));
                parameter.put("Spalte3", gruppierung.get(1 + (i * 8)));
                parameter.put("Spalte4", gruppierung.get(2 + (i * 8)));
                parameter.put("Spalte5", gruppierung.get(3 + (i * 8)));
                parameter.put("Spalte6", gruppierung.get(4 + (i * 8)));
                parameter.put("Spalte7", gruppierung.get(5 + (i * 8)));
                parameter.put("Spalte8", gruppierung.get(6 + (i * 80)));

            }

        } catch (IndexOutOfBoundsException ex1) {
            // nothing
        }
        initJRDS(parameter, LagerReportFac.REPORT_MODUL, sAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        if (print == null) {
            print = getReportPrint();
        } else {
            print = Helper.addReport2Report(print, getReportPrint().getPrint());
        }
    }

    return print;

}

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

License:Open Source License

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

    myLogger.info(buff.toString());

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

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

        // Criteria duerfen keine Texts oder Blobs enthalten!

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

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

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

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

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

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

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

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

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

        if (offenOderEingegangenI.equals(AuftragFac.AUFT_UMSATZUEBERSICHT_OFFEN)) {
            nSummeAuftragsnettowert = berechneAuftragsnettowertOffen(list, session, theClientDto);
        } else if (offenOderEingegangenI.equals(AuftragFac.AUFT_UMSATZUEBERSICHT_EINGANG)) {
            nSummeAuftragsnettowert = berechneAuftragsnettowertEingang(list, theClientDto);
        }
    } catch (Throwable t) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FLR, new Exception(t));
    } finally {
        try {
            session.close();
        } catch (HibernateException he) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
        }
    }

    return nSummeAuftragsnettowert;
}

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

License:Open Source License

public void importiereMonatsbestellung(ArrayList<ImportMonatsbestellungDto> importMonatbestellung,
        TheClientDto theClientDto) {/*from w  w w . j ava  2 s . c  o  m*/

    // 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.bestellung.ejbfac.BestellungReportFacBean.java

License:Open Source License

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

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

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

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

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

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

License:Open Source License

/**
 * Alle offenen Bestellungen fuer einen bestimmten Mandanten drucken.
 * /*from  ww w. j a  v  a 2 s.c  o  m*/
 * @param krit
 *            die Filter- und Sortierkriterien
 * @param dStichtag
 *            Date
 * @param bSortierungNachLiefertermin
 *            Boolean
 * @param artikelklasseIId
 *            Integer
 * @param artikelgruppeIId
 *            Integer
 * @param artikelCNrVon
 *            String
 * @param artikelCNrBis
 *            String
 * @param projektCBezeichnung
 *            String
 * @param auftragIId
 *            Integer
 * @param theClientDto
 *            der aktuelle Benutzer
 * @throws EJBExceptionLP
 *             Ausnahme
 * @return JasperPrint der Druck
 */
@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printBestellungOffene(ReportJournalKriterienDto krit, Date dStichtag,
        Boolean bSortierungNachLiefertermin, Integer artikelklasseIId, Integer artikelgruppeIId,
        String artikelCNrVon, String artikelCNrBis, String projektCBezeichnung, Integer auftragIId,
        Integer iArt, boolean bNurAngelegte, boolean bNurOffeneMengenAnfuehren, Integer[] projekte,
        TheClientDto theClientDto) throws EJBExceptionLP {
    useCase = UC_OFFENE;
    int iAnzahlZeilen = 0;

    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;
    // vom Stichtag die Uhrzeit abschneiden
    dStichtag = Helper.cutDate(dStichtag);

    // die dem Report uebergeben
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    parameter.put("P_STICHTAG", Helper.formatDatum(dStichtag, theClientDto.getLocUi()));
    dStichtag = Helper.addiereTageZuDatum(dStichtag, 1);

    session = factory.openSession();

    boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF,
            theClientDto);
    boolean bProjektklammer = getMandantFac().darfAnwenderAufZusatzfunktionZugreifen(
            MandantFac.ZUSATZFUNKTION_PROJEKTKLAMMER, theClientDto.getMandant());
    // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
    // Haupttabelle anlegen,
    // nach denen ich filtern und sortieren kann
    Criteria crit = session.createCriteria(FLRBestellung.class);

    // Einschraenkung auf den aktuellen Mandanten
    crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));

    // Einschraenkung nach Status Offen, Erledigt
    Collection<String> cStati = new LinkedList<String>();
    cStati.add(BestellungFac.BESTELLSTATUS_ANGELEGT);
    if (bNurAngelegte == false) {
        cStati.add(BestellungFac.BESTELLSTATUS_OFFEN);
        cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT);
        cStati.add(BestellungFac.BESTELLSTATUS_ERLEDIGT);
    }
    crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati));

    // Das Belegdatum muss vor dem Stichtag liegen
    crit.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, dStichtag));

    /**
     * @todo MB->MB hier sollte auch das erledigt-datum ziehen, das gibts
     *       aber in der BS nicht :-(
     */

    crit.add(Restrictions.or(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_MANUELLGELIEFERT, dStichtag),
            Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MANUELLGELIEFERT)));

    // Das Belegdatum muss vor dem Stichtag liegen
    crit.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, dStichtag));
    // Filter nach Projektbezeichnung
    if (projektCBezeichnung != null) {
        crit.add(Restrictions.ilike(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG,
                "%" + projektCBezeichnung + "%"));
    }

    // Projektklammer
    if (projekte != null && projekte.length > 0) {
        crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_PROJEKT_I_ID, projekte));

        String text = "";
        for (int i = 0; i < projekte.length; i++) {

            try {
                ProjektDto pDto = getProjektFac().projektFindByPrimaryKey(projekte[i]);

                text += pDto.getCNr() + ", ";
            } catch (RemoteException e) {
                throwEJBExceptionLPRespectOld(e);
            }

        }

        parameter.put("P_PROJEKTE", text);

    }

    // Filter nach Auftrag
    if (auftragIId != null) {
        crit.add(Restrictions.like(BestellungFac.FLR_BESTELLUNG_AUFTRAG_I_ID, auftragIId));
    }
    // Einschraenkung nach einer bestimmten Kostenstelle
    if (krit.kostenstelleIId != null) {
        crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
    }

    // Einschraenkung nach einem bestimmten Lieferanten
    if (krit.lieferantIId != null) {
        crit.add(
                Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, krit.lieferantIId));
    }
    // Filter nach Bestellungsart
    Collection<String> cArt = null;
    if (iArt != null) {
        if (iArt == 1) {
            // Ohne Rahmenbestellungen
            cArt = new LinkedList<String>();
            cArt.add(BestellungFac.BESTELLUNGART_FREIE_BESTELLUNG_C_NR);
            cArt.add(BestellungFac.BESTELLUNGART_ABRUFBESTELLUNG_C_NR);
            cArt.add(BestellungFac.BESTELLUNGART_LEIHBESTELLUNG_C_NR);
            crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, cArt));
        } else if (iArt == 2) {
            // Nur Rahmenbestellungen
            cArt = new LinkedList<String>();
            cArt.add(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR);
            crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, cArt));
        }
    }

    // Sortierung nach Kostenstelle ist immer die erste Sortierung
    if (krit.bSortiereNachKostenstelle) {
        crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
    }
    // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle
    if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
        crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT).createCriteria(LieferantFac.FLR_PARTNER)
                .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));

    }
    // Sortierung nach Projekt, eventuell innerhalb der Kostenstelle
    else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PROJEKT) {

        if (bProjektklammer == true) {

            crit.createAlias(BestellungFac.FLR_BESTELLUNG_FLRPROJEKT, "p");

            crit.addOrder(Order.asc("p.c_nr"));
        } else {
            crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG));
        }

    }
    // Sortierung nach Bestellungart, eventuell innerhalb der
    // Kostenstelle
    // else if (krit.iSortierung ==
    // ReportJournalKriterienDto.KRIT_SORT_NACH_ART) {
    // crit.addOrder(Order
    // .asc(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR));
    // }

    // Sortierung nach Liefertermin (optional)
    if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) {
        crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN));
    }

    // es wird in jedem Fall nach der Belegnummer sortiert
    crit.addOrder(Order.asc("c_nr"));

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

    ArrayList<FLRBestellung> bestellung = new ArrayList<FLRBestellung>();
    while (it.hasNext()) {
        FLRBestellung flrbestellung = (FLRBestellung) it.next();
        session = factory.openSession();
        Criteria crit1 = session.createCriteria(FLRBestellposition.class);
        Criteria crit1Bestellung = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
        // nur Positionen der aktuellen Bestellung.
        crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id()));
        // keine erledigten Positionen.
        crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR,
                BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT));
        // keine geliferten Positionen.
        crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR,
                BestellpositionFac.BESTELLPOSITIONSTATUS_GELIEFERT));
        // Der Liefertermin muss vor dem Stichtag liegen
        crit1.add(Restrictions.or(Restrictions.and(
                // Wenn der AB-Termin
                // eingegeben ist, zieht
                // der
                Restrictions.isNotNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN),
                Restrictions
                        .le(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN, dStichtag)),
                Restrictions.and(
                        // sonst der
                        // uebersteuerte
                        // Liefertermin
                        Restrictions
                                .isNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN),
                        Restrictions.le(BestellpositionFac.FLR_BESTELLPOSITION_T_UEBERSTEUERTERLIEFERTERMIN,
                                dStichtag))));

        if (artikelklasseIId != null || artikelgruppeIId != null || artikelCNrVon != null
                || artikelCNrBis != null) {
            // Wenn nach Artikelklassen/Gruppen gefiltert wird, dann
            // kommen nur Ident-Positionen
            crit1.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR,
                    BestellpositionFac.BESTELLPOSITIONART_IDENT));
            Criteria critArtikel = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL);
            if (artikelklasseIId != null) {
                critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE)
                        .add(Restrictions.eq("i_id", artikelklasseIId));
            }
            if (artikelgruppeIId != null) {
                critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE)
                        .add(Restrictions.eq("i_id", artikelgruppeIId));
            }
            if (artikelCNrVon != null) {
                critArtikel.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon));
            }
            if (artikelCNrBis != null) {
                critArtikel.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis));
            }
        }
        List<?> resultList = crit1.list();
        // Wenn die Bestellung anzuzeigende Positionen enthaelt, dann in
        // die Liste aufnehmen.
        if (resultList.size() > 0) {
            bestellung.add(flrbestellung);
            iAnzahlZeilen++;
        }
        for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) {
            FLRBestellposition item = (FLRBestellposition) iter.next();
            if (item.getN_menge() != null) {
                bestellung.add(null);
                iAnzahlZeilen++;
            }
        }
    }

    data = new Object[iAnzahlZeilen][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ANZAHL_SPALTEN];

    int i = 0;
    while (i < iAnzahlZeilen) {
        FLRBestellung flrbestellung = null;
        if (bestellung.get(i) != null) {
            flrbestellung = (FLRBestellung) bestellung.get(i);
            data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGCNR] = flrbestellung.getC_nr();
            data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGARTCNR] = flrbestellung
                    .getBestellungart_c_nr();

            if (bProjektklammer && flrbestellung.getProjekt_i_id() != null) {
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung.getFlrprojekt()
                        .getC_nr();
            } else {
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung
                        .getC_bezprojektbezeichnung();
            }

            data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERANT] = flrbestellung
                    .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1();

            // PJ 14752

            String sortierstring = "";
            if (krit.bSortiereNachKostenstelle == true) {
                sortierstring = Helper.fitString2Length(flrbestellung.getFlrkostenstelle().getC_nr(), 80, ' ');
            }
            if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {
                sortierstring += Helper.fitString2Length(
                        flrbestellung.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(), 80,
                        ' ') + Helper.fitString2Length("", 80, ' ');
            }
            if (bSortierungNachLiefertermin == true) {
                sortierstring += Helper.fitString2Length(flrbestellung.getT_liefertermin() + "", 15, ' ');
            }
            data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring;

            data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGDATUM] = Helper
                    .formatDatum(flrbestellung.getT_belegdatum(), theClientDto.getLocUi());
            if (flrbestellung.getFlrkostenstelle() != null) {
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_KOSTENSTELLECNR] = flrbestellung
                        .getFlrkostenstelle().getC_nr();
            }
            i++;
        }
        session = factory.openSession();
        Criteria crit1 = session.createCriteria(FLRBestellpositionReport.class);
        // Keine erledigten Positionen.
        crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR,
                BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT));
        crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR,
                BestellpositionFac.BESTELLPOSITIONSTATUS_GELIEFERT));

        // Der Liefertermin muss vor dem Stichtag liegen
        crit1.add(Restrictions.or(Restrictions.and(
                // Wenn der AB-Termin
                // eingegeben ist, zieht
                // der
                Restrictions.isNotNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN),
                Restrictions
                        .le(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN, dStichtag)),
                Restrictions.and(
                        // sonst der
                        // uebersteuerte
                        // Liefertermin
                        Restrictions
                                .isNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN),
                        Restrictions.le(BestellpositionFac.FLR_BESTELLPOSITION_T_UEBERSTEUERTERLIEFERTERMIN,
                                dStichtag))));

        // Nur Positionen der aktuellen Bestellung.
        Criteria crit1Bestellung = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
        crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id()));
        if (artikelklasseIId != null || artikelgruppeIId != null || artikelCNrVon != null
                || artikelCNrBis != null) {
            // Wenn nach Artikelklassen/Gruppen gefiltert wird, dann
            // kommen nur Ident-Positionen
            crit1.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR,
                    BestellpositionFac.BESTELLPOSITIONART_IDENT));
            Criteria critArtikel = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL);
            if (artikelklasseIId != null) {
                critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE)
                        .add(Restrictions.eq("i_id", artikelklasseIId));
            }
            if (artikelgruppeIId != null) {
                critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE)
                        .add(Restrictions.eq("i_id", artikelgruppeIId));
            }
            if (artikelCNrVon != null) {
                critArtikel.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon));
            }
            if (artikelCNrBis != null) {
                critArtikel.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis));
            }
        }

        List<?> resultList = crit1.list();
        for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) {
            FLRBestellpositionReport item = (FLRBestellpositionReport) iter.next();
            if (item.getN_menge() != null) {
                String artikelCNr = null;
                /**
                 * @todo das ist nicht sehr sauber ...
                 */
                if (item.getFlrartikel().getC_nr().startsWith("~")) {
                    artikelCNr = BestellungReportFac.REPORT_VORKALKULATION_ZEICHEN_FUER_HANDEINGABE;
                } else {
                    artikelCNr = item.getFlrartikel().getC_nr();
                }
                Criteria critWep = session.createCriteria(FLRWareneingangspositionen.class);
                critWep.createCriteria("flrbestellposition").add(Restrictions.eq("i_id", item.getI_id()));
                List<?> wepResultList = critWep.list();
                Iterator<?> wepResultListIterator = wepResultList.iterator();

                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGCNR] = flrbestellung.getC_nr();
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGARTCNR] = flrbestellung
                        .getBestellungart_c_nr();
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung
                        .getC_bezprojektbezeichnung();
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERANT] = flrbestellung
                        .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1();
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELCNR] = artikelCNr;

                // SP903
                if (item.getPosition_i_id_artikelset() != null) {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_POSITION;
                } else {

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

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

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

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

                }

                // PJ 14752

                String sortierstring = "";
                if (krit.bSortiereNachKostenstelle == true) {
                    sortierstring = Helper.fitString2Length(flrbestellung.getFlrkostenstelle().getC_nr(), 80,
                            ' ');
                }

                if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {
                    sortierstring += Helper
                            .fitString2Length(flrbestellung.getFlrlieferant().getFlrpartner()
                                    .getC_name1nachnamefirmazeile1(), 80, ' ')
                            + Helper.fitString2Length(artikelCNr, 80, ' ');
                }

                if (bSortierungNachLiefertermin == true) {
                    sortierstring += Helper.fitString2Length(flrbestellung.getT_liefertermin() + "", 15, ' ');
                }

                data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring;

                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELMENGE] = item.getN_menge();
                BigDecimal bdOffeneLiefermenge = new BigDecimal(0);
                if (BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR
                        .equals(flrbestellung.getBestellungart_c_nr())) {
                    try {
                        BestellpositionDto[] abrufPos = getBestellpositionFac()
                                .bestellpositionFindByBestellpositionIIdRahmenposition(item.getI_id(),
                                        theClientDto);
                        for (int y = 0; y < abrufPos.length; y++) {
                            bdOffeneLiefermenge = bdOffeneLiefermenge
                                    .add(getBestellpositionFac().berechneOffeneMenge(abrufPos[y]));
                        }
                    } catch (RemoteException e) {
                    }
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_OFFENELIEFERUNGEN] = bdOffeneLiefermenge;

                } else {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_OFFENELIEFERUNGEN] = null;
                }
                StringBuffer sbArtikelInfo = new StringBuffer();
                if (item.getC_bezeichnung() != null) {
                    sbArtikelInfo.append(item.getC_bezeichnung());
                } else {
                    ArtikelDto artikelDto = getArtikelFac()
                            .artikelFindByPrimaryKey(item.getFlrartikel().getI_id(), theClientDto);

                    if (artikelDto.getArtikelsprDto() != null) {
                        if (artikelDto.getArtikelsprDto().getCBez() != null) {
                            sbArtikelInfo.append(artikelDto.getArtikelsprDto().getCBez());
                        }
                    }
                }
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELBEZ] = sbArtikelInfo.toString();

                // der Preis wird in Mandantenwaehrung angezeigt, es
                // gilt der hinterlegte Wechselkurs
                BigDecimal bdPreisinmandantenwaehrung = item.getN_nettogesamtpreis();
                BigDecimal wechselkursmandantwaehrungzuauftragswaehrung = null;
                if (!flrbestellung.getWaehrung_c_nr_bestellwaehrung()
                        .equals(theClientDto.getSMandantenwaehrung())) {
                    wechselkursmandantwaehrungzuauftragswaehrung = new BigDecimal(
                            flrbestellung.getF_wechselkursmandantwaehrungbestellungswaehrung().doubleValue());
                    bdPreisinmandantenwaehrung = getBetragMalWechselkurs(bdPreisinmandantenwaehrung,
                            Helper.getKehrwert(wechselkursmandantwaehrungzuauftragswaehrung));
                }
                if (darfEinkaufspreisSehen) {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELPREIS] = bdPreisinmandantenwaehrung;
                } else {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELPREIS] = null;
                }

                if (item.getEinheit_c_nr() != null) {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELEINHEIT] = item
                            .getEinheit_c_nr().trim();
                }
                if (item.getT_auftragsbestaetigungstermin() != null) {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABTERMIN] = Helper
                            .formatDatum(item.getT_auftragsbestaetigungstermin(), theClientDto.getLocUi());
                }

                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABNUMMER] = item.getC_abnummer();
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABKOMMENTAR] = item.getC_abkommentar();

                if (item.getT_uebersteuerterliefertermin() != null) {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERTERMIN] = Helper
                            .formatDatum(item.getT_uebersteuerterliefertermin(), theClientDto.getLocUi());
                } else {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERTERMIN] = Helper
                            .formatDatum(item.getFlrbestellung().getT_liefertermin(), theClientDto.getLocUi());
                }
                BigDecimal noffeneMenge = item.getN_menge();
                BigDecimal ngeliferteMenge = new BigDecimal(0);
                if (flrbestellung.getBestellungart_c_nr()
                        .equals(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR)) {
                    noffeneMenge = item.getN_offenemenge();
                    while (wepResultListIterator.hasNext()) {
                        FLRWareneingangspositionen waren = (FLRWareneingangspositionen) wepResultListIterator
                                .next();
                        ngeliferteMenge = ngeliferteMenge.add(waren.getN_geliefertemenge());
                    }

                } else {
                    while (wepResultListIterator.hasNext()) {
                        FLRWareneingangspositionen waren = (FLRWareneingangspositionen) wepResultListIterator
                                .next();
                        noffeneMenge = noffeneMenge.subtract(waren.getN_geliefertemenge());
                    }
                }
                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELGELIFERTEMENGE] = ngeliferteMenge;

                data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEMENGE] = noffeneMenge;
                if (darfEinkaufspreisSehen) {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEWERT] = noffeneMenge
                            .multiply(bdPreisinmandantenwaehrung);
                } else {
                    data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEWERT] = null;
                }
                i++;
            }
        }
    }

    closeSession(session);

    // PJ 15254
    if (bNurOffeneMengenAnfuehren) {
        ArrayList alTemp = new ArrayList();

        for (int k = 0; k < data.length; k++) {
            BigDecimal bdOffeneMenge = (BigDecimal) data[k][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEMENGE];
            if (bdOffeneMenge != null && bdOffeneMenge.doubleValue() > 0) {
                alTemp.add(data[k]);
            }
        }
        Object[][] returnArray = new Object[alTemp
                .size()][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ANZAHL_SPALTEN];
        data = (Object[][]) alTemp.toArray(returnArray);
    }

    // PJ 14752 Manuell nachsortieren (in Besprechung mit AD+WH besprochen)

    if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {

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

                String s = (String) o[REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM];
                String s1 = (String) o1[REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM];

                if (s.toUpperCase().compareTo(s1.toUpperCase()) > 0) {
                    data[j] = o1;
                    data[j + 1] = o;
                }
            }
        }

    }

    parameter.put(LPReport.P_SORTIERUNG, buildSortierungBestellungOffene(krit, theClientDto));
    parameter.put(LPReport.P_FILTER, buildFilterBestellungOffene(krit, artikelklasseIId, artikelgruppeIId,
            artikelCNrVon, artikelCNrBis, projektCBezeichnung, theClientDto));

    parameter.put(LPReport.P_SORTIERENACHLIEFERANT,
            new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));
    parameter.put("P_SORTIERENACHBESTELLUNGART",
            new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_ART));
    parameter.put("P_TITLE",
            getTextRespectUISpr("bes.print.offene", theClientDto.getMandant(), theClientDto.getLocUi()));
    parameter.put(P_MANDANTWAEHRUNG, theClientDto.getSMandantenwaehrung());

    initJRDS(parameter, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNG_JOURNAL_OFFENE,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    return getReportPrint();
}

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

License:Open Source License

/**
 * Diese Methode liefert eine Liste von allen offenen Bestellungen eines
 * Mandanten, die nach den eingegebenen Kriterien des Benutzers
 * zusammengestellt wird. <br>/*from   ww  w. j av a  2s . co m*/
 * Achtung: Hibernate verwendet lazy initialization, d.h. der Zugriff auf
 * Collections muss innerhalb der Session erfolgen.
 * 
 * @param reportJournalKriterienDtoI
 *            die Kriterien des Benutzers
 * @param dStichtag
 *            Date
 * @param bSortierungNachLiefertermin
 *            Boolean
 * @param artikelklasseIId
 *            Integer
 * @param artikelgruppeIId
 *            Integer
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return ReportBestellungOffeneDto[] die Liste der Bestellungen
 * @throws EJBExceptionLP
 *             Ausnahme
 */
private ReportBestellungOffeneDto[] getListeReportBestellungOffene(
        ReportJournalKriterienDto reportJournalKriterienDtoI, Date dStichtag,
        Boolean bSortierungNachLiefertermin, Integer artikelklasseIId, Integer artikelgruppeIId,
        TheClientDto theClientDto) throws EJBExceptionLP {
    ReportBestellungOffeneDto[] aResult = null;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;
    // vom Stichtag die Uhrzeit abschneiden
    dStichtag = Helper.cutDate(dStichtag);

    try {
        session = factory.openSession();

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

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

        // Einschraenkung nach Bestelllungart
        crit.add(Restrictions.ne(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR,
                BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR));
        crit.add(Restrictions.ne(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR,
                BestellungFac.BESTELLUNGART_ABRUFBESTELLUNG_C_NR));
        crit.add(Restrictions.ne(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR,
                BestellungFac.BESTELLUNGART_LEIHBESTELLUNG_C_NR));

        // Einschraenkung nach Status Offen, Erledigt
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(BestellungFac.BESTELLSTATUS_OFFEN);
        cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT);
        cStati.add(BestellungFac.BESTELLSTATUS_ERLEDIGT);
        crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati));

        // Das Belegdatum muss vor dem Stichtag liegen
        crit.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, dStichtag));

        // Einschraenkung nach einer bestimmten Kostenstelle
        if (reportJournalKriterienDtoI.kostenstelleIId != null) {
            crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID,
                    reportJournalKriterienDtoI.kostenstelleIId));
        }

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

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

        // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle
        if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT)
                    .createCriteria(LieferantFac.FLR_PARTNER)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));

        }
        // Sortierung nach Projekt, eventuell innerhalb der Kostenstelle
        else if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PROJEKT) {
            crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG));
        }
        // Sortierung nach Liefertermin (optional)
        if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) {
            crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN));
        }

        // es wird in jedem Fall nach der Belegnummer sortiert
        crit.addOrder(Order.asc("c_nr"));

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

        while (it.hasNext()) {
            FLRBestellung flrbestellung = (FLRBestellung) it.next();
            Session session1 = null;
            session1 = factory.openSession();
            Criteria crit1 = session1.createCriteria(FLRBestellposition.class);
            // keine erledigten Positionen.
            crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR,
                    BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT));
            // und nur die, die sich auf den aktuellen Bestellung beziehen.
            Criteria crit1Bestellung = crit1
                    .createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
            crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id()));
            int anzahlPositionen = 0;
            List<?> resultList = crit1.list();
            for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) {
                FLRBestellposition item = (FLRBestellposition) iter.next();
                if (item.getBestellpositionart_c_nr().equals(BestellpositionFac.BESTELLPOSITIONART_IDENT)
                        || item.getBestellpositionart_c_nr()
                                .equals(BestellpositionFac.BESTELLPOSITIONART_HANDEINGABE)) {
                    anzahlPositionen++;
                }
            }

            reportDto = new ReportBestellungOffeneDto();
            reportDto.setIIdBestellung(flrbestellung.getI_id());
            reportDto.setCNrBestellung(flrbestellung.getC_nr());
            reportDto.setLieferantCName1(
                    flrbestellung.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1());
            reportDto.setIAnzahlPositionen(anzahlPositionen);

            aResult[iIndex] = reportDto;
            iIndex++;

        }
    } finally {
        closeSession(session);
    }
    return aResult;
}

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

License:Open Source License

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

    Session session = null;// w ww  . j a  v a2s . co m
    useCase = UC_BESTELLUNG_WARENEINGANG;
    SessionFactory factory = FLRSessionFactory.getFactory();
    session = factory.openSession();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        }

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

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

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

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

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

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

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

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

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

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

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

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

        i++;
    }

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

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

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

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