Example usage for org.hibernate.criterion Restrictions ge

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

Introduction

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

Prototype

public static SimpleExpression ge(String propertyName, Object value) 

Source Link

Document

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

Usage

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printArtikelbestellt(Integer artikelIId, java.sql.Date dVon, java.sql.Date dBis,
        TheClientDto theClientDto) {//w ww  .j a  va2 s .  c  o m
    if (artikelIId == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null"));
    }
    // Erstellung des Reports
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    index = -1;
    sAktuellerReport = ArtikelReportFac.REPORT_ARTIKELBESTELLT;
    ArtikelDto dto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto);
    parameter.put("P_ARTIKEL", dto.formatArtikelbezeichnung());
    parameter.put("P_EINHEIT", dto.getEinheitCNr().trim());
    parameter.put("P_BESTELLEINHEIT_INVERS", Helper.short2Boolean(dto.getbBestellmengeneinheitInvers()));
    if (dto.getEinheitCNrBestellung() != null) {
        parameter.put("P_BESTELLEINHEIT", dto.getEinheitCNrBestellung().trim());
    } else {
        parameter.put("P_BESTELLEINHEIT", "");
    }

    String eingeloggterMandant = theClientDto.getMandant();

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

    org.hibernate.Criteria bestelltliste = session.createCriteria(FLRArtikelbestellt.class);
    bestelltliste.createAlias(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_FLRARTIKEL, "a")
            .add(Restrictions.eq("a.i_id", artikelIId));
    if (dVon != null) {
        bestelltliste.add(Restrictions.ge(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_D_LIEFERTERMIN, dVon));
    }
    if (dBis != null) {
        bestelltliste.add(Restrictions.lt(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_D_LIEFERTERMIN, dBis));
    }

    bestelltliste.addOrder(Order.asc(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_D_LIEFERTERMIN));

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

    Object[][] dataHelp = new Object[resultList.size()][10];

    while (resultListIterator.hasNext()) {
        FLRArtikelbestellt artikelbestellt = (FLRArtikelbestellt) resultListIterator.next();

        String sBelegnummer = null;
        String sPartner = null;
        String sProjektbezeichnung = null;
        String sMandant = null;
        Date dAuftragbestliefertermin = null;

        BestellpositionDto bestellpositionDto = null;
        BestellungDto bestellungDto = null;
        if (artikelbestellt.getC_belegartnr().equals(LocaleFac.BELEGART_BESTELLUNG)) {
            try {
                bestellpositionDto = getBestellpositionFac()
                        .bestellpositionFindByPrimaryKey(artikelbestellt.getI_belegartpositionid());
                if (!bestellpositionDto.getBestellpositionstatusCNr()
                        .equals(BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)) {
                    bestellungDto = getBestellungFac()
                            .bestellungFindByPrimaryKey(bestellpositionDto.getBestellungIId());
                    sBelegnummer = bestellungDto.getCNr();
                    sMandant = bestellungDto.getMandantCNr();
                    sProjektbezeichnung = bestellungDto.getCBez();
                    dAuftragbestliefertermin = bestellpositionDto.getTAuftragsbestaetigungstermin();

                    sPartner = getLieferantFac()
                            .lieferantFindByPrimaryKey(bestellungDto.getLieferantIIdBestelladresse(),
                                    theClientDto)
                            .getPartnerDto().formatTitelAnrede();
                }
            } catch (RemoteException ex3) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex3);
            }
        }

        if (eingeloggterMandant.equals(sMandant)) {

            dataHelp[row][REPORT_BESTELLTLISTE_BESTELLUNG] = sBelegnummer;
            dataHelp[row][REPORT_BESTELLTLISTE_LIEFERANTENNAME] = sPartner;
            dataHelp[row][REPORT_BESTELLTLISTE_PROJEKTNAME] = sProjektbezeichnung;
            // Wenn
            if (dAuftragbestliefertermin != null) {
                dataHelp[row][REPORT_BESTELLTLISTE_LIEFERTERMIN] = dAuftragbestliefertermin;
            } else {
                dataHelp[row][REPORT_BESTELLTLISTE_LIEFERTERMIN] = artikelbestellt.getT_liefertermin();

            }

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

                if (Helper.short2boolean(dto.getbBestellmengeneinheitInvers()) == true) {
                    if (dto.getNUmrechnungsfaktor().doubleValue() != 0) {
                        dataHelp[row][REPORT_BESTELLTLISTE_BESTELLMENGE] = artikelbestellt.getN_menge()
                                .divide(dto.getNUmrechnungsfaktor(), 4, BigDecimal.ROUND_UP);
                    }
                } else {
                    dataHelp[row][REPORT_BESTELLTLISTE_BESTELLMENGE] = artikelbestellt.getN_menge()
                            .multiply(dto.getNUmrechnungsfaktor());
                }

            }

            if (artikelbestellt.getC_belegartnr().equals(LocaleFac.BELEGART_BESTELLUNG)) {
                dataHelp[row][REPORT_BESTELLTLISTE_MENGE] = bestellpositionDto.getNMenge();
                dataHelp[row][REPORT_BESTELLTLISTE_AB_NUMMER] = bestellpositionDto.getCABNummer();
                dataHelp[row][REPORT_BESTELLTLISTE_LIEFERTERMIN] = bestellpositionDto
                        .getTUebersteuerterLiefertermin();
                dataHelp[row][REPORT_BESTELLTLISTE_AB_TERMIN] = bestellpositionDto
                        .getTAuftragsbestaetigungstermin();
                dataHelp[row][REPORT_BESTELLTLISTE_OFFENEMENGE] = artikelbestellt.getN_menge();
                dataHelp[row][REPORT_BESTELLTLISTE_AB_KOMMENTAR] = bestellpositionDto.getCABKommentar();
            }

            row++;
        }

    }
    session.close();
    data = new Object[row][10];
    for (int i = 0; i < row; i++) {
        data[i] = dataHelp[i];
    }

    initJRDS(parameter, ArtikelbestelltFac.REPORT_MODUL, ArtikelReportFac.REPORT_ARTIKELBESTELLT,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    return getReportPrint();
}

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

