Example usage for org.hibernate Criteria createCriteria

List of usage examples for org.hibernate Criteria createCriteria

Introduction

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

Prototype

public Criteria createCriteria(String associationPath) throws HibernateException;

Source Link

Document

Create a new Criteria, "rooted" at the associated entity.

Usage

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

License:Open Source License

/**
 * @deprecated use getAllSerienChargennrAufLagerInfoDtos() instead
 *//*from  www  .j  a v a2 s . c  om*/

public SeriennrChargennrAufLagerDto[] getAllSerienChargennrAufLager(Integer artikelIId, Integer lagerIId,
        TheClientDto theClientDto, Boolean bNurChargennummern, boolean bSortiertNachSerienChargennummer,
        java.sql.Timestamp tStichtag) throws EJBExceptionLP {
    if (artikelIId == null || bNurChargennummern == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL,
                new Exception("artikelIId == null || bNurChargennummern == null"));
    }
    java.util.TreeMap list = new java.util.TreeMap();
    FLRLagerbewegung lagerbewegungen = new FLRLagerbewegung();
    lagerbewegungen.setB_vollstaendigverbraucht(Helper.boolean2Short(false));
    lagerbewegungen.setB_abgang(Helper.boolean2Short(false));

    FLRArtikel artikel = new FLRArtikel();
    artikel.setI_id(artikelIId);
    if (bNurChargennummern == true) {
        artikel.setB_chargennrtragend(Helper.boolean2Short(true));
    }
    lagerbewegungen.setFlrartikel(artikel);

    Session session = null;
    session = FLRSessionFactory.getFactory().openSession();
    Criteria snrs = session.createCriteria(FLRLagerbewegung.class)
            .add(Expression.eq("this." + LagerFac.FLR_LAGERBEWEGUNG_B_VOLLSTAENDIGVERBRAUCHT,
                    Helper.boolean2Short(false)))
            .add(Expression.eq("this." + LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false)))
            .add(Expression.isNotNull("this." + LagerFac.FLR_LAGERBEWEGUNG_C_SERIENNRCHARGENNR));

    snrs.add(Example.create(lagerbewegungen));
    snrs.createAlias("flrlager", "l");

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

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

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

    snrs.createCriteria(LagerFac.FLR_LAGERBEWEGUNG_FLRARTIKEL).add(Expression.eq("i_id", artikelIId));

    if (tStichtag != null) {
        snrs.add(Expression.lt(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, tStichtag));
    }

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

    List<?> listSnr = snrs.list();

    Iterator<?> listSnrIterator = listSnr.iterator();

    Integer lagerIIdKeinlager = lagerFindByCNrByMandantCNr(LagerFac.LAGER_KEINLAGER, theClientDto.getMandant())
            .getIId();
    int lastColumn = -1;
    String letzteChargennummer = null;
    while (listSnrIterator.hasNext()) {
        FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) listSnrIterator.next();
        if (lastColumn == lagerbewegung.getI_id_buchung().intValue()
                || lagerbewegung.getC_seriennrchargennr().equals(letzteChargennummer)) {
        } else {
            if (!lagerbewegung.getFlrlager().getI_id().equals(lagerIIdKeinlager)) {
                SeriennrChargennrAufLagerDto dto = new SeriennrChargennrAufLagerDto();

                BigDecimal menge = getMengeAufLager(lagerbewegung.getFlrartikel().getI_id(),
                        lagerbewegung.getFlrlager().getI_id(), lagerbewegung.getC_seriennrchargennr(),
                        theClientDto);

                if (menge.doubleValue() != 0) {

                    if (Helper.short2boolean(lagerbewegung.getFlrartikel().getB_chargennrtragend()) == true) {
                        dto.setBSeriennr(Helper.boolean2Short(false));
                        dto.setNMenge(Helper.rundeKaufmaennisch(menge, 2));
                        dto.setCSeriennrChargennr(lagerbewegung.getC_seriennrchargennr());
                    } else if (Helper
                            .short2boolean(lagerbewegung.getFlrartikel().getB_seriennrtragend()) == true) {

                        dto.setBSeriennr(Helper.boolean2Short(true));
                        dto.setNMenge(new BigDecimal(1));
                        dto.setCSeriennrChargennr(lagerbewegung.getC_seriennrchargennr());
                    }
                    dto.setTBuchungszeit(new java.sql.Timestamp(lagerbewegung.getT_buchungszeit().getTime()));
                    if (bSortiertNachSerienChargennummer) {
                        list.put(lagerbewegung.getC_seriennrchargennr(), dto);
                    } else {
                        list.put(dto.getTBuchungszeit(), dto);
                    }
                }
            }
            lastColumn = lagerbewegung.getI_id_buchung().intValue();
            letzteChargennummer = lagerbewegung.getC_seriennrchargennr();
        }
    }
    session.close();
    SeriennrChargennrAufLagerDto[] returnArray = new SeriennrChargennrAufLagerDto[list.size()];

    Iterator<?> it = list.keySet().iterator();
    int i = 0;
    while (it.hasNext()) {

        if (bSortiertNachSerienChargennummer) {
            String s = (String) it.next();
            SeriennrChargennrAufLagerDto dto = (SeriennrChargennrAufLagerDto) list.get(s);
            returnArray[i] = dto;

        } else {
            Timestamp ts = (Timestamp) it.next();
            SeriennrChargennrAufLagerDto dto = (SeriennrChargennrAufLagerDto) list.get(ts);
            returnArray[i] = dto;

        }

        i++;
    }
    return returnArray;

}

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

