Example usage for org.hibernate.criterion Restrictions isNotNull

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

Introduction

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

Prototype

public static Criterion isNotNull(String propertyName) 

Source Link

Document

Apply an "is not null" constraint to the named property

Usage

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

License:Open Source License

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

    tVon = Helper.cutTimestamp(tVon);// w w w.  java 2 s  .co 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.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./*w w  w . j av  a  2s.  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.auftrag.ejbfac.AuftragFacBean.java

License:Open Source License

/**
 * Hier wird der Auftragsnettowert fuer eine Hibernate Liste von offenen
 * Auftraegen bestimmt (Status Offen oder Teilerledigt). <br>
 * Dabei werden alle Auftragswerte in Mandantenwaehrung beruecksichtigt.
 * //from   w ww  .j  ava2 s  .c  o m
 * @param listFLRAuftragFuerUebersichtI
 *            Liste von FLRAuftragFuerUebersicht Objekten
 * @param sessionI
 *            die aktive Hibernate Session
 * @param theClientDto
 *            der aktuelle Benutzer
 * @return BigDecimal der offene Auftragsnettowert
 * @throws Throwable
 *             Ausnahme
 */
private BigDecimal berechneAuftragsnettowertOffen(List<?> listFLRAuftragFuerUebersichtI, Session sessionI,
        TheClientDto theClientDto) throws Throwable {
    BigDecimal nSummeAuftragsnettowert = new BigDecimal(0);

    if (listFLRAuftragFuerUebersichtI != null) {
        Iterator<?> it = listFLRAuftragFuerUebersichtI.iterator();

        while (it.hasNext()) {
            BigDecimal nBeitragDiesesAuftrags = new BigDecimal(0);

            FLRAuftragFuerUebersicht flrauftrag = (FLRAuftragFuerUebersicht) it.next();

            // wir befinden uns innerhalb einer Hibernate Session
            Criteria critAuftragposition = sessionI.createCriteria(FLRAuftragpositionFuerUebersicht.class);

            critAuftragposition.add(
                    Restrictions.eq(AuftragpositionFac.FLR_AUFTRAGPOSITION_AUFTRAG_I_ID, flrauftrag.getI_id()));
            critAuftragposition
                    .add(Restrictions.isNotNull(AuftragpositionFac.FLR_AUFTRAGPOSITION_N_OFFENEMENGE));
            critAuftragposition.add(
                    Restrictions.gt(AuftragpositionFac.FLR_AUFTRAGPOSITION_N_OFFENEMENGE, new BigDecimal(0)));

            List<?> listPositionen = critAuftragposition.list();
            Iterator<?> it2 = listPositionen.iterator();

            while (it2.hasNext()) {
                FLRAuftragpositionFuerUebersicht flrauftragposition = (FLRAuftragpositionFuerUebersicht) it2
                        .next();

                BigDecimal bdBeitragDieserPosition = flrauftragposition
                        .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte()
                        .multiply(flrauftragposition.getN_offenemenge());

                nBeitragDiesesAuftrags = nBeitragDiesesAuftrags.add(bdBeitragDieserPosition);
            }

            // Umrechnen des Beitrags in Mandantenwaehrung
            Double ddWechselkursReziprok = flrauftrag.getF_wechselkursmandantwaehrungzuauftragswaehrung();

            if (ddWechselkursReziprok != null && ddWechselkursReziprok.doubleValue() != 1) {
                ddWechselkursReziprok = new Double(1 / ddWechselkursReziprok.doubleValue());

                nBeitragDiesesAuftrags = nBeitragDiesesAuftrags
                        .multiply(new BigDecimal(ddWechselkursReziprok.doubleValue()));
            }

            nBeitragDiesesAuftrags = Helper.rundeKaufmaennisch(nBeitragDiesesAuftrags, 4);
            checkNumberFormat(nBeitragDiesesAuftrags);

            nSummeAuftragsnettowert = nSummeAuftragsnettowert.add(nBeitragDiesesAuftrags);
        }
    }

    return nSummeAuftragsnettowert;
}

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

License:Open Source License

public void pruefeAuftragseriennumern(TheClientDto theClientDto) {
    Session session = FLRSessionFactory.getFactory().openSession();
    String[] srnnrn = null;/* w w  w .j  a v a 2 s  .  co  m*/
    AuftragseriennrnDto auftragseriennrnDto = null;
    try {
        org.hibernate.Criteria crit = session.createCriteria(FLRAuftragpositionReport.class);
        org.hibernate.Criteria critAuftrag = crit
                .createCriteria(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRAUFTRAG);
        critAuftrag.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR,
                AuftragServiceFac.AUFTRAGSTATUS_STORNIERT));
        crit.add(Restrictions.isNotNull("c_seriennrchargennr"));
        List<?> aposList = crit.list();
        Iterator<?> aposIterator = aposList.iterator();
        while (aposIterator.hasNext()) {
            FLRAuftragpositionReport item = (FLRAuftragpositionReport) aposIterator.next();
            srnnrn = Helper.erzeugeStringArrayAusString(item.getC_seriennrchargennr());
            for (int i = 0; i < srnnrn.length; i++) {
                auftragseriennrnDto = new AuftragseriennrnDto();
                auftragseriennrnDto.setAuftragpositionIId(item.getI_id());
                auftragseriennrnDto.setArtikelIId(item.getArtikel_i_id());
                auftragseriennrnDto.setCSeriennr(srnnrn[i]);
                try {
                    createAuftragseriennrn(auftragseriennrnDto, theClientDto);
                    if (i == srnnrn.length - 1) {
                        Auftragposition oPos = null;
                        oPos = em.find(Auftragposition.class, item.getI_id());
                        if (oPos == null) {
                        }
                        oPos.setCSeriennrchargennr(null);
                    }
                } catch (EJBExceptionLP ex) {
                    System.out.println(
                            "auftragposition " + item.getI_id() + " auftrag " + item.getFlrauftrag().getC_nr());
                }
            }
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }

}

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

License:Open Source License

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

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

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

    session = factory.openSession();

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

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

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

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

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

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

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

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

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

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

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

        }

        parameter.put("P_PROJEKTE", text);

    }

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

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

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

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

        if (bProjektklammer == true) {

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

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

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

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

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

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

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

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

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

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

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

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

            // PJ 14752

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

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

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

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

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

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

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

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

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

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

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

                }

                // PJ 14752

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

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

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

                data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring;

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

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

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

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

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

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

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

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

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

    closeSession(session);

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

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

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

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

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

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

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

    }

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

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

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

From source file:com.lp.server.eingangsrechnung.ejbfac.EingangsrechnungFacBean.java

License:Open Source License

public int wiederholendeZusatzkostenAnlegen(TheClientDto theClientDto) {

    int iAnzahlAngelegt = 0;
    Session session = FLRSessionFactory.getFactory().openSession();

    Criteria crit = session.createCriteria(FLREingangsrechnung.class);

    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
    crit.add(Restrictions.eq("eingangsrechnungart_c_nr", EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN));

    crit.add(Restrictions.not(Restrictions.eq("status_c_nr", EingangsrechnungFac.STATUS_STORNIERT)));

    crit.add(Restrictions.isNull("t_wiederholenderledigt"));

    crit.add(Restrictions.isNull("eingangsrechnung_i_id_nachfolger"));
    crit.add(Restrictions.isNotNull("auftragwiederholungsintervall_c_nr"));

    crit.add(Restrictions.lt("t_belegdatum",
            Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000)))));

    List<?> resultList = crit.list();
    Iterator<?> resultListIterator = resultList.iterator();
    while (resultListIterator.hasNext()) {
        FLREingangsrechnung flrEingangsrechnung = (FLREingangsrechnung) resultListIterator.next();

        // Naechster faelliger Termin nach Heute
        Calendar cBeginn = Calendar.getInstance();
        cBeginn.setTimeInMillis(flrEingangsrechnung.getT_belegdatum().getTime());

        String intervall = flrEingangsrechnung.getAuftragwiederholungsintervall_c_nr();

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

        if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2WOECHENTLICH)) {
            cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 14);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_WOECHENTLICH)) {
            cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 7);
        }//from www.  j  a v a 2 s. c  o  m

        if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 1);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 2);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_3JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 3);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_4JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 4);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_5JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 5);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_MONATLICH)) {
            cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 1);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_QUARTAL)) {
            cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 3);
        }

        Date tBelegdatumNeu = new Date(cBeginn.getTimeInMillis());

        if (cBeginn.getTimeInMillis() < tHeute.getTime()) {

            Eingangsrechnung er = em.find(Eingangsrechnung.class, flrEingangsrechnung.getI_id());

            EingangsrechnungDto erDtoNeu = assembleEingangsrechnungDto(er);
            erDtoNeu.setIId(null);
            erDtoNeu.setDBelegdatum(tBelegdatumNeu);
            erDtoNeu.setStatusCNr(EingangsrechnungFac.STATUS_ANGELEGT);
            Integer idNeu = createEingangsrechnung(erDtoNeu, theClientDto).getIId();

            // Nachfolger setzten
            er.setEingangsrechnungIIdNachfolger(idNeu);
            iAnzahlAngelegt++;
        }

    }

    return iAnzahlAngelegt;
}

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