License:Open Source License

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

    try {

        session = factory.openSession();

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

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

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

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

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

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

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

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

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

            ReportRahmenreservierungDto reportDto = new ReportRahmenreservierungDto();

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

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

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

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//  w  ww.j  ava 2s .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.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 a2  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.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());
        }//  w  w w.  ja v  a  2s.c o m
    } 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);//  www . j  av  a 2 s .c  o  m
    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.artikel.ejbfac.LagerReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printWarenbewegungsjournal(Integer artikelIId, Integer lagerIId, Timestamp dVon,
        Timestamp dBis, TheClientDto theClientDto) {

    if (artikelIId == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null"));
    }// ww w  .  j ava  2  s  . c o m
    ArtikelDto dto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto);

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

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

    // Testfunktion AD
    // recalcGestehungspreisKomplett(artikelIId, session, true);

    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()))
            .add(Restrictions.not(Restrictions.eq("l.lagerart_c_nr", LagerFac.LAGERART_WERTGUTSCHRIFT)))
            .add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false)))
            .add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false)))
            .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM))
            .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));

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

    if (dVon != null) {
        crit.add(Restrictions.ge(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, Helper.cutTimestamp(dVon)));
    }
    if (dBis != null) {
        Timestamp tsBis = new Timestamp(dBis.getTime());
        tsBis.setTime(tsBis.getTime() + 24 * 3600000);

        crit.add(Restrictions.lt(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, Helper.cutTimestamp(tsBis)));
    }

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

    index = -1;
    sAktuellerReport = LagerReportFac.REPORT_WARENBEWEGUNGSJOURNAL;

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

    while (resultListIterator.hasNext()) {
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next();
        if (lagerbewegung.getN_menge().doubleValue() != 0) {
            Object[] dataHelp = new Object[20];

            try {
                BelegInfos infosZugang = getLagerFac().getBelegInfos(lagerbewegung.getC_belegartnr(),
                        lagerbewegung.getI_belegartid(), lagerbewegung.getI_belegartpositionid(), theClientDto);

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANG_WER_HAT_GEBUCHT] = lagerbewegung.getFlrpersonal()
                        .getC_kurzzeichen();

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSBELEG] = lagerbewegung.getFlrbelegart().getC_kbez()
                        + infosZugang.getBelegnummer();
                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_LAGER] = lagerbewegung.getFlrlager().getC_nr();

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_SNR] = lagerbewegung.getC_seriennrchargennr();

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUBUCHUNGSZEITPUNKT] = lagerbewegung.getT_buchungszeit();
                if (darfEinkaufspreisSehen) {
                    dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_EINSTANDSPREIS] = lagerbewegung.getN_einstandspreis();
                }

                if (lagerbewegung.getFlrhersteller() != null) {
                    dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_HERSTELLER] = lagerbewegung.getFlrhersteller()
                            .getC_nr();
                }
                if (lagerbewegung.getFlrland() != null) {
                    dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_URSPRUNGSLAND] = lagerbewegung.getFlrland()
                            .getC_lkz();
                }

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_WE_REFERENZ] = getLagerFac()
                        .getWareneingangsreferenzSubreport(lagerbewegung.getC_belegartnr(),
                                lagerbewegung.getI_belegartpositionid(), lagerbewegung.getC_seriennrchargennr(),
                                false, theClientDto);

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSMENGE] = lagerbewegung.getN_menge();

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGFIRMAKOMMENTAR] = infosZugang.getKundeLieferant();

                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSDATUM] = infosZugang.getBelegdatum();

                Session sessionSub = FLRSessionFactory.getFactory().openSession();
                String queryString = "FROM FLRLagerabgangursprung AS lagerabgangursprung WHERE lagerabgangursprung.compId.i_lagerbewegungidursprung="
                        + lagerbewegung.getI_id_buchung() + " AND lagerabgangursprung.n_verbrauchtemenge>0";
                Query querySub = sessionSub.createQuery(queryString);
                List<?> subResults = querySub.list();
                Iterator<?> subResultListIterator = subResults.iterator();
                if (subResults.size() == 0) {

                    // CK: Projekt 8200
                    if (darfEinkaufspreisSehen) {
                        dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_GESTPREIS] = getLagerFac()
                                .getGemittelterGestehungspreisEinesLagers(artikelIId,
                                        lagerbewegung.getFlrlager().getI_id(), theClientDto);
                    }

                    al.add(dataHelp);
                } else {
                    while (subResultListIterator.hasNext()) {
                        FLRLagerabgangursprung lagerabgangursprung = (FLRLagerabgangursprung) subResultListIterator
                                .next();

                        Session sessionAbgang = FLRSessionFactory.getFactory().openSession();
                        org.hibernate.Criteria critAbgang = sessionAbgang
                                .createCriteria(FLRLagerbewegung.class);
                        critAbgang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_I_ID_BUCHUNG,
                                lagerabgangursprung.getCompId().getI_lagerbewegungid()));

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

                        critAbgang.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT));
                        List<?> resultsAbgang = critAbgang.list();
                        try {
                            FLRLagerbewegung flrLagerbewegungAbgang = (FLRLagerbewegung) resultsAbgang
                                    .iterator().next();

                            BelegInfos infosAbgang = getLagerFac().getBelegInfos(
                                    flrLagerbewegungAbgang.getC_belegartnr(),
                                    flrLagerbewegungAbgang.getI_belegartid(),
                                    lagerbewegung.getI_belegartpositionid(), theClientDto);
                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANG_WER_HAT_GEBUCHT] = flrLagerbewegungAbgang
                                    .getFlrpersonal().getC_kurzzeichen();
                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSBELEG] = flrLagerbewegungAbgang
                                    .getFlrbelegart().getC_kbez() + infosAbgang.getBelegnummer();

                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSBELEG] = lagerbewegung.getFlrbelegart()
                                    .getC_kbez() + infosZugang.getBelegnummer();

                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGFIRMAKOMMENTAR] = infosAbgang
                                    .getKundeLieferant();
                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSDATUM] = infosAbgang.getBelegdatum();

                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABBUCHUNGSZEITPUNKT] = flrLagerbewegungAbgang
                                    .getT_buchungszeit();

                            if (darfEinkaufspreisSehen) {
                                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_GESTPREIS] = lagerabgangursprung
                                        .getN_gestehungspreis();
                            }
                            if (darfVerkaufspreisSehen) {
                                dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_VKPREIS] = flrLagerbewegungAbgang
                                        .getN_verkaufspreis();
                            }
                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSMENGE] = lagerabgangursprung
                                    .getN_verbrauchtemenge();
                            al.add(dataHelp);
                        } catch (java.util.NoSuchElementException e) {
                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSBELEG] = "FEHLER:";
                            dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGFIRMAKOMMENTAR] = "KEINE INFORMATIONEN";
                            al.add(dataHelp);
                        }
                        dataHelp = new Object[20];
                        sessionAbgang.close();
                    }
                }
                sessionSub.close();
            } catch (RemoteException ex1) {
                throwEJBExceptionLPRespectOld(ex1);
            }
        }

    }
    session.close();

    Object[][] returnArray = new Object[al.size()][18];
    data = (Object[][]) al.toArray(returnArray);

    HashMap<String, Object> parameter = new HashMap<String, Object>();
    parameter.put("P_ARTIKEL", dto.formatArtikelbezeichnung());
    parameter.put("P_RECHT_LP_DARF_PREISE_SEHEN_EINKAUF", darfEinkaufspreisSehen);
    parameter.put("P_RECHT_LP_DARF_PREISE_SEHEN_VERKAUF", darfVerkaufspreisSehen);
    if (dVon != null) {
        parameter.put("P_VON", dVon);
    }
    if (dBis != null) {
        parameter.put("P_BIS", dBis);
    }
    if (lagerIId != null) {
        try {
            LagerDto lagerDto = getLagerFac().lagerFindByPrimaryKey(lagerIId);
            parameter.put("P_LAGER", lagerDto.getCNr());
        } catch (RemoteException ex1) {
            throwEJBExceptionLPRespectOld(ex1);
        }
    }

    initJRDS(parameter, LagerReportFac.REPORT_MODUL, LagerReportFac.REPORT_WARENBEWEGUNGSJOURNAL,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

    return getReportPrint();

}

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