License:Open Source License

/**
 * Reservierungen pruefen. 1. Bestehende Reservierungseintraege aus
 * Auftrag/Los 2. Lose pruefen, ob die Reservierungen richtig eingetragen
 * sind. 3. Auftraege pruefen, ob die Reservierungen richtig eingetragen
 * sind.//from  w  w w  . j a  v 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.AuftragpositionFacBean.java

License:Open Source License

public void pruefeAuftragseriennumern(TheClientDto theClientDto) {
    Session session = FLRSessionFactory.getFactory().openSession();
    String[] srnnrn = null;//from  ww  w.j  av a 2s  .c o  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

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

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

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

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

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

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

License:Open Source License

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

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

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

    session = factory.openSession();

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

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

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

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

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

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

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

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

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

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

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

        }

        parameter.put("P_PROJEKTE", text);

    }

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

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

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

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

        if (bProjektklammer == true) {

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

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

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

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

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

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

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

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

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

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

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

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

            // PJ 14752

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

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

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

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

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

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

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

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

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

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

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

                }

                // PJ 14752

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

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

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

                data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring;

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

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

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

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

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

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

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

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

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

    closeSession(session);

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

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

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

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

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

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

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

    }

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

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

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

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

License:Open Source License

/**
 * Alle offenen Bestellungen fuer einen bestimmten Mandanten drucken.
 * //www .j  av  a 2 s .  c  o  m
 * @param krit
 *            die Filter- und Sortierkriterien
 * @param bSortierungNachLiefertermin
 *            Boolean
 * @param bAnfragevorschlag
 * @param theClientDto
 *            der aktuelle Benutzer
 * @throws EJBExceptionLP
 *             Ausnahme
 * @return JasperPrint der Druck
 */