License:Open Source License

public JasperPrintLP printFertigungsbegleitschein(Integer losIId, Boolean bStammtVonSchnellanlage,
        TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;//from  w ww.j  a v  a 2s .c o  m
    try {
        this.useCase = UC_FERTIGUNGSBEGLEITSCHEIN;
        this.index = -1;
        // Los holen
        LosDto losDto = getFertigungFac().losFindByPrimaryKey(losIId);
        if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ANGELEGT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_NOCH_NICHT_AUSGEGEBEN, "");
        } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_STORNIERT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_STORNIERT, "");
        } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ERLEDIGT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_BEREITS_ERLEDIGT, "");
        }

        // Hole Parameter UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT
        String artikelnrZuUnterdruecken = null;
        ParametermandantDto parameterNulltaetigkeit = getParameterFac().getMandantparameter(
                theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN,
                ParameterFac.PARAMETER_UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT);
        if (parameterNulltaetigkeit.getCWert() != null && !parameterNulltaetigkeit.getCWert().equals("")
                && !parameterNulltaetigkeit.getCWert().equals(" ")) {
            artikelnrZuUnterdruecken = parameterNulltaetigkeit.getCWert();
        }

        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLossollarbeitsplan.class);
        if (artikelnrZuUnterdruecken != null) {
            c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL, "a");
            c.add(Restrictions.not(
                    Restrictions.and(Restrictions.isNotNull(FertigungFac.FLR_LOSSOLLARBEITSPLAN_MASCHINE_I_ID),
                            Restrictions.eq("a.c_nr", artikelnrZuUnterdruecken))));
        }
        c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, losIId));
        // Sortierung nach Arbeitsgang
        c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_ARBEITSGANGNUMMER));
        c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_UNTERARBEITSGANG));
        List<?> list = c.list();

        int iSizeMaterial = 0;
        ParametermandantDto parameterMaterial = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNGSBEGLEITSCHEIN_MIT_MATERIAL);
        short iMaterial = Short.parseShort(parameterMaterial.getCWert());
        boolean bMitMaterial = Helper.short2boolean(iMaterial);
        if (bMitMaterial) {
            // Hier Material einfuegen
            Object[][] material = getDataAusgabeListe(new Integer[] { losIId }, Helper.SORTIERUNG_NACH_IDENT,
                    true, false, null, theClientDto);

            if (material == null) {
                iSizeMaterial = 0;
            } else {
                iSizeMaterial = material.length;
            }

            data = new Object[list.size() + material.length][BEGL_SPALTENANZAHL];
            for (int i = 0; i < iSizeMaterial; i++) {
                data[i][BEGL_IST_MATERIAL] = new Boolean(true);
                data[i][BEGL_MATERIAL_ARTIKELKLASSE] = material[i][AUSG_ARTIKELKLASSE];
                data[i][BEGL_MATERIAL_AUSGABE] = material[i][AUSG_AUSGABE];
                data[i][BEGL_MATERIAL_BEZEICHNUNG] = material[i][AUSG_BEZEICHNUNG];
                data[i][BEGL_MATERIAL_EINHEIT] = material[i][AUSG_EINHEIT];
                data[i][BEGL_MATERIAL_FARBCODE] = material[i][AUSG_FARBCODE];
                data[i][BEGL_MATERIAL_IDENT] = material[i][AUSG_IDENT];
                data[i][BEGL_MATERIAL_LAGER] = material[i][AUSG_LAGER];
                data[i][BEGL_MATERIAL_LAGERORT] = material[i][AUSG_LAGERORT];
                data[i][BEGL_MATERIAL_MENGE] = material[i][AUSG_MENGE];
                data[i][BEGL_MATERIAL_MONTAGEART] = material[i][AUSG_MONTAGEART];
                data[i][BEGL_MATERIAL_SCHALE] = material[i][AUSG_SCHALE];
                data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG] = material[i][AUSG_ZUSATZBEZEICHNUNG];
                data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG2] = material[i][AUSG_ZUSATZBEZEICHNUNG2];
                data[i][BEGL_MATERIAL_HOEHE] = material[i][AUSG_HOEHE];
                data[i][BEGL_MATERIAL_BREITE] = material[i][AUSG_BREITE];
                data[i][BEGL_MATERIAL_TIEFE] = material[i][AUSG_TIEFE];
                data[i][BEGL_MATERIAL_MATERIAL] = material[i][AUSG_MATERIAL];
                data[i][BEGL_BAUFORM] = material[i][AUSG_BAUFORM];
                data[i][BEGL_VERPACKUNGSART] = material[i][AUSG_VERPACKUNGSART];
                data[i][BEGL_GEWICHTKG] = material[i][AUSG_GEWICHTKG];
                data[i][BEGL_MATERIAL_REVISION] = material[i][AUSG_REVISION];
                data[i][BEGL_MATERIAL_INDEX] = material[i][AUSG_INDEX];
                data[i][BEGL_NURZURINFORMATION] = material[i][AUSG_NUR_ZUR_INFO];

            }

        } else {
            data = new Object[list.size()][BEGL_SPALTENANZAHL];
        }

        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLossollarbeitsplan item = (FLRLossollarbeitsplan) iter.next();
            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(item.getFlrartikel().getI_id(),
                    theClientDto);
            data[i + iSizeMaterial][BEGL_IST_MATERIAL] = new Boolean(false);
            data[i + iSizeMaterial][BEGL_IDENT] = artikelDto.getCNr();
            data[i + iSizeMaterial][BEGL_NURZURINFORMATION] = Helper.short2Boolean(artikelDto.getbNurzurinfo());
            data[i + iSizeMaterial][BEGL_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
            data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
            data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG2] = artikelDto.getArtikelsprDto().getCZbez2();
            data[i + iSizeMaterial][BEGL_ARBEITSGANG] = item.getI_arbeitsgangsnummer();
            data[i + iSizeMaterial][BEGL_UNTERARBEITSGANG] = item.getI_unterarbeitsgang();
            data[i + iSizeMaterial][BEGL_AGART] = item.getAgart_c_nr();
            data[i + iSizeMaterial][BEGL_AUFSPANNUNG] = item.getI_aufspannung();
            data[i + iSizeMaterial][BEGL_MATERIAL_REVISION] = artikelDto.getCRevision();
            data[i + iSizeMaterial][BEGL_MATERIAL_INDEX] = artikelDto.getCIndex();
            data[i + iSizeMaterial][BEGL_FERTIG] = Helper.short2Boolean(item.getB_fertig());

            // Ein Mandantenparameter entscheidet, ob auch die Sollzeiten
            // gedruckt werden
            ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_FERTIGUNG,
                    ParameterFac.FERTIGUNG_FERTIGUNGSBEGLEITSCHEIN_MIT_SOLLDATEN);
            short iValue = Short.parseShort(parameter.getCWert());
            boolean bDruckeSolldaten = Helper.short2boolean(iValue);
            if (bDruckeSolldaten) {
                data[i + iSizeMaterial][BEGL_RUESTZEIT] = item.getL_ruestzeit()
                        .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN);
                data[i + iSizeMaterial][BEGL_STUECKZEIT] = item.getL_stueckzeit()
                        .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN);
                data[i + iSizeMaterial][BEGL_GESAMTZEIT] = item.getN_gesamtzeit();
            }
            LossollarbeitsplanDto l = getFertigungFac().lossollarbeitsplanFindByPrimaryKey(item.getI_id());
            StringBuffer sKommentar = new StringBuffer();
            if (l.getCKomentar() != null) {
                sKommentar.append(l.getCKomentar() + "\n");
            }
            if (l.getXText() != null) {
                sKommentar.append(l.getXText());
            }
            data[i + iSizeMaterial][BEGL_KOMMENTAR] = sKommentar.toString();
            // Maschinenzeiterfassung
            if (l.getMaschineIId() != null) {
                MaschineDto maschineDto = getZeiterfassungFac().maschineFindByPrimaryKey(l.getMaschineIId());
                data[i + iSizeMaterial][BEGL_MASCHINE] = maschineDto.getCIdentifikationsnr();
                data[i + iSizeMaterial][BEGL_MASCHINE_BEZEICHNUNG] = maschineDto.getCBez();
            }

            if (l.getLossollmaterialIId() != null) {
                LossollmaterialDto posDto = getFertigungFac()
                        .lossollmaterialFindByPrimaryKey(l.getLossollmaterialIId());
                ArtikelDto artikelDtoFremdmaterial = getArtikelFac()
                        .artikelFindByPrimaryKeySmall(posDto.getArtikelIId(), theClientDto);
                data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKEL] = artikelDtoFremdmaterial.getCNr();
                if (artikelDtoFremdmaterial.getArtikelsprDto() != null) {
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELBEZEICHNUNG] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCBez();
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELKURZBEZEICHNUNG] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCKbez();
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCZbez();
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG2] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCZbez2();
                }
                data[i + iSizeMaterial][BEGL_FREMDMATERIAL_SOLLMENGE] = posDto.getNMenge();

                LoslagerentnahmeDto[] laeger = getFertigungFac()
                        .loslagerentnahmeFindByLosIId(posDto.getLosIId());
                if (laeger.length > 0) {
                    ArtikellagerplaetzeDto artikellagerplaetzeDto = getLagerFac()
                            .artikellagerplaetzeFindByArtikelIIdLagerIId(artikelDtoFremdmaterial.getIId(),
                                    laeger[0].getLagerIId());
                    if (artikellagerplaetzeDto != null && artikellagerplaetzeDto.getLagerplatzDto() != null) {
                        data[i + iSizeMaterial][BEGL_FREMDMATERIAL_LAGERORT] = artikellagerplaetzeDto
                                .getLagerplatzDto().getCLagerplatz();
                    }
                }

            }

        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        mapParameter.put("P_ANGELEGT", new java.util.Date(losDto.getTAnlegen().getTime()));
        String sAuftragsnummer;
        String sInternerKommentar = null;
        String sKunde;
        String sKundeLieferadresse;
        Timestamp dLiefertermin;
        String sLieferart;
        String sAbteilung = null;
        String sSpediteur = null;
        Boolean bPoenale = Boolean.FALSE;
        Boolean bRoHs = Boolean.FALSE;
        if (losDto.getAuftragIId() != null) {
            // Auftrag holen
            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(losDto.getAuftragIId());
            sAuftragsnummer = auftragDto.getCNr();
            sLieferart = getLocaleFac().lieferartFindByIIdLocaleOhneExc(auftragDto.getLieferartIId(),
                    theClientDto.getLocUi(), theClientDto);

            if (auftragDto.getSpediteurIId() != null) {
                sSpediteur = getMandantFac().spediteurFindByPrimaryKey(auftragDto.getSpediteurIId())
                        .getCNamedesspediteurs();
            }

            bPoenale = Helper.short2Boolean(auftragDto.getBPoenale());
            bRoHs = Helper.short2Boolean(auftragDto.getBRoHs());
            // Internen Kommentar aus dem Auftrag, abhaengig von einem
            // Mandantenparameter
            ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_FERTIGUNG,
                    ParameterFac.PARAMETER_KOMMENTAR_AM_FERTIGUNGSBEGLEITSCHEIN);
            short iValue = Short.parseShort(parameter.getCWert());
            boolean bDruckeKommentar = Helper.short2boolean(iValue);
            if (bDruckeKommentar) {
                sInternerKommentar = auftragDto.getXInternerkommentar();
            }
            // Kunde holen
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(),
                    theClientDto);

            sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1();

            KundeDto kundeDtoLieferadresse = getKundeFac()
                    .kundeFindByPrimaryKey(auftragDto.getKundeIIdLieferadresse(), theClientDto);
            sKundeLieferadresse = kundeDtoLieferadresse.getPartnerDto().getCName1nachnamefirmazeile1();

            sAbteilung = kundeDto.getPartnerDto().getCName3vorname2abteilung();

            if (losDto.getAuftragpositionIId() != null) {
                AuftragpositionDto aufposDto = getAuftragpositionFac()
                        .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId());
                if (aufposDto.getTUebersteuerbarerLiefertermin() != null) {
                    dLiefertermin = aufposDto.getTUebersteuerbarerLiefertermin();
                } else {
                    dLiefertermin = auftragDto.getDLiefertermin();
                }
            } else {
                dLiefertermin = auftragDto.getDLiefertermin();
            }
        } else {
            sAuftragsnummer = "";

            if (losDto.getKundeIId() != null) {
                KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(losDto.getKundeIId(), theClientDto);

                sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1();
            } else {
                sKunde = "";
            }

            sKundeLieferadresse = "";
            dLiefertermin = null;
            sLieferart = "";
            sSpediteur = "";
        }

        mapParameter.put("P_AUFTRAGNUMMER", sAuftragsnummer);
        mapParameter.put("P_AUFTRAG_INTERNERKOMMENTAR", sInternerKommentar);
        mapParameter.put("P_AUFTRAG_KUNDE_ABTEILUNG", sAbteilung);
        mapParameter.put("P_LIEFERART", sLieferart);
        mapParameter.put("P_SPEDITEUR", sSpediteur);
        mapParameter.put("P_POENALE", bPoenale);
        mapParameter.put("P_ROHS", bRoHs);
        KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(losDto.getKostenstelleIId());
        mapParameter.put("P_KOSTENSTELLENUMMER", kstDto.getCNr());
        mapParameter.put("P_KUNDE", sKunde);
        mapParameter.put("P_KUNDE_LIEFERADRESSE", sKundeLieferadresse);
        mapParameter.put("P_LOSGROESSE", losDto.getNLosgroesse());

        mapParameter.put("P_LOSKLASSEN", getLosLosKlassenAlsString(losDto.getIId()));

        mapParameter.put("P_LOSNUMMER", losDto.getCNr());
        mapParameter.put("P_PRODUKTIONSBEGINN", losDto.getTProduktionsbeginn());
        mapParameter.put("P_PRODUKTIONSENDE", losDto.getTProduktionsende());
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTime(losDto.getTProduktionsende());
        mapParameter.put("P_PRODUKTIONSENDE_KW", new Integer(gc.get(Calendar.WEEK_OF_YEAR)));

        mapParameter.put("P_LIEFERTERMIN", dLiefertermin);

        // Fertigungsort
        if (losDto.getPartnerIIdFertigungsort() != null) {
            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(losDto.getPartnerIIdFertigungsort(),
                    theClientDto);
            mapParameter.put("P_FERTIGUNGSORT", partnerDto.formatTitelAnrede());
        }

        // Erstlos
        mapParameter.put("P_ERSTLOS", new Boolean(istErstlos(losDto, theClientDto)));

        boolean bDruckeUeberschriftMaterial = false;
        if (bMitMaterial == true && iSizeMaterial > 0) {
            bDruckeUeberschriftMaterial = true;
        }

        mapParameter.put("P_DRUCKEUEBERSCHRIFTMATERIAL", new Boolean(bDruckeUeberschriftMaterial));

        ArrayList<Object> images = new ArrayList<Object>();
        String sLosStuecklisteArtikelKommentar = "";
        // Bild einfuegen
        String sMengenEinheit = "";
        if (losDto.getStuecklisteIId() != null) {
            StuecklisteDto stuecklisteDto = getStuecklisteFac()
                    .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto);
            // Einheit
            if (stuecklisteDto.getArtikelDto() != null) {
                if (stuecklisteDto.getArtikelDto().getEinheitCNr() != null) {
                    sMengenEinheit = stuecklisteDto.getArtikelDto().getEinheitCNr();
                }
            }

            // Sperren
            String sperren = getArtikelFac().getArtikelsperrenText(stuecklisteDto.getArtikelIId());

            mapParameter.put("P_STUECKLISTESPERRSTATUS", sperren);

            // Abmessungen
            GeometrieDto geometrieDto = stuecklisteDto.getArtikelDto().getGeometrieDto();
            if (geometrieDto != null) {
                mapParameter.put(P_ARTIKEL_BREITE, geometrieDto.getFBreite());
                mapParameter.put(P_ARTIKEL_HOEHE, geometrieDto.getFHoehe());
                mapParameter.put(P_ARTIKEL_TIEFE, geometrieDto.getFTiefe());
            }
            // Bauform
            VerpackungDto verpackungDto = stuecklisteDto.getArtikelDto().getVerpackungDto();
            if (verpackungDto != null) {
                mapParameter.put("P_ARTIKEL_BAUFORM", verpackungDto.getCBauform());
                mapParameter.put("P_ARTIKEL_VERPACKUNGSART", verpackungDto.getCVerpackungsart());
            }

            mapParameter.put("P_INDEX", stuecklisteDto.getArtikelDto().getCIndex());
            mapParameter.put("P_REVISION", stuecklisteDto.getArtikelDto().getCRevision());

            ArtikelkommentarDto[] artikelkommentarDto = getArtikelkommentarFac()
                    .artikelkommentardruckFindByArtikelIIdBelegartCNr(stuecklisteDto.getArtikelIId(),
                            LocaleFac.BELEGART_LOS, theClientDto.getLocUiAsString(), theClientDto);

            if (artikelkommentarDto != null && artikelkommentarDto.length > 0) {

                for (int j = 0; j < artikelkommentarDto.length; j++) {
                    if (artikelkommentarDto[j].getArtikelkommentarsprDto() != null) {
                        // Text Kommentar
                        if (artikelkommentarDto[j].getDatenformatCNr().trim()
                                .indexOf(MediaFac.DATENFORMAT_MIMETYPEART_TEXT) != -1) {
                            if (sLosStuecklisteArtikelKommentar == "") {
                                sLosStuecklisteArtikelKommentar += artikelkommentarDto[j]
                                        .getArtikelkommentarsprDto().getXKommentar();
                            } else {
                                sLosStuecklisteArtikelKommentar += "\n"
                                        + artikelkommentarDto[j].getArtikelkommentarsprDto().getXKommentar();
                            }
                        } else if (artikelkommentarDto[j].getDatenformatCNr()
                                .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_JPEG)
                                || artikelkommentarDto[j].getDatenformatCNr()
                                        .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_PNG)
                                || artikelkommentarDto[j].getDatenformatCNr()
                                        .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_GIF)) {
                            byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia();
                            if (bild != null) {
                                java.awt.Image myImage = Helper.byteArrayToImage(bild);
                                images.add(myImage);
                            }
                        } else if (artikelkommentarDto[j].getDatenformatCNr()
                                .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_TIFF)) {

                            byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia();

                            java.awt.Image[] tiffs = Helper.tiffToImageArray(bild);
                            if (tiffs != null) {
                                for (int k = 0; k < tiffs.length; k++) {
                                    images.add(tiffs[k]);
                                }
                            }

                        }
                    }
                }
            }
        }
        mapParameter.put("P_MENGENEINHEIT", sMengenEinheit);
        mapParameter.put("P_PROJEKT", losDto.getCProjekt());
        mapParameter.put("P_LOSKOMMENTAR", losDto.getCKommentar());
        mapParameter.put("P_LOSLANGTEXT", losDto.getXText());

        FertigungsgruppeDto fertGruppeDto = getStuecklisteFac()
                .fertigungsgruppeFindByPrimaryKey(losDto.getFertigungsgruppeIId());
        mapParameter.put("P_FERTIGUNGSGRUPPE", fertGruppeDto.getCBez());

        // Materialliste?
        if (losDto.getStuecklisteIId() != null) {
            StuecklisteDto stkDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(),
                    theClientDto);

            if (sLosStuecklisteArtikelKommentar != "") {
                mapParameter.put("P_STUECKLISTEARTIKELKOMMENTAR",
                        Helper.formatStyledTextForJasper(sLosStuecklisteArtikelKommentar));
            }

            mapParameter.put("P_STUECKLISTEBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCBez());

            mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG",
                    stkDto.getArtikelDto().getArtikelsprDto().getCZbez());
            mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG2",
                    stkDto.getArtikelDto().getArtikelsprDto().getCZbez2());

            mapParameter.put("P_STUECKLISTEKURZBEZEICHNUNG",
                    stkDto.getArtikelDto().getArtikelsprDto().getCKbez());
            mapParameter.put("P_STUECKLISTEREFERENZNUMMER", stkDto.getArtikelDto().getCReferenznr());

            mapParameter.put("P_STUECKLISTENUMMER", stkDto.getArtikelDto().getCNr());

            mapParameter.put("P_STUECKLISTE_GEWICHTKG", stkDto.getArtikelDto().getFGewichtkg());

            if (stkDto.getArtikelDto().getVerpackungDto() != null) {
                mapParameter.put("P_STUECKLISTE_BAUFORM",
                        stkDto.getArtikelDto().getVerpackungDto().getCBauform());
                mapParameter.put("P_STUECKLISTE_VERPACKUNGSART",
                        stkDto.getArtikelDto().getVerpackungDto().getCVerpackungsart());
            }

            if (stkDto.getArtikelDto().getGeometrieDto() != null) {
                mapParameter.put("P_STUECKLISTE_BREITETEXT",
                        stkDto.getArtikelDto().getGeometrieDto().getCBreitetext());
                mapParameter.put("P_STUECKLISTE_BREITE", stkDto.getArtikelDto().getGeometrieDto().getFBreite());
                mapParameter.put("P_STUECKLISTE_HOEHE", stkDto.getArtikelDto().getGeometrieDto().getFHoehe());
                mapParameter.put("P_STUECKLISTE_TIEFE", stkDto.getArtikelDto().getGeometrieDto().getFTiefe());
            }

            // Stuecklisteneigenschaften
            StuecklisteeigenschaftDto[] stuecklisteeigenschaftDtos = getStuecklisteFac()
                    .stuecklisteeigenschaftFindByStuecklisteIId(losDto.getStuecklisteIId());
            ArrayList<Object[]> al = new ArrayList<Object[]>();
            for (int j = 0; j < stuecklisteeigenschaftDtos.length; j++) {
                StuecklisteeigenschaftDto dto = stuecklisteeigenschaftDtos[j];

                Object[] o = new Object[2];
                String sStklEigenschaftArt = dto.getStuecklisteeigenschaftartDto().getCBez();
                o[0] = sStklEigenschaftArt;
                o[1] = dto.getCBez();
                al.add(o);

                // Index und Materialplatz auch einzeln an Report uebergeben
                if (sStklEigenschaftArt.equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_INDEX)) {
                    mapParameter.put(P_STUECKLISTENEIGENSCHAFT_INDEX, dto.getCBez());
                }
                if (sStklEigenschaftArt
                        .equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_MATERIALPLATZ)) {
                    mapParameter.put(P_STUECKLISTENEIGENSCHAFT_MATERIALPLATZ, dto.getCBez());
                }

            }

            if (stuecklisteeigenschaftDtos.length > 0) {
                String[] fieldnames = new String[] { "F_EIGENSCHAFTART", "F_BEZEICHNUNG" };
                Object[][] dataSub = new Object[al.size()][fieldnames.length];
                dataSub = (Object[][]) al.toArray(dataSub);

                mapParameter.put("DATENSUBREPORT", new LPDatenSubreport(dataSub, fieldnames));
            }

        } else {
            mapParameter.put("P_STUECKLISTEBEZEICHNUNG", losDto.getCProjekt());
            mapParameter.put("P_STUECKLISTENUMMER", getTextRespectUISpr("fert.materialliste",
                    theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        mapParameter.put("P_SCHNELLANLAGE", bStammtVonSchnellanlage);

        // Formularnummer anhaengen, wenn vorhanden
        String report = FertigungReportFac.REPORT_FERTIGUNGSBEGLEITSCHEIN;

        if (fertGruppeDto.getIFormularnummer() != null) {
            report = report.replace(".", fertGruppeDto.getIFormularnummer() + ".");
        }

        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, report, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        JasperPrintLP print = getReportPrint();
        Integer cachedReportvariante = theClientDto.getReportvarianteIId();
        if (images != null) {
            for (int k = 0; k < images.size(); k++) {
                mapParameter = new HashMap<String, Object>();
                mapParameter.put("P_BILD", images.get(k));
                this.useCase = UC_GANZSEITIGESBILD;
                this.index = -1;
                data = new Object[1][1];
                data[0][0] = images.get(k);
                theClientDto.setReportvarianteIId(cachedReportvariante);
                initJRDS(mapParameter, REPORT_MODUL_ALLGEMEIN, REPORT_GANZSEITIGESBILD,
                        theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
                print = Helper.addReport2Report(print, getReportPrint().getPrint());
            }
        }
        return print;
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}

From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java

License:Open Source License

@TransactionTimeout(20000)
public ArrayList<IntrastatDto> getIntrastatDatenWareneingang(java.sql.Date dVon, java.sql.Date dBis,
        BigDecimal bdTransportkosten, TheClientDto theClientDto) throws EJBExceptionLP {
    ArrayList<IntrastatDto> daten = new ArrayList<IntrastatDto>();
    Session session = null;/*from  www .  jav a  2s  .com*/
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRWareneingangspositionen.class);
        Criteria cWE = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRWARENEINGANG);
        Criteria cBesPos = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRBESTELLPOSITION);
        Criteria cBes = cBesPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
        Criteria cLieferant = cBes.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT);
        Criteria cPartner = cLieferant.createCriteria(LieferantFac.FLR_PARTNER);
        Criteria cLandPLZOrt = cPartner.createCriteria(PartnerFac.FLR_PARTNER_FLRLANDPLZORT);
        Criteria cLand = cLandPLZOrt.createCriteria(SystemFac.FLR_LP_FLRLAND);
        // Nur auslaendische
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);
        //und die die eine UID-Nummer haben
        cPartner.add(Restrictions.isNotNull(PartnerFac.FLR_PARTNER_C_UID));

        cLand.add(Restrictions.ne(SystemFac.FLR_LP_LANDLKZ,
                mandantDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz()));
        // Filter nach Mandant
        cBes.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter: Nur Ident-Positionen
        cBesPos.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR,
                BestellpositionFac.BESTELLPOSITIONART_IDENT));
        // Wareneingangsdatum von - bis
        cWE.add(Restrictions.ge(WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, dVon)); // von
        // 00
        // :
        // 00
        // :
        // 00
        cWE.add(Restrictions.lt(WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, dBis)); // bis
        // 23
        // :
        // 59
        // :
        // 59

        List<?> list = c.list();
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRWareneingangspositionen wePos = (FLRWareneingangspositionen) iter.next();
            IntrastatDto iDto = new IntrastatDto();
            iDto.setArtikelDto(getArtikelFac().artikelFindByPrimaryKey(
                    wePos.getFlrbestellposition().getFlrartikel().getI_id(), theClientDto));
            iDto.setBelegart("BS");
            iDto.setBelegnummer(wePos.getFlrbestellposition().getFlrbestellung().getC_nr());
            // Einstandspreis in Mandantenwaehrung
            BigDecimal bdEinstandspreis;
            if (wePos.getN_einstandspreis() != null) {
                bdEinstandspreis = getLocaleFac().rechneUmInMandantenWaehrung(wePos.getN_einstandspreis(),
                        wePos.getFlrwareneingang().getN_wechselkurs());
            } else {
                bdEinstandspreis = new BigDecimal(0);
            }
            iDto.setEinzelpreis(bdEinstandspreis);
            iDto.setMenge(
                    wePos.getN_geliefertemenge() != null ? wePos.getN_geliefertemenge() : new BigDecimal(0));
            // Wert = Menge * Preis
            iDto.setWert(iDto.getMenge().multiply(iDto.getEinzelpreis()));
            // Zur Aufteilung der Transportkosten den Gesamtwert des
            // Wareneingangs berechnen
            BigDecimal bdGesamtwertDesWareneingangs = new BigDecimal(0);
            WareneingangspositionDto[] wePositionen = getWareneingangFac()
                    .wareneingangspositionFindByWareneingangIId(wePos.getWareneingang_i_id());
            for (int i = 0; i < wePositionen.length; i++) {
                if (wePositionen[i].getNGeliefertemenge() != null
                        && wePositionen[i].getNEinstandspreis() != null) {
                    bdGesamtwertDesWareneingangs = bdGesamtwertDesWareneingangs
                            .add(getLocaleFac().rechneUmInMandantenWaehrung(
                                    wePositionen[i].getNGeliefertemenge()
                                            .multiply(wePositionen[i].getNEinstandspreis()),
                                    wePos.getFlrwareneingang().getN_wechselkurs()));
                }
            }
            BigDecimal bdAnteiligeTransportkosten;
            if (bdGesamtwertDesWareneingangs.compareTo(new BigDecimal(0)) > 0) {
                bdAnteiligeTransportkosten = bdGesamtwertDesWareneingangs.divide(
                        bdGesamtwertDesWareneingangs.add(bdTransportkosten),
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN);
                if (bdAnteiligeTransportkosten.compareTo(new BigDecimal(0)) == 0) {
                    bdAnteiligeTransportkosten = new BigDecimal(1);
                }
                iDto.setStatistischerWert(iDto.getWert().divide(bdAnteiligeTransportkosten,
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN));
            } else {
                // kann nicht aufgeteilt werden
                bdAnteiligeTransportkosten = bdTransportkosten;
                iDto.setStatistischerWert(iDto.getWert().add(bdAnteiligeTransportkosten));
            }

            iDto.setPartnerDto(getPartnerFac().partnerFindByPrimaryKey(wePos.getFlrbestellposition()
                    .getFlrbestellung().getFlrlieferant().getFlrpartner().getI_id(), theClientDto));
            WarenverkehrsnummerDto wvk = null;
            if (iDto.getArtikelDto().getCWarenverkehrsnummer() != null) {
                wvk = getFinanzServiceFac().warenverkehrsnummerFindByPrimaryKeyOhneExc(
                        iDto.getArtikelDto().getCWarenverkehrsnummer());
            }
            BigDecimal bdGewicht = null;
            iDto.setWarenverkehrsnummerDto(wvk);
            if (iDto.getArtikelDto().getFGewichtkg() != null) {
                bdGewicht = iDto.getMenge().multiply(new BigDecimal(iDto.getArtikelDto().getFGewichtkg()));
            } else {
                bdGewicht = new BigDecimal(0);
            }
            iDto.setGewichtInKg(bdGewicht);
            daten.add(iDto);
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        closeSession(session);
    }
    return daten;
}