License:Open Source License

/**
 * Reservierungen pruefen. 1. Bestehende Reservierungseintraege aus
 * Auftrag/Los 2. Lose pruefen, ob die Reservierungen richtig eingetragen
 * sind. 3. Auftraege pruefen, ob die Reservierungen richtig eingetragen
 * sind.//from  w  w w  .ja v a2  s  . c  o  m
 * 
 * @param theClientDto
 *            String
 * @throws EJBExceptionLP
 */
public void pruefeReservierungen(TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = FLRSessionFactory.getFactory().openSession();

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

    session.close();

    // Lose
    session = FLRSessionFactory.getFactory().openSession();
    org.hibernate.Criteria lossollmaterial = session.createCriteria(FLRLossollmaterial.class);
    lossollmaterial.createCriteria(FertigungFac.FLR_LOSSOLLMATERIAL_FLRLOS)
            .add(Restrictions.eq(FertigungFac.FLR_LOS_STATUS_C_NR, FertigungFac.STATUS_ANGELEGT));
    // Query ausfuehren
    List<?> lossollList = lossollmaterial.list();
    Iterator<?> lossollListIterator = lossollList.iterator();
    while (lossollListIterator.hasNext()) {
        FLRLossollmaterial lossollmat = (FLRLossollmaterial) lossollListIterator.next();
        // Fuer angelegte Lose MUSS es einen Reservierungseintrag geben.
        // nur fuer Artikel
        if (lossollmat.getFlrartikel() != null) {
            ArtikelreservierungDto resDto = new ArtikelreservierungDto();
            resDto.setArtikelIId(lossollmat.getFlrartikel().getI_id());
            resDto.setCBelegartnr(LocaleFac.BELEGART_LOS);
            resDto.setIBelegartpositionid(lossollmat.getI_id());
            resDto.setNMenge(lossollmat.getN_menge());

            // PJ17994
            resDto.setTLiefertermin(Helper.addiereTageZuTimestamp(
                    new java.sql.Timestamp(lossollmat.getFlrlos().getT_produktionsbeginn().getTime()),
                    lossollmat.getI_beginnterminoffset()));

            // anlegen
            createArtikelreservierung(resDto);
            myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto);
        }

    }

    session.close();
    // Auftraege
    session = FLRSessionFactory.getFactory().openSession();
    org.hibernate.Criteria abPosCrit = session.createCriteria(FLRAuftragposition.class);
    // nur Artikel-Positionen
    abPosCrit.add(Restrictions.isNotNull(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRARTIKEL));

    org.hibernate.Criteria abCrit = abPosCrit.createCriteria(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRAUFTRAG);
    // Rahmenauftraege werden ignoriert, da diese keine Reservierungen
    // ausloesen.
    abCrit.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGART_C_NR, AuftragServiceFac.AUFTRAGART_RAHMEN));

    // Nur Sataus Offen und Teilerledigt
    String[] stati = new String[3];
    stati[0] = AuftragServiceFac.AUFTRAGSTATUS_OFFEN;
    stati[1] = AuftragServiceFac.AUFTRAGSTATUS_TEILERLEDIGT;
    stati[2] = AuftragServiceFac.AUFTRAGSTATUS_ANGELEGT;
    abCrit.add(Restrictions.in(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR, stati));

    // Query ausfuehren
    List<?> abposList = abPosCrit.list();
    Iterator<?> abPosListIterator = abposList.iterator();
    while (abPosListIterator.hasNext()) {
        FLRAuftragposition abPos = (FLRAuftragposition) abPosListIterator.next();
        // Fuer offene Auftraege MUSS es einen Reservierungseintrag geben.
        // (ausser positionsstatus = erledigt)

        // nur fuer noch nicht erledigte Auftragspositionen mit offener
        // Menge != 0

        if (abPos.getN_offenemenge().compareTo(new BigDecimal(0)) != 0 && !abPos.getAuftragpositionstatus_c_nr()
                .equals(AuftragServiceFac.AUFTRAGPOSITIONSTATUS_ERLEDIGT)) {
            ArtikelreservierungDto resDto = new ArtikelreservierungDto();
            resDto.setArtikelIId(abPos.getFlrartikel().getI_id());
            resDto.setCBelegartnr(LocaleFac.BELEGART_AUFTRAG);
            resDto.setIBelegartpositionid(abPos.getI_id());
            resDto.setNMenge(abPos.getN_offenemenge());
            java.sql.Timestamp tLiefertermin;
            if (abPos.getN_offenemenge().compareTo(new BigDecimal(0)) < 0) {
                // Negative Menge -> Finaltermin
                tLiefertermin = new java.sql.Timestamp(abPos.getFlrauftrag().getT_finaltermin().getTime());
            } else {
                // Positive Menge -> Liefertermin

                AuftragpositionDto abPosDto = null;
                try {
                    abPosDto = getAuftragpositionFac().auftragpositionFindByPrimaryKey(abPos.getI_id());
                } catch (RemoteException ex2) {
                    throwEJBExceptionLPRespectOld(ex2);
                }
                tLiefertermin = abPosDto.getTUebersteuerbarerLiefertermin();
            }
            resDto.setTLiefertermin(tLiefertermin);
            // anlegen
            createArtikelreservierung(resDto);
            myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto);
        }

    }
    session.close();

    // Auftraege
    session = FLRSessionFactory.getFactory().openSession();
    org.hibernate.Criteria speiseplan = session.createCriteria(FLRSpeiseplanposition.class);

    speiseplan.createCriteria("flrspeiseplan")
            .add(Restrictions.ge("t_datum", Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()))));

    // Query ausfuehren
    List<?> speiseplanList = speiseplan.list();
    Iterator<?> speiseplanListIterator = speiseplanList.iterator();
    while (speiseplanListIterator.hasNext()) {
        FLRSpeiseplanposition flrSpeiseplanposition = (FLRSpeiseplanposition) speiseplanListIterator.next();
        if (flrSpeiseplanposition.getN_menge().doubleValue() > 0) {
            ArtikelreservierungDto resDto = new ArtikelreservierungDto();
            resDto.setArtikelIId(flrSpeiseplanposition.getArtikel_i_id());
            resDto.setCBelegartnr(LocaleFac.BELEGART_KUECHE);
            resDto.setIBelegartpositionid(flrSpeiseplanposition.getI_id());
            resDto.setNMenge(flrSpeiseplanposition.getN_menge());
            resDto.setTLiefertermin(
                    new Timestamp(flrSpeiseplanposition.getFlrspeiseplan().getT_datum().getTime()));
            createArtikelreservierung(resDto);
            myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto);
        }
    }

    session.close();

    myLogger.exit("Reservierungspr\u00FCfung abgeschlossen");

}

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