@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printBestellVorschlag(ReportJournalKriterienDto krit, Boolean bSortierungNachLiefertermin,
        boolean bAnfragevorschlag, TheClientDto theClientDto) throws EJBExceptionLP {
    JasperPrintLP oPrintO = null;
    useCase = UC_BESTELLVORSCHLAG;
    int iAnzahlZeilen = 0;
    Locale locDruck = theClientDto.getLocUi();

    ArrayList<FLRBestellvorschlag> bestellung = new ArrayList();

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

        LagerDto[] lagerDto = getLagerFac().lagerFindByMandantCNr(theClientDto.getMandant());

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

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

        // Einschraenkung nach einem bestimmten Kunden
        if (krit.lieferantIId != null) {
            crit.add(Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_LIEFERANT_I_ID,
                    krit.lieferantIId));
        }

        // 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));
        }

        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {
            crit.createCriteria(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_FLRARTIKEL)
                    .addOrder(Order.asc("c_nr"));
        }

        // Sortierung nach Liefertermin (optional)
        if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) {
            crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN));
        }
        crit.addOrder(Order.asc(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_BELEGART_C_NR));
        List<?> list = crit.list();
        Iterator<?> it = list.iterator();

        while (it.hasNext()) {
            FLRBestellvorschlag flrbestellvorschlag = (FLRBestellvorschlag) it.next();
            bestellung.add(flrbestellvorschlag);
            iAnzahlZeilen++;
        }
        // Danach wenn nach Lieferant sortiert auch noch die null
        // Lieferanten anfuegen
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            Criteria crit2 = session.createCriteria(FLRBestellvorschlag.class);
            crit2.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
            crit2.add(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT));
            if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) {
                crit2.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN));
            }
            crit2.addOrder(Order.asc(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_BELEGART_C_NR));
            if (krit.kundeIId != null) {
                crit2.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE,
                        krit.lieferantIId));
            }

            list = crit2.list();
            it = list.iterator();
            while (it.hasNext()) {
                FLRBestellvorschlag flrbestellvorschlag = (FLRBestellvorschlag) it.next();
                bestellung.add(flrbestellvorschlag);
                iAnzahlZeilen++;
            }
        }

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

        int i = 0;
        FLRBestellvorschlag flrbestellung = null;
        while (i < iAnzahlZeilen) {
            flrbestellung = (FLRBestellvorschlag) bestellung.get(i);
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BELEGART] = flrbestellung.getBelegart_c_nr();
            String belegCNr = "";
            if (flrbestellung.getBelegart_c_nr() != null) { // Es gibt auch
                // Eintraege
                // ohne
                // Belegart, zb
                // fuer den
                // mindestlagerstand
                if (flrbestellung.getBelegart_c_nr().equals(LocaleFac.BELEGART_AUFTRAG)) {
                    AuftragDto aDto = getAuftragFac().auftragFindByPrimaryKey(flrbestellung.getI_belegartid());
                    belegCNr = aDto.getCNr();
                } else if (flrbestellung.getBelegart_c_nr().equals(LocaleFac.BELEGART_LOS)) {
                    LosDto aDto = getFertigungFac().losFindByPrimaryKey(flrbestellung.getI_belegartid());
                    belegCNr = aDto.getCNr();
                }
            }
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BELEGCNR] = belegCNr;

            if (flrbestellung.getLieferant_i_id() != null) {
                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BESTELLUNGLIEFERANT] = flrbestellung
                        .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1();
            }
            if (flrbestellung.getProjekt_i_id() != null) {
                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_PROJEKT] = flrbestellung.getFlrprojekt()
                        .getC_nr();
            }

            /*
             * locDruck =
             * Helper.string2Locale(flrbestellung.getFlrlieferant(
             * ).getFlrpartner(). getLocale_c_nr_kommunikation());
             */
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BESTELLTERMIN] = Helper
                    .formatDatum(flrbestellung.getT_liefertermin(), locDruck);

            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELCNR] = flrbestellung.getFlrartikel()
                    .getC_nr();
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_LAGERBEWIRTSCHAFTET] = Helper
                    .short2Boolean(flrbestellung.getFlrartikel().getB_lagerbewirtschaftet());
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELMENGE] = flrbestellung
                    .getN_zubestellendemenge();
            ArtikelDto oArtikelDto = getArtikelFac().artikelFindByPrimaryKey(flrbestellung.getArtikel_i_id(),
                    theClientDto);
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELBEZ] = oArtikelDto.getArtikelsprDto()
                    .getCBez();
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELKBEZ] = oArtikelDto.getArtikelsprDto()
                    .getCKbez();
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELZBEZ] = oArtikelDto.getArtikelsprDto()
                    .getCZbez();
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELZBEZ2] = oArtikelDto.getArtikelsprDto()
                    .getCZbez2();

            // Sperren
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_SPERREN] = getArtikelFac()
                    .getArtikelsperrenText(flrbestellung.getArtikel_i_id());

            // offene Bestellmenge
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_MENGE_OFFEN] = getArtikelbestelltFac()
                    .getAnzahlBestellt(flrbestellung.getArtikel_i_id());

            // offene Rahmenbestellmenge
            Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                    .getAnzahlRahmenbestellt(flrbestellung.getArtikel_i_id(), theClientDto);
            if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_RAHMENMENGE_OFFEN] = htRahmenbestellt
                        .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
            }
            // alle offenen Rahmenbestellnr
            if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_BELEGCNR)) {
                Collection<?> aRahmenbestellnr = (Collection<?>) htRahmenbestellt
                        .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_BELEGCNR);
                if (aRahmenbestellnr != null && aRahmenbestellnr.size() > 0) {
                    String[] aRahmenbestellnrStringArray = (String[]) aRahmenbestellnr.toArray(new String[0]);
                    data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_RAHMENBESTELLNR] = Helper
                            .erzeugeStringAusStringArray(aRahmenbestellnrStringArray);
                }
            }
            // alle offenenen Bestellungen CNr
            ArrayList<String> alBestellungnr = new ArrayList<String>();
            Collection<?> lFLRArtikelbestellt = getArtikelbestelltFac()
                    .getArtikelbestellt(flrbestellung.getArtikel_i_id(), null, null);
            Iterator<?> iteratorFLRArtikelbestellt = lFLRArtikelbestellt.iterator();
            while (iteratorFLRArtikelbestellt.hasNext()) {
                FLRArtikelbestellt fLRArtikelbestellt = (FLRArtikelbestellt) iteratorFLRArtikelbestellt.next();
                BestellpositionDto bestellpositionDto = null;
                BestellungDto bestellungDto = null;
                if (fLRArtikelbestellt.getC_belegartnr().equals(LocaleFac.BELEGART_BESTELLUNG)) {
                    bestellpositionDto = getBestellpositionFac()
                            .bestellpositionFindByPrimaryKey(fLRArtikelbestellt.getI_belegartpositionid());
                    if (!bestellpositionDto.getBestellpositionstatusCNr()
                            .equals(BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)) {
                        bestellungDto = getBestellungFac()
                                .bestellungFindByPrimaryKey(bestellpositionDto.getBestellungIId());
                        alBestellungnr.add(bestellungDto.getCNr());
                    }
                }
            }
            // offene Bestellungen CNr als String uebergeben
            if (alBestellungnr.size() > 0) {
                String[] aArtikelbestellNr = (String[]) alBestellungnr.toArray(new String[0]);
                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_OFFENE_BESTELLNR] = Helper
                        .erzeugeStringAusStringArray(aArtikelbestellNr);
            }

            // ----------------
            // Artikellieferant, wenn vorhanden
            ArtikellieferantDto artikellieferantDto = getArtikelFac()
                    .artikellieferantFindByArtikellIIdLieferantIIdOhneExc(flrbestellung.getArtikel_i_id(),
                            flrbestellung.getLieferant_i_id(), theClientDto);
            if (artikellieferantDto != null) {
                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_ARTIKEL_IDENTNUMMER] = artikellieferantDto
                        .getCArtikelnrlieferant();
                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_ARTIKEL_BEZEICHNUNG] = artikellieferantDto
                        .getCBezbeilieferant();
                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_STANDARDMENGE] = artikellieferantDto
                        .getFStandardmenge();

                data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_MATERIALZUSCHLAG] = artikellieferantDto
                        .getNMaterialzuschlag();
            }
            BigDecimal rahmenbedarf = this.getRahmenbedarfeFac()
                    .getSummeAllerRahmenbedarfeEinesArtikels(flrbestellung.getArtikel_i_id());
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_RAHMENDETAILBEDARF] = rahmenbedarf;

            BigDecimal nLagersoll = new BigDecimal(0);
            BigDecimal nLagermindest = new BigDecimal(0);
            BigDecimal nArtikelPreis = new BigDecimal(0);
            BigDecimal nAnzahlArtikelRes = new BigDecimal(0);
            BigDecimal nFehlMenge = new BigDecimal(0);
            if (oArtikelDto.getFLagermindest() != null) {
                nLagermindest = new BigDecimal(oArtikelDto.getFLagermindest());
            }
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELLAGERMINDESTSTAND] = nLagermindest;
            if (oArtikelDto.getFLagersoll() != null) {
                nLagersoll = new BigDecimal(oArtikelDto.getFLagersoll());
            }
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELLAGERSOLL] = nLagersoll;

            // PJ 14828

            BigDecimal bdLagerstand = new BigDecimal(0);

            if (Helper.short2Boolean(flrbestellung.getFlrartikel().getB_lagerbewirtschaftet())) {
                for (int j = 0; j < lagerDto.length; j++) {

                    if (Helper.short2boolean(lagerDto[j].getBBestellvorschlag())) {
                        bdLagerstand = bdLagerstand.add(getLagerFac().getLagerstand(oArtikelDto.getIId(),
                                lagerDto[j].getIId(), theClientDto));
                    }

                }
            }

            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELLAGERSTAND] = bdLagerstand;

            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELEINHEIT] = flrbestellung.getFlrartikel()
                    .getEinheit_c_nr();
            if (flrbestellung.getN_nettoeinzelpreis() != null) {
                nArtikelPreis = flrbestellung.getN_nettoeinzelpreis();
            }
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELPREIS] = nArtikelPreis;

            nAnzahlArtikelRes = getReservierungFac().getAnzahlReservierungen(flrbestellung.getArtikel_i_id(),
                    theClientDto);
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELRESERVIERUNG] = nAnzahlArtikelRes;
            nFehlMenge = getFehlmengeFac().getAnzahlFehlmengeEinesArtikels(flrbestellung.getArtikel_i_id(),
                    theClientDto);
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELFEHLMENGE] = nFehlMenge;

            // Verwendungsnachweis
            Session session2 = FLRSessionFactory.getFactory().openSession();
            org.hibernate.Criteria critVW = session2.createCriteria(FLRStuecklisteposition.class)
                    .createAlias(
                            com.lp.server.stueckliste.service.StuecklisteFac.FLR_STUECKLISTEPOSITION_FLRARTIKEL,
                            "a")
                    .add(Restrictions.eq("a.i_id", flrbestellung.getArtikel_i_id()))
                    .addOrder(Order.asc("a.c_nr"));
            List<?> results = critVW.list();
            Iterator itVW = results.iterator();

            Object[][] dataSub = new Object[results.size()][3];
            String[] fieldnames = new String[] { "F_ARTIKEL", "F_BEZEICHNUNG", "F_MENGE" };

            int iZeileSub = 0;
            while (itVW.hasNext()) {
                FLRStuecklisteposition stkpos = (FLRStuecklisteposition) itVW.next();

                dataSub[iZeileSub][0] = stkpos.getFlrstueckliste().getFlrartikel().getC_nr();
                ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                        stkpos.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                dataSub[iZeileSub][1] = aDto.formatBezeichnung();
                dataSub[iZeileSub][2] = stkpos.getN_menge();
                iZeileSub++;
            }
            data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_SUBREPORT_VERWENDUNGSNACHWEIS] = new LPDatenSubreport(
                    dataSub, fieldnames);
            session2.close();

            i++;
        }

        // die Parameter dem Report uebergeben
        HashMap<String, Object> mapParameter = new HashMap<String, Object>();
        mapParameter.put(LPReport.P_SORTIERUNG, buildSortierungBestellvorschlag(krit, theClientDto));
        mapParameter.put(LPReport.P_FILTER, buildFilterBestellungOffene(krit, theClientDto));
        mapParameter.put("P_SORTIERENACHBELEGART",
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER));
        mapParameter.put("P_SORTIERENACHIDENT",
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT));
        mapParameter.put(LPReport.P_SORTIERENACHLIEFERANT,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));

        mapParameter.put(P_MANDANTWAEHRUNG, theClientDto.getSMandantenwaehrung());

        mapParameter.put("P_ANFRAGEVORSCHLAG", new Boolean(bAnfragevorschlag));

        initJRDS(mapParameter, BestellungReportFac.REPORT_MODUL,
                BestellungReportFac.REPORT_BESTELLUNG_JOURNAL_BESTELLVORSCHLAG, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

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

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

License:Open Source License

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

    try {
        session = factory.openSession();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            aResult[iIndex] = reportDto;
            iIndex++;

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

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

License:Open Source License

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

    Session session = null;//  w w w .  j  ava 2s .c o  m
    useCase = UC_BESTELLUNG_WARENEINGANG;
    SessionFactory factory = FLRSessionFactory.getFactory();
    session = factory.openSession();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        }

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

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

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

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

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

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

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

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

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

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

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

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

        i++;
    }

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

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

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

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

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