From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java

License:Open Source License

@TransactionTimeout(20000)
public ArrayList<IntrastatDto> getIntrastatDatenVersand(java.sql.Date dVon, java.sql.Date dBis,
        BigDecimal bdTransportkosten, TheClientDto theClientDto) throws EJBExceptionLP {
    ArrayList<IntrastatDto> daten = new ArrayList<IntrastatDto>();
    Session session = null;/* w w w. j a  v  a 2s.c o  m*/
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // Lieferscheinpositionen
        Criteria cLSPos = session.createCriteria(FLRLieferscheinposition.class);
        Criteria cLS = cLSPos.createCriteria(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN);
        Criteria cLSKunde = cLS.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDE);
        Criteria cLSPartner = cLSKunde.createCriteria(LieferantFac.FLR_PARTNER);
        Criteria cLSLandPLZOrt = cLSPartner.createCriteria(PartnerFac.FLR_PARTNER_FLRLANDPLZORT);
        Criteria cLSLand = cLSLandPLZOrt.createCriteria(SystemFac.FLR_LP_FLRLAND);
        // Nur auslaendische
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);

        //und die die eine UID-Nummer haben
        cLSPartner.add(Restrictions.isNotNull(PartnerFac.FLR_PARTNER_C_UID));

        cLSLand.add(Restrictions.ne(SystemFac.FLR_LP_LANDLKZ,
                mandantDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz()));
        // Filter nach Mandant
        cLS.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter: Nur Ident-Positionen
        cLSPos.add(
                Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR,
                        LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT));
        // Belegdatum von - bis
        cLS.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, dVon)); // von
        // 00
        // :
        // 00
        // :
        // 00
        cLS.add(Restrictions.lt(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, dBis)); // bis
        // 23
        // :
        // 59
        // :
        // 59

        List<?> listLSPos = cLS.list();
        for (Iterator<?> iter = listLSPos.iterator(); iter.hasNext();) {
            FLRLieferscheinposition lsPos = (FLRLieferscheinposition) iter.next();
            IntrastatDto iDto = new IntrastatDto();
            iDto.setArtikelDto(
                    getArtikelFac().artikelFindByPrimaryKey(lsPos.getFlrartikel().getI_id(), theClientDto));
            iDto.setBelegart("LS");
            iDto.setBelegnummer(lsPos.getFlrlieferschein().getC_nr());
            /**
             * @todo MB ist das der richtige Preis?
             * @todo MB Wechselkurs beruecksichtigen
             */
            iDto.setEinzelpreis(lsPos.getN_nettogesamtpreisplusversteckteraufschlagminusrabatt() != null
                    ? lsPos.getN_nettogesamtpreisplusversteckteraufschlagminusrabatt()
                    : new BigDecimal(0));
            iDto.setMenge(lsPos.getN_menge() != null ? lsPos.getN_menge() : new BigDecimal(0));
            iDto.setPartnerDto(getPartnerFac().partnerFindByPrimaryKey(
                    lsPos.getFlrlieferschein().getFlrkunde().getFlrpartner().getI_id(), theClientDto));
            /**
             * @todo das mit den Transportkosten noch besser loesen
             */
            BigDecimal bdGesamtwertDesWareneingangs = new BigDecimal(0);
            LieferscheinpositionDto[] lsPositionen = getLieferscheinpositionFac()
                    .lieferscheinpositionFindByLieferscheinIId(lsPos.getFlrlieferschein().getI_id());
            for (int i = 0; i < lsPositionen.length; i++) {
                if (lsPositionen[i].getNMenge() != null
                        && lsPositionen[i].getNEinzelpreisplusversteckteraufschlag() != null) {
                    bdGesamtwertDesWareneingangs = bdGesamtwertDesWareneingangs
                            .add(getLocaleFac().rechneUmInMandantenWaehrung(
                                    lsPositionen[i].getNMenge().multiply(
                                            lsPositionen[i].getNEinzelpreisplusversteckteraufschlag()),
                                    new BigDecimal(lsPos.getFlrlieferschein()
                                            .getF_wechselkursmandantwaehrungzulieferscheinwaehrung())));
                }
            }

            iDto.setWert(iDto.getMenge().multiply(iDto.getEinzelpreis()));
            /*
             * iDto .setStatistischerWert(iDto.getWert().add(
             * bdTransportkosten));
             */
            BigDecimal bdAnteiligeTransportkosten;
            if (bdGesamtwertDesWareneingangs.compareTo(new BigDecimal(0)) > 0) {
                bdAnteiligeTransportkosten = bdGesamtwertDesWareneingangs.divide(
                        bdGesamtwertDesWareneingangs.add(bdTransportkosten),
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN);
                if (bdAnteiligeTransportkosten.compareTo(new BigDecimal(0)) == 0) {
                    bdAnteiligeTransportkosten = new BigDecimal(1);
                }
                iDto.setStatistischerWert(iDto.getWert().divide(bdAnteiligeTransportkosten,
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN));
            } else {
                // kann nicht aufgeteilt werden
                bdAnteiligeTransportkosten = bdTransportkosten;
                iDto.setStatistischerWert(iDto.getWert().add(bdAnteiligeTransportkosten));
            }
            WarenverkehrsnummerDto wvk = null;
            if (iDto.getArtikelDto().getCWarenverkehrsnummer() != null) {
                wvk = getFinanzServiceFac().warenverkehrsnummerFindByPrimaryKeyOhneExc(
                        iDto.getArtikelDto().getCWarenverkehrsnummer());
            }
            iDto.setWarenverkehrsnummerDto(wvk);
            BigDecimal bdGewicht = null;
            iDto.setWarenverkehrsnummerDto(wvk);
            if (iDto.getArtikelDto().getFGewichtkg() != null) {
                bdGewicht = iDto.getMenge().multiply(new BigDecimal(iDto.getArtikelDto().getFGewichtkg()));
            } else {
                bdGewicht = new BigDecimal(0);
            }
            iDto.setGewichtInKg(bdGewicht);
            daten.add(iDto);
        }

        // Rechnungspositionen
        Criteria cREPos = session.createCriteria(FLRRechnungPosition.class);
        Criteria cRE = cREPos.createCriteria(RechnungFac.FLR_RECHNUNGPOSITION_FLRRECHNUNG);
        Criteria cREArt = cRE.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART);
        Criteria cREKunde = cRE.createCriteria(RechnungFac.FLR_RECHNUNG_FLRKUNDE);
        Criteria cREPartner = cREKunde.createCriteria(LieferantFac.FLR_PARTNER);
        Criteria cRELandPLZOrt = cREPartner.createCriteria(PartnerFac.FLR_PARTNER_FLRLANDPLZORT);
        Criteria cRELand = cRELandPLZOrt.createCriteria(SystemFac.FLR_LP_FLRLAND);
        // Nur auslaendische
        cRELand.add(Restrictions.ne(SystemFac.FLR_LP_LANDLKZ,
                mandantDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz()));
        // Filter nach Mandant
        cRE.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter: Nur Ident-Positionen
        cREPos.add(Restrictions.eq(RechnungFac.FLR_RECHNUNGPOSITION_POSITIONSART_C_NR,
                RechnungFac.POSITIONSART_RECHNUNG_IDENT));
        // keine stornierten
        cRE.add(Restrictions.ne(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, RechnungFac.STATUS_STORNIERT));
        // Belegdatum von - bis
        cRE.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dVon)); // von
        // 00:
        // 00:00
        cRE.add(Restrictions.lt(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dBis)); // bis
        // 23:
        // 59:59
        // nur Rechnungen
        cREArt.add(Restrictions.eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR,
                RechnungFac.RECHNUNGTYP_RECHNUNG));
        // Query
        List<?> listREPos = cREPos.list();
        for (Iterator<?> iter = listREPos.iterator(); iter.hasNext();) {
            FLRRechnungPosition rePos = (FLRRechnungPosition) iter.next();
            // Die Rechnung muss aktiviert sein
            if (rePos.getFlrrechnung().getStatus_c_nr().equals(RechnungFac.STATUS_ANGELEGT)) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_EXPORT_BELEG_IST_NOCH_NICHT_AKTIVIERT,
                        new Exception("Rechnung " + rePos.getFlrrechnung().getC_nr()));
            }
            IntrastatDto iDto = new IntrastatDto();
            iDto.setArtikelDto(
                    getArtikelFac().artikelFindByPrimaryKey(rePos.getFlrartikel().getI_id(), theClientDto));
            iDto.setBelegart("RE");
            iDto.setBelegnummer(rePos.getFlrrechnung().getC_nr());
            /**
             * @todo MB ist das der richtige Preis?
             * @todo MB Wechselkurs beruecksichtigen
             */
            iDto.setEinzelpreis(rePos.getN_nettoeinzelpreis_plus_aufschlag_minus_rabatt() != null
                    ? rePos.getN_nettoeinzelpreis_plus_aufschlag_minus_rabatt()
                    : new BigDecimal(0));
            iDto.setMenge(rePos.getN_menge() != null ? rePos.getN_menge() : new BigDecimal(0));
            iDto.setPartnerDto(getPartnerFac().partnerFindByPrimaryKey(
                    rePos.getFlrrechnung().getFlrkunde().getFlrpartner().getI_id(), theClientDto));
            /**
             * @todo das mit den Transportkosten noch besser loesen
             */
            BigDecimal bdGesamtwertDesWareneingangs = new BigDecimal(0);
            RechnungPositionDto[] rsPositionen = getRechnungFac()
                    .rechnungPositionFindByRechnungIId(rePos.getFlrrechnung().getI_id());
            try {
                for (int i = 0; i < rsPositionen.length; i++) {
                    if (rsPositionen[i].getNMenge() != null
                            && rsPositionen[i].getNEinzelpreisplusversteckteraufschlag() != null) {
                        bdGesamtwertDesWareneingangs = bdGesamtwertDesWareneingangs
                                .add(getLocaleFac()
                                        .rechneUmInMandantenWaehrung(
                                                rsPositionen[i].getNMenge()
                                                        .multiply(rsPositionen[i]
                                                                .getNEinzelpreisplusversteckteraufschlag()),

                                                rePos.getFlrrechnung().getN_kurs()));
                    }
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            iDto.setWert(iDto.getMenge().multiply(iDto.getEinzelpreis()));
            /*
             * iDto .setStatistischerWert(iDto.getWert().add(
             * bdTransportkosten));
             */
            BigDecimal bdAnteiligeTransportkosten;
            if (bdGesamtwertDesWareneingangs.compareTo(new BigDecimal(0)) > 0) {
                bdAnteiligeTransportkosten = bdGesamtwertDesWareneingangs.divide(
                        bdGesamtwertDesWareneingangs.add(bdTransportkosten),
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN);
                if (bdAnteiligeTransportkosten.compareTo(new BigDecimal(0)) == 0) {
                    bdAnteiligeTransportkosten = new BigDecimal(1);
                }
                iDto.setStatistischerWert(iDto.getWert().divide(bdAnteiligeTransportkosten,
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN));
            } else {
                // kann nicht aufgeteilt werden
                bdAnteiligeTransportkosten = bdTransportkosten;
                iDto.setStatistischerWert(iDto.getWert().add(bdAnteiligeTransportkosten));
            }
            WarenverkehrsnummerDto wvk = null;
            if (iDto.getArtikelDto().getCWarenverkehrsnummer() != null) {
                wvk = getFinanzServiceFac().warenverkehrsnummerFindByPrimaryKeyOhneExc(
                        iDto.getArtikelDto().getCWarenverkehrsnummer());
            }
            iDto.setWarenverkehrsnummerDto(wvk);
            BigDecimal bdGewicht = null;
            iDto.setWarenverkehrsnummerDto(wvk);
            if (iDto.getArtikelDto().getFGewichtkg() != null) {
                bdGewicht = iDto.getMenge().multiply(new BigDecimal(iDto.getArtikelDto().getFGewichtkg()));
            } else {
                bdGewicht = new BigDecimal(0);
            }
            iDto.setGewichtInKg(bdGewicht);
            daten.add(iDto);
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        closeSession(session);
    }
    return daten;
}