License:Open Source License

/**
 * Artikelreservierungen drucken./*from  w w w.  j av a  2  s. c  om*/
 * 
 * @todo in eine ReportFac verschieben.
 * 
 * @param artikelIId
 *            Integer
 * @param dVon
 *            Date
 * @param dBis
 *            Date
 * @param theClientDto der aktuelle Benutzer
 * @return JasperPrintLP
 * @throws EJBExceptionLP
 */
public JasperPrintLP printArtikelreservierungen(Integer artikelIId, java.sql.Date dVon, java.sql.Date dBis,
        TheClientDto theClientDto) throws EJBExceptionLP {
    if (artikelIId == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN,
                new Exception("artikelIId == null"));
    }
    // Erstellung des Reports
    JasperPrintLP print = null;
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    index = -1;
    sAktuellerReport = ReservierungFac.REPORT_ARTIKELRESERVIERUNG;

    String eingeloggterMandant = theClientDto.getMandant();

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

    org.hibernate.Criteria reservierungen = session.createCriteria(FLRArtikelreservierung.class);
    reservierungen.createAlias(ReservierungFac.FLR_ARTIKELRESERVIERUNG_FLRARTIKEL, "a")
            .add(Restrictions.eq("a.i_id", artikelIId));
    if (dVon != null) {
        reservierungen.add(Restrictions.ge(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN, dVon));
    }
    if (dBis != null) {
        reservierungen.add(Restrictions.lt(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN, dBis));
    }

    reservierungen.addOrder(Order.asc(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN));

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

    Object[][] dataHelp = new Object[resultList.size()][7];

    while (resultListIterator.hasNext()) {
        FLRArtikelreservierung artikelreservierung = (FLRArtikelreservierung) resultListIterator.next();

        String sBelegnummer = null;
        String sStueckliste = null;
        String sZwangsSNR = null;
        String sPartner = null;
        String sProjektbezeichnung = null;

        if (artikelreservierung.getC_belegartnr().equals(LocaleFac.BELEGART_AUFTRAG)) {
            AuftragpositionDto auftragpositionDto = null;
            try {
                auftragpositionDto = getAuftragpositionFac()
                        .auftragpositionFindByPrimaryKey(artikelreservierung.getI_belegartpositionid());
                sZwangsSNR = auftragpositionDto.getCSeriennrchargennr();
            } catch (RemoteException ex1) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1);
            }
            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragpositionDto.getBelegIId());
            sBelegnummer = "A" + auftragDto.getCNr();

            sProjektbezeichnung = auftragDto.getCBezProjektbezeichnung();

            sPartner = getKundeFac()
                    .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto)
                    .getPartnerDto().formatTitelAnrede();

        } else if (artikelreservierung.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)) {
            com.lp.server.fertigung.service.LossollmaterialDto auftragpositionDto = null;
            try {
                auftragpositionDto = getFertigungFac()
                        .lossollmaterialFindByPrimaryKey(artikelreservierung.getI_belegartpositionid());
            } catch (RemoteException ex1) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1);
            }
            LosDto losDto = null;
            try {
                losDto = getFertigungFac().losFindByPrimaryKey(auftragpositionDto.getLosIId());
                sBelegnummer = "L" + losDto.getCNr();
                if (losDto.getStuecklisteIId() != null) {
                    StuecklisteDto stuecklisteDto = getStuecklisteFac()
                            .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto);
                    ArtikelDto dto = getArtikelFac().artikelFindByPrimaryKey(stuecklisteDto.getArtikelIId(),
                            theClientDto);
                    sStueckliste = dto.getCNr();
                }
                sProjektbezeichnung = losDto.getCProjekt();
                if (losDto.getAuftragIId() != null) {
                    AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(losDto.getAuftragIId());
                    sPartner = getKundeFac()
                            .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto)
                            .getPartnerDto().formatTitelAnrede();
                } else {
                    sPartner = "";
                }
            } catch (RemoteException ex3) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex3);
            }
        } else if (artikelreservierung.getC_belegartnr().equals(LocaleFac.BELEGART_KUECHE)) {

            SpeiseplanpositionDto speiseplanpositionDto = null;
            try {
                speiseplanpositionDto = getKuecheFac()
                        .speiseplanpositionFindByPrimaryKey(artikelreservierung.getI_belegartpositionid());
            } catch (RemoteException ex1) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1);
            }
            SpeiseplanDto speiseplanDto = null;
            try {
                speiseplanDto = getKuecheFac()
                        .speiseplanFindByPrimaryKey(speiseplanpositionDto.getSpeiseplanIId());
                sBelegnummer = "K";

                // Projekt= Speisekassa

                KassaartikelDto speisekassaDto = getKuecheFac()
                        .kassaartikelFindByPrimaryKey(speiseplanDto.getKassaartikelIId());

                sProjektbezeichnung = speisekassaDto.getCBez();

                // Kunde = Stuecklistebezeichnung
                StuecklisteDto stuecklisteDto = getStuecklisteFac()
                        .stuecklisteFindByPrimaryKey(speiseplanDto.getStuecklisteIId(), theClientDto);

                sPartner = stuecklisteDto.getArtikelDto().formatBezeichnung();

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

        dataHelp[row][REPORT_RESERVIERUNGSLISTE_AUFTRAG] = sBelegnummer;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_STUECKLISTE] = sStueckliste;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_KUNDENNAME] = sPartner;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_PROJEKTNAME] = sProjektbezeichnung;
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_LIEFERTERMIN] = artikelreservierung.getT_liefertermin();
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_MENGE] = artikelreservierung.getN_menge();
        dataHelp[row][REPORT_RESERVIERUNGSLISTE_ZWANGSSERIENNUMMER] = sZwangsSNR;
        row++;

    }
    session.close();

    data = new Object[row][7];
    for (int i = 0; i < row; i++) {
        data[i] = dataHelp[i];
    }

    ArtikelDto dto = getArtikelFac().artikelFindByPrimaryKey(artikelIId, theClientDto);
    parameter.put("P_ARTIKEL", dto.formatArtikelbezeichnung());

    initJRDS(parameter, ReservierungFac.REPORT_MODUL, ReservierungFac.REPORT_ARTIKELRESERVIERUNG,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

    print = getReportPrint();
    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./*www . j  a  v a 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;
}