License:Open Source License

public BestellungDto[] erstelleAbrufbestellungenAusBV(BestellvorschlagDto[] bestellvorschlagDto,
        TheClientDto theClientDto) throws EJBExceptionLP, RemoteException {
    Session session = FLRSessionFactory.getFactory().openSession();
    try {/*from w  w w. ja  va  2 s.c  om*/
        ArrayList<Integer> alUeberlieferteBestellungIId = new ArrayList<Integer>();
        HashMap<Integer, Integer> hmAbrufeZuRahmen = new HashMap<Integer, Integer>();
        for (int i = 0; i < bestellvorschlagDto.length; i++) {
            boolean bUebergeleitet = false;
            if (bestellvorschlagDto[i].getILieferantId() != null) {
                BigDecimal bdZuBestellendeMenge = bestellvorschlagDto[i].getNZubestellendeMenge();
                Criteria besPos = session.createCriteria(FLRBestellposition.class);
                Criteria best = besPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
                Criteria artikel = besPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL);
                // Filter auf den Mandanten
                best.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
                // nur Rahmenbestellungen.
                best.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR,
                        BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR));
                // Einschraenkung nach Status Offen, Erledigt
                Collection<String> cStati = new LinkedList<String>();
                cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT);
                cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT);
                cStati.add(BestellungFac.BESTELLSTATUS_OFFEN);
                best.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati));
                best.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE,
                        bestellvorschlagDto[i].getILieferantId()));
                besPos.add(Restrictions.gt(BestellpositionFac.FLR_BESTELLPOSITION_N_OFFENEMENGE,
                        new BigDecimal(0)));
                artikel.add(
                        Restrictions.eq(ArtikelFac.FLR_ARTIKEL_I_ID, bestellvorschlagDto[i].getIArtikelId()));
                // Sortierung damit die aelteren Rahmen zuerst abgerufen
                // werden
                best.addOrder(Order.desc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN));
                // Query ausfuehren
                List<?> besposList = besPos.list();
                Iterator<?> besposListIterator = besposList.iterator();
                boolean bMengeGenuegt = false;
                ArrayList<Integer> alVerwendeteBesPosIId = new ArrayList<Integer>();
                while (besposListIterator.hasNext() && !bMengeGenuegt) {
                    FLRBestellposition bespos = (FLRBestellposition) besposListIterator.next();
                    if (bdZuBestellendeMenge.compareTo(bespos.getN_offenemenge()) < 0) {
                        bMengeGenuegt = true;
                    } else {
                        bdZuBestellendeMenge = bdZuBestellendeMenge.subtract(bespos.getN_offenemenge());
                    }
                    alVerwendeteBesPosIId.add(bespos.getI_id());
                }
                // Jetzt haben wir eine Liste aller Rahmenpositionen die
                // verwendet werden sollen.
                BigDecimal bdBereitsBestellteMenge = new BigDecimal(0);
                for (int y = 0; y < alVerwendeteBesPosIId.size(); y++) {
                    BestellpositionDto besPosDto = getBestellpositionFac()
                            .bestellpositionFindByPrimaryKey(alVerwendeteBesPosIId.get(y));
                    BestellungDto abrufBestellungDto = null;
                    if (hmAbrufeZuRahmen.containsKey(besPosDto.getBelegIId())) {
                        abrufBestellungDto = getBestellungFac()
                                .bestellungFindByPrimaryKey(hmAbrufeZuRahmen.get(besPosDto.getBelegIId()));
                    }
                    BestellungDto rahmenBestellungDto = getBestellungFac()
                            .bestellungFindByPrimaryKey(besPosDto.getBelegIId());
                    boolean bAbrufvorhanden = false;
                    // wenn wir bereits durch einen anderen Bestellvorschlag
                    // einen Abruf fuer diesen Lieferanten mit diesem
                    // Liefertermin angelegt haben
                    if (abrufBestellungDto != null) {
                        if (abrufBestellungDto.getDLiefertermin()
                                .equals(bestellvorschlagDto[i].getTLiefertermin())) {
                            bAbrufvorhanden = true;
                        }
                    }
                    if (!bAbrufvorhanden) {
                        // Wir haben fuer diese Bestellung noch keinen Abruf
                        // und legen diesen an
                        MandantDto mandantDto = getMandantFac()
                                .mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto);

                        // Wechselkurs ist immer der aktuelle
                        BigDecimal wechselkurs = getLocaleFac().getWechselkurs2(
                                rahmenBestellungDto.getWaehrungCNr(), mandantDto.getWaehrungCNr(),
                                theClientDto);
                        abrufBestellungDto = new BestellungDto();
                        abrufBestellungDto.setFWechselkursmandantwaehrungzubelegwaehrung(
                                new Double(wechselkurs.doubleValue()));
                        abrufBestellungDto
                                .setPersonalIIdAnforderer(rahmenBestellungDto.getPersonalIIdAnforderer());
                        abrufBestellungDto.setPersonalIIdAendern(theClientDto.getIDPersonal());
                        abrufBestellungDto.setPersonalIIdAnlegen(theClientDto.getIDPersonal());
                        abrufBestellungDto.setZahlungszielIId(rahmenBestellungDto.getZahlungszielIId());
                        abrufBestellungDto.setBelegartCNr(LocaleFac.BELEGART_BESTELLUNG);
                        abrufBestellungDto
                                .setBestellungartCNr(BestellungFac.BESTELLUNGART_ABRUFBESTELLUNG_C_NR);
                        abrufBestellungDto.setStatusCNr(BestellungFac.BESTELLSTATUS_ANGELEGT);
                        abrufBestellungDto.setIBestellungIIdRahmenbestellung(rahmenBestellungDto.getIId());
                        abrufBestellungDto
                                .setBTeillieferungMoeglich(rahmenBestellungDto.getBTeillieferungMoeglich());
                        abrufBestellungDto.setDBelegdatum(this.getDate());
                        abrufBestellungDto.setDLiefertermin(bestellvorschlagDto[i].getTLiefertermin());
                        abrufBestellungDto.setKostenstelleIId(rahmenBestellungDto.getKostenstelleIId());
                        abrufBestellungDto.setLieferantIIdBestelladresse(
                                rahmenBestellungDto.getLieferantIIdBestelladresse());
                        abrufBestellungDto.setLieferantIIdRechnungsadresse(
                                rahmenBestellungDto.getLieferantIIdRechnungsadresse());
                        abrufBestellungDto.setSpediteurIId(rahmenBestellungDto.getSpediteurIId());
                        abrufBestellungDto.setMandantCNr(mandantDto.getCNr());
                        abrufBestellungDto.setLieferartIId(rahmenBestellungDto.getLieferartIId());
                        abrufBestellungDto.setWaehrungCNr(rahmenBestellungDto.getWaehrungCNr());
                        abrufBestellungDto
                                .setFAllgemeinerRabattsatz(rahmenBestellungDto.getFAllgemeinerRabattsatz());
                        Integer iAbrufBEstellungIId = getBestellungFac().createBestellung(abrufBestellungDto,
                                theClientDto);
                        abrufBestellungDto = getBestellungFac().bestellungFindByPrimaryKey(iAbrufBEstellungIId);
                        hmAbrufeZuRahmen.put(besPosDto.getBelegIId(), abrufBestellungDto.getIId());
                    }
                    // Bestellung wurde nun angelgt oder war bereits
                    // vorhanden
                    // Jetzt die Position anlegen oder updaten
                    BestellpositionDto[] vorhandeneAbrufe = getBestellpositionFac()
                            .bestellpositionFindByBestellung(abrufBestellungDto.getIId(), theClientDto);
                    BestellpositionDto abrufBestellpositionDto = null;
                    for (int x = 0; x < vorhandeneAbrufe.length; x++) {
                        if (bestellvorschlagDto[i].getIArtikelId()
                                .equals(vorhandeneAbrufe[x].getArtikelIId())) {
                            abrufBestellpositionDto = vorhandeneAbrufe[x];
                        }
                    }
                    BigDecimal bdbenoetigteMenge = bestellvorschlagDto[i].getNZubestellendeMenge()
                            .subtract(bdBereitsBestellteMenge);
                    BigDecimal bdAbrufmenge;
                    if (bdbenoetigteMenge.compareTo(besPosDto.getNOffeneMenge()) > 0) {
                        if (y == alVerwendeteBesPosIId.size() - 1) {
                            // Letzte Pos, also wird ueberliefert
                            bdAbrufmenge = bdbenoetigteMenge;
                            if (!alUeberlieferteBestellungIId.contains(besPosDto.getBelegIId())) {
                                alUeberlieferteBestellungIId.add(besPosDto.getBelegIId());
                            }
                        } else {
                            bdAbrufmenge = besPosDto.getNOffeneMenge();
                        }
                    } else {
                        bdAbrufmenge = bdbenoetigteMenge;
                    }

                    if (abrufBestellpositionDto == null) {
                        abrufBestellpositionDto = new BestellpositionDto();
                        abrufBestellpositionDto.setNMenge(bdAbrufmenge);
                        bdbenoetigteMenge = bdbenoetigteMenge.subtract(bdAbrufmenge);
                        ArtikelDto artikelDto = getArtikelFac()
                                .artikelFindByPrimaryKey(bestellvorschlagDto[i].getIArtikelId(), theClientDto);
                        abrufBestellpositionDto.setIBestellpositionIIdRahmenposition(besPosDto.getIId());
                        abrufBestellpositionDto.setArtikelIId(bestellvorschlagDto[i].getIArtikelId());
                        abrufBestellpositionDto.setBDrucken(Helper.boolean2Short(false));
                        abrufBestellpositionDto.setPositionsartCNr(BestellpositionFac.BESTELLPOSITIONART_IDENT);
                        abrufBestellpositionDto
                                .setBestellpositionstatusCNr(BestellpositionFac.BESTELLPOSITIONSTATUS_OFFEN);
                        abrufBestellpositionDto.setBestellungIId(abrufBestellungDto.getIId());
                        abrufBestellpositionDto.setCBez(artikelDto.getArtikelsprDto().getCBez());
                        // bestellpositionDto.setISort(new Integer(j++));
                        abrufBestellpositionDto.setEinheitCNr(artikelDto.getEinheitCNr());
                        abrufBestellpositionDto.setNNettoeinzelpreis(besPosDto.getNNettoeinzelpreis());
                        abrufBestellpositionDto.setNNettogesamtpreis(besPosDto.getNNettogesamtpreis());
                        abrufBestellpositionDto.setNRabattbetrag(besPosDto.getNRabattbetrag());
                        abrufBestellpositionDto.setDRabattsatz(besPosDto.getDRabattsatz());
                        abrufBestellpositionDto.setNMaterialzuschlag(besPosDto.getNMaterialzuschlag());
                        abrufBestellpositionDto
                                .setBNettopreisuebersteuert(besPosDto.getBNettopreisuebersteuert());
                        abrufBestellpositionDto
                                .setTUebersteuerterLiefertermin(bestellvorschlagDto[i].getTLiefertermin());
                        getBestellpositionFac().createAbrufbestellposition(abrufBestellpositionDto,
                                BestellpositionFac.PREISPFLEGEARTIKELLIEFERANT_PREIS_UNVERAENDERT, null,
                                theClientDto);
                    } else {
                        BigDecimal bdMenge = bdAbrufmenge.add(abrufBestellpositionDto.getNMenge());
                        abrufBestellpositionDto.setNMenge(bdMenge);
                        bdbenoetigteMenge = bdbenoetigteMenge.subtract(bdMenge);
                        getBestellpositionFac().updateAbrufbestellposition(abrufBestellpositionDto,
                                BestellpositionFac.PREISPFLEGEARTIKELLIEFERANT_PREIS_UNVERAENDERT, null,
                                theClientDto);

                    }
                    bUebergeleitet = true;
                }
                if (bUebergeleitet) {
                    this.removeBestellvorschlag(bestellvorschlagDto[i]);
                }
            }
        }
        BestellungDto[] toReturn = new BestellungDto[alUeberlieferteBestellungIId.size()];
        for (int x = 0; x < alUeberlieferteBestellungIId.size(); x++) {
            toReturn[x] = getBestellungFac().bestellungFindByPrimaryKey(alUeberlieferteBestellungIId.get(x));
        }
        return toReturn;
    } catch (Exception e) {
        throw new EJBExceptionLP(e);
    } finally {
        session.close();
    }
}

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