From source file:com.lp.server.lieferschein.ejbfac.LieferscheinReportFacBean.java

License:Open Source License

/**
 * Alle offenen Lieferscheine fuer einen bestimmten Mandanten drucken.
 * /*from ww w  . ja v a2s .  c o  m*/
 * @param reportJournalKriterienDtoI
 *            die Filter- und Sortierkriterien
 * @param theClientDto
 *            der aktuelle Benutzer
 * @throws EJBExceptionLP
 *             Ausnahme
 * @return JasperPrint der Druck
 */

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printLieferscheinOffene(ReportJournalKriterienDto reportJournalKriterienDtoI, Integer iArt,
        boolean bMitDetails, TheClientDto theClientDto) throws EJBExceptionLP {
    if (reportJournalKriterienDtoI == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PARAMETER_IS_NULL,
                new Exception("reportJournalKriterienDtoI == null"));
    }
    JasperPrintLP oPrintO = null;
    cAktuellerReport = LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE;
    int iIndex = 0;
    ArrayList<FLRLieferschein> oZeilen = new ArrayList();
    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 crit = session.createCriteria(FLRLieferschein.class);
        // Einschraenkung auf den aktuellen Mandanten
        crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
        // Einschraenkung nach Status Offen
        crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR,
                LieferscheinFac.LSSTATUS_GELIEFERT));
        if (iArt != null) {
            if (iArt == 1) {
                crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR,
                        Helper.boolean2Short(true)));
            } else if (iArt == 2) {
                crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR,
                        Helper.boolean2Short(false)));
            }
        }
        // Einschraenkung nach einer bestimmten Kostenstelle
        if (reportJournalKriterienDtoI.kostenstelleIId != null) {
            crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KOSTENSTELLE_I_ID,
                    reportJournalKriterienDtoI.kostenstelleIId));
        }

        // Einschraenkung nach einem bestimmten Kunden
        if (reportJournalKriterienDtoI.kundeIId != null) {
            crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_LIEFERADRESSE,
                    reportJournalKriterienDtoI.kundeIId));
        }

        // Einschraenkung nach Belegdatum von - bis
        String sVon = null;
        String sBis = null;

        if (reportJournalKriterienDtoI.dVon != null) {
            crit.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM,
                    reportJournalKriterienDtoI.dVon));
            sVon = Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi());
        }

        if (reportJournalKriterienDtoI.dBis != null) {
            crit.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM,
                    reportJournalKriterienDtoI.dBis));
            sBis = Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi());
        }

        // Einschraenkung nach Belegnummer von - bis
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());

        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());

        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();

        if (reportJournalKriterienDtoI.sBelegnummerVon != null) {
            sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    reportJournalKriterienDtoI.sBelegnummerVon);
            crit.add(Restrictions.ge("c_nr", sVon));
        }

        if (reportJournalKriterienDtoI.sBelegnummerBis != null) {
            sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    reportJournalKriterienDtoI.sBelegnummerBis);
            crit.add(Restrictions.le("c_nr", sBis));
        }

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

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

        // es wird in jedem Fall nach der Belegnummer sortiert
        crit.addOrder(Order.asc("c_nr"));
        List<?> list = crit.list();
        Iterator<?> it = list.iterator();
        while (it.hasNext()) {
            FLRLieferschein flrlieferschein = (FLRLieferschein) it.next();
            oZeilen.add(flrlieferschein);
            session = factory.openSession();
            Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class);
            critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN,
                    flrlieferschein));
            critPosition.add(Restrictions.or(
                    Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE),
                    Restrictions.eq(
                            LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR,
                            LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE)));
            // critPosition
            // .add(Restrictions
            // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE));
            List<?> posList = critPosition.list();
            for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) {
                FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next();
                iIndex++;
            }
            iIndex++;
        }
        data = new Object[iIndex][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANZAHL_ZEILEN]; // Anzahl
        // der
        // Spalten
        // in
        // der
        // Gruppe
        Iterator<?> itZeilen = oZeilen.iterator();
        int i = 0;
        while (itZeilen.hasNext()) {
            FLRLieferschein flrlieferschein = (FLRLieferschein) itZeilen.next();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                    .getC_nr();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein
                    .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein
                    .getFlrkostenstelle().getC_nr();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANLAGEDATUM] = flrlieferschein
                    .getD_belegdatum(); // todo
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERTERMIN] = flrlieferschein
                    .getT_liefertermin();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZAHLUNGSZIEL] = getMandantFac()
                    .zahlungszielFindByIIdLocaleOhneExc(flrlieferschein.getZahlungsziel_i_id(),
                            theClientDto.getLocMandant(), theClientDto);
            if (flrlieferschein.getFlrauftrag() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = flrlieferschein
                        .getFlrauftrag().getC_nr();
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = flrlieferschein
                        .getFlrauftrag().getC_bez();
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = flrlieferschein
                        .getFlrauftrag().getC_bestellnummer();
            } else {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = null;
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = null;
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = null;
            }
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERART] = getLocaleFac()
                    .lieferartFindByIIdLocaleOhneExc(flrlieferschein.getLieferart_i_id(),
                            theClientDto.getLocMandant(), theClientDto);

            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERARTORT] = flrlieferschein
                    .getC_lieferartort();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper
                    .short2Boolean(flrlieferschein.getB_verrechenbar());
            if (flrlieferschein.getFlrziellager() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZIELLAGER] = flrlieferschein
                        .getFlrziellager().getC_nr();
            }
            if (flrlieferschein.getFlrlager() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ABLAGER] = flrlieferschein
                        .getFlrlager().getC_nr();
            }

            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_RECHNUNGSADRESSE] = flrlieferschein
                    .getFlrkunderechnungsadresse().getFlrpartner().getC_name1nachnamefirmazeile1();

            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper
                    .short2Boolean(flrlieferschein.getB_verrechenbar());

            if (flrlieferschein.getSpediteur_i_id() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = getMandantFac()
                        .spediteurFindByPrimaryKey(flrlieferschein.getSpediteur_i_id()).getCNamedesspediteurs();
            } else {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = null;
            }
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_PROJEKTBEZEICHNUNG] = flrlieferschein
                    .getC_bez_projektbezeichnung();
            session = factory.openSession();
            Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class);
            critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN,
                    flrlieferschein));

            critPosition.add(Restrictions.or(
                    Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE),
                    Restrictions.eq(
                            LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR,
                            LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE)));

            // critPosition
            // .add(Restrictions
            // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE));
            List<?> posList = critPosition.list();
            boolean darfVerkaufspreisSehen = getTheJudgeFac()
                    .hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_VERKAUF, theClientDto);

            for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) {
                FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next();
                i++;// in die naechste Zeile vorruecken
                // nur mengenbehaftete Positionen beruecksichtigen
                if (item.getN_menge() != null) {
                    String artikelCNr = null;
                    // TODO boeser Workaround ... PJ 4400
                    if (item.getFlrartikel().getC_nr().startsWith("~")) {
                        artikelCNr = AngebotReportFac.REPORT_VORKALKULATION_ZEICHEN_FUER_HANDEINGABE;
                    } else {
                        artikelCNr = item.getFlrartikel().getC_nr();
                    }
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELCNR] = artikelCNr;
                    String cArtikelBezeichnung = "";

                    if (item.getPositionsart_c_nr()
                            .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT)
                            || item.getPositionsart_c_nr()
                                    .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_HANDEINGABE)) {
                        cArtikelBezeichnung = getArtikelFac().baueArtikelBezeichnungMehrzeiligOhneExc(
                                item.getFlrartikel().getI_id(), item.getPositionsart_c_nr(), item.getC_bez(),
                                item.getC_zbez(), false, null, theClientDto);
                    }

                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELBEZEICHNUNG] = cArtikelBezeichnung;
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELMENGE] = item.getN_menge();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELEINHEIT] = item
                            .getEinheit_c_nr() == null ? null : item.getEinheit_c_nr().trim();

                    if (darfVerkaufspreisSehen) {
                        // Positionspreise sind in Belegwaehrung abgelegt
                        BigDecimal nPreisInBelegwaehrung = item
                                .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt();

                        nPreisInBelegwaehrung = getBetragMalWechselkurs(nPreisInBelegwaehrung,
                                Helper.getKehrwert(new BigDecimal(
                                        flrlieferschein.getF_wechselkursmandantwaehrungzulieferscheinwaehrung()
                                                .doubleValue())));

                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = nPreisInBelegwaehrung;
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = item
                                .getN_menge().multiply(nPreisInBelegwaehrung);
                    } else {
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = null;
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = null;
                    }

                    // Grundlage ist der positionsbezogene Gestehungspreis
                    // des Artikels.
                    BigDecimal bdGestehungspreis = Helper.getBigDecimalNull();

                    if (item.getPositionsart_c_nr()
                            .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT)) {
                        try {
                            BigDecimal bdGestehungswert = getLieferscheinFac()
                                    .berechneGestehungswertEinerLieferscheinposition(item.getI_id(),
                                            theClientDto);

                            // Gestehungspreis bezogen auf 1 Stueck wird
                            // gemittelt
                            bdGestehungspreis = bdGestehungswert.divide(item.getN_menge(), 4,
                                    BigDecimal.ROUND_HALF_EVEN);
                            bdGestehungspreis = Helper.rundeKaufmaennisch(bdGestehungspreis, 4);
                        } catch (Throwable t) {
                            // dieser Fall sollte nicht auftreten, bitte als
                            // moeglichen Fehler pruefen!
                        }
                    }

                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELGESTEHUNGSPREIS] = bdGestehungspreis;
                    if (darfVerkaufspreisSehen) {
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = item
                                .getN_menge().multiply(bdGestehungspreis);
                    } else {
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = null;
                    }
                    // die Positionen brauchen alle Attribute, nach denen im
                    // Report gruppiert wird
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein
                            .getFlrkostenstelle().getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein
                            .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr(); // fuer die Gruppierung
                } else if (item.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_TEXTEINGABE)) {
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_TEXTEINGABE] = item
                            .getC_textinhalt();
                    // die Positionen brauchen alle Attribute, nach denen im
                    // Report gruppiert wird
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein
                            .getFlrkostenstelle().getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein
                            .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr(); // fuer die Gruppierung
                }
            }
            i++; // in die naechste Zeile vorruecken
        }
        // Erstellung des Report
        HashMap parameter = new HashMap<Object, Object>();
        // die Parameter dem Report uebergeben
        parameter.put(LPReport.P_SORTIERUNG,
                buildSortierungLieferscheinOffene(reportJournalKriterienDtoI, theClientDto));
        parameter.put(LPReport.P_FILTER,
                buildFilterLieferscheinOffene(reportJournalKriterienDtoI, theClientDto));
        // die Parameter zur Bildung von Zwischensummen uebergeben
        if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) {
            parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(true));
        } else {
            parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(false));
        }
        if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(true));
        } else {
            parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(false));
        }
        parameter.put("P_LIEFERSCHEINWAEHRUNG", theClientDto.getSMandantenwaehrung());
        parameter.put("P_DETAILS", new Boolean(bMitDetails));

        initJRDS(parameter, LieferscheinReportFac.REPORT_MODUL,
                LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        oPrintO = getReportPrint();
    } catch (RemoteException re) {
        throwEJBExceptionLPRespectOld(re);
    } finally {
        closeSession(session);
    }
    return oPrintO;
}