Example usage for org.hibernate.criterion Restrictions ge

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

Introduction

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

Prototype

public static SimpleExpression ge(String propertyName, Object value) 

Source Link

Document

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

Usage

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

License:Open Source License

public void importiereMonatsbestellung(ArrayList<ImportMonatsbestellungDto> importMonatbestellung,
        TheClientDto theClientDto) {//  w ww .  j  a  v a  2s  . co m

    // letzte Bestellung des Lieferanten suchen und nachsehen, ob diese in
    // diesem Monat bereits vorhanden ist.

    // PJ 17876
    Integer iMonatsbestellungsart = 0;
    try {
        ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_BESTELLUNG, ParameterFac.PARAMETER_MONATSBESTELLUNGSART);
        iMonatsbestellungsart = (Integer) parameter.getCWertAsObject();
    } catch (RemoteException e2) {
        throwEJBExceptionLPRespectOld(e2);
    }

    if (iMonatsbestellungsart == 2) {
        importiereBestellung(importMonatbestellung, theClientDto);
        return;
    }

    for (int i = 0; i < importMonatbestellung.size(); i++) {

        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = factory.openSession();
        Criteria c = session.createCriteria(FLRBestellung.class);
        c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE,
                importMonatbestellung.get(i).getLieferantIId()));

        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(importMonatbestellung.get(i).getWeDatum().getTime());

        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);

        c.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime()));

        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);

        SimpleDateFormat dateformat = new SimpleDateFormat("MMMM", theClientDto.getLocUi());
        dateformat.format(cal.getTime());

        String projektTextMonatsbestellung = "Monatsbestellung " + dateformat.format(cal.getTime()) + " "
                + cal.get(Calendar.YEAR);

        c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG,
                projektTextMonatsbestellung));

        c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime()));

        //
        String[] s = new String[2];
        s[0] = BestellungFac.BESTELLSTATUS_ERLEDIGT;
        s[1] = BestellungFac.BESTELLSTATUS_STORNIERT;
        c.add(Restrictions.not(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, s)));

        c.addOrder(Order.desc(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM));
        c.setMaxResults(1);

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

        Integer bestellungIId = null;

        if (list.size() > 0) {
            FLRBestellung b = (FLRBestellung) list.iterator().next();
            bestellungIId = b.getI_id();
        }

        Lieferant lieferant = em.find(Lieferant.class, importMonatbestellung.get(i).getLieferantIId());
        Partner partner = em.find(Partner.class, lieferant.getPartnerIId());

        if (bestellungIId == null) {

            BestellungDto bsdto = createBestellungDto(importMonatbestellung.get(i).getLieferantIId(),
                    theClientDto.getMandant(), theClientDto.getIDPersonal());

            try {
                BestellungtextDto bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr(
                        theClientDto.getMandant(), partner.getLocaleCNrKommunikation(),
                        MediaFac.MEDIAART_KOPFTEXT, theClientDto);
                if (bsText != null) {
                    bsdto.setBestelltextIIdKopftext(bsText.getIId());
                }
                bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr(
                        theClientDto.getMandant(), partner.getLocaleCNrKommunikation(),
                        MediaFac.MEDIAART_FUSSTEXT, theClientDto);
                if (bsText != null) {
                    bsdto.setBestelltextIIdFusstext(bsText.getIId());
                }
            } catch (RemoteException e1) {
                throwEJBExceptionLPRespectOld(e1);
            }

            bsdto.setDBelegdatum(new Date(cal.getTimeInMillis()));//
            bsdto.setDLiefertermin(new Timestamp(cal.getTimeInMillis()));

            bsdto.setCBez(projektTextMonatsbestellung);

            try {
                bestellungIId = getBestellungFac().createBestellung(bsdto, theClientDto);
            } catch (EJBExceptionLP e) {
                throw new EJBExceptionLP(e);
            } catch (RemoteException e) {
                throw new EJBExceptionLP(e);
            }

        }

        // Position anlegen
        try {
            BestellpositionDto bspos = createBestellPositionDto(bestellungIId,
                    importMonatbestellung.get(i).getLieferantIId(),
                    importMonatbestellung.get(i).getArtikelIId(), importMonatbestellung.get(i).getMenge(),
                    theClientDto);
            Integer bsPosIId = getBestellpositionFac().createBestellposition(bspos, theClientDto, null, null);

            // Wareneingang zu Verladedatum anlegen, wenn noch nicht
            // vorhanden

            if (iMonatsbestellungsart == 0) {
                Timestamp tVerladedatum = new java.sql.Timestamp(
                        importMonatbestellung.get(i).getWeDatum().getTime());

                Query query = em.createNamedQuery("WareneingangfindByBestellungIIdTWareneingangsdatum");
                query.setParameter(1, bestellungIId);
                query.setParameter(2, tVerladedatum);
                Collection<?> col = query.getResultList();

                Integer wareneingangId = null;

                if (col.size() > 0) {
                    Wareneingang we = (Wareneingang) col.iterator().next();
                    wareneingangId = we.getIId();
                } else {
                    WareneingangDto wedto = new WareneingangDto();
                    wedto.setBestellungIId(bestellungIId);
                    wedto.setCLieferscheinnr(importMonatbestellung.get(i).getLieferscheinnr());
                    wedto.setTLieferscheindatum(tVerladedatum);
                    wedto.setTWareneingangsdatum(tVerladedatum);
                    wedto.setLagerIId(lieferant.getLagerIIdZubuchungslager());
                    wedto.setNWechselkurs(new BigDecimal(1));
                    try {
                        wareneingangId = getWareneingangFac().createWareneingang(wedto, theClientDto);
                    } catch (RemoteException e) {
                        throw new EJBExceptionLP(e);
                    }
                }

                try {
                    WareneingangspositionDto weposDto = new WareneingangspositionDto();
                    weposDto.setBestellpositionIId(bsPosIId);
                    weposDto.setNGeliefertemenge(importMonatbestellung.get(i).getMenge());
                    weposDto.setPersonalIIdAendern(theClientDto.getIDPersonal());
                    weposDto.setPersonalIIdAnlegen(theClientDto.getIDPersonal());
                    weposDto.setTAendern(new Timestamp(System.currentTimeMillis()));
                    weposDto.setTAnlegen(weposDto.getTAendern());
                    weposDto.setWareneingangIId(wareneingangId);
                    BigDecimal nGeliefertpreis = bspos.getNNettogesamtpreis();
                    weposDto.setNGelieferterpreis(nGeliefertpreis);
                    getWareneingangFac().createWareneingangsposition(weposDto, theClientDto);

                    getBestellungFac().aktiviereBestellung(bestellungIId, theClientDto);

                    getBestellpositionFac().manuellAufVollstaendigGeliefertSetzen(bsPosIId, theClientDto);

                } catch (EJBExceptionLP e) {
                    throw new EJBExceptionLP(e);
                } catch (RemoteException e) {
                    throw new EJBExceptionLP(e);
                }
            }

        } catch (EJBExceptionLP e) {
            throw new EJBExceptionLP(e);
        } catch (RemoteException e) {
            throw new EJBExceptionLP(e);
        }
        session.close();
    }

}

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

License:Open Source License

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

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

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

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

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

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

License:Open Source License

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

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

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

    session = factory.openSession();

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

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

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

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

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

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

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

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

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

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

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

        }

        parameter.put("P_PROJEKTE", text);

    }

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

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

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

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

        if (bProjektklammer == true) {

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

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

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

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

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

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

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

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

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

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

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

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

            // PJ 14752

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

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

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

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

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

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

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

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

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

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

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

                }

                // PJ 14752

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

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

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

                data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring;

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

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

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

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

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

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

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

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

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

    closeSession(session);

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

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

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

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

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

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

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

    }

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

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

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

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