License:Open Source License

/**
 * erstellt Liefermahnungen, ABMahnungen oder beides ruft dazu die Methoden
 * echteLiefermahnungen() und (oder) echteABMahnungen() auf
 * ------------------/* w ww  .j a  v a  2 s. com*/
 * ----------------------------------------------------------
 * 
 * @param echteLiefermahnung
 *            boolean
 * @param echteABMahnungen
 *            boolean
 * @param theClientDto
 *            String
 * @throws EJBExceptionLP
 * @return Integer
 *         ----------------------------------------------------------
 *         -----------------
 */
@TransactionAttribute(TransactionAttributeType.NEVER)
private Integer createMahnungen(boolean echteLiefermahnung, boolean echteABMahnungen, boolean liefererinnerung,
        TheClientDto theClientDto) throws EJBExceptionLP {

    Session session = null;
    try {
        // Mahnstufen des Mandanten holen
        BSMahnstufeDto bsmahnstufeDto[] = this.bsmahnstufeFindByMandantCNr(theClientDto.getMandant(),
                theClientDto);
        if (bsmahnstufeDto == null || bsmahnstufeDto.length == 0) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_KEINE_MAHNSTUFEN_EINGETRAGEN, "");
        }

        // mahnlaufIId generieren wird fuer Liefermahnung und ABMahnung
        // gebraucht
        Integer bsmahnlaufIId = null;
        BSMahnlaufDto bsmahnlaufDto = null;
        bsmahnlaufIId = context.getBusinessObject(BSMahnwesenFac.class).createBSMahnlauf(bsmahnlaufDto,
                theClientDto);
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria crit = session.createCriteria(FLRBestellpositionReport.class);

        // folgende Positionsarten werden ignoriert.
        Collection<String> cPositionsarten = new LinkedList<String>();
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_BETRIFFT);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_SEITENUMBRUCH);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_LEERZEILE);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTBAUSTEIN);
        cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTEINGABE);
        crit.add(Restrictions.not(Restrictions
                .in(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, cPositionsarten)));

        // PJ 16536
        String queryString = "SELECT artgru_i_id FROM FLRMahngruppe m"
                + " WHERE m.flrartikelgruppe.mandant_c_nr ='" + theClientDto.getMandant() + "'";

        Session session2 = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Query query = session2.createQuery(queryString);
        List<?> results = query.list();
        Iterator<?> resultListIterator = results.iterator();

        Integer[] ids = new Integer[results.size()];
        int row = 0;
        while (resultListIterator.hasNext()) {
            Integer artgruIId = (Integer) resultListIterator.next();
            ids[row] = artgruIId;
            row++;
        }
        session2.close();
        if (ids.length > 0) {
            crit.createAlias("flrartikel", "a");
            crit.createAlias("a.flrartikelgruppe", "ag");

            crit.add(Restrictions.in("ag.i_id", ids));
        }

        Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
        // nach mandanten filtern
        critBestellung
                .add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // PJ 15165
        critBestellung.add(Restrictions.or(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS),
                Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS,
                        Helper.cutTimestamp(new Timestamp(System.currentTimeMillis())))));

        // nach Stati filtern
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(BestellungFac.BESTELLSTATUS_OFFEN);
        cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT);
        // SK added BESTELLSTATUS_TEILERLEDIGT
        cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT);
        critBestellung.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati));
        List<?> list = crit.list();

        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRBestellpositionReport flrbespos = (FLRBestellpositionReport) iter.next();
            /**
             * nur Liefermahnungen deren Status bestaetigt ist oder deren
             * Liefertermin vor heute ist
             */
            if (echteLiefermahnung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR
                    .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) {
                BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac()
                        .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto);
                if (bsmahnungdto.length > 0) {

                    Integer latest = 0;
                    for (int y = 0; y < bsmahnungdto.length; y++) {
                        if (bsmahnungdto[y].getMahnstufeIId() > latest) {
                            latest = bsmahnungdto[y].getMahnstufeIId();
                        }
                    }
                    for (int i = 0; i < bsmahnstufeDto.length; i++) {
                        if (latest.equals(bsmahnstufeDto[i].getIId())) {
                            echteLiefermahnungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto);
                        }
                    }
                } else {
                    echteLiefermahnungen(flrbespos, bsmahnlaufIId, null, theClientDto);
                }
            }

            // lt. WH
            boolean bEchteLiefermahnungVorhanden = false;
            BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac()
                    .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto);
            if (bsmahnungdto.length > 0) {
                for (int y = 0; y < bsmahnungdto.length; y++) {
                    if (bsmahnungdto[y].getMahnstufeIId() > 0) {
                        bEchteLiefermahnungVorhanden = true;
                    }
                }
            }

            if (bEchteLiefermahnungVorhanden == false) {

                /**
                 * nur ABMahnungen deren Status offen ist ausser der
                 * Liefertermin ist vor heute dann ist es eine Liefermahnung
                 */
                if (echteABMahnungen == true) {
                    // hier wird mahnstufe 0 uebergeben
                    for (int i = 0; i < bsmahnstufeDto.length; i++) {
                        if (bsmahnstufeDto[i].getIId().equals(new Integer(BSMahnwesenFac.MAHNSTUFE_0))) {
                            echteABMahnungen(flrbespos, bsmahnstufeDto[i], bsmahnlaufIId, theClientDto);
                        }
                    }
                }

                // lt. WH
                boolean bABLiefermahnungVorhanden = false;
                bsmahnungdto = getBSMahnwesenFac().bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(),
                        theClientDto);
                if (bsmahnungdto.length > 0) {
                    for (int y = 0; y < bsmahnungdto.length; y++) {
                        if (bsmahnungdto[y].getMahnstufeIId() == 0) {
                            bABLiefermahnungVorhanden = true;
                        }
                    }
                }

                if (bABLiefermahnungVorhanden == false) {

                    // lt. WH Liefererinnerung ist wie echte
                    // Liefermahnung,
                    // jedoch
                    // nur mit Mahnstufe -1
                    if (liefererinnerung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR
                            .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) {

                        if (flrbespos.getT_lieferterminbestaetigt() == null) {

                            // hier wird mahnstufe -1 uebergeben
                            for (int i = 0; i < bsmahnstufeDto.length; i++) {
                                if (bsmahnstufeDto[i].getIId()
                                        .equals(new Integer(BSMahnwesenFac.MAHNSTUFE_MINUS1))) {

                                    liefererinnerungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i],
                                            theClientDto);

                                }
                            }
                        }
                    }
                }
            }

        }
        return bsmahnlaufIId;
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}