License:Open Source License

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;//from  w  ww.j a v  a 2s  .  c  om
    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.eingangsrechnung.ejbfac.EingangsrechnungReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printKontierungsjournal(TheClientDto theClientDto, int iFilterER, Integer kostenstelleIId,
        int iKritDatum, Date dVon, Date dBis, boolean bZusatzkosten) {
    Session session = null;//from ww  w. j  a  v  a  2s . c om
    try {
        this.useCase = UC_KONTIERUNG;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria cKontierung = session.createCriteria(FLREingangsrechnungKontierung.class);

        if (kostenstelleIId != null) {
            cKontierung.add(Restrictions.eq(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE + ".i_id",
                    kostenstelleIId));
        }
        // Filter nach ER-status
        Collection<String> cStati = new TreeSet<String>();
        if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_ALLE) {
            cStati.add(EingangsrechnungFac.STATUS_ANGELEGT);
            cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT);
            cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT);
            // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT);
        } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_BEZAHLT) {
            cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT);
        } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_OFFENE) {
            cStati.add(EingangsrechnungFac.STATUS_ANGELEGT);
            cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT);
            // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT);
        }

        Collection<String> cArten = new TreeSet<String>();

        if (bZusatzkosten) {
            cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN);

        } else {
            cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_ANZAHLUNG);
            cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_EINGANGSRECHNUNG);
            cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_GUTSCHRIFT);
            cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_SCHLUSSZAHLUNG);
        }

        String mandantCNr = theClientDto.getMandant();
        Criteria cEigangsrechnung = cKontierung
                .createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLREINGANGSRECHNUNG);

        if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) {
            cEigangsrechnung.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr))
                    .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dVon))
                    .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dBis))
                    .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati))
                    .add(Restrictions.in(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, cArten));
        } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) {
            cEigangsrechnung.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr))
                    .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dVon))
                    .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dBis))
                    .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati))
                    .add(Restrictions.in(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, cArten));
        }
        // Sortierung noch kostenstelle, konto
        cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE)
                .addOrder(Order.asc("c_nr"));
        cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKONTO).addOrder(Order.asc("c_nr"));

        List<?> listKontierung = cKontierung.list();
        ArrayList<ReportEingangsrechnungKontierungsjournalDto> coll = new ArrayList<ReportEingangsrechnungKontierungsjournalDto>();
        for (Iterator<?> iter = listKontierung.iterator(); iter.hasNext();) {
            FLREingangsrechnungKontierung item = (FLREingangsrechnungKontierung) iter.next();
            EingangsrechnungDto erDto = getEingangsrechnungFac()
                    .eingangsrechnungFindByPrimaryKey(item.getEingangsrechnung_i_id());
            ReportEingangsrechnungKontierungsjournalDto dto = new ReportEingangsrechnungKontierungsjournalDto();
            // Bezahlter Wert in Mandantenwaehrung
            BigDecimal bdBezahlt = getEingangsrechnungFac().getBezahltBetrag(erDto.getIId(), item.getI_id());
            dto.setBdBezahlt(bdBezahlt);

            dto.setBdBezahltFW(getEingangsrechnungFac().getBezahltBetragFw(erDto.getIId(), item.getI_id()));

            // Bezahlt Wert mit Kurs der ER in Mandantenwaehrung
            BigDecimal bdBezahltERKurs = getEingangsrechnungFac().getBezahltBetragFwKontierung(erDto.getIId(),
                    item.getI_id());
            if (bdBezahltERKurs != null) {
                bdBezahltERKurs = bdBezahltERKurs.multiply(erDto.getNKurs());
            }
            dto.setBdBezahltzuERKurs(bdBezahltERKurs);
            // Letztes Zahldatum
            EingangsrechnungzahlungDto letzteZahlung = getEingangsrechnungFac()
                    .getLetzteZahlung(erDto.getIId());
            Date dLetztesZahldatum = null;
            if (letzteZahlung != null) {
                dLetztesZahldatum = new Date(letzteZahlung.getTZahldatum().getTime());
            }
            dto.setDLetzesZahldatum(dLetztesZahldatum);
            // Errechneter Steuersatz
            // BigDecimal bdErrechneterSteuersatz = erDto
            // .getNUstBetrag()
            // .divide(erDto.getNBetrag().subtract(
            // erDto.getNUstBetrag()), 4,
            // BigDecimal.ROUND_HALF_EVEN).movePointRight(2);
            // dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz);

            dto.setWaehrungCNr(erDto.getWaehrungCNr());

            dto.setBdUst(item.getN_betrag_ust().multiply(erDto.getNKurs()).setScale(FinanzFac.NACHKOMMASTELLEN,
                    BigDecimal.ROUND_HALF_EVEN));
            dto.setBdUstFW(item.getN_betrag_ust());
            dto.setBdWert(item.getN_betrag().multiply(erDto.getNKurs()).setScale(FinanzFac.NACHKOMMASTELLEN,
                    BigDecimal.ROUND_HALF_EVEN));
            dto.setBdWertFW(item.getN_betrag());
            BigDecimal bdErrechneterSteuersatz = getMwstSatzVonBruttoBetragUndUst(erDto.getMandantCNr(),
                    new Timestamp(erDto.getDBelegdatum().getTime()), dto.getBdWert(), dto.getBdUst());
            // BigDecimal bdErrechneterSteuersatz = dto
            // .getBdUst()
            // .divide(dto.getBdWert().subtract(
            // dto.getBdUst()), 4,
            // BigDecimal.ROUND_HALF_EVEN).movePointRight(2);
            dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz);
            dto.setDEingangsrechnungsdatum(item.getFlreingangsrechnung().getT_belegdatum());
            dto.setSEingangsrechnungsnummer(item.getFlreingangsrechnung().getC_nr());
            dto.setSEingangsrechnungText(erDto.getCText());
            dto.setSEingangsrechnungWeartikel(erDto.getCWeartikel());
            dto.setSKontobezeichnung(item.getFlrkonto().getC_bez());
            dto.setSKontonummer(item.getFlrkonto().getC_nr());
            dto.setSKostenstelleBezeichnung(item.getFlrkostenstelle().getC_bez());
            dto.setSKostenstellenummer(item.getFlrkostenstelle().getC_nr());
            dto.setSLieferant(item.getFlreingangsrechnung().getFlrlieferant().getFlrpartner()
                    .getC_name1nachnamefirmazeile1());
            if (item.getFlrkonto().getFlrkontoart() != null) {
                dto.setSKontoart(getFinanzServiceFac().uebersetzeKontoartOptimal(
                        item.getFlrkonto().getFlrkontoart().getC_nr(), theClientDto.getLocUi(),
                        theClientDto.getLocMandant()));
            }
            coll.add(dto);
        }

        // jetzt noch die nicht mehrfach kontierten holen
        Criteria cER = session.createCriteria(FLREingangsrechnungReport.class);
        if (kostenstelleIId != null) {
            cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_FLRKOSTENSTELLE + ".i_id", kostenstelleIId));
        }
        if (bZusatzkosten) {
            cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR,
                    EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN));
        } else {
            cER.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR,
                    EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)));
        }

        if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) {
            cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr))
                    .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dVon))
                    .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dBis))
                    .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati));
        } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) {
            cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr))
                    .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dVon))
                    .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dBis))
                    .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati));
        }

        List<?> listER = cER.list();
        for (Iterator<?> iter = listER.iterator(); iter.hasNext();) {
            FLREingangsrechnungReport item = (FLREingangsrechnungReport) iter.next();
            EingangsrechnungDto erDto = getEingangsrechnungFac()
                    .eingangsrechnungFindByPrimaryKey(item.getI_id());
            if (erDto.getKostenstelleIId() != null) {
                ReportEingangsrechnungKontierungsjournalDto dto = new ReportEingangsrechnungKontierungsjournalDto();
                // Bezahlter Wert in Mandantenwaehrung
                BigDecimal bdBezahlt = getEingangsrechnungFac().getBezahltBetrag(erDto.getIId(), null);
                dto.setBdBezahlt(bdBezahlt);
                // Bezahlt Wert mit Kurs der ER in Mandantenwaehrung
                BigDecimal bdBezahltERKurs = getEingangsrechnungFac().getBezahltBetragFw(erDto.getIId(), null);

                if (bdBezahltERKurs != null) {

                    dto.setBdBezahltFW(new BigDecimal(bdBezahltERKurs.doubleValue()));

                    bdBezahltERKurs = bdBezahltERKurs.multiply(erDto.getNKurs());
                }
                dto.setBdBezahltzuERKurs(bdBezahltERKurs);
                // Letztes Zahldatum
                EingangsrechnungzahlungDto letzteZahlung = getEingangsrechnungFac()
                        .getLetzteZahlung(erDto.getIId());
                Date dLetztesZahldatum = null;
                if (letzteZahlung != null) {
                    dLetztesZahldatum = new Date(letzteZahlung.getTZahldatum().getTime());
                }
                dto.setBdERKurs(erDto.getNKurs());
                dto.setWaehrungCNr(erDto.getWaehrungCNr());
                dto.setDLetzesZahldatum(dLetztesZahldatum);
                // Werte
                dto.setBdUst(
                        erDto.getNUstBetrag().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN));
                dto.setBdWert(
                        erDto.getNBetrag().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN));

                dto.setBdUstFW(erDto.getNUstBetragfw().setScale(FinanzFac.NACHKOMMASTELLEN,
                        BigDecimal.ROUND_HALF_EVEN));
                dto.setBdWertFW(
                        erDto.getNBetragfw().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN));

                // Errechneter Steuersatz
                BigDecimal bdErrechneterSteuersatz = null;
                if (erDto.getNBetrag().subtract(erDto.getNUstBetrag()).doubleValue() == 0) {
                    bdErrechneterSteuersatz = new BigDecimal(100);
                } else {
                    // bdErrechneterSteuersatz = erDto
                    // .getNUstBetrag()
                    // .divide(erDto.getNBetrag().subtract(
                    // erDto.getNUstBetrag()), 4,
                    // BigDecimal.ROUND_HALF_EVEN)
                    // .movePointRight(2);
                    bdErrechneterSteuersatz = getMwstSatzVonBruttoBetragUndUst(erDto.getMandantCNr(),
                            new Timestamp(erDto.getDBelegdatum().getTime()), dto.getBdWert(), dto.getBdUst());
                }

                dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz);

                dto.setDEingangsrechnungsdatum(item.getT_belegdatum());
                dto.setSEingangsrechnungsnummer(item.getC_nr());
                dto.setSEingangsrechnungText(erDto.getCText());
                dto.setSEingangsrechnungWeartikel(erDto.getCWeartikel());
                dto.setSLieferantenrechnungsnummer(item.getC_lieferantenrechnungsnummer());
                dto.setDFreigabedatum(item.getT_freigabedatum());
                if (erDto.getKontoIId() != null) {
                    KontoDto kontoDto = getFinanzFac().kontoFindByPrimaryKey(erDto.getKontoIId());
                    dto.setSKontobezeichnung(kontoDto.getCBez());
                    dto.setSKontonummer(kontoDto.getCNr());
                    if (kontoDto.getKontoartCNr() != null) {
                        dto.setSKontoart(
                                getFinanzServiceFac().uebersetzeKontoartOptimal(kontoDto.getKontoartCNr(),
                                        theClientDto.getLocUi(), theClientDto.getLocMandant()));
                    }
                } else {

                    dto.setSKontobezeichnung(getTextRespectUISpr("er.kontierungfehlerhaft",
                            theClientDto.getMandant(), theClientDto.getLocUi()));
                    dto.setSKontonummer("ERR");
                }

                dto.setSKostenstelleBezeichnung(item.getFlrkostenstelle().getC_bez());
                dto.setSKostenstellenummer(item.getFlrkostenstelle().getC_nr());
                dto.setSLieferant(item.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1());

                if (item.getFlrlieferant().getKonto_i_id_kreditorenkonto() != null) {
                    KontoDto kredKontoDto = getFinanzFac()
                            .kontoFindByPrimaryKey(item.getFlrlieferant().getKonto_i_id_kreditorenkonto());
                    dto.setSKreditorennummer(kredKontoDto.getCNr());
                } else {
                    dto.setSKreditorennummer(null);
                }

                coll.add(dto);
            }
        }
        // Sortieren
        Collections.sort(coll, new ComparatorKontierungsjournal(Helper.SORTIERUNG_NACH_KOSTENSTELLE_UND_KONTO));

        data = new Object[coll.size()][KONTIERUNG_ANZAHL_FELDER];
        int i = 0;
        for (Iterator<ReportEingangsrechnungKontierungsjournalDto> iter = coll.iterator(); iter
                .hasNext(); i++) {
            ReportEingangsrechnungKontierungsjournalDto item = (ReportEingangsrechnungKontierungsjournalDto) iter
                    .next();
            data[i][KONTIERUNG_FELD_WERT_BEZAHLT] = item.getBdBezahlt();
            data[i][KONTIERUNG_FELD_WERT_UST] = item.getBdUst();
            data[i][KONTIERUNG_FELD_WERT] = item.getBdWert();

            data[i][KONTIERUNG_FELD_WERT_BEZAHLT_FW] = item.getBdBezahltFW();
            data[i][KONTIERUNG_FELD_WERT_UST_FW] = item.getBdUstFW();
            data[i][KONTIERUNG_FELD_WERT_FW] = item.getBdWertFW();
            data[i][KONTIERUNG_FELD_ER_KURS] = item.getBdERKurs();
            data[i][KONTIERUNG_FELD_WAEHRUNG_C_NR] = item.getWaehrungCNr();

            data[i][KONTIERUNG_FELD_ER_DATUM] = item.getDEingangsrechnungsdatum();
            data[i][KONTIERUNG_FELD_ER_C_NR] = item.getSEingangsrechnungsnummer();
            data[i][KONTIERUNG_FELD_ER_TEXT] = item.getSEingangsrechnungText();
            data[i][KONTIERUNG_FELD_ER_WEARTIKEL] = item.getSEingangsrechnungWeartikel();
            data[i][KONTIERUNG_FELD_KONTOART_C_NR] = item.getSKontoart();
            data[i][KONTIERUNG_FELD_KONTO_C_BEZ] = item.getSKontobezeichnung();
            data[i][KONTIERUNG_FELD_KONTO_C_NR] = item.getSKontonummer();
            data[i][KONTIERUNG_FELD_KOSTENSTELLE_C_BEZ] = item.getSKostenstelleBezeichnung();
            data[i][KONTIERUNG_FELD_KOSTENSTELLE_C_NR] = item.getSKostenstellenummer();
            data[i][KONTIERUNG_FELD_ER_LIEFERANT] = item.getSLieferant();
            data[i][KONTIERUNG_FELD_LETZTES_ZAHLDATUM] = item.getDLetzesZahldatum();
            data[i][KONTIERUNG_FELD_ERRECHNETER_STEUERSATZ] = item.getBdErrechneterSteuersatz();
            data[i][KONTIERUNG_FELD_LIEFERANTENRECHNUNGSNUMMER] = item.getSLieferantenrechnungsnummer();
            if (item.getDFreigabedatum() == null) {
                cKontierung = session.createCriteria(FLREingangsrechnungKontierung.class);

                if (kostenstelleIId != null) {
                    cKontierung.add(Restrictions
                            .eq(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE + ".i_id", kostenstelleIId));
                }

                // Filter nach ER-status
                cStati = new TreeSet<String>();
                if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_ALLE) {
                    cStati.add(EingangsrechnungFac.STATUS_ANGELEGT);
                    cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT);
                    cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT);
                    // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT);
                } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_BEZAHLT) {
                    cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT);
                } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_OFFENE) {
                    cStati.add(EingangsrechnungFac.STATUS_ANGELEGT);
                    cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT);
                    // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT);
                }
                mandantCNr = theClientDto.getMandant();

                if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) {
                    cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLREINGANGSRECHNUNG)
                            .add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr))
                            .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dVon))
                            .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dBis))
                            .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati));
                } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) {
                    cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLREINGANGSRECHNUNG)
                            .add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr))
                            .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dVon))
                            .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dBis))
                            .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati));
                }
                // Sortierung noch kostenstelle, konto
                cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE)
                        .addOrder(Order.asc("c_nr"));
                cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKONTO)
                        .addOrder(Order.asc("c_nr"));

                listKontierung = cKontierung.list();
                coll = new ArrayList<ReportEingangsrechnungKontierungsjournalDto>();
                for (Iterator<?> iter1 = listKontierung.iterator(); iter1.hasNext();) {
                    FLREingangsrechnungKontierung item1 = (FLREingangsrechnungKontierung) iter1.next();
                    EingangsrechnungDto erDto = getEingangsrechnungFac()
                            .eingangsrechnungFindByPrimaryKey(item1.getEingangsrechnung_i_id());
                    ReportEingangsrechnungKontierungsjournalDto dto = new ReportEingangsrechnungKontierungsjournalDto();

                    BigDecimal bdBezahlt = getEingangsrechnungFac().getBezahltBetrag(erDto.getIId(),
                            item1.getI_id());
                    dto.setBdBezahlt(bdBezahlt);
                    // Bezahlt Wert mit Kurs der ER in Mandantenwaehrung
                    BigDecimal bdBezahltERKurs = getEingangsrechnungFac().getBezahltBetragFw(erDto.getIId(),
                            item1.getI_id());
                    if (bdBezahltERKurs != null) {
                        dto.setBdBezahltFW(new BigDecimal(bdBezahltERKurs.doubleValue()));
                        bdBezahltERKurs = bdBezahltERKurs.multiply(erDto.getNKurs());
                    }
                    dto.setBdBezahltzuERKurs(bdBezahltERKurs);
                    // Letztes Zahldatum
                    EingangsrechnungzahlungDto letzteZahlung = getEingangsrechnungFac()
                            .getLetzteZahlung(erDto.getIId());
                    Date dLetztesZahldatum = null;
                    if (letzteZahlung != null) {
                        dLetztesZahldatum = new Date(letzteZahlung.getTZahldatum().getTime());
                    }
                    dto.setDLetzesZahldatum(dLetztesZahldatum);
                    // Errechneter Steuersatz
                    BigDecimal bdErrechneterSteuersatz = erDto.getNUstBetrag()
                            .divide(erDto.getNBetrag().subtract(erDto.getNUstBetrag()), 4,
                                    BigDecimal.ROUND_HALF_EVEN)
                            .movePointRight(2);
                    dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz);

                    dto.setBdUst(item1.getN_betrag_ust().multiply(erDto.getNKurs())
                            .setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN));
                    dto.setBdWert(item1.getN_betrag().multiply(erDto.getNKurs())
                            .setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN));

                    dto.setBdUstFW(item1.getN_betrag_ust().setScale(FinanzFac.NACHKOMMASTELLEN,
                            BigDecimal.ROUND_HALF_EVEN));
                    dto.setBdWertFW(item1.getN_betrag().setScale(FinanzFac.NACHKOMMASTELLEN,
                            BigDecimal.ROUND_HALF_EVEN));

                    dto.setWaehrungCNr(erDto.getWaehrungCNr());

                    dto.setDEingangsrechnungsdatum(item1.getFlreingangsrechnung().getT_belegdatum());
                    dto.setSEingangsrechnungsnummer(item1.getFlreingangsrechnung().getC_nr());
                    dto.setSEingangsrechnungText(erDto.getCText());
                    dto.setSEingangsrechnungWeartikel(erDto.getCWeartikel());
                    dto.setSKontobezeichnung(item1.getFlrkonto().getC_bez());
                    dto.setSKontonummer(item1.getFlrkonto().getC_nr());
                    dto.setSKostenstelleBezeichnung(item1.getFlrkostenstelle().getC_bez());
                    dto.setSKostenstellenummer(item1.getFlrkostenstelle().getC_nr());
                    dto.setSLieferant(item1.getFlreingangsrechnung().getFlrlieferant().getFlrpartner()
                            .getC_name1nachnamefirmazeile1());
                    if (item1.getFlrkonto().getFlrkontoart() != null) {
                        dto.setSKontoart(getFinanzServiceFac().uebersetzeKontoartOptimal(
                                item1.getFlrkonto().getFlrkontoart().getC_nr(), theClientDto.getLocUi(),
                                theClientDto.getLocMandant()));
                    }

                    if (erDto.getDFreigabedatum() != null) {
                        item.setDFreigabedatum(erDto.getDFreigabedatum());
                    }

                }
            }
            data[i][KONTIERUNG_FELD_ER_FREIGABEDATUM] = item.getDFreigabedatum();
            data[i][KONTIERUNG_FELD_WERT_BEZAHLT_ERKURS] = item.getBdBezahltzuERKurs();
            data[i][KONTIERUNG_FELD_KREDITORENNUMMER] = item.getSKreditorennummer();
        }
        // Datumsbereich
        StringBuffer sDatum = new StringBuffer();
        if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) {
            sDatum.append("Belegdatum ");
        } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) {
            sDatum.append("Freigabedatum ");
        }
        if (dVon != null) {
            sDatum.append("von " + Helper.formatDatum(dVon, theClientDto.getLocUi()));
        }
        if (dBis != null) {
            sDatum.append(" bis " + Helper.formatDatum(dBis, theClientDto.getLocUi()));
        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        mapParameter.put("P_DATUM", sDatum.toString());
        mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten));
        // Filter
        StringBuffer sFilter = new StringBuffer();
        if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_ALLE) {
            sFilter.append("Alle Eingangsrechnungen");
        } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_BEZAHLT) {
            sFilter.append("Bezahlte Eingangsrechnungen");
        } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_OFFENE) {
            sFilter.append("Offene Eingangsrechnungen");
        }
        sFilter.append(", ");
        if (kostenstelleIId == null) {
            sFilter.append("Alle Kostenstellen");
        } else {
            sFilter.append("Eine Kostenstelle");
        }
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());

        initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL,
                EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_KONTIERUNG, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printAlle(ReportJournalKriterienDto krit, TheClientDto theClientDto, boolean bZusatzkosten,
        boolean bDatumIstFreigabedatum) {
    Session session = null;/*  w ww. j a  v  a2 s .  c  o  m*/
    try {
        this.useCase = UC_ALLE;

        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLREingangsrechnungReport.class);
        c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, theClientDto.getMandant()));
        if (krit.kostenstelleIId != null) {
            c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
        }
        if (krit.lieferantIId != null) {
            c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_LIEFERANT_I_ID, krit.lieferantIId));
        }
        String sVon = null;
        String sBis = null;
        if (krit.dVon != null) {
            if (bDatumIstFreigabedatum) {
                c.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, krit.dVon));
            } else {
                c.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, krit.dVon));
            }
            sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi());
        }
        if (krit.dBis != null) {
            if (bDatumIstFreigabedatum) {
                c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, krit.dBis));
            } else {
                c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, krit.dBis));
            }
            sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi());
        }

        if (bZusatzkosten) {
            c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR,
                    EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN));
        } else {
            c.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR,
                    EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)));
        }

        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        if (krit.sBelegnummerVon != null) {
            sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerVon);
            c.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_C_NR, sVon));
        }
        if (krit.sBelegnummerBis != null) {
            sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerBis);
            c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_C_NR, sBis));
        }
        if (krit.bSortiereNachKostenstelle) {
            c.createCriteria(EingangsrechnungFac.FLR_ER_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            c.createCriteria(EingangsrechnungFac.FLR_ER_FLRLIEFERANT).createCriteria(LieferantFac.FLR_PARTNER)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
            c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR));
        } else {
            c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR));
        }

        List<?> list = c.list();
        data = new Object[list.size()][ALLE_ANZAHL_FELDER];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLREingangsrechnungReport e = (FLREingangsrechnungReport) iter.next();
            data[i][FELD_ALLE_AUSZUG] = getEingangsrechnungFac().getAuszugDerLetztenZahlung(e.getI_id());
            BankverbindungDto bvDto = getEingangsrechnungFac().getZuletztVerwendeteBankverbindung(e.getI_id());
            if (bvDto != null) {
                BankDto bankDto = getBankFac().bankFindByPrimaryKey(bvDto.getBankIId(), theClientDto);
                data[i][FELD_ALLE_BANK] = bankDto.getPartnerDto().getCName1nachnamefirmazeile1();
            }
            data[i][FELD_ALLE_BELEGDATUM] = e.getT_belegdatum();
            data[i][FELD_ALLE_BEZAHLTDATUM] = e.getT_bezahltdatum();
            data[i][FELD_ALLE_EINGANGSRECHNUNGSNUMMER] = e.getC_nr();
            data[i][FELD_ALLE_STATUS] = e.getStatus_c_nr();
            data[i][FELD_ALLE_FREIGABEDATUM] = e.getT_freigabedatum();
            data[i][FELD_ALLE_KOSTENSTELLENUMMER] = e.getFlrkostenstelle() != null
                    ? e.getFlrkostenstelle().getC_nr()
                    : "";
            data[i][FELD_ALLE_LIEFERANT] = e.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1();
            data[i][FELD_ALLE_TEXT] = e.getC_text();
            data[i][FELD_ALLE_WEARTIKEL] = e.getC_weartikel();
            data[i][FELD_ALLE_WERT] = e.getN_betrag();
            data[i][FELD_ALLE_KURS] = e.getN_kurs();
            data[i][FELD_ALLE_WAEHRUNG] = e.getWaehrung_c_nr();
            data[i][FELD_ALLE_ZOLLBELEGNUMMER] = e.getC_zollimportpapier();
            data[i][FELD_ALLE_WERTNETTO] = e.getN_betrag() != null
                    ? e.getN_betrag().subtract(e.getN_ustbetrag())
                    : null;
            data[i][FELD_ALLE_WERTUST] = e.getN_ustbetrag();

            data[i][FELD_ALLE_WERT_FW] = e.getN_betragfw();
            data[i][FELD_ALLE_WERTNETTO_FW] = e.getN_betragfw() != null
                    ? e.getN_betragfw().subtract(e.getN_ustbetragfw())
                    : null;
            data[i][FELD_ALLE_WERTUST_FW] = e.getN_ustbetragfw();

            data[i][FELD_ALLE_ZIELDATUM] = getMandantFac().berechneZielDatumFuerBelegdatum(
                    e.getT_freigabedatum(), e.getZahlungsziel_i_id(), theClientDto);
            data[i][FELD_ALLE_LAENDERART] = getFinanzServiceFac()
                    .getLaenderartZuPartner(e.getFlrlieferant().getFlrpartner().getI_id(), theClientDto);

            data[i][FELD_ALLE_ZAHLBETRAG] = getEingangsrechnungFac().getBezahltBetrag(e.getI_id(), null);

            data[i][FELD_ALLE_ZAHLBETRAG_FW] = getEingangsrechnungFac().getBezahltBetragFw(e.getI_id(), null);

            if (e.getFlrkonto() != null) {
                data[i][FELD_ALLE_KONTO] = e.getFlrkonto().getC_nr();
            }

            EingangsrechnungKontierungDto[] kontierungDtos = getEingangsrechnungFac()
                    .eingangsrechnungKontierungFindByEingangsrechnungIId(e.getI_id());

            if (kontierungDtos.length > 0) {
                String[] fieldnames = new String[] { "F_BETRAG", "F_USTBETRAG", "F_KOSTENSTELLE", "F_SACHKONTO",
                        "F_UST" };
                Object[][] dataSub = new Object[kontierungDtos.length][fieldnames.length];

                BigDecimal gesamtUst = new BigDecimal(0);

                for (int j = 0; j < kontierungDtos.length; j++) {
                    dataSub[j][0] = kontierungDtos[j].getNBetrag();
                    dataSub[j][1] = kontierungDtos[j].getNBetragUst();

                    gesamtUst = gesamtUst.add(kontierungDtos[j].getNBetragUst());

                    dataSub[j][2] = getSystemFac()
                            .kostenstelleFindByPrimaryKey(kontierungDtos[j].getKostenstelleIId()).getCNr();
                    dataSub[j][3] = getFinanzFac().kontoFindByPrimaryKeySmall(kontierungDtos[j].getKontoIId())
                            .getCNr();
                    dataSub[j][4] = new BigDecimal(getMandantFac()
                            .mwstsatzFindByPrimaryKey(kontierungDtos[j].getMwstsatzIId(), theClientDto)
                            .getFMwstsatz());
                }

                data[i][FELD_ALLE_KONTIERUNG] = new LPDatenSubreport(dataSub, fieldnames);

                data[i][FELD_ALLE_WERTUST] = gesamtUst;

            } else {
                data[i][FELD_ALLE_UST] = getMwstSatzVonBruttoBetragUndUst(e.getMandant_c_nr(),
                        new Timestamp(e.getT_belegdatum().getTime()), e.getN_betrag(), e.getN_ustbetrag());
            }

            // Debitorenkontonummer
            KontoDtoSmall kontoDtoKred = getFinanzFac()
                    .kontoFindByPrimaryKeySmallOhneExc(e.getFlrlieferant().getKonto_i_id_kreditorenkonto());
            String sKontonummer;
            if (kontoDtoKred != null) {
                sKontonummer = kontoDtoKred.getCNr();
            } else {
                sKontonummer = "";
            }
            data[i][FELD_ALLE_KREDITORENKONTO] = sKontonummer;
            i++;
        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);
        // Waehrung
        mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr());

        mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten));
        mapParameter.put("P_AUSWERTUNG_NACH_FREIGABEDATUM", new Boolean(bDatumIstFreigabedatum));

        StringBuffer sSortierung = new StringBuffer();
        // Sortierung nach Kostenstelle
        mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        // Sortieung nach Lieferant
        mapParameter.put(LPReport.P_SORTIERENACHLIEFERANT,
                new Boolean(krit.iSortierung == krit.KRIT_SORT_NACH_PARTNER));
        if (krit.iSortierung == krit.KRIT_SORT_NACH_PARTNER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.lieferant", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == krit.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(getTextRespectUISpr("er.eingangsrechnungsnummer", 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());
        }
        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());
        initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL,
                EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_ALLE, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public ArrayList<Integer> erledigteLoseImZeitraumNachkalkulieren(java.sql.Date tVon, java.sql.Date tBis,
        TheClientDto theClientDto) {//from   ww w. ja v a 2  s  .  c  o m
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = factory.openSession();
    Criteria c = session.createCriteria(FLRLosablieferung.class);

    c.add(Restrictions.ge(FertigungFac.FLR_LOSABLIEFERUNG_T_AENDERN, tVon));

    c.add(Restrictions.lt(FertigungFac.FLR_LOSABLIEFERUNG_T_AENDERN, tBis));

    List<?> results = c.list();
    ArrayList<Integer> al = new ArrayList<Integer>();

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

    while (resultListIterator.hasNext()) {
        FLRLosablieferung los = (FLRLosablieferung) resultListIterator.next();

        if (!bereitsNachkalkuliert.containsKey(los.getLos_i_id())) {
            try {
                getFertigungFac().aktualisiereNachtraeglichPreiseAllerLosablieferungen(los.getLos_i_id(),
                        theClientDto, true);
            } catch (RemoteException e) {
                throwEJBExceptionLPRespectOld(e);
            }
        }
        bereitsNachkalkuliert.put(los.getLos_i_id(), "");

    }

    return al;
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printAlle(ReportJournalKriterienDto krit, boolean bNurAngelegte,
        Integer fertigungsgruppeIId, TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;//from   w w  w. j av a  2  s.  c  o m
    try {
        this.useCase = UC_ALLE;
        this.index = -1;
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLosReport.class);
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
        if (krit.kostenstelleIId != null) {
            c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
        }
        if (bNurAngelegte) {
            c.add(Restrictions.eq(FertigungFac.FLR_LOS_STATUS_C_NR, LocaleFac.STATUS_ANGELEGT));
        }
        if (fertigungsgruppeIId != null) {
            c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId));

            FertigungsgruppeDto fertigungsgruppeDto = getStuecklisteFac()
                    .fertigungsgruppeFindByPrimaryKey(fertigungsgruppeIId);
            mapParameter.put("P_FERTIGUNGSGRUPPE", fertigungsgruppeDto.getCBez());
        }

        String sVon = null;
        String sBis = null;
        if (krit.dVon != null) {
            c.add(Restrictions.ge(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dVon));
            sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi());
        }
        if (krit.dBis != null) {
            c.add(Restrictions.le(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dBis));
            sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi());
        }
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        if (krit.sBelegnummerVon != null) {
            sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerVon);
            c.add(Restrictions.ge(FertigungFac.FLR_LOS_C_NR, sVon));
        }
        if (krit.sBelegnummerBis != null) {
            sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerBis);
            c.add(Restrictions.le(FertigungFac.FLR_LOS_C_NR, sBis));
        }
        if (krit.bSortiereNachKostenstelle) {
            c.createCriteria(FertigungFac.FLR_LOSREPORT_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
        }
        // if (krit.iSortierung ==
        // ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
        // c.createCriteria(FertigungFac.FLR_ER_FLRLIEFERANT).createCriteria(
        // LieferantFac.
        // FLR_PARTNER).addOrder(Order.asc(PartnerFac.
        // FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
        // }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            c.createCriteria(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG)
                    .createCriteria(AuftragFac.FLR_AUFTRAG_FLRKUNDE).createCriteria(KundeFac.FLR_PARTNER)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR));
        }
        List<Object> list = c.list();
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            Criteria c2 = session.createCriteria(FLRLosReport.class);
            c2.add(Restrictions.isNull(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG));
            c2.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
            if (krit.kostenstelleIId != null) {
                c2.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
            }
            if (bNurAngelegte) {
                c2.add(Restrictions.eq(FertigungFac.FLR_LOS_STATUS_C_NR, LocaleFac.STATUS_ANGELEGT));
            }
            if (fertigungsgruppeIId != null) {
                c2.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId));
            }
            if (krit.dVon != null) {
                c2.add(Restrictions.ge(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dVon));
            }
            if (krit.dBis != null) {
                c2.add(Restrictions.le(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dBis));
            }
            List<?> list2 = c2.list();
            Iterator<?> iter2 = list2.iterator();
            while (iter2.hasNext()) {
                list.add(iter2.next());
            }
        }

        data = new Object[list.size()][ALLE_FELDANZAHL];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLosReport los = (FLRLosReport) iter.next();
            LossollarbeitsplanDto[] sollaz = getFertigungFac().lossollarbeitsplanFindByLosIId(los.getI_id());
            BigDecimal bdArbeitszeitIstmenge = new BigDecimal(0);
            BigDecimal bdArbeitszeitSollmenge = new BigDecimal(0);
            BigDecimal bdArbeitszeitIstpreis = new BigDecimal(0);
            BigDecimal bdArbeitszeitSollpreis = new BigDecimal(0);
            for (int j = 0; j < sollaz.length; j++) {
                bdArbeitszeitSollmenge = bdArbeitszeitSollmenge.add(sollaz[j].getNGesamtzeit());
                ArtikellieferantDto artikellieferantDto = getArtikelFac().getArtikelEinkaufspreis(
                        sollaz[j].getArtikelIIdTaetigkeit(), new BigDecimal(1),
                        theClientDto.getSMandantenwaehrung(), theClientDto);
                BigDecimal bdEinzelpreis;
                if (artikellieferantDto != null) {
                    bdEinzelpreis = artikellieferantDto.getNEinzelpreis();
                } else {
                    bdEinzelpreis = new BigDecimal(0);
                }
                bdArbeitszeitSollpreis = bdArbeitszeitSollpreis
                        .add(sollaz[j].getNGesamtzeit().multiply(bdEinzelpreis));
            }
            AuftragzeitenDto[] zeiten = getZeiterfassungFac().getAllZeitenEinesBeleges(LocaleFac.BELEGART_LOS,
                    los.getI_id(), null, null, null, null, false, false, theClientDto);
            for (int j = 0; j < zeiten.length; j++) {
                bdArbeitszeitIstmenge = bdArbeitszeitIstmenge
                        .add(new BigDecimal(zeiten[j].getDdDauer().doubleValue()));
                bdArbeitszeitIstpreis = bdArbeitszeitIstpreis.add(zeiten[j].getBdKosten());
            }
            data[i][ALLE_ARBEITSZEITISTMENGE] = bdArbeitszeitIstmenge;
            data[i][ALLE_ARBEITSZEITISTPREIS] = bdArbeitszeitIstpreis;
            data[i][ALLE_ARBEITSZEITSOLLMENGE] = bdArbeitszeitSollmenge;
            data[i][ALLE_ARBEITSZEITSOLLPREIS] = bdArbeitszeitSollpreis;
            if (los.getFlrstueckliste() != null) {
                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                        los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                data[i][ALLE_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                if (artikelDto.getArtikelsprDto().getCZbez() != null) {
                    data[i][ALLE_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                } else {
                    data[i][ALLE_ZUSATZBEZEICHNUNG] = "";
                }
                data[i][ALLE_IDENT] = los.getFlrstueckliste().getFlrartikel().getC_nr();
                data[i][ALLE_OFFENERAHMENRESERVIERUNGEN] = getReservierungFac()
                        .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);
            } else {
                data[i][ALLE_BEZEICHNUNG] = los.getC_projekt();
                data[i][ALLE_BEZEICHNUNG] = null;
                data[i][ALLE_IDENT] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(),
                        theClientDto.getLocUi());
                data[i][ALLE_OFFENERAHMENRESERVIERUNGEN] = new BigDecimal(0);
            }
            data[i][ALLE_LOSNUMMER] = los.getC_nr();
            LossollmaterialDto[] sollmat = getFertigungFac().lossollmaterialFindByLosIId(los.getI_id());
            BigDecimal bdMaterialIstmenge = new BigDecimal(0);
            BigDecimal bdMaterialSollmenge = new BigDecimal(0);
            BigDecimal bdMaterialIstpreis = new BigDecimal(0);
            BigDecimal bdMaterialSollpreis = new BigDecimal(0);
            for (int j = 0; j < sollmat.length; j++) {
                BigDecimal bdAusgegebeneMenge = getFertigungFac().getAusgegebeneMenge(sollmat[j].getIId(), null,
                        theClientDto);
                bdMaterialIstmenge = bdMaterialIstmenge.add(bdAusgegebeneMenge);
                bdMaterialSollmenge = bdMaterialSollmenge.add(sollmat[j].getNMenge());
                bdMaterialIstpreis = bdMaterialIstpreis.add(bdAusgegebeneMenge.multiply(
                        getFertigungFac().getAusgegebeneMengePreis(sollmat[j].getIId(), null, theClientDto)));
                bdMaterialSollpreis = bdMaterialSollpreis
                        .add(sollmat[j].getNMenge().multiply(sollmat[j].getNSollpreis()));
            }
            data[i][ALLE_MATERIALISTMENGE] = bdMaterialIstmenge;
            data[i][ALLE_MATERIALISTPREIS] = bdMaterialIstpreis;
            data[i][ALLE_MATERIALSOLLMENGE] = bdMaterialSollmenge;
            data[i][ALLE_MATERIALSOLLPREIS] = bdMaterialSollpreis;
            data[i][ALLE_BEGINNTERMIN] = los.getT_produktionsbeginn();
            data[i][ALLE_LOSGROESSE] = los.getN_losgroesse();
            if (los.getFlrauftrag() != null) {
                data[i][ALLE_AUFTRAGLIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                data[i][ALLE_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                if (los.getFlrauftrag().getFlrkunde() != null) {
                    if (los.getFlrauftrag().getFlrkunde().getFlrpartner() != null) {
                        data[i][ALLE_KUNDE] = los.getFlrauftrag().getFlrkunde().getFlrpartner()
                                .getC_name1nachnamefirmazeile1();
                    } else {
                        data[i][ALLE_KUNDE] = "";
                    }
                } else {
                    data[i][ALLE_KUNDE] = "";
                }
            } else {
                data[i][ALLE_AUFTRAGSNUMMER] = "";
                data[i][ALLE_AUFTRAGLIEFERTERMIN] = null;
            }
            if (los.getFlrfertigungsgruppe() != null) {
                data[i][ALLE_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
            } else {
                data[i][ALLE_FERTIGUNGSGRUPPE] = "";
            }
        }

        StringBuffer sSortierung = new StringBuffer();
        // Sortierung nach Kostenstelle
        sSortierung.append(
                getTextRespectUISpr("lp.sortierungnach", theClientDto.getMandant(), theClientDto.getLocUi())
                        + ": ");
        mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        // Sortieung nach Kunde
        mapParameter.put(LPReport.P_SORTIERENACHKUNDE,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.losnr", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        StringBuffer sFilter = new StringBuffer();
        sFilter.append(
                getTextRespectUISpr("lp.filter", theClientDto.getMandant(), theClientDto.getLocUi()) + ": ");
        if (bNurAngelegte) {
            sFilter.append(getTextRespectUISpr("lp.nichtausgegebene", theClientDto.getMandant(),
                    theClientDto.getLocUi()) + ", ");
        }
        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());
        }
        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put("P_VON", krit.dVon);
        mapParameter.put("P_BIS", krit.dBis);
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());
        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_ALLE,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException t) {
        throwEJBExceptionLPRespectOld(t);
        return null;
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printOffene(java.sql.Date dStichtag, int iOptionStichtag, String belegNrVon,
        String belegNrBis, Integer kundeIId, Integer kostenstelleIId, Integer fertigungsgruppeIId,
        int iSortierung, TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;/*w  w w. j a  v a2  s . c  o  m*/

    try {
        this.useCase = UC_OFFENE;
        this.index = -1;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLosReport.class);
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
        Map<String, Object> mapParameter = new TreeMap<String, Object>();

        if (kostenstelleIId != null) {
            KostenstelleDto kostenstelleDto = getSystemFac().kostenstelleFindByPrimaryKey(kostenstelleIId);
            mapParameter.put("P_KOSTENSTELLE", kostenstelleDto.formatKostenstellenbezeichnung());

            c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, kostenstelleIId));
        }
        boolean flrAuftragSchonVerwendet = false;
        if (kundeIId != null) {
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto);
            mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatFixTitelName1Name2());
            c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
            flrAuftragSchonVerwendet = true;
            c.add(Restrictions.eq("a." + AuftragFac.FLR_AUFTRAG_KUNDE_I_ID_AUFTRAGSADRESSE, kundeIId));
        }
        if (fertigungsgruppeIId != null) {
            c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId));
        }

        String[] stati = new String[4];
        stati[0] = LocaleFac.STATUS_AUSGEGEBEN;
        stati[1] = LocaleFac.STATUS_IN_PRODUKTION;
        stati[2] = LocaleFac.STATUS_TEILERLEDIGT;
        stati[3] = LocaleFac.STATUS_ANGELEGT;

        c.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati));

        if (dStichtag != null) {

            dStichtag = Helper.cutDate(dStichtag);

            // PJ 14420
            mapParameter.put("P_STICHTAG", dStichtag);

            Calendar cal = Calendar.getInstance();
            cal.setTimeInMillis(dStichtag.getTime());
            cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 1);

            dStichtag = new java.sql.Date(cal.getTimeInMillis());

            String datumsart = "";

            if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) {
                c.add(Restrictions.lt(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, dStichtag));

                datumsart = getTextRespectUISpr("lp.begintermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                c.add(Restrictions.lt(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE, dStichtag));
                datumsart = getTextRespectUISpr("lp.endetermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                if (flrAuftragSchonVerwendet == false) {
                    c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                    flrAuftragSchonVerwendet = true;
                    c.add(Restrictions.lt("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN, dStichtag));

                }
                datumsart = getTextRespectUISpr("bes.liefertermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            }

            mapParameter.put("P_DATUMSART", datumsart);

        }
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        if (belegNrVon != null) {
            String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrVon);
            c.add(Restrictions.ge(FertigungFac.FLR_LOS_C_NR, sVon));
            mapParameter.put("P_LOSNRVON", sVon);
        }
        if (belegNrBis != null) {
            String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrBis);
            c.add(Restrictions.le(FertigungFac.FLR_LOS_C_NR, sBis));
            mapParameter.put("P_LOSNRBIS", sBis);
        }

        // Sortierung
        if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KOSTENSTELLE) {
            c.createCriteria(FertigungFac.FLR_LOSREPORT_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDE) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN);
            c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN);

            c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));
            c.addOrder(Order.asc("k.i_id"));

            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDEUNDGEWAEHLTERTERMIN) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN);
            c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN);

            c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));

            if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) {
                c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN));
            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE));
            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                c.addOrder(Order.asc("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN));
            }

            mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("fert.kundeundtermin", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_LIEFERTERMIN) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.createAlias("a." + AuftragFac.FLR_AUFTRAG_FLRKUNDE, "k", CriteriaSpecification.LEFT_JOIN);
            c.createAlias("k." + KundeFac.FLR_PARTNER, "p", CriteriaSpecification.LEFT_JOIN);

            c.addOrder(Order.asc("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN));
            c.addOrder(Order.asc("p." + PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));

            mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("fert.liefertermin", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ARTIKEL) {
            c.createAlias(FertigungFac.FLR_LOS_FLRSTUECKLISTE, "s");
            c.createAlias("s." + StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL, "art");
            c.addOrder(Order.asc("art.c_nr"));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_FERTIGUNGSGRUPPE) {
            c.createAlias(FertigungFac.FLR_LOSREPORT_FLRFERTIGUNGSGRUPPE, "f");
            c.addOrder(Order.asc("f.c_bez"));
            mapParameter.put(P_SORTIERUNG, getTextRespectUISpr("lp.fertigungsgruppe", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_BEGINN) {
            c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.beginn", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ENDE) {
            c.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE));
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.ende", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else {
            mapParameter.put(P_SORTIERUNG,
                    getTextRespectUISpr("lp.losnr", theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        // 2tes sortierkriterium immer Losnr

        if (iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_BEGINN
                || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_ENDE
                || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_LIEFERTERMIN
                || iSortierung == FertigungReportFac.OFFENE_OPTION_SORTIERUNG_KUNDEUNDGEWAEHLTERTERMIN) {
            if (flrAuftragSchonVerwendet == false) {
                c.createAlias(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
                flrAuftragSchonVerwendet = true;
            }
            c.addOrder(Order.asc("a.c_nr"));
        } else {

            c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR));
        }

        List<?> list = c.list();
        data = new Object[list.size()][OFFENE_SPALTENANZAHL];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLosReport los = (FLRLosReport) iter.next();

            if (los.getFlrauftrag() != null) {

                Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto);
                data[i][OFFENE_KUNDE] = partnerDto.formatFixTitelName1Name2();
                data[i][OFFENE_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
            }

            if (los.getFlrauftrag() != null) {
                data[i][OFFENE_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                data[i][OFFENE_PROJEKT] = los.getFlrauftrag().getC_bez();
                data[i][OFFENE_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
            }
            BigDecimal bdGeliefert = new BigDecimal(0);
            for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                bdGeliefert = bdGeliefert.add(item.getN_menge());
            }
            data[i][OFFENE_GELIEFERT] = bdGeliefert;
            if (los.getFlrstueckliste() != null) {
                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                        los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                data[i][OFFENE_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                data[i][OFFENE_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                data[i][OFFENE_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr();

                data[i][OFFENE_DETAILBEDARF] = getRahmenbedarfeFac()
                        .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                // Offene Fehlmengen
                data[i][OFFENE_FEHLMENGE] = getFehlmengeFac()
                        .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                        .lossollarbeitsplanFindByLosIId(los.getI_id());

                BigDecimal bdFertigungszeit = new BigDecimal(0);
                for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                    bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit());
                }
                data[i][OFFENE_FERTIGUNGSZEIT] = bdFertigungszeit;

                // Rahmenbestellt
                Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                        .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                    BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                            .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                    data[i][OFFENE_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                }
                data[i][OFFENE_RESERVIERUNGEN] = getReservierungFac()
                        .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                data[i][OFFENE_RAHMENRESERVIERUNGEN] = getReservierungFac()
                        .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

            } else {
                data[i][OFFENE_BEZEICHNUNG] = los.getC_projekt();
                data[i][OFFENE_ZUSATZBEZEICHNUNG] = null;
                data[i][OFFENE_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                        theClientDto.getMandant(), theClientDto.getLocUi());
            }

            GregorianCalendar gc = new GregorianCalendar();
            gc.setTime(los.getT_produktionsbeginn());
            data[i][OFFENE_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
            data[i][OFFENE_LOSGROESSE] = los.getN_losgroesse();
            data[i][OFFENE_LOSNUMMER] = los.getC_nr();
            data[i][OFFENE_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
            /**
             * @todo material PJ 4239
             */
            data[i][OFFENE_MATERIAL] = null;
            data[i][OFFENE_BEGINN] = los.getT_produktionsbeginn();
            data[i][OFFENE_ENDE] = los.getT_produktionsende();
            data[i][OFFENE_LOSSTATUS] = los.getStatus_c_nr();

            // PJ 15009

            String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                    + los.getI_id() + " AND flrfehlmenge.n_menge>0";
            Session session2 = FLRSessionFactory.getFactory().openSession();
            Query query = session2.createQuery(queryf);
            List<?> results = query.list();

            data[i][OFFENE_LOSHATFEHLMENGE] = new Boolean(false);
            if (results.size() > 0) {
                BigDecimal bd = (BigDecimal) results.iterator().next();

                if (bd != null && bd.doubleValue() > 0) {
                    data[i][OFFENE_LOSHATFEHLMENGE] = new Boolean(true);
                }
            }
            session2.close();
        }

        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_OFFENE,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (Exception t) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t);
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printOffeneArbeitsgaenge(java.sql.Date dStichtag, int iOptionStichtag, String belegNrVon,
        String belegNrBis, Integer kundeIId, Integer kostenstelleIId, Integer fertigungsgruppeIId,
        Integer artikelgruppeIId, Integer maschineIId, boolean bSollstundenbetrachtung,
        TheClientDto theClientDto) {/*from   ww w  .ja v  a 2 s  . co m*/
    Session session = null;

    try {
        this.useCase = UC_OFFENE_AG;
        this.index = -1;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLossollarbeitsplan.class);

        c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRLOS, "l", CriteriaSpecification.LEFT_JOIN);

        c.add(Restrictions.eq("l." + FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));

        c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_B_FERTIG, Helper.boolean2Short(false)));

        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        mapParameter.put("P_SOLLSTUNDENBETRACHTUNG", new Boolean(bSollstundenbetrachtung));
        if (artikelgruppeIId != null) {
            c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL, "artikel",
                    CriteriaSpecification.LEFT_JOIN);
            c.createAlias("artikel." + ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE, "artikelgruppe",
                    CriteriaSpecification.LEFT_JOIN);
            c.add(Restrictions.eq("artikelgruppe.i_id", artikelgruppeIId));

            ArtgruDto artgruDto = getArtikelFac().artgruFindByPrimaryKey(artikelgruppeIId, theClientDto);

            mapParameter.put("P_ARTIKELGRUPPE", artgruDto.getBezeichnung());
        }

        /*
         * if (kostenstelleIId != null) { KostenstelleDto kostenstelleDto =
         * getSystemFac() .kostenstelleFindByPrimaryKey(kostenstelleIId);
         * mapParameter.put("P_KOSTENSTELLE",
         * kostenstelleDto.formatKostenstellenbezeichnung());
         * 
         * c.add(Restrictions.eq("l." +
         * FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, kostenstelleIId));
         * }
         */
        boolean flrAuftragSchonVerwendet = false;
        if (kundeIId != null) {
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto);
            mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatFixTitelName1Name2());
            c.createAlias("l." + FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a", CriteriaSpecification.LEFT_JOIN);
            flrAuftragSchonVerwendet = true;
            c.add(Restrictions.eq("a." + AuftragFac.FLR_AUFTRAG_KUNDE_I_ID_AUFTRAGSADRESSE, kundeIId));
        }

        String[] stati = new String[4];
        stati[0] = LocaleFac.STATUS_AUSGEGEBEN;
        stati[1] = LocaleFac.STATUS_IN_PRODUKTION;
        stati[2] = LocaleFac.STATUS_TEILERLEDIGT;
        stati[3] = LocaleFac.STATUS_ANGELEGT;

        c.add(Restrictions.in("l." + FertigungFac.FLR_LOS_STATUS_C_NR, stati));

        if (dStichtag != null) {

            dStichtag = Helper.cutDate(dStichtag);

            // PJ 14420
            mapParameter.put("P_STICHTAG", dStichtag);

            Calendar cal = Calendar.getInstance();
            cal.setTimeInMillis(dStichtag.getTime());
            cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 1);

            dStichtag = new java.sql.Date(cal.getTimeInMillis());

            String datumsart = "";

            if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_BEGINNDATUM) {
                c.add(Restrictions.lt("l." + FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, dStichtag));

                datumsart = getTextRespectUISpr("lp.begintermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                c.add(Restrictions.lt("l." + FertigungFac.FLR_LOS_T_PRODUKTIONSENDE, dStichtag));
                datumsart = getTextRespectUISpr("lp.endetermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                if (flrAuftragSchonVerwendet == false) {
                    c.createAlias("l." + FertigungFac.FLR_LOSREPORT_FLRAUFTRAG, "a",
                            CriteriaSpecification.LEFT_JOIN);
                    flrAuftragSchonVerwendet = true;
                    c.add(Restrictions.lt("a." + AuftragFac.FLR_AUFTRAG_T_LIEFERTERMIN, dStichtag));

                }
                datumsart = getTextRespectUISpr("bes.liefertermin", theClientDto.getMandant(),
                        theClientDto.getLocUi());

            }

            mapParameter.put("P_DATUMSART", datumsart);

        }
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        if (belegNrVon != null) {
            String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrVon);
            c.add(Restrictions.ge("l." + FertigungFac.FLR_LOS_C_NR, sVon));
            mapParameter.put("P_LOSNRVON", sVon);
        }
        if (belegNrBis != null) {
            String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                    sMandantKuerzel, belegNrBis);
            c.add(Restrictions.le("l." + FertigungFac.FLR_LOS_C_NR, sBis));
            mapParameter.put("P_LOSNRBIS", sBis);
        }

        if (maschineIId != null) {
            MaschineDto mDto = getZeiterfassungFac().maschineFindByPrimaryKey(maschineIId);
            c.add(Restrictions.eq("maschine_i_id", maschineIId));
            mapParameter.put("P_MASCHINE", mDto.getBezeichnung());
        }

        List<?> list = c.list();
        data = new Object[list.size()][OFFENE_AG_SPALTENANZAHL];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLossollarbeitsplan a = (FLRLossollarbeitsplan) iter.next();
            FLRLos los = a.getFlrlos();
            if (fertigungsgruppeIId != null && kostenstelleIId != null) {
                if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()
                        && los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                    i--;
                } else {
                    // skip
                }
            } else if (fertigungsgruppeIId != null && kostenstelleIId == null) {
                if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()) {
                    i--;
                } else {
                    // skip
                }
            } else if (fertigungsgruppeIId == null && kostenstelleIId != null) {
                if (los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                    i--;
                } else {
                    // skip
                }
            }
        }
        if (fertigungsgruppeIId != null || kostenstelleIId != null) {
            data = new Object[i][OFFENE_AG_SPALTENANZAHL];
        }
        i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLossollarbeitsplan a = (FLRLossollarbeitsplan) iter.next();
            FLRLos los = a.getFlrlos();
            if (fertigungsgruppeIId != null && kostenstelleIId != null) {
                if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()
                        && los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                    i--;
                } else {
                    data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                    data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                    data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                    ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(),
                            theClientDto);
                    data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                    if (Helper.short2boolean(a.getB_fertig())) {
                        data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                    } else {

                        data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                    }

                    if (bSollstundenbetrachtung == true) {
                        data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                                LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null,
                                theClientDto);

                    }

                    if (a.getFlrmaschine() != null) {
                        data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                        data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                                .getC_identifikationsnr();
                        data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine()
                                .getC_inventarnummer();
                    }

                    if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                        data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe()
                                .getC_nr();
                    } else {
                        data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                    }

                    if (a.getI_maschinenversatztage() != null) {
                        data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                                (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                    } else {
                        data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                    }

                    if (los.getFlrauftrag() != null) {

                        Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                        PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId,
                                theClientDto);
                        data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                        data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                    }

                    if (los.getFlrauftrag() != null) {
                        data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                        data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                        data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                    }
                    BigDecimal bdGeliefert = new BigDecimal(0);
                    for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                        FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                        bdGeliefert = bdGeliefert.add(item.getN_menge());
                    }
                    data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                    if (los.getFlrstueckliste() != null) {
                        ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                                los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                        data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                        data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                        data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr();

                        data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                                .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                        // Offene Fehlmengen
                        data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                                .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                        LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                                .lossollarbeitsplanFindByLosIId(los.getI_id());

                        BigDecimal bdFertigungszeit = new BigDecimal(0);
                        for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                            bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit());
                        }
                        data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                        // Rahmenbestellt
                        Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                                .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                        if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                            BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                    .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                            data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                        }
                        data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                                .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                        data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                                .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                    } else {
                        data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                        data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                        data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                                theClientDto.getMandant(), theClientDto.getLocUi());
                    }

                    GregorianCalendar gc = new GregorianCalendar();
                    gc.setTime(los.getT_produktionsbeginn());
                    data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                    data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                    data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                    data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                    /**
                     * @todo material PJ 4239
                     */
                    data[i][OFFENE_AG_MATERIAL] = null;
                    data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                    data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                    data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                    // PJ 15009

                    String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                            + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                    Session session2 = FLRSessionFactory.getFactory().openSession();
                    Query query = session2.createQuery(queryf);
                    List<?> results = query.list();

                    data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                    if (results.size() > 0) {
                        BigDecimal bd = (BigDecimal) results.iterator().next();

                        if (bd != null && bd.doubleValue() > 0) {
                            data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                        }
                    }
                    session2.close();
                }
            } else if (fertigungsgruppeIId != null || kostenstelleIId != null) {
                if (fertigungsgruppeIId != null) {
                    if (los.getFertigungsgruppe_i_id().intValue() != fertigungsgruppeIId.intValue()) {
                        i--;
                    } else {
                        data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                        data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                        data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                        ArtikelDto aDto = getArtikelFac()
                                .artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto);
                        data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                        if (Helper.short2boolean(a.getB_fertig())) {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                        } else {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                        }

                        if (bSollstundenbetrachtung == true) {
                            data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                                    LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null,
                                    theClientDto);

                        }

                        if (a.getFlrmaschine() != null) {
                            data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                            data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                                    .getC_identifikationsnr();
                            data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine()
                                    .getC_inventarnummer();
                        }

                        if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe()
                                    .getC_nr();
                        } else {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                        }

                        if (a.getI_maschinenversatztage() != null) {
                            data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                                    (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                        } else {
                            data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                        }

                        if (los.getFlrauftrag() != null) {

                            Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId,
                                    theClientDto);
                            data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                            data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                        }

                        if (los.getFlrauftrag() != null) {
                            data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                            data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                            data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                        }
                        BigDecimal bdGeliefert = new BigDecimal(0);
                        for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                            FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                            bdGeliefert = bdGeliefert.add(item.getN_menge());
                        }
                        data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                        if (los.getFlrstueckliste() != null) {
                            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                                    los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                            data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                            data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel()
                                    .getC_nr();

                            data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                                    .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                            // Offene Fehlmengen
                            data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                                    .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                            LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(los.getI_id());

                            BigDecimal bdFertigungszeit = new BigDecimal(0);
                            for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                                bdFertigungszeit = bdFertigungszeit
                                        .add(lossollarbeitsplanDto[j].getNGesamtzeit());
                            }
                            data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                            // Rahmenbestellt
                            Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                                    .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                            if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                                BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                        .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                                data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                            }
                            data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                            data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                        } else {
                            data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                            data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                                    theClientDto.getMandant(), theClientDto.getLocUi());
                        }

                        GregorianCalendar gc = new GregorianCalendar();
                        gc.setTime(los.getT_produktionsbeginn());
                        data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                        data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                        data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                        data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                        /**
                         * @todo material PJ 4239
                         */
                        data[i][OFFENE_AG_MATERIAL] = null;
                        data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                        data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                        data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                        // PJ 15009

                        String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                                + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                        Session session2 = FLRSessionFactory.getFactory().openSession();
                        Query query = session2.createQuery(queryf);
                        List<?> results = query.list();

                        data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                        if (results.size() > 0) {
                            BigDecimal bd = (BigDecimal) results.iterator().next();

                            if (bd != null && bd.doubleValue() > 0) {
                                data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                            }
                        }
                        session2.close();
                    }
                } else if (kostenstelleIId != null) {
                    if (los.getKostenstelle_i_id().intValue() != kostenstelleIId.intValue()) {
                        i--;
                    } else {
                        data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                        data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                        data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                        ArtikelDto aDto = getArtikelFac()
                                .artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(), theClientDto);
                        data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                        if (Helper.short2boolean(a.getB_fertig())) {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                        } else {
                            data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                        }
                        if (bSollstundenbetrachtung == true) {
                            data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                                    LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null,
                                    theClientDto);

                        }
                        if (a.getFlrmaschine() != null) {
                            data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                            data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                                    .getC_identifikationsnr();
                            data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine()
                                    .getC_inventarnummer();
                        }
                        if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe()
                                    .getC_nr();
                        } else {
                            data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                        }

                        if (a.getI_maschinenversatztage() != null) {
                            data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                                    (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                        } else {
                            data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                        }

                        if (los.getFlrauftrag() != null) {

                            Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId,
                                    theClientDto);
                            data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                            data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                        }

                        if (los.getFlrauftrag() != null) {
                            data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                            data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                            data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                        }
                        BigDecimal bdGeliefert = new BigDecimal(0);
                        for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                            FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                            bdGeliefert = bdGeliefert.add(item.getN_menge());
                        }
                        data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                        if (los.getFlrstueckliste() != null) {
                            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                                    los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                            data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                            data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel()
                                    .getC_nr();

                            data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                                    .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                            // Offene Fehlmengen
                            data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                                    .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                            LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                                    .lossollarbeitsplanFindByLosIId(los.getI_id());

                            BigDecimal bdFertigungszeit = new BigDecimal(0);
                            for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                                bdFertigungszeit = bdFertigungszeit
                                        .add(lossollarbeitsplanDto[j].getNGesamtzeit());
                            }
                            data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                            // Rahmenbestellt
                            Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                                    .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                            if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                                BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                        .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                                data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                            }
                            data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                            data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                                    .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                        } else {
                            data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                            data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                            data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                                    theClientDto.getMandant(), theClientDto.getLocUi());
                        }

                        GregorianCalendar gc = new GregorianCalendar();
                        gc.setTime(los.getT_produktionsbeginn());
                        data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                        data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                        data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                        data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                        /**
                         * @todo material PJ 4239
                         */
                        data[i][OFFENE_AG_MATERIAL] = null;
                        data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                        data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                        data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                        // PJ 15009

                        String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                                + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                        Session session2 = FLRSessionFactory.getFactory().openSession();
                        Query query = session2.createQuery(queryf);
                        List<?> results = query.list();

                        data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                        if (results.size() > 0) {
                            BigDecimal bd = (BigDecimal) results.iterator().next();

                            if (bd != null && bd.doubleValue() > 0) {
                                data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                            }
                        }
                        session2.close();
                    }
                }
            } else {

                data[i][OFFENE_AG_AGNUMMER] = a.getI_arbeitsgangsnummer();
                data[i][OFFENE_AG_UAGNUMMER] = a.getI_unterarbeitsgang();
                data[i][OFFENE_AG_AG_ARTIKEL] = a.getFlrartikel().getC_nr();
                ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(a.getFlrartikel().getI_id(),
                        theClientDto);
                data[i][OFFENE_AG_AG_ARTIKELBEZEICHNUNG] = aDto.formatBezeichnung();

                if (Helper.short2boolean(a.getB_fertig())) {
                    data[i][OFFENE_AG_AG_GESAMTZEIT] = new BigDecimal(0);
                } else {
                    data[i][OFFENE_AG_AG_GESAMTZEIT] = a.getN_gesamtzeit();
                }
                if (bSollstundenbetrachtung == true) {
                    data[i][OFFENE_AG_AG_ISTZEIT] = getZeiterfassungFac().getSummeZeitenEinesBeleges(
                            LocaleFac.BELEGART_LOS, los.getI_id(), a.getI_id(), null, null, null, theClientDto);

                }
                if (a.getFlrmaschine() != null) {
                    data[i][OFFENE_AG_AG_MASCHINE_BEZEICHNUNG] = a.getFlrmaschine().getC_bez();
                    data[i][OFFENE_AG_AG_MASCHINE_IDENTIFIKATIONSNUMMMER] = a.getFlrmaschine()
                            .getC_identifikationsnr();
                    data[i][OFFENE_AG_AG_MASCHINE_INVENTARNUMMMER] = a.getFlrmaschine().getC_inventarnummer();
                }
                if (a.getFlrartikel().getFlrartikelgruppe() != null) {
                    data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = a.getFlrartikel().getFlrartikelgruppe().getC_nr();
                } else {
                    data[i][OFFENE_AG_AG_ARTIKELGRUPPPE] = "";
                }

                if (a.getI_maschinenversatztage() != null) {
                    data[i][OFFENE_AG_AG_BEGINN] = Helper.addiereTageZuTimestamp(
                            (Timestamp) los.getT_produktionsbeginn(), a.getI_maschinenversatztage());

                } else {
                    data[i][OFFENE_AG_AG_BEGINN] = los.getT_produktionsbeginn();

                }

                if (los.getFlrauftrag() != null) {

                    Integer partnerIId = los.getFlrauftrag().getFlrkunde().getFlrpartner().getI_id();
                    PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(partnerIId, theClientDto);
                    data[i][OFFENE_AG_KUNDE] = partnerDto.formatFixTitelName1Name2();
                    data[i][OFFENE_AG_AUFTRAGSPOENALE] = los.getFlrauftrag().getB_poenale();
                }

                if (los.getFlrauftrag() != null) {
                    data[i][OFFENE_AG_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr();
                    data[i][OFFENE_AG_PROJEKT] = los.getFlrauftrag().getC_bez();
                    data[i][OFFENE_AG_LIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin();
                }
                BigDecimal bdGeliefert = new BigDecimal(0);
                for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                    FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                    bdGeliefert = bdGeliefert.add(item.getN_menge());
                }
                data[i][OFFENE_AG_GELIEFERT] = bdGeliefert;
                if (los.getFlrstueckliste() != null) {
                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                            los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                    data[i][OFFENE_AG_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                    data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
                    data[i][OFFENE_AG_ARTIKELNUMMER] = los.getFlrstueckliste().getFlrartikel().getC_nr();

                    data[i][OFFENE_AG_DETAILBEDARF] = getRahmenbedarfeFac()
                            .getSummeAllerRahmenbedarfeEinesArtikels(artikelDto.getIId());

                    // Offene Fehlmengen
                    data[i][OFFENE_AG_FEHLMENGE] = getFehlmengeFac()
                            .getAnzahlFehlmengeEinesArtikels(artikelDto.getIId(), theClientDto);

                    LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                            .lossollarbeitsplanFindByLosIId(los.getI_id());

                    BigDecimal bdFertigungszeit = new BigDecimal(0);
                    for (int j = 0; lossollarbeitsplanDto.length > j; j++) {
                        bdFertigungszeit = bdFertigungszeit.add(lossollarbeitsplanDto[j].getNGesamtzeit());
                    }
                    data[i][OFFENE_AG_FERTIGUNGSZEIT] = bdFertigungszeit;

                    // Rahmenbestellt
                    Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac()
                            .getAnzahlRahmenbestellt(artikelDto.getIId(), theClientDto);
                    if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) {
                        BigDecimal bdAnzahlRahmenbestellt = (BigDecimal) htRahmenbestellt
                                .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL);
                        data[i][OFFENE_AG_RAHMEN_BESTELLT] = bdAnzahlRahmenbestellt;
                    }
                    data[i][OFFENE_AG_RESERVIERUNGEN] = getReservierungFac()
                            .getAnzahlReservierungen(artikelDto.getIId(), theClientDto);

                    data[i][OFFENE_AG_RAHMENRESERVIERUNGEN] = getReservierungFac()
                            .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto);

                } else {
                    data[i][OFFENE_AG_BEZEICHNUNG] = los.getC_projekt();
                    data[i][OFFENE_AG_ZUSATZBEZEICHNUNG] = null;
                    data[i][OFFENE_AG_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste",
                            theClientDto.getMandant(), theClientDto.getLocUi());
                }

                GregorianCalendar gc = new GregorianCalendar();
                gc.setTime(los.getT_produktionsbeginn());
                data[i][OFFENE_AG_KALENDERWOCHE] = new Integer(gc.get(GregorianCalendar.WEEK_OF_YEAR));
                data[i][OFFENE_AG_LOSGROESSE] = los.getN_losgroesse();
                data[i][OFFENE_AG_LOSNUMMER] = los.getC_nr();
                data[i][OFFENE_AG_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez();
                /**
                 * @todo material PJ 4239
                 */
                data[i][OFFENE_AG_MATERIAL] = null;
                data[i][OFFENE_AG_BEGINN] = los.getT_produktionsbeginn();
                data[i][OFFENE_AG_ENDE] = los.getT_produktionsende();
                data[i][OFFENE_AG_LOSSTATUS] = los.getStatus_c_nr();

                // PJ 15009

                String queryf = "select sum(flrfehlmenge.n_menge) FROM FLRFehlmenge flrfehlmenge WHERE flrfehlmenge.flrlossollmaterial.flrlos = "
                        + los.getI_id() + " AND flrfehlmenge.n_menge>0";
                Session session2 = FLRSessionFactory.getFactory().openSession();
                Query query = session2.createQuery(queryf);
                List<?> results = query.list();

                data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(false);
                if (results.size() > 0) {
                    BigDecimal bd = (BigDecimal) results.iterator().next();

                    if (bd != null && bd.doubleValue() > 0) {
                        data[i][OFFENE_AG_LOSHATFEHLMENGE] = new Boolean(true);
                    }
                }
                session2.close();
            }
        }
        // Sortieren nach Artikelgruppe + AG-Beginn

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

                if (((String) a1[OFFENE_AG_AG_ARTIKELGRUPPPE])
                        .compareTo((String) a2[OFFENE_AG_AG_ARTIKELGRUPPPE]) > 0) {
                    data[j] = a2;
                    data[j + 1] = a1;
                } else if (((String) a1[OFFENE_AG_AG_ARTIKELGRUPPPE])
                        .compareTo((String) a2[OFFENE_AG_AG_ARTIKELGRUPPPE]) == 0) {
                    java.util.Date k1 = (java.util.Date) a1[OFFENE_AG_AG_BEGINN];
                    java.util.Date k2 = (java.util.Date) a2[OFFENE_AG_AG_BEGINN];

                    if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_ENDEDATUM) {
                        k1 = (java.util.Date) a1[OFFENE_AG_ENDE];
                        k2 = (java.util.Date) a2[OFFENE_AG_ENDE];
                    } else if (iOptionStichtag == FertigungReportFac.OFFENE_OPTION_STICHTAG_LIEFERTERMIN) {
                        k1 = (java.util.Date) a1[OFFENE_AG_LIEFERTERMIN];

                        if (k1 == null) {
                            k1 = new Date(0);
                        }

                        k2 = (java.util.Date) a2[OFFENE_AG_LIEFERTERMIN];

                        if (k2 == null) {
                            k2 = new Date(0);
                        }

                    }

                    k1 = Helper.cutDate(k1);
                    k2 = Helper.cutDate(k2);

                    if (k1.after(k2)) {
                        data[j] = a2;
                        data[j + 1] = a1;
                    } else if (k1.equals(k2)) {

                        String l1 = (String) a1[OFFENE_AG_LOSNUMMER];
                        String l2 = (String) a1[OFFENE_AG_LOSNUMMER];
                        if (l1.compareTo(l2) > 0) {
                            data[j] = a2;
                            data[j + 1] = a1;
                        }

                    }
                }
            }
        }

        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_OFFENE_AG,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (Exception t) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t);
    } finally {
        closeSession(session);
    }
}