Example usage for org.hibernate Session enableFilter

List of usage examples for org.hibernate Session enableFilter

Introduction

In this page you can find the example usage for org.hibernate Session enableFilter.

Prototype

Filter enableFilter(String filterName);

Source Link

Document

Enable the named filter for this current session.

Usage

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

License:Open Source License

public void erstelleBestellvorschlagAnhandStuecklistenmindestlagerstand(java.sql.Date dLiefertermin,
        TheClientDto theClientDto) {//from   ww w.  java2s. c  o m
    loescheBestellvorlaegeEinesMandaten(theClientDto);

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

    HashMap<Integer, BigDecimal> hmArtikel = new HashMap<Integer, BigDecimal>();
    session = factory.openSession();
    String queryString = "SELECT stkl,(SELECT count(*) FROM FLRStuecklisteposition AS pos WHERE pos.flrartikel.i_id=stkl.flrartikel.i_id ) as anzstklpos FROM FLRStueckliste AS stkl WHERE stkl.mandant_c_nr='"
            + theClientDto.getMandant() + "' AND stkl.flrartikel.f_lagermindest > 0";
    String sLocUI = Helper.locale2String(theClientDto.getLocUi());
    session.enableFilter("filterLocale").setParameter("paramLocale", sLocUI);
    org.hibernate.Query query = session.createQuery(queryString);
    List<?> resultList = query.list();
    Iterator<?> resultListIterator = resultList.iterator();
    while (resultListIterator.hasNext()) {
        Object[] o = (Object[]) resultListIterator.next();
        FLRStueckliste flrStueckliste = (FLRStueckliste) o[0];

        long iAzahlinVerwendung = 0;
        if (o[1] != null) {
            iAzahlinVerwendung = (Long) o[1];
        }

        if (iAzahlinVerwendung == 0) {
            // Dann ists eine Wurzelstueckliste

            // Diese nun aufloesen

            List<?> m = null;
            try {
                m = getStuecklisteFac().getStrukturDatenEinerStueckliste(flrStueckliste.getI_id(), theClientDto,
                        StuecklisteReportFac.REPORT_STUECKLISTE_OPTION_SORTIERUNG_OHNE, 0, null, true, true,
                        new BigDecimal(flrStueckliste.getFlrartikel().getF_lagermindest()), null, false);
            } catch (RemoteException ex4) {
                throwEJBExceptionLPRespectOld(ex4);
            }

            Iterator<?> it = m.listIterator();

            while (it.hasNext()) {
                StuecklisteMitStrukturDto struktur = (StuecklisteMitStrukturDto) it.next();
                StuecklistepositionDto position = struktur.getStuecklistepositionDto();

                BigDecimal nBedarf = position.getNZielmenge();
                if (hmArtikel.containsKey(position.getArtikelIId())) {

                    nBedarf = nBedarf.add(hmArtikel.get(position.getArtikelIId()));
                }

                hmArtikel.put(position.getArtikelIId(), nBedarf);
            }
        }
    }
    closeSession(session);

    // Nun alle Artikel, welche noch nicht in der Liste sind, und einen
    // Lagermindeststand haben, hinzufuegen
    session = factory.openSession();
    queryString = "SELECT a, (SELECT stkl FROM FLRStueckliste AS stkl WHERE stkl.mandant_c_nr=a.mandant_c_nr AND stkl.artikel_i_id=a.i_id) FROM FLRArtikel AS a WHERE a.mandant_c_nr='"
            + theClientDto.getMandant() + "' AND a.f_lagermindest > 0 AND a.b_lagerbewirtschaftet=1";
    query = session.createQuery(queryString);
    resultList = query.list();
    resultListIterator = resultList.iterator();
    while (resultListIterator.hasNext()) {
        Object[] o = (Object[]) resultListIterator.next();
        FLRArtikel a = (FLRArtikel) o[0];
        FLRStueckliste s = (FLRStueckliste) o[1];

        if (!hmArtikel.containsKey(a.getI_id())) {
            if (s == null || Helper.short2boolean(s.getB_fremdfertigung()) == true) {

                hmArtikel.put(a.getI_id(), new BigDecimal(a.getF_lagermindest()));
            }
        }

    }
    closeSession(session);

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

        Iterator<Integer> it = hmArtikel.keySet().iterator();
        while (it.hasNext()) {
            Integer artikelIId = it.next();

            ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto);

            if (Helper.short2boolean(aDto.getBLagerbewirtschaftet())) {

                BigDecimal nBedarf = hmArtikel.get(artikelIId);

                // Nun bei allen Artikel die
                // Lagerstaende/In-Fertigung/Bestellt
                // abziehen
                BigDecimal bdBestellt = getArtikelbestelltFac().getAnzahlBestellt(artikelIId);

                BigDecimal bdInFertigung = getFertigungFac().getAnzahlInFertigung(artikelIId, theClientDto);

                BigDecimal bdLagerstand = new BigDecimal(0);

                for (int j = 0; j < lagerDto.length; j++) {

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

                }

                // Wenn groesser 0, dann bestellen

                BigDecimal diff = nBedarf.subtract(bdBestellt).subtract(bdInFertigung).subtract(bdLagerstand);

                if (diff.doubleValue() > 0) {

                    bestellvorschlagDtoErzeugen(null, theClientDto.getMandant(), artikelIId, null, null,
                            new java.sql.Timestamp(dLiefertermin.getTime()), diff, null, theClientDto);
                }
            }

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

}

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

License:Open Source License

public Integer getAnzahlWEImZeitraum(Integer artikelIId, Timestamp tVon, Timestamp tBis,
        TheClientDto theClientDto) {/*from w w w  .  ja va2s. c  o  m*/
    Session session = FLRSessionFactory.getFactory().openSession();

    session.enableFilter("filterMandant").setParameter("paramMandant", theClientDto.getMandant());
    session.enableFilter("filterLocale").setParameter("paramLocale",
            Helper.locale2String(theClientDto.getLocUi()));

    String queryString = "SELECT wep FROM FLRWareneingangspositionen wep WHERE wep.flrbestellposition.flrbestellung.bestellungstatus_c_nr<>'"
            + BestellungFac.BESTELLSTATUS_STORNIERT + "' AND wep.flrbestellposition.flrartikel.i_id="
            + artikelIId;

    if (tVon != null) {
        queryString += " AND wep.flrwareneingang.t_wareneingansdatum >='"
                + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime())) + "'";
    }

    if (tBis != null) {
        queryString += " AND wep.flrwareneingang.t_wareneingansdatum <='"
                + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime())) + "'";
    }

    org.hibernate.Query query = session.createQuery(queryString);
    List<?> resultList = query.list();

    int iAnzahl = resultList.size();

    session.close();
    return iAnzahl;

}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public void geliefertPreiseAllerWEPRueckpflegen(java.sql.Date dVon, java.sql.Date dBis,
        TheClientDto theClientDto) {/*from   w  ww.  j  av a 2s.c  o m*/
    Session session = FLRSessionFactory.getFactory().openSession();

    session.enableFilter("filterMandant").setParameter("paramMandant", theClientDto.getMandant());
    session.enableFilter("filterLocale").setParameter("paramLocale",
            Helper.locale2String(theClientDto.getLocUi()));

    String queryString = "SELECT wep FROM FLRWareneingangspositionen wep WHERE wep.flrbestellposition.flrbestellung.bestellungstatus_c_nr<>'"
            + BestellungFac.BESTELLSTATUS_STORNIERT + "' ";

    if (dVon != null) {
        queryString += " AND wep.flrwareneingang.t_wareneingansdatum >='" + Helper.formatDateWithSlashes(dVon)
                + "'";
    }

    if (dBis != null) {
        queryString += " AND wep.flrwareneingang.t_wareneingansdatum <='" + Helper.formatDateWithSlashes(dBis)
                + "'";
    }

    org.hibernate.Query query = session.createQuery(queryString);
    List<?> resultList = query.list();
    Iterator it = resultList.iterator();
    while (it.hasNext()) {
        FLRWareneingangspositionen wep = (FLRWareneingangspositionen) it.next();

        if (wep.getN_gelieferterpreis() != null) {
            BestellpositionDto besPosDto = null;
            try {
                besPosDto = getBestellpositionFac()
                        .bestellpositionFindByPrimaryKey(wep.getBestellposition_i_id());
            } catch (RemoteException e) {
                throwEJBExceptionLPRespectOld(e);
            }

            besPosDto.setNNettogesamtpreis(wep.getN_gelieferterpreis());

            // Rabatt berechnen

            // Rabatt berechnen
            BigDecimal rabattsatz = null;
            if (besPosDto.getNNettoeinzelpreis().doubleValue() != 0) {

                rabattsatz = new BigDecimal(1).subtract(wep.getN_gelieferterpreis()
                        .divide(besPosDto.getNNettoeinzelpreis(), 4, BigDecimal.ROUND_HALF_EVEN));
                rabattsatz = rabattsatz.multiply(new BigDecimal(100));

            } else {
                rabattsatz = new BigDecimal(100);
            }

            besPosDto.setDRabattsatz(rabattsatz.doubleValue());

            getBestellpositionFac().preispflege(besPosDto,
                    BestellpositionFac.PREISPFLEGEARTIKELLIEFERANT_EINZELPREIS_RUECKPFLEGEN, null,
                    theClientDto);

        }
    }

}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printRankingliste(TheClientDto theClientDto) {

    this.useCase = UC_RANKINGLISTE;
    this.index = -1;

    Map<String, Object> mapParameter = new TreeMap<String, Object>();
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = factory.openSession();
    session.enableFilter("filterMandant").setParameter("paramMandant", theClientDto.getMandant());
    session.enableFilter("filterLocale").setParameter("paramLocale",
            Helper.locale2String(theClientDto.getLocUi()));

    ZusatzstatusDto zusatzstatusDto = null;
    try {/* w ww .jav  a  2s  .co m*/
        ParametermandantDto parametermandantDto = getParameterFac().getMandantparameter(
                theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG,
                ParameterFac.PARAMETER_RANKINGLISTE_ZUSATZSTATUS);
        if (((java.lang.Integer) parametermandantDto.getCWertAsObject()) != null) {
            zusatzstatusDto = getFertigungFac()
                    .zusatzstatusFindByPrimaryKey((java.lang.Integer) parametermandantDto.getCWertAsObject());

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

    String query = "SELECT a.flrartikel.i_id,a.flrartikel.c_nr, sum(a.n_menge), (SELECT s.i_id FROM FLRStueckliste s WHERE s.artikel_i_id=a.flrartikel.i_id AND a.flrartikel.mandant_c_nr='"
            + theClientDto.getMandant()
            + "') AS stkl_i_id ,  (SELECT COUNT(*) FROM FLRStuecklisteposition sp WHERE sp.flrartikel.i_id=a.flrartikel.i_id ),  (SELECT SUM(fm.n_menge) FROM FLRFehlmenge fm WHERE fm.flrartikel.i_id=a.flrartikel.i_id ),  (SELECT SUM(al.n_lagerstand) FROM FLRArtikellager al WHERE al.compId.artikel_i_id=a.flrartikel.i_id ), (SELECT spr.c_bez FROM FLRArtikellistespr spr WHERE spr.Id.artikelliste=a.flrartikel.i_id AND spr.Id.locale='"
            + theClientDto.getLocUiAsString()
            + "')  FROM FLRArtikelreservierung a WHERE a.flrartikel.mandant_c_nr='" + theClientDto.getMandant()
            + "'  GROUP BY a.flrartikel.i_id,a.flrartikel.mandant_c_nr,a.flrartikel.c_nr ORDER BY a.flrartikel.c_nr ASC";

    Query qResult = session.createQuery(query);

    List<?> results = qResult.list();

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

    Iterator<?> resultListIterator = results.iterator();
    while (resultListIterator.hasNext()) {
        Object[] o = (Object[]) resultListIterator.next();
        Object[] oZeile = new Object[11];

        BigDecimal bdReserviert = (BigDecimal) o[2];
        if (bdReserviert == null) {
            bdReserviert = new BigDecimal(0.00);
        }
        BigDecimal bdLagerstand = (BigDecimal) o[6];
        if (bdLagerstand == null) {
            bdLagerstand = new BigDecimal(0.00);
        }
        BigDecimal bdFehlmengen = (BigDecimal) o[5];
        if (bdFehlmengen == null) {
            bdFehlmengen = new BigDecimal(0.00);
        }

        if (o[3] != null) {

            Session session2 = factory.openSession();

            String subQuery = "SELECT l.c_nr,partner.c_name1nachnamefirmazeile1, l.t_produktionsbeginn, l.n_losgroesse, "
                    + " (SELECT SUM(abl.n_menge) FROM FLRLosablieferung abl WHERE abl.los_i_id=l.i_id), "
                    + " (SELECT SUM(sa.n_gesamtzeit) FROM FLRLossollarbeitsplan sa WHERE sa.los_i_id=l.i_id), "
                    + "(SELECT ls.i_id FROM FLRLoszusatzstatus ls WHERE ls.los_i_id=l.i_id AND ls.zusatzstatus_i_id="
                    + zusatzstatusDto.getIId() + ") , fg.c_bez, l.flrstueckliste.flrartikel.c_nr "
                    + " FROM FLRLosReport l LEFT JOIN l.flrauftrag.flrkunde.flrpartner AS partner LEFT JOIN l.flrfertigungsgruppe AS fg  WHERE l.flrstueckliste.i_id="
                    + o[3] + " AND l.status_c_nr IN ('" + FertigungFac.STATUS_AUSGEGEBEN + "','"
                    + FertigungFac.STATUS_IN_PRODUKTION + "') ORDER BY l.t_produktionsbeginn ASC ";
            Query subResult = session2.createQuery(subQuery);

            List<?> subResults = subResult.list();
            Iterator<?> subResultListIterator = subResults.iterator();
            while (subResultListIterator.hasNext()) {
                Object[] flrLosReport = (Object[]) subResultListIterator.next();

                oZeile = new Object[11];

                oZeile[RANKINGLISTE_LOSNR] = flrLosReport[0];
                oZeile[RANKINGLISTE_LOSBEGINNTERMIN] = flrLosReport[2];

                BigDecimal offeneMenge = new BigDecimal(0.00);
                BigDecimal losgroesse = (BigDecimal) flrLosReport[3];

                BigDecimal summeAblieferungen = (BigDecimal) flrLosReport[4];
                if (summeAblieferungen == null) {
                    summeAblieferungen = new BigDecimal(0.00);
                }

                offeneMenge = losgroesse.subtract(summeAblieferungen);

                oZeile[RANKINGLISTE_OFFENELOSMENGE] = offeneMenge;

                if (offeneMenge.doubleValue() > 0) {

                    BigDecimal gesamt = (BigDecimal) flrLosReport[5];
                    if (gesamt == null) {
                        gesamt = new BigDecimal(0.00);
                    }

                    oZeile[RANKINGLISTE_SOLLZEIT] = gesamt.divide(losgroesse, 4, BigDecimal.ROUND_HALF_EVEN)
                            .multiply(offeneMenge);
                    // Unterstueckliste?
                    if (o[4] != null && ((Long) o[4]).intValue() > 0) {
                        oZeile[RANKINGLISTE_INFO_U] = new Boolean(true);
                    } else {
                        oZeile[RANKINGLISTE_INFO_U] = new Boolean(false);
                    }

                    if (bdReserviert.add(bdFehlmengen).doubleValue() > bdLagerstand.doubleValue()) {
                        oZeile[RANKINGLISTE_INFO_L] = new Boolean(true);
                    } else {
                        oZeile[RANKINGLISTE_INFO_L] = new Boolean(false);
                    }

                    if (flrLosReport[7] != null) {
                        oZeile[RANKINGLISTE_FERTIGUNGSGRUPPE] = flrLosReport[7];
                    } else {
                        oZeile[RANKINGLISTE_FERTIGUNGSGRUPPE] = "";
                    }

                    oZeile[RANKINGLISTE_ARTIKELNUMMER] = flrLosReport[8];
                    oZeile[RANKINGLISTE_ARTIKELBEZEICHNUNG] = o[7];

                    oZeile[RANKINGLISTE_KUNDE] = flrLosReport[1];

                    if (flrLosReport[6] != null) {

                        oZeile[RANKINGLISTE_INFO_K] = new Boolean(true);
                    } else {
                        // nix gefunden
                        oZeile[RANKINGLISTE_INFO_K] = new Boolean(false);
                    }

                    alDaten.add(oZeile);

                    oZeile = new Object[11];
                }

            }

            session2.close();
        }
    }

    session.close();

    // Nach Fertigungsgruppe sortieren
    for (int k = alDaten.size() - 1; k > 0; --k) {
        for (int j = 0; j < k; ++j) {
            Object[] a1 = (Object[]) alDaten.get(j);
            Object[] a2 = (Object[]) alDaten.get(j + 1);

            String s1 = Helper.fitString2Length((String) a1[RANKINGLISTE_FERTIGUNGSGRUPPE], 40, ' ')
                    + a1[RANKINGLISTE_LOSBEGINNTERMIN];
            String s2 = Helper.fitString2Length((String) a2[RANKINGLISTE_FERTIGUNGSGRUPPE], 40, ' ')
                    + a2[RANKINGLISTE_LOSBEGINNTERMIN];

            if (s1.compareTo(s2) > 0) {
                alDaten.set(j, a2);
                alDaten.set(j + 1, a1);
            }
        }

    }

    data = new Object[alDaten.size()][12];
    data = (Object[][]) alDaten.toArray(data);

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

    return getReportPrint();

}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printMonatsauswertung(java.sql.Timestamp tVon, java.sql.Timestamp tBis,
        boolean bVerdichtet, TheClientDto theClientDto) {
    this.useCase = UC_MONATSAUSWERTUNG;
    this.index = -1;

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

    // Zuerst Alle Lose Ohne Kunden
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = factory.openSession();
    session.enableFilter("filterMandant").setParameter("paramMandant", theClientDto.getMandant());
    session.enableFilter("filterLocale").setParameter("paramLocale",
            Helper.locale2String(theClientDto.getLocUi()));
    String query = "SELECT l, (SELECT SUM(s.n_gesamtzeit) FROM FLRLossollarbeitsplan s  WHERE s.los_i_id=l.i_id)  FROM FLRLosReport l LEFT OUTER JOIN l.flrauftrag a LEFT OUTER JOIN l.flrauftrag.flrkunde.flrpartner p WHERE l.mandant_c_nr='"
            + theClientDto.getMandant() + "' " + " AND l.status_c_nr ='" + LocaleFac.STATUS_ERLEDIGT
            + "' AND (l.t_manuellerledigt>='" + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime()))
            + "'   OR l.t_erledigt>='" + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime())) + "')"
            + " AND (l.t_manuellerledigt<='" + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime()))
            + "'   OR l.t_erledigt<='" + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime()))
            + "') ORDER BY l.flrfertigungsgruppe.c_bez,p.c_name1nachnamefirmazeile1, a.c_nr, l.c_nr";

    mapParameter.put("P_VERDICHTET", new Boolean(bVerdichtet));
    mapParameter.put("P_VON", Helper.cutTimestamp(tVon));
    mapParameter.put("P_BIS", new Timestamp(tBis.getTime() - 3600000 * 24));

    Query qResult = session.createQuery(query);
    // qResult.setMaxResults(50);

    List<?> results = qResult.list();

    ArrayList<LosMonatsauswertungDto> alDaten = new ArrayList<LosMonatsauswertungDto>();
    int k = 0;//  w  ww . j  ava  2 s  . c o m

    Iterator<?> resultListIterator = results.iterator();
    while (resultListIterator.hasNext()) {
        Object[] o = (Object[]) resultListIterator.next();

        FLRLosReport flrLosReport = (FLRLosReport) o[0];

        k++;
        LosMonatsauswertungDto losMonatsauswertungDto = new LosMonatsauswertungDto();

        losMonatsauswertungDto.setSFertigungsgruppe(flrLosReport.getFlrfertigungsgruppe().getC_bez());

        losMonatsauswertungDto.setSLosnummer(flrLosReport.getC_nr());
        // Sollzeit/Istzeit
        BigDecimal sollzeit = new BigDecimal(0.0000);
        if (o[1] != null) {
            sollzeit = (BigDecimal) o[1];
        }
        losMonatsauswertungDto.setNSollzeit(sollzeit);

        Double zeiten = new Double(0);
        try {
            zeiten = getZeiterfassungFac().getSummeZeitenEinesBeleges(LocaleFac.BELEGART_LOS,
                    flrLosReport.getI_id(), null, null, null, null, theClientDto);
        } catch (RemoteException ex) {
            throwEJBExceptionLPRespectOld(ex);
        }

        BigDecimal istzeit = new BigDecimal(zeiten.doubleValue());

        losMonatsauswertungDto.setNIstZeit(istzeit);
        losMonatsauswertungDto.setNLosgroesse(flrLosReport.getN_losgroesse());

        if (flrLosReport.getF_bewertung() != null) {
            BigDecimal abw = sollzeit.subtract(istzeit)
                    .multiply(new BigDecimal(flrLosReport.getF_bewertung().doubleValue()));
            abw = abw.divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN);
            losMonatsauswertungDto.setNAbweichung(abw);
            losMonatsauswertungDto.setFBewertung(flrLosReport.getF_bewertung());
        } else {
            losMonatsauswertungDto.setNAbweichung(sollzeit.subtract(istzeit));
        }

        if (flrLosReport.getFlrstueckliste() == null) {
            if (flrLosReport.getC_projekt() != null) {
                losMonatsauswertungDto.setArtikelnummer(flrLosReport.getC_projekt());
            } else {
                losMonatsauswertungDto.setArtikelnummer("");
            }
        } else {
            losMonatsauswertungDto.setArtikelnummer(flrLosReport.getFlrstueckliste().getFlrartikel().getC_nr());

            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                    flrLosReport.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);

            losMonatsauswertungDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());

        }

        if (flrLosReport.getFlrauftrag() == null) {

            if (flrLosReport.getFlrkunde() != null) {
                String kunde = flrLosReport.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
                losMonatsauswertungDto.setSKunde(kunde);
            } else {
                losMonatsauswertungDto.setSKunde("");
            }

        } else {
            String kunde = flrLosReport.getFlrauftrag().getFlrkunde().getFlrpartner()
                    .getC_name1nachnamefirmazeile1();
            losMonatsauswertungDto.setSKunde(kunde);
        }

        alDaten.add(losMonatsauswertungDto);
    }

    session.close();

    data = new Object[alDaten.size()][MONATSAUSWERTUNG_ANZAHL_FELDER];

    int i = 0;

    Iterator<LosMonatsauswertungDto> it = alDaten.iterator();
    while (it.hasNext()) {
        LosMonatsauswertungDto losMonatsauswertungDto = (LosMonatsauswertungDto) it.next();

        data[i][MONATSAUSWERTUNG_ARTIKELNUMMER] = losMonatsauswertungDto.getArtikelnummer();
        data[i][MONATSAUSWERTUNG_BEZEICHNUNG] = losMonatsauswertungDto.getArtikelbezeichnung();
        data[i][MONATSAUSWERTUNG_KUNDE] = losMonatsauswertungDto.getSKunde();
        data[i][MONATSAUSWERTUNG_ISTZEIT] = losMonatsauswertungDto.getNIstZeit();
        data[i][MONATSAUSWERTUNG_SOLLZEIT] = losMonatsauswertungDto.getNSollzeit();
        data[i][MONATSAUSWERTUNG_ABWEICHUNG] = losMonatsauswertungDto.getNAbweichung();
        data[i][MONATSAUSWERTUNG_LOSGROESSE] = losMonatsauswertungDto.getNLosgroesse();
        data[i][MONATSAUSWERTUNG_FERTIGUNGSGRUPPE] = losMonatsauswertungDto.getSFertigungsgruppe();
        data[i][MONATSAUSWERTUNG_LOSNUMMER] = losMonatsauswertungDto.getSLosnummer();
        data[i][MONATSAUSWERTUNG_BEWERTUNG] = losMonatsauswertungDto.getFBewertung();
        i++;
    }

    // Nochmals sortieren

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

            if (((String) a1[MONATSAUSWERTUNG_FERTIGUNGSGRUPPE])
                    .compareTo((String) a2[MONATSAUSWERTUNG_FERTIGUNGSGRUPPE]) > 0) {
                data[j] = a2;
                data[j + 1] = a1;
            } else if (((String) a1[MONATSAUSWERTUNG_FERTIGUNGSGRUPPE])
                    .compareTo((String) a2[MONATSAUSWERTUNG_FERTIGUNGSGRUPPE]) == 0) {
                String k1 = (String) a1[MONATSAUSWERTUNG_KUNDE];
                String k2 = (String) a2[MONATSAUSWERTUNG_KUNDE];

                if (k1.compareTo(k2) > 0) {
                    data[j] = a2;
                    data[j + 1] = a1;
                } else if (((String) a1[MONATSAUSWERTUNG_KUNDE])
                        .compareTo((String) a2[MONATSAUSWERTUNG_KUNDE]) == 0) {
                    String b1 = (String) a1[MONATSAUSWERTUNG_ARTIKELNUMMER];
                    String b2 = (String) a2[MONATSAUSWERTUNG_ARTIKELNUMMER];

                    if (b1.compareTo(b2) > 0) {
                        data[j] = a2;
                        data[j + 1] = a1;
                    } else if (((String) a1[MONATSAUSWERTUNG_ARTIKELNUMMER])
                            .compareTo((String) a2[MONATSAUSWERTUNG_ARTIKELNUMMER]) == 0) {
                        String l1 = (String) a1[MONATSAUSWERTUNG_LOSNUMMER];
                        String l2 = (String) a2[MONATSAUSWERTUNG_LOSNUMMER];

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

    initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_MONATSAUSWERTUNG,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    return getReportPrint();
}

From source file:com.lp.server.kueche.ejbfac.KuecheReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printKuechenauswertung2(java.sql.Timestamp tVon, java.sql.Timestamp tBis,
        TheClientDto theClientDto) {/*from ww  w .ja v  a  2 s  . c  o m*/
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    parameter.put("P_VON", tVon);
    parameter.put("P_BIS", tBis);

    sAktuellerReport = KuecheReportFac.REPORT_KUECHENAUSWERTUNG2;

    Integer fertigungsgruppeIIdSofortverbrauch = null;
    try {
        fertigungsgruppeIIdSofortverbrauch = getStuecklisteFac().fertigungsgruppeFindByMandantCNrCBez(
                theClientDto.getMandant(), StuecklisteFac.FERTIGUNGSGRUPPE_SOFORTVERBRAUCH).getIId();
    } catch (EJBExceptionLP e1) {
        if (e1.getCode() == EJBExceptionLP.FEHLER_BEI_FIND) {
            throw new EJBExceptionLP(
                    EJBExceptionLP.FEHLER_FERTIGUNG_FERTIGUNGSGRUPPE_SOFORTVERBRAUCH_NICHT_VORHANDEN,
                    new Exception("FEHLER_FERTIGUNG_FERTIGUNGSGRUPPE_SOFORTVERBRAUCH_NICHT_VORHANDEN"));
        } else {
            throw e1;
        }
    } catch (RemoteException e1) {
        throwEJBExceptionLPRespectOld(e1);
    }

    tVon = Helper.cutTimestamp(tVon);

    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(tBis.getTime());
    c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1);

    tBis = Helper.cutTimestamp(new java.sql.Timestamp(c.getTimeInMillis()));

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

    session.enableFilter("filterMandant").setParameter("paramMandant", theClientDto.getMandant());
    session.enableFilter("filterLocale").setParameter("paramLocale", theClientDto.getLocUiAsString());

    String sQuery = "SELECT k, aspr.c_bez FROM FLRKassaimport AS k LEFT OUTER JOIN k.flrartikel.artikelsprset AS aspr  WHERE k.n_menge>0 AND k.t_kassa>='"
            + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime())) + "' AND k.t_kassa<'"
            + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime()))
            + "' AND k.flrartikel.mandant_c_nr='" + theClientDto.getMandant() + "'";

    // SELECT KUNDE_I_ID,ARTIKEL_I_ID,T_KASSA, SUM(N_MENGE),
    // SUM(N_PREIS*N_MENGE) FROM KUE_KASSAIMPORT WHERE T_KASSA>2009-01-01
    // AND T_KASSA<'2009-07-01' AND N_MENGE>0 GROUP BY
    // KUNDE_I_ID,ARTIKEL_I_ID,T_KASSA

    Query query = session.createQuery(sQuery);

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

    TreeMap hmVerbrauchteArtikel = new TreeMap();
    while (resultListIterator.hasNext()) {

        Object[] o = (Object[]) resultListIterator.next();
        FLRKassaimport ki = (FLRKassaimport) o[0];

        if (ki.getSpeiseplan_i_id() != null) {

            Set s = ki.getFlrspeiseplan().getSpeiseplanpositionset();

            Iterator iTspeiseplanpos = s.iterator();

            while (iTspeiseplanpos.hasNext()) {
                FLRSpeiseplanposition sppos = (FLRSpeiseplanposition) iTspeiseplanpos.next();

                BigDecimal menge = new BigDecimal(0);

                if (sppos.getN_menge().doubleValue() != 0) {
                    menge = sppos.getN_menge().divide(ki.getFlrspeiseplan().getN_menge())
                            .multiply(ki.getN_menge());
                }

                if (hmVerbrauchteArtikel.containsKey(sppos.getFlrartikel().getC_nr())) {
                    Object[] oZeile = (Object[]) hmVerbrauchteArtikel.get(sppos.getFlrartikel().getC_nr());

                    oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ] =

                            ((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ]).add(
                                    ((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_EKPREIS]).multiply(menge));

                    oZeile[REPORT_KUECHENAUSWERTUNG2_MENGEVERBRAUCHT] = ((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_MENGEVERBRAUCHT])
                            .add(menge);

                    hmVerbrauchteArtikel.put(sppos.getFlrartikel().getC_nr(), oZeile);

                } else {
                    Object[] oZeile = new Object[7];

                    ArtikelDto artikelDto = getArtikelFac()
                            .artikelFindByPrimaryKeySmall(sppos.getFlrartikel().getI_id(), theClientDto);
                    oZeile[REPORT_KUECHENAUSWERTUNG2_ARTIKELNUMMER] = sppos.getFlrartikel().getC_nr();
                    oZeile[REPORT_KUECHENAUSWERTUNG2_BEZEICHNUNG] = artikelDto.formatBezeichnung();

                    ArtikellieferantDto ekPreis = getArtikelFac().getArtikelEinkaufspreis(
                            sppos.getArtikel_i_id(), null, menge, theClientDto.getSMandantenwaehrung(),
                            new java.sql.Date(ki.getT_kassa().getTime()), theClientDto);
                    if (ekPreis != null && ekPreis.getLief1Preis() != null) {
                        oZeile[REPORT_KUECHENAUSWERTUNG2_EKPREIS] = ekPreis.getLief1Preis();
                        oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ] = ekPreis.getLief1Preis()
                                .multiply(menge);
                    } else {
                        oZeile[REPORT_KUECHENAUSWERTUNG2_EKPREIS] = new BigDecimal(0);
                        oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ] = new BigDecimal(0);
                    }

                    oZeile[REPORT_KUECHENAUSWERTUNG2_MENGEVERBRAUCHT] = menge;

                    oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_MATERIAL] = new BigDecimal(0);
                    oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_SOFORTVERBRAUCH] = new BigDecimal(0);
                    hmVerbrauchteArtikel.put(sppos.getFlrartikel().getC_nr(), oZeile);
                }

            }

        } else {
            if (hmVerbrauchteArtikel.containsKey(ki.getFlrartikel().getC_nr())) {
                Object[] oZeile = (Object[]) hmVerbrauchteArtikel.get(ki.getFlrartikel().getC_nr());

                oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ] =

                        ((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ])
                                .add(((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_EKPREIS])
                                        .multiply(ki.getN_menge()));

                oZeile[REPORT_KUECHENAUSWERTUNG2_MENGEVERBRAUCHT] = ((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_MENGEVERBRAUCHT])
                        .add(ki.getN_menge());

                hmVerbrauchteArtikel.put(ki.getFlrartikel().getC_nr(), oZeile);

            } else {
                Object[] oZeile = new Object[7];
                oZeile[REPORT_KUECHENAUSWERTUNG2_ARTIKELNUMMER] = ki.getFlrartikel().getC_nr();
                oZeile[REPORT_KUECHENAUSWERTUNG2_BEZEICHNUNG] = o[1];

                ArtikellieferantDto ekPreis = getArtikelFac().getArtikelEinkaufspreis(ki.getArtikel_i_id(),
                        null, ki.getN_menge(), theClientDto.getSMandantenwaehrung(),
                        new java.sql.Date(ki.getT_kassa().getTime()), theClientDto);
                if (ekPreis != null && ekPreis.getLief1Preis() != null) {
                    oZeile[REPORT_KUECHENAUSWERTUNG2_EKPREIS] = ekPreis.getLief1Preis();
                    oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ] = ekPreis.getLief1Preis()
                            .multiply(ki.getN_menge());
                } else {
                    oZeile[REPORT_KUECHENAUSWERTUNG2_EKPREIS] = new BigDecimal(0);
                    oZeile[REPORT_KUECHENAUSWERTUNG2_THEORETISCHER_WARENEINSATZ] = new BigDecimal(0);
                }

                oZeile[REPORT_KUECHENAUSWERTUNG2_MENGEVERBRAUCHT] = ki.getN_menge();

                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_MATERIAL] = new BigDecimal(0);
                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_SOFORTVERBRAUCH] = new BigDecimal(0);
                hmVerbrauchteArtikel.put(ki.getFlrartikel().getC_nr(), oZeile);
            }
        }

    }

    Session sessionSub = FLRSessionFactory.getFactory().openSession();
    String sQuerySub = "FROM FLRLossollmaterial AS s WHERE s.flrlos.status_c_nr NOT IN('"
            + FertigungFac.STATUS_GESTOPPT + "','" + FertigungFac.STATUS_ANGELEGT
            + "') AND s.flrlos.t_ausgabe>='" + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime()))
            + "' AND s.flrlos.t_ausgabe<'" + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime()))
            + "' AND s.flrlos.mandant_c_nr='" + theClientDto.getMandant() + "'";

    org.hibernate.Query hquerySub = sessionSub.createQuery(sQuerySub);
    List<?> resultListSub = hquerySub.list();
    Iterator<?> resultListIteratorSub = resultListSub.iterator();
    while (resultListIteratorSub.hasNext()) {
        FLRLossollmaterial sollmaterial = (FLRLossollmaterial) resultListIteratorSub.next();

        BigDecimal bdAusgegeben = new BigDecimal(0);
        for (Iterator<?> iter = sollmaterial.getIstmaterialset().iterator(); iter.hasNext();) {
            FLRLosistmaterial item = (FLRLosistmaterial) iter.next();
            if (Helper.short2boolean(item.getB_abgang()) == true) {
                bdAusgegeben = bdAusgegeben.add(item.getN_menge());
            } else {
                bdAusgegeben = bdAusgegeben.subtract(item.getN_menge());
            }
        }

        BigDecimal preis = new BigDecimal(0);

        if (bdAusgegeben.doubleValue() != 0) {
            try {
                preis = getFertigungFac().getAusgegebeneMengePreis(sollmaterial.getI_id(), null, theClientDto);
            } catch (RemoteException e) {
                throwEJBExceptionLPRespectOld(e);
            }
        }

        BigDecimal wert = preis.multiply(bdAusgegeben);

        if (hmVerbrauchteArtikel.containsKey(sollmaterial.getFlrartikel().getC_nr())) {
            Object[] oZeile = (Object[]) hmVerbrauchteArtikel.get(sollmaterial.getFlrartikel().getC_nr());

            if (sollmaterial.getFlrlos().getFertigungsgruppe_i_id()
                    .equals(fertigungsgruppeIIdSofortverbrauch)) {
                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_SOFORTVERBRAUCH] = ((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_SOFORTVERBRAUCH])
                        .add(wert);
            } else {
                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_MATERIAL] = ((BigDecimal) oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_MATERIAL])
                        .add(wert);
            }

            hmVerbrauchteArtikel.put(sollmaterial.getFlrartikel().getC_nr(), oZeile);

        } else {
            Object[] oZeile = new Object[7];
            oZeile[REPORT_KUECHENAUSWERTUNG2_ARTIKELNUMMER] = sollmaterial.getFlrartikel().getC_nr();

            ArtikelDto artikelDto = getArtikelFac()
                    .artikelFindByPrimaryKeySmall(sollmaterial.getFlrartikel().getI_id(), theClientDto);
            oZeile[REPORT_KUECHENAUSWERTUNG2_BEZEICHNUNG] = artikelDto.formatBezeichnung();

            oZeile[REPORT_KUECHENAUSWERTUNG2_MENGEVERBRAUCHT] = new BigDecimal(0);
            if (sollmaterial.getFlrlos().getFertigungsgruppe_i_id()
                    .equals(fertigungsgruppeIIdSofortverbrauch)) {
                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_SOFORTVERBRAUCH] = wert;
                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_MATERIAL] = new BigDecimal(0);
            } else {
                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_SOFORTVERBRAUCH] = new BigDecimal(0);
                oZeile[REPORT_KUECHENAUSWERTUNG2_WARENEINSATZ_MATERIAL] = wert;
            }

            hmVerbrauchteArtikel.put(sollmaterial.getFlrartikel().getC_nr(), oZeile);
        }
    }
    sessionSub.close();
    session.close();
    data = new Object[hmVerbrauchteArtikel.size()][10];
    data = (Object[][]) hmVerbrauchteArtikel.values().toArray(data);

    initJRDS(parameter, KuecheReportFac.REPORT_MODUL, KuecheReportFac.REPORT_KUECHENAUSWERTUNG2,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

    return getReportPrint();
}

From source file:com.lp.server.kueche.ejbfac.KuecheReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printKuechenauswertung1(java.sql.Timestamp tVon, java.sql.Timestamp tBis,
        String artikelNrVon, String artikelNrBis, Integer brancheIId, Integer artikelklasseIId,
        TheClientDto theClientDto) {//from  w w  w. j  a  va2  s . com

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

    parameter.put("P_ARTIKELNRVON", artikelNrVon);
    parameter.put("P_ARTIKELNRBIS", artikelNrBis);

    HashMap<Integer, KundeDto> cachedKunde = new HashMap<Integer, KundeDto>();
    HashMap<Integer, ArtikelDto> cachedArtikel = new HashMap<Integer, ArtikelDto>();

    try {
        if (artikelklasseIId != null) {
            parameter.put("P_ARTIKELKLASSE",
                    getArtikelFac().artklaFindByPrimaryKey(artikelklasseIId, theClientDto).getCNr());
        }
        if (brancheIId != null) {
            parameter.put("P_BRANCHE",
                    getPartnerServicesFac().brancheFindByPrimaryKey(brancheIId, theClientDto).getCNr());
        }
    } catch (RemoteException ex1) {
        throwEJBExceptionLPRespectOld(ex1);
    }

    sAktuellerReport = KuecheReportFac.REPORT_KUECHENAUSWERTUNG1;

    tVon = Helper.cutTimestamp(tVon);

    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(tBis.getTime());
    c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1);

    tBis = Helper.cutTimestamp(new java.sql.Timestamp(c.getTimeInMillis()));

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

    session.enableFilter("filterMandant").setParameter("paramMandant", theClientDto.getMandant());
    session.enableFilter("filterLocale").setParameter("paramLocale", theClientDto.getLocUiAsString());

    String sQuery = "SELECT k.flrartikel.i_id,k.flrartikel.c_nr,k.flrkunde.i_id , k.t_kassa, sum(k.n_menge), sum(k.n_preis*k.n_menge), aspr.c_bez, k.speiseplan_i_id FROM FLRKassaimport k LEFT OUTER JOIN k.flrartikel.artikelsprset AS aspr  WHERE k.n_menge>0 AND k.t_kassa>='"
            + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime())) + "' AND k.t_kassa<'"
            + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime())) + "'";

    if (artikelNrVon != null) {
        sQuery += " AND k.flrartikel.c_nr >='" + artikelNrVon + "'";
    }
    if (artikelNrBis != null) {

        String artikelNrBis_Gefuellt = Helper.fitString2Length(artikelNrBis, 25, '_');
        sQuery += " AND k.flrartikel.c_nr <='" + artikelNrBis_Gefuellt + "'";
    }

    if (artikelklasseIId != null) {
        sQuery += " AND k.flrartikel.flrartikelklasse.i_id=" + artikelklasseIId.intValue();
    }

    if (brancheIId != null) {
        sQuery += " AND k.flrkunde.flrpartner.branche_i_id=" + brancheIId.intValue();
    }

    sQuery += " GROUP BY k.flrartikel.i_id, k.flrartikel.c_nr,k.flrkunde,  k.t_kassa, aspr.c_bez,k.speiseplan_i_id";

    // SELECT KUNDE_I_ID,ARTIKEL_I_ID,T_KASSA, SUM(N_MENGE),
    // SUM(N_PREIS*N_MENGE) FROM KUE_KASSAIMPORT WHERE T_KASSA>2009-01-01
    // AND T_KASSA<'2009-07-01' AND N_MENGE>0 GROUP BY
    // KUNDE_I_ID,ARTIKEL_I_ID,T_KASSA

    Query query = session.createQuery(sQuery);

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

    // HashMap hmKundenIds=new HashMap();

    ArrayList alKassaimport = new ArrayList();
    while (resultListIterator.hasNext()) {
        Object[] o = (Object[]) resultListIterator.next();

        Integer kundeIId = (Integer) o[2];

        // if(!hmKundenIds.containsKey(kundeIId)){
        // hmKundenIds.put(kundeIId, null);
        // }

        alKassaimport.add(o);

    }

    Session sessionLS = FLRSessionFactory.getFactory().openSession();
    String sQueryLS = "FROM FLRLieferscheinposition lspos WHERE lspos.flrlieferschein.lieferscheinstatus_status_c_nr NOT IN ('"
            + LocaleFac.STATUS_STORNIERT
            + "') AND lspos.flrartikel.i_id IS NOT NULL AND lspos.flrlieferschein.d_belegdatum>='"
            + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime()))
            + "' AND lspos.flrlieferschein.d_belegdatum<'"
            + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime())) + "'";

    if (artikelNrVon != null) {
        sQueryLS += " AND lspos.flrartikel.c_nr >='" + artikelNrVon + "'";
    }
    if (artikelNrBis != null) {

        String artikelNrBis_Gefuellt = Helper.fitString2Length(artikelNrBis, 25, '_');
        sQueryLS += " AND lspos.flrartikel.c_nr <='" + artikelNrBis_Gefuellt + "'";
    }

    if (artikelklasseIId != null) {
        sQueryLS += " AND lspos.flrartikel.flrartikelklasse.i_id=" + artikelklasseIId.intValue();
    }

    if (brancheIId != null) {
        sQueryLS += " AND lspos.flrlieferschein.flrkunde.flrpartner.branche_i_id=" + brancheIId.intValue();
    }

    Query queryLP = sessionLS.createQuery(sQueryLS);

    List<?> resultsLS = queryLP.list();
    Iterator<?> resultListIteratorLS = resultsLS.iterator();

    // HashMap hmKundenIds=new HashMap();

    ArrayList alLSPositionen = new ArrayList();
    while (resultListIteratorLS.hasNext()) {
        FLRLieferscheinposition lspos = (FLRLieferscheinposition) resultListIteratorLS.next();

        alLSPositionen.add(lspos);

    }

    // Nun beide Listen verknuepfen

    ArrayList alDaten = new ArrayList();

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

        Object[] oImport = (Object[]) alKassaimport.get(i);

        Object[] zeile = new Object[12];

        zeile[REPORT_KUECHENAUSWERTUNG_ARTIKELNUMMER] = oImport[1];
        zeile[REPORT_KUECHENAUSWERTUNG_BEZEICHNUNG] = oImport[6];

        BigDecimal menge = (BigDecimal) oImport[4];
        BigDecimal bdGesamtWert = (BigDecimal) oImport[5];

        java.sql.Timestamp tKassa = (java.sql.Timestamp) oImport[3];

        // MWST wurde bereits beim import agbezogen

        zeile[REPORT_KUECHENAUSWERTUNG_MENGEVERKAUFT] = menge;

        zeile[REPORT_KUECHENAUSWERTUNG_PREISVERKAUFT] = bdGesamtWert.divide(menge, BigDecimal.ROUND_HALF_EVEN);
        zeile[REPORT_KUECHENAUSWERTUNG_DATUMVERKAUFT] = oImport[3];

        zeile[REPORT_KUECHENAUSWERTUNG_DATUMVERKAUFT_CUT] = Helper.cutTimestamp((Timestamp) oImport[3]);

        try {
            KundeDto kundeDto = null;
            if (cachedKunde.containsKey((Integer) oImport[2])) {
                kundeDto = cachedKunde.get((Integer) oImport[2]);
            } else {
                kundeDto = kundeDto = getKundeFac().kundeFindByPrimaryKey((Integer) oImport[2], theClientDto);
                cachedKunde.put((Integer) oImport[2], kundeDto);
            }

            zeile[REPORT_KUECHENAUSWERTUNG_KUNDE] = kundeDto.getPartnerDto().formatFixName1Name2();

            // PJ 14558 Theoretischer Wareneinsatz
            zeile[REPORT_KUECHENAUSWERTUNG_THEORETISCHER_WARENEINSATZ] = getKuecheFac()
                    .getTheoretischerWareneinsatz((Integer) oImport[7], (Integer) oImport[0], menge,
                            theClientDto);

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

        boolean bZeileImportHinzugefuegt = false;

        for (int j = 0; j < alLSPositionen.size(); j++) {

            FLRLieferscheinposition lspos = (FLRLieferscheinposition) alLSPositionen.get(j);
            // Kunde - oder Lieferadresse
            if (lspos.getFlrlieferschein().getFlrkunde().getI_id().equals(oImport[2])) {
                // Nun muss auch noch der Artikel gleich sein
                if (lspos.getFlrartikel().getI_id().equals(oImport[0])) {
                    if (lspos.getFlrlieferschein().getD_belegdatum().getTime() == tKassa.getTime()) {

                        if (bZeileImportHinzugefuegt == false) {
                            bZeileImportHinzugefuegt = true;
                            alDaten.add(zeile);
                        }

                        Object[] neueZeile = zeile.clone();

                        neueZeile[REPORT_KUECHENAUSWERTUNG_MENGEVERKAUFT] = null;
                        neueZeile[REPORT_KUECHENAUSWERTUNG_PREISVERKAUFT] = null;

                        neueZeile[REPORT_KUECHENAUSWERTUNG_MENGELIEFERSCEHIN] = lspos.getN_menge();
                        neueZeile[REPORT_KUECHENAUSWERTUNG_LIEFERSCHEIN] = lspos.getFlrlieferschein().getC_nr();

                        if (lspos.getPosition_i_id_artikelset() != null) {
                            neueZeile[REPORT_KUECHENAUSWERTUNG_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_POSITION;
                        } else {
                            if (lspos.getSetartikel_set() != null && lspos.getSetartikel_set().size() > 0) {
                                neueZeile[REPORT_KUECHENAUSWERTUNG_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_KOPF;
                            }
                        }

                        neueZeile[REPORT_KUECHENAUSWERTUNG_PREIS_LIEFERSCHEIN] = lspos
                                .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt();
                        alDaten.add(neueZeile);

                        // Zeile entfernen
                        alLSPositionen.remove(j);
                        j--;

                    }

                }

            }

        }

        if (bZeileImportHinzugefuegt == false) {
            alDaten.add(zeile);
        }

    }

    // Alle uebrigen LSPos eintragen
    for (int j = 0; j < alLSPositionen.size(); j++) {

        FLRLieferscheinposition lspos = (FLRLieferscheinposition) alLSPositionen.get(j);

        Object[] zeile = new Object[12];

        zeile[REPORT_KUECHENAUSWERTUNG_ARTIKELNUMMER] = lspos.getFlrartikel().getC_nr();

        zeile[REPORT_KUECHENAUSWERTUNG_MENGEVERKAUFT] = new BigDecimal(0);

        zeile[REPORT_KUECHENAUSWERTUNG_PREISVERKAUFT] = new BigDecimal(0);

        zeile[REPORT_KUECHENAUSWERTUNG_DATUMVERKAUFT] = new java.sql.Timestamp(
                lspos.getFlrlieferschein().getD_belegdatum().getTime());
        zeile[REPORT_KUECHENAUSWERTUNG_DATUMVERKAUFT_CUT] = Helper
                .cutTimestamp(new java.sql.Timestamp(lspos.getFlrlieferschein().getD_belegdatum().getTime()));

        ArtikelDto artikelDto = null;

        if (cachedArtikel.containsKey(lspos.getFlrartikel().getI_id())) {
            artikelDto = cachedArtikel.get(lspos.getFlrartikel().getI_id());
        } else {
            artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(lspos.getFlrartikel().getI_id(),
                    theClientDto);
            cachedArtikel.put(lspos.getFlrartikel().getI_id(), artikelDto);
        }

        zeile[REPORT_KUECHENAUSWERTUNG_BEZEICHNUNG] = artikelDto.formatBezeichnung();

        KundeDto kundeDto = null;

        if (cachedKunde.containsKey(lspos.getFlrlieferschein().getKunde_i_id_lieferadresse())) {
            kundeDto = cachedKunde.get(lspos.getFlrlieferschein().getKunde_i_id_lieferadresse());
        } else {
            kundeDto = getKundeFac().kundeFindByPrimaryKey(
                    lspos.getFlrlieferschein().getKunde_i_id_lieferadresse(), theClientDto);
            cachedKunde.put(lspos.getFlrlieferschein().getKunde_i_id_lieferadresse(), kundeDto);
        }
        zeile[REPORT_KUECHENAUSWERTUNG_KUNDE] = kundeDto.getPartnerDto().formatFixName1Name2();

        zeile[REPORT_KUECHENAUSWERTUNG_MENGELIEFERSCEHIN] = lspos.getN_menge();
        zeile[REPORT_KUECHENAUSWERTUNG_LIEFERSCHEIN] = lspos.getFlrlieferschein().getC_nr();

        if (lspos.getPosition_i_id_artikelset() != null) {

            zeile[REPORT_KUECHENAUSWERTUNG_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_POSITION;

        } else {

            /*
             * if(lspos.getSetartikel_set()!=null &&
             * lspos.getSetartikel_set().size()>0){
             * zeile[REPORT_KUECHENAUSWERTUNG_SETARTIKEL_TYP] =
             * ArtikelFac.SETARTIKEL_TYP_KOPF; }
             */
        }

        zeile[REPORT_KUECHENAUSWERTUNG_PREIS_LIEFERSCHEIN] = lspos
                .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt();
        alDaten.add(zeile);

    }

    session.close();
    sessionLS.close();

    // 2 Subreports
    Session sessionSub = FLRSessionFactory.getFactory().openSession();
    String sQuerySub = "FROM FLRLosReport AS l WHERE l.status_c_nr NOT IN('" + FertigungFac.STATUS_GESTOPPT
            + "','" + FertigungFac.STATUS_ANGELEGT + "') AND l.t_ausgabe>='"
            + Helper.formatDateWithSlashes(new java.sql.Date(tVon.getTime())) + "' AND l.t_ausgabe<'"
            + Helper.formatDateWithSlashes(new java.sql.Date(tBis.getTime())) + "' ";

    org.hibernate.Query hquerySub = sessionSub.createQuery(sQuerySub);
    List<?> resultListSub = hquerySub.list();
    Iterator<?> resultListIteratorSub = resultListSub.iterator();

    ArrayList alSofortverbrauch = new ArrayList();
    ArrayList alLagerbuchung = new ArrayList();

    int SUBREPORT_LOSNUMMER = 0;
    int SUBREPORT_WERT = 1;
    int SUBREPORT_PROJEKT = 2;
    int SUBREPORT_LAGER = 3;
    int SUBREPORT_KOSTENSTELLE = 4;
    int SUBREPORT_AUSGABEDATUM = 5;

    while (resultListIteratorSub.hasNext()) {
        FLRLosReport rep = (FLRLosReport) resultListIteratorSub.next();
        Object[] zeile = new Object[10];
        zeile[SUBREPORT_LOSNUMMER] = rep.getC_nr();
        zeile[SUBREPORT_PROJEKT] = rep.getC_projekt();
        zeile[SUBREPORT_KOSTENSTELLE] = rep.getFlrkostenstelle().getC_nr();
        zeile[SUBREPORT_AUSGABEDATUM] = rep.getT_ausgabe();

        LosDto losDto;
        try {
            losDto = getFertigungFac().losFindByPrimaryKey(rep.getI_id());

            LossollmaterialDto[] sollmat = getFertigungFac().lossollmaterialFindByLosIId(losDto.getIId());
            BigDecimal bdWert = new BigDecimal(0);
            for (int i = 0; i < sollmat.length; i++) {
                BigDecimal bdAusgegeben = getFertigungFac().getAusgegebeneMenge(sollmat[i].getIId(), null,
                        theClientDto);
                BigDecimal bdEinzelpreis = getFertigungFac().getAusgegebeneMengePreis(sollmat[i].getIId(), null,
                        theClientDto);
                bdWert = bdWert.add(bdAusgegeben.multiply(bdEinzelpreis));
            }

            zeile[SUBREPORT_WERT] = bdWert;

            String laeger = "";
            LoslagerentnahmeDto[] dtos = getFertigungFac().loslagerentnahmeFindByLosIId(rep.getI_id());
            for (int i = 0; i < dtos.length; i++) {
                LagerDto lagerDto = getLagerFac().lagerFindByPrimaryKey(dtos[i].getLagerIId());
                laeger += lagerDto.getCNr() + ", ";
            }
            zeile[SUBREPORT_LAGER] = laeger;

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

        if (rep.getFlrfertigungsgruppe().getC_bez().equals(StuecklisteFac.FERTIGUNGSGRUPPE_SOFORTVERBRAUCH)) {

            alSofortverbrauch.add(zeile);

        } else {
            alLagerbuchung.add(zeile);
        }

    }

    if (alSofortverbrauch.size() > 0) {
        String[] fieldnames = new String[] { "F_LOSNUMMER", "F_WERT", "F_PROJEKT", "F_LAGER", "F_KOSTENSTELLE",
                "F_AUSGABEDATUM" };
        Object[][] dataSub = new Object[alSofortverbrauch.size()][fieldnames.length];
        dataSub = (Object[][]) alSofortverbrauch.toArray(dataSub);

        parameter.put("DATENSUBREPORT_SOFORTVERBRAUCH", new LPDatenSubreport(dataSub, fieldnames));
    }

    if (alLagerbuchung.size() > 0) {
        String[] fieldnames = new String[] { "F_LOSNUMMER", "F_WERT", "F_PROJEKT", "F_LAGER", "F_KOSTENSTELLE",
                "F_AUSGABEDATUM" };
        Object[][] dataSub = new Object[alLagerbuchung.size()][fieldnames.length];
        dataSub = (Object[][]) alLagerbuchung.toArray(dataSub);

        parameter.put("DATENSUBREPORT_TAGESLOS", new LPDatenSubreport(dataSub, fieldnames));
    }

    // Sortieren nach PJ16694
    for (int i = alDaten.size() - 1; i > 0; --i) {
        for (int j = 0; j < i; ++j) {
            Object[] o = (Object[]) alDaten.get(j);
            Object[] o1 = (Object[]) alDaten.get(j + 1);

            Timestamp datum = (Timestamp) o[REPORT_KUECHENAUSWERTUNG_DATUMVERKAUFT_CUT];
            Timestamp datum1 = (Timestamp) o1[REPORT_KUECHENAUSWERTUNG_DATUMVERKAUFT_CUT];
            if (datum.after(datum1)) {
                alDaten.set(j, o1);
                alDaten.set(j + 1, o);
            } else if (datum.equals(datum1)) {
                String artikel = (String) o[REPORT_KUECHENAUSWERTUNG_ARTIKELNUMMER];
                String artikel1 = (String) o1[REPORT_KUECHENAUSWERTUNG_ARTIKELNUMMER];
                if (artikel.compareTo(artikel1) > 0) {
                    alDaten.set(j, o1);
                    alDaten.set(j + 1, o);
                }
            }
        }
    }

    data = new Object[alDaten.size()][10];
    data = (Object[][]) alDaten.toArray(data);

    initJRDS(parameter, KuecheReportFac.REPORT_MODUL, KuecheReportFac.REPORT_KUECHENAUSWERTUNG1,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

    return getReportPrint();

}

From source file:com.lp.server.partner.ejbfac.KundeReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public CustomerPricelistReportDto printKundenpreislisteRaw(Integer kundeIId, Integer artikelgruppeIId,
        Integer artikelklasseIId, boolean bMitGesperrten, String artikelNrVon, String artikelNrBis,
        boolean bMitVersteckten, java.sql.Date datGueltikeitsdatumI, boolean nurSonderkonditionen,
        boolean bMitArtikelbezeichnungenInMandantensprache, boolean nurWebshopartikel,
        TheClientDto theClientDto) {/*w  w w . j  av  a  2  s  . c  om*/

    CustomerPricelistReportDto returnDto = new CustomerPricelistReportDto();

    useCase = KundeReportFac.UC_REPORT_KUNDE_KUNDENPREISLISTE;
    KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto);
    if (!kundeDto.getMandantCNr().equals(theClientDto.getMandant())) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FALSCHER_MANDANT,
                "Kunde (i_id = " + kundeIId + ") in Mandant " + theClientDto.getMandant() + " nicht vorhanden");
    }
    // HashMap<String, Object> parameter = new HashMap<String, Object>();
    try {
        returnDto.setCustomer(new IdValueDto(kundeDto.getIId(), kundeDto.getPartnerDto().formatAnrede()));

        if (artikelgruppeIId != null) {
            returnDto.setItemgroup(new IdValueDto(artikelgruppeIId,
                    getArtikelFac().artgruFindByPrimaryKey(artikelgruppeIId, theClientDto).getCNr()));
        }
        if (artikelklasseIId != null) {
            returnDto.setItemclass(new IdValueDto(artikelklasseIId,
                    getArtikelFac().artklaFindByPrimaryKey(artikelklasseIId, theClientDto).getCNr()));
        }

        returnDto.setOnlyWebshopItems(nurWebshopartikel);
        ParametermandantDto param = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_PREISBASIS_VERKAUF);

        int iPreisbasis = (Integer) param.getCWertAsObject();
        // Mwstsatz aus Artikel

        String sQuery = "SELECT artikelliste.i_id, artikelliste.c_nr, aspr.c_bez, aspr.c_kbez, aspr.c_zbez,aspr.c_zbez2,artikelliste.einheit_c_nr, gruppe.c_nr, "
                + " klasse.c_nr, artikelliste.b_versteckt,artikelliste.mwstsatz_i_id, gruppe.i_id, shopgruppe, sgspr.c_bez "
                + " FROM FLRArtikelliste AS artikelliste"
                + " LEFT OUTER JOIN artikelliste.flrshopgruppe as shopgruppe "
                + " LEFT OUTER JOIN shopgruppe.shopgruppesprset AS sgspr "
                + " LEFT OUTER JOIN artikelliste.flrartikelgruppe AS gruppe "
                + " LEFT OUTER JOIN artikelliste.flrartikelklasse AS klasse "
                // +
                // " LEFT OUTER JOIN artikelliste.artikelsperreset AS sperren "
                + " LEFT OUTER JOIN artikelliste.artikelsprset AS aspr WHERE artikelliste.mandant_c_nr='"
                + theClientDto.getMandant() + "' AND artikelliste.artikelart_c_nr NOT IN ('"
                + ArtikelFac.ARTIKELART_HANDARTIKEL + "') ";

        if (!bMitGesperrten) {
            sQuery += " AND artikelliste.artikelsperreset IS EMPTY";
        }
        if (artikelklasseIId != null) {
            sQuery += " AND klasse.i_id=" + artikelklasseIId.intValue();
        }
        if (artikelgruppeIId != null) {
            sQuery += " AND gruppe.i_id=" + artikelgruppeIId.intValue();
        }
        if (bMitVersteckten == false) {
            sQuery += " AND artikelliste.b_versteckt=0 ";
        }
        if (artikelNrVon != null) {
            sQuery += " AND artikelliste.c_nr >='" + artikelNrVon + "'";
        }
        if (artikelNrBis != null) {
            sQuery = sQuery + " AND artikelliste.c_nr <='" + artikelNrBis + "'";
        }
        if (nurWebshopartikel) {
            sQuery = sQuery + " AND shopgruppe.i_id IS NOT NULL ";
        }
        sQuery += "ORDER BY artikelliste.c_nr";

        Session session = FLRSessionFactory.getFactory().openSession();
        Query inventurliste = session.createQuery(sQuery);

        session.enableFilter("filterLocale").setParameter("paramLocale",
                kundeDto.getPartnerDto().getLocaleCNrKommunikation());

        List<?> resultList = inventurliste.list();

        Iterator<?> resultListIterator = resultList.iterator();

        // ArrayList alDaten = new ArrayList();
        //
        // int row = 0;

        // int preisNachkommastellen =
        // getMandantFac().getNachkommastellenPreisVK(theClientDto.getMandant())
        // ;
        int preisNachkommastellen = 4;

        while (resultListIterator.hasNext()) {
            Object o[] = (Object[]) resultListIterator.next();

            Integer artikel_i_id = (Integer) o[0];
            Integer artgruIId = (Integer) o[11];

            CustomerPricelistItemDto reportArtikel = new CustomerPricelistItemDto(artikel_i_id, (String) o[1]);
            // Integer artikel_i_id = (Integer) o[0];
            // String artikelnummer = (String) o[1];
            // String bezeichnung = (String) o[2];
            // String kurzbezeichnung = (String) o[3];
            // String zusatzbezeichnung = (String) o[4];
            // String zusatzbezeichnung2 = (String) o[5];
            // String einheit = (String) o[6];
            // String gruppe = (String) o[7];
            // String klasse = (String) o[8];
            // Short versteckt = (Short) o[9];
            // Integer mwstsatzIId = (Integer) o[10];

            reportArtikel.setName((String) o[2]);
            reportArtikel.setShortName((String) o[3]);
            reportArtikel.setAdditionalName((String) o[4]);
            reportArtikel.setAdditionalName2((String) o[5]);
            reportArtikel.setUnit((String) o[6]);
            reportArtikel.setItemGroup((String) o[7]);
            reportArtikel.setItemClass((String) o[8]);
            reportArtikel.setHidden((Short) o[9]);
            reportArtikel.setVATId((Integer) o[10]);
            // reportArtikel.setArtikelgruppeId(artgruIId);
            reportArtikel.setSpecialCondition(false);
            reportArtikel.setItemGroupDto(new IdValueDto(artgruIId, (String) o[7]));

            if (o[12] != null) {
                FLRShopgruppe flrShopgruppe = (FLRShopgruppe) o[12];
                CustomerPricelistShopgroupDto shopgroupDto = new CustomerPricelistShopgroupDto();
                shopgroupDto.setId(flrShopgruppe.getI_id());
                shopgroupDto.setCnr(flrShopgruppe.getC_nr());
                shopgroupDto.setName(flrShopgruppe.getC_nr());
                shopgroupDto.setName(o[13] != null ? (String) o[13] : flrShopgruppe.getC_nr());
                reportArtikel.setShopgroupDto(shopgroupDto);
            }

            BigDecimal preisBasis = null;
            if (iPreisbasis == 0 || iPreisbasis == 2) {

                preisBasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id, datGueltikeitsdatumI, null,
                        kundeDto.getCWaehrung(), theClientDto);
            } else {

                preisBasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id, datGueltikeitsdatumI,
                        kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(), kundeDto.getCWaehrung(),
                        theClientDto);

            }

            // Preisbasis fuer Menge =1 ist nun definiert

            // int iAnzahlZeilenSubreport = 8;
            // String[] fieldnames = new String[] { "Menge", "Basis",
            // "BasisPreis", "Fixpreis", "Rabattsatz",
            // "BerechneterPreis", "Waehrung", "Soko" };

            // ArrayList al = new ArrayList();

            if (nurSonderkonditionen == false) {
                CustomerPricelistPriceDto preisDto = new CustomerPricelistPriceDto(
                        CustomerPricelistPriceDto.PREISTYP_VKPREISBASIS, preisNachkommastellen);
                preisDto.setBasePrice(preisBasis);

                // Object[] zeile = new Object[iAnzahlZeilenSubreport];
                // zeile[0] = null;
                // zeile[1] = "VK-Preisbasis";
                // zeile[2] = preisBasis;
                // zeile[3] = null;

                VkPreisfindungPreislisteDto artikelPreisliste = null;

                try {
                    artikelPreisliste = getVkPreisfindungFac().getAktuellePreislisteByArtikelIIdPreislisteIId(
                            artikel_i_id, kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                            new Date(System.currentTimeMillis()), kundeDto.getCWaehrung(), theClientDto);
                } catch (Throwable t) {
                    // ignore
                }

                if (artikelPreisliste != null) {

                    if (artikelPreisliste.getNArtikelfixpreis() != null) {
                        // zeile[5] =
                        // artikelPreisliste.getNArtikelfixpreis();
                        preisDto.setCalculatedPrice(artikelPreisliste.getNArtikelfixpreis());
                    } else {
                        // zeile[4] = artikelPreisliste
                        // .getNArtikelstandardrabattsatz()
                        // .doubleValue();
                        preisDto.setDiscountRate(
                                artikelPreisliste.getNArtikelstandardrabattsatz().doubleValue());
                        if (preisBasis != null) {
                            BigDecimal p = getVkPreisfindungFac().berechneVerkaufspreis(preisBasis,
                                    artikelPreisliste.getNArtikelstandardrabattsatz().doubleValue()).nettopreis;
                            preisDto.setCalculatedPrice(p);
                            // zeile[5] = getVkPreisfindungFac()
                            // .berechneVerkaufspreis(
                            // preisBasis,
                            // artikelPreisliste
                            // .getNArtikelstandardrabattsatz()
                            // .doubleValue()).nettopreis;
                        } else {
                            // zeile[5] = new BigDecimal(0);
                            preisDto.setCalculatedPrice(BigDecimal.ZERO);
                        }
                    }

                } else {
                    // zeile[5] = preisBasis;
                    preisDto.setCalculatedPrice(preisBasis);
                }

                // zeile[6] = kundeDto.getCWaehrung();
                // zeile[7] = new Boolean(false);
                // al.add(zeile);

                preisDto.setCurrency(kundeDto.getCWaehrung());
                preisDto.setSpecialCondition(false);
                reportArtikel.getPrices().add(preisDto);

                // Staffelpreis
                VkpfMengenstaffelDto[] vkpfMengenstaffelDtos = getVkPreisfindungFac()
                        .vkpfMengenstaffelFindByArtikelIIdGueltigkeitsdatum(artikel_i_id, datGueltikeitsdatumI,
                                kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(), theClientDto);
                for (int i = 0; i < vkpfMengenstaffelDtos.length; i++) {
                    VkpfMengenstaffelDto vkpfMengenstaffelDto = vkpfMengenstaffelDtos[i];

                    if (vkpfMengenstaffelDto.getVkpfartikelpreislisteIId() == null
                            || vkpfMengenstaffelDto.getVkpfartikelpreislisteIId()
                                    .equals(kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste())) {
                        BigDecimal preisBasisStaffel = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                datGueltikeitsdatumI, vkpfMengenstaffelDto.getNMenge(),
                                vkpfMengenstaffelDto.getVkpfartikelpreislisteIId(), kundeDto.getCWaehrung(),
                                theClientDto);

                        CustomerPricelistPriceDto staffelpreisDto = new CustomerPricelistPriceDto(
                                CustomerPricelistPriceDto.PREISTYP_VKSTAFFELPREIS, preisNachkommastellen);
                        staffelpreisDto.setAmount(vkpfMengenstaffelDto.getNMenge());
                        staffelpreisDto.setBasePrice(preisBasisStaffel);
                        // zeile = new Object[iAnzahlZeilenSubreport];
                        // zeile[0] = vkpfMengenstaffelDto.getNMenge();
                        // zeile[1] = "VK-Staffelpreis";
                        // zeile[2] = preisBasisStaffel;

                        String waehrung = theClientDto.getSMandantenwaehrung();

                        if (vkpfMengenstaffelDto.getVkpfartikelpreislisteIId() != null) {
                            waehrung = getVkPreisfindungFac()
                                    .vkpfartikelpreislisteFindByPrimaryKey(
                                            vkpfMengenstaffelDto.getVkpfartikelpreislisteIId())
                                    .getWaehrungCNr();
                        }

                        // zeile[5] = waehrung;

                        if (vkpfMengenstaffelDto.getNArtikelfixpreis() != null) {
                            // zeile[3] = vkpfMengenstaffelDto
                            // .getNArtikelfixpreis();
                            // zeile[5] = vkpfMengenstaffelDto
                            // .getNArtikelfixpreis();
                            // zeile[6] = waehrung;

                            staffelpreisDto.setFixPrice(vkpfMengenstaffelDto.getNArtikelfixpreis());
                            staffelpreisDto.setCalculatedPrice(vkpfMengenstaffelDto.getNArtikelfixpreis());
                            staffelpreisDto.setCurrency(waehrung);
                        } else {
                            // zeile[3] = null;
                            // zeile[4] = vkpfMengenstaffelDto
                            // .getFArtikelstandardrabattsatz();
                            // zeile[5] = getVkPreisfindungFac()
                            // .berechneVerkaufspreis(
                            // preisBasisStaffel,
                            // vkpfMengenstaffelDto
                            // .getFArtikelstandardrabattsatz()).nettopreis;
                            // zeile[6] = kundeDto.getCWaehrung();
                            // zeile[7] = new Boolean(false);

                            staffelpreisDto
                                    .setDiscountRate(vkpfMengenstaffelDto.getFArtikelstandardrabattsatz());
                            staffelpreisDto.setCalculatedPrice(
                                    getVkPreisfindungFac().berechneVerkaufspreis(preisBasisStaffel,
                                            vkpfMengenstaffelDto.getFArtikelstandardrabattsatz()).nettopreis);
                            staffelpreisDto.setCurrency(kundeDto.getCWaehrung());
                        }

                        // al.add(zeile);
                        reportArtikel.getPrices().add(staffelpreisDto);
                    }
                }
            }

            // Soko Artikel
            KundesokoDto kundeSokoArtikel = getKundesokoFac()
                    .kundesokoFindByKundeIIdArtikelIIdGueltigkeitsdatumOhneExc(kundeIId, artikel_i_id,
                            datGueltikeitsdatumI);

            if (kundeSokoArtikel != null) {
                // oZeile[REPORT_KUNDENPREISLISTE_ENTHAELT_SOKO] = new
                // Boolean(
                // true);
                reportArtikel.setSpecialCondition(true);

                KundesokomengenstaffelDto[] kundesokomengenstaffelDto = getKundesokoFac()
                        .kundesokomengenstaffelFindByKundesokoIIdInZielWaehrung(kundeSokoArtikel.getIId(),
                                datGueltikeitsdatumI, kundeDto.getCWaehrung(), theClientDto);

                for (int u = 0; u < kundesokomengenstaffelDto.length; u++) {

                    KundesokomengenstaffelDto kdsDto = kundesokomengenstaffelDto[u];

                    CustomerPricelistPriceDto sokopreisDto = new CustomerPricelistPriceDto(
                            CustomerPricelistPriceDto.PREISTYP_SOKOARTIKEL, preisNachkommastellen);
                    sokopreisDto.setSpecialCondition(true);
                    sokopreisDto.setBasePrice(preisBasis);
                    // Object[] zeile = new Object[iAnzahlZeilenSubreport];
                    // zeile[0] = kdsDto.getNMenge();
                    // zeile[1] = "Soko-Artikel";
                    // zeile[2] = preisBasis;

                    if (kdsDto.getNArtikelfixpreis() != null) {
                        // zeile[3] = kdsDto.getNArtikelfixpreis();
                        // zeile[5] = kdsDto.getNArtikelfixpreis();
                        sokopreisDto.setFixPrice(kdsDto.getNArtikelfixpreis());
                        sokopreisDto.setCalculatedPrice(kdsDto.getNArtikelfixpreis());
                    } else {
                        // zeile[4] =
                        // kdsDto.getFArtikelstandardrabattsatz();
                        sokopreisDto.setDiscountRate(kdsDto.getFArtikelstandardrabattsatz());

                        BigDecimal nPreisbasis = null;
                        if (iPreisbasis == 0 || iPreisbasis == 2) {

                            // WH 21.06.06 Es gilt die VK-Basis, die zu
                            // Beginn
                            // der Mengenstaffel gueltig ist
                            nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                    datGueltikeitsdatumI, null, kundeDto.getCWaehrung(), theClientDto);
                        } else {
                            nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                    datGueltikeitsdatumI, kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                                    kundeDto.getCWaehrung(), theClientDto);
                        }

                        if (nPreisbasis != null) {
                            // zeile[6] = kundeDto.getCWaehrung();
                            // zeile[5] = getVkPreisfindungFac()
                            // .berechneVerkaufspreis(
                            // nPreisbasis,
                            // kdsDto.getFArtikelstandardrabattsatz()).nettopreis;
                            sokopreisDto.setCalculatedPrice(getVkPreisfindungFac().berechneVerkaufspreis(
                                    nPreisbasis, kdsDto.getFArtikelstandardrabattsatz()).nettopreis);
                        }
                    }

                    // zeile[6] = kundeDto.getCWaehrung();
                    sokopreisDto.setCurrency(kundeDto.getCWaehrung());
                    sokopreisDto.setAmount(kdsDto.getNMenge());

                    // al.add(zeile);
                    reportArtikel.getPrices().add(sokopreisDto);
                }
            }

            // Soko Artikelgruppe
            if (artgruIId != null) {
                KundesokoDto kundeSokoArtGru = getKundesokoFac()
                        .kundesokoFindByKundeIIdArtgruIIdGueltigkeitsdatumOhneExc(kundeIId, artgruIId,
                                datGueltikeitsdatumI);
                if (kundeSokoArtGru != null) {
                    KundesokomengenstaffelDto[] kundesokomengenstaffelDto = getKundesokoFac()
                            .kundesokomengenstaffelFindByKundesokoIIdInZielWaehrung(kundeSokoArtGru.getIId(),
                                    datGueltikeitsdatumI, kundeDto.getCWaehrung(), theClientDto);

                    for (int u = 0; u < kundesokomengenstaffelDto.length; u++) {

                        KundesokomengenstaffelDto kdsDto = kundesokomengenstaffelDto[u];

                        CustomerPricelistPriceDto sokopreisDto = new CustomerPricelistPriceDto(
                                CustomerPricelistPriceDto.PREISTYP_SOKOARTIKELGRUPPE, preisNachkommastellen);
                        sokopreisDto.setSpecialCondition(true);
                        sokopreisDto.setAmount(kdsDto.getNMenge());
                        sokopreisDto.setBasePrice(preisBasis);
                        // Object[] zeile = new
                        // Object[iAnzahlZeilenSubreport];
                        // zeile[0] = kdsDto.getNMenge();
                        // zeile[1] = "Soko-Artikelgruppe";
                        // zeile[2] = preisBasis;

                        if (kdsDto.getNArtikelfixpreis() != null) {
                            sokopreisDto.setFixPrice(kdsDto.getNArtikelfixpreis());
                            sokopreisDto.setCalculatedPrice(kdsDto.getNArtikelfixpreis());
                            // zeile[3] = kdsDto.getNArtikelfixpreis();
                            // zeile[5] = kdsDto.getNArtikelfixpreis();
                        } else {
                            sokopreisDto.setDiscountRate(kdsDto.getFArtikelstandardrabattsatz());
                            // zeile[4] = kdsDto
                            // .getFArtikelstandardrabattsatz();

                            BigDecimal nPreisbasis = null;
                            if (iPreisbasis == 0 || iPreisbasis == 2) {

                                // WH 21.06.06 Es gilt die VK-Basis, die
                                // zu
                                // Beginn
                                // der Mengenstaffel gueltig ist
                                nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                        datGueltikeitsdatumI, null, kundeDto.getCWaehrung(), theClientDto);
                            } else {
                                nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                        datGueltikeitsdatumI,
                                        kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                                        kundeDto.getCWaehrung(), theClientDto);
                            }

                            if (nPreisbasis != null) {
                                sokopreisDto.setCalculatedPrice(getVkPreisfindungFac().berechneVerkaufspreis(
                                        nPreisbasis, kdsDto.getFArtikelstandardrabattsatz()).nettopreis);
                                // zeile[5] = getVkPreisfindungFac()
                                // .berechneVerkaufspreis(
                                // nPreisbasis,
                                // kdsDto.getFArtikelstandardrabattsatz()).nettopreis;
                            }
                        }

                        sokopreisDto.setCurrency(kundeDto.getCWaehrung());
                        // zeile[6] = kundeDto.getCWaehrung();

                        reportArtikel.getPrices().add(sokopreisDto);
                        // al.add(zeile);
                    }
                }
            }

            // Object[][] dataSub = new
            // Object[al.size()][fieldnames.length];
            // dataSub = (Object[][]) al.toArray(dataSub);
            //
            // oZeile[REPORT_KUNDENPREISLISTE_SUBREPORT_PREISE] = new
            // LPDatenSubreport(
            // dataSub, fieldnames);
            // alDaten.add(oZeile);

            if (bMitArtikelbezeichnungenInMandantensprache) {
                // Object[] oZeileMand = oZeile.clone();

                Artikelspr artikelspr = em.find(Artikelspr.class,
                        new ArtikelsprPK(artikel_i_id, theClientDto.getLocUiAsString()));
                CustomerPricelistItemDescriptionDto bezDto = new CustomerPricelistItemDescriptionDto();
                if (artikelspr != null) {
                    bezDto.setName(artikelspr.getCBez());
                    bezDto.setShortName(artikelspr.getCKbez());
                    bezDto.setAdditionalName(artikelspr.getCZbez());
                    bezDto.setAdditionalName2(artikelspr.getCZbez2());
                    // oZeileMand[REPORT_KUNDENPREISLISTE_BEZEICHNUNG] =
                    // artikelspr
                    // .getCBez();
                    // oZeileMand[REPORT_KUNDENPREISLISTE_KURZBEZEICHNUNG] =
                    // artikelspr
                    // .getCKbez();
                    // oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG]
                    // = artikelspr
                    // .getCZbez();
                    // oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG2]
                    // = artikelspr
                    // .getCZbez2();
                    // } else {
                    // oZeileMand[REPORT_KUNDENPREISLISTE_BEZEICHNUNG] =
                    // null;
                    // oZeileMand[REPORT_KUNDENPREISLISTE_KURZBEZEICHNUNG] =
                    // null;
                    // oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG]
                    // = null;
                    // oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG2]
                    // = null;
                }
                reportArtikel.setClientDescriptionDto(bezDto);
                // alDaten.add(oZeileMand);
            }

            if (!nurSonderkonditionen || (nurSonderkonditionen & reportArtikel.getSpecialCondition())) {
                returnDto.getItems().add(reportArtikel);
            }
        }

        session.close();

        // Object[][] dataTemp = new Object[1][1];
        // data = (Object[][]) alDaten.toArray(dataTemp);
        // parameter.put("P_ARTIKELNRVON", artikelNrVon);
        // parameter.put("P_ARTIKELNRBIS", artikelNrBis);
        // parameter.put("P_MITVERSTECKTEN", new Boolean(bMitVersteckten));
        // parameter.put("P_NURSOKO", new Boolean(nurSonderkonditionen));
        // parameter.put("P_MITMANDANTENSPRACHE", new Boolean(
        // bMitArtikelbezeichnungenInMandantensprache));
        //
        // parameter.put("P_PREISGUELTIGKEIT", datGueltikeitsdatumI);

        returnDto.setItemRangeFrom(artikelNrVon);
        returnDto.setItemRangeTo(artikelNrBis);
        returnDto.setWithHidden(bMitVersteckten);
        returnDto.setOnlySpecialCondition(nurSonderkonditionen);
        returnDto.setWithClientLanguage(bMitArtikelbezeichnungenInMandantensprache);
        returnDto.setPriceValidityMs(datGueltikeitsdatumI.getTime());
    } catch (RemoteException e) {
        throwEJBExceptionLPRespectOld(e);
        // } catch(Throwable t) {
        // System.out.println("uups " + t.getMessage()) ;
    }
    // initJRDS(parameter, KundeReportFac.REPORT_MODUL,
    // KundeReportFac.REPORT_KUNDENPREISLISTE,
    // theClientDto.getMandant(), theClientDto.getLocUi(),
    // theClientDto);
    return returnDto;
}

From source file:com.lp.server.partner.ejbfac.KundeReportFacBean.java

License:Open Source License

private JasperPrintLP printKundenpreislisteOld(Integer kundeIId, Integer artikelgruppeIId,
        Integer artikelklasseIId, boolean bMitInaktiven, String artikelNrVon, String artikelNrBis,
        boolean bMitVersteckten, java.sql.Date datGueltikeitsdatumI, boolean nurSonderkonditionen,
        boolean bMitArtikelbezeichnungenInMandantensprache, TheClientDto theClientDto) {
    useCase = KundeReportFac.UC_REPORT_KUNDE_KUNDENPREISLISTE;
    KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto);
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    try {/*from  w ww .  ja v a 2  s  .  c o m*/

        parameter.put("P_KUNDE", kundeDto.getPartnerDto().formatAnrede());

        if (artikelgruppeIId != null) {
            parameter.put("P_ARTIKELGRUPPE",
                    getArtikelFac().artgruFindByPrimaryKey(artikelgruppeIId, theClientDto).getCNr());
        }
        if (artikelklasseIId != null) {
            parameter.put("P_ARTIKELKLASSE",
                    getArtikelFac().artklaFindByPrimaryKey(artikelklasseIId, theClientDto).getCNr());
        }

        ParametermandantDto param = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_PREISBASIS_VERKAUF);

        int iPreisbasis = (Integer) param.getCWertAsObject();

        // Mwstsatz aus Artikel

        String sQuery = "SELECT artikelliste.i_id, artikelliste.c_nr, aspr.c_bez, aspr.c_kbez, aspr.c_zbez,aspr.c_zbez2,artikelliste.einheit_c_nr, gruppe.c_nr, klasse.c_nr, artikelliste.b_versteckt,artikelliste.mwstsatz_i_id, gruppe.i_id "
                + " FROM FLRArtikelliste AS artikelliste"
                + " LEFT OUTER JOIN artikelliste.flrartikelgruppe AS gruppe "
                + " LEFT OUTER JOIN artikelliste.flrartikelklasse AS klasse "
                + " LEFT OUTER JOIN artikelliste.artikelsprset AS aspr WHERE artikelliste.mandant_c_nr='"
                + theClientDto.getMandant() + "' AND artikelliste.artikelart_c_nr NOT IN ('"
                + ArtikelFac.ARTIKELART_HANDARTIKEL + "') ";

        if (artikelklasseIId != null) {
            sQuery += " AND klasse.i_id=" + artikelklasseIId.intValue();
        }
        if (artikelgruppeIId != null) {
            sQuery += " AND gruppe.i_id=" + artikelgruppeIId.intValue();
        }
        if (bMitVersteckten == false) {
            sQuery += " AND artikelliste.b_versteckt=0 ";
        }
        if (artikelNrVon != null) {
            sQuery += " AND artikelliste.c_nr >='" + artikelNrVon + "'";
        }
        if (artikelNrBis != null) {
            sQuery = sQuery + " AND artikelliste.c_nr <='" + artikelNrBis + "'";
        }

        sQuery += "ORDER BY artikelliste.c_nr";

        Session session = FLRSessionFactory.getFactory().openSession();
        Query inventurliste = session.createQuery(sQuery);

        session.enableFilter("filterLocale").setParameter("paramLocale",
                kundeDto.getPartnerDto().getLocaleCNrKommunikation());

        List<?> resultList = inventurliste.list();

        Iterator<?> resultListIterator = resultList.iterator();

        ArrayList alDaten = new ArrayList();

        int row = 0;

        while (resultListIterator.hasNext()) {
            Object o[] = (Object[]) resultListIterator.next();

            Integer artikel_i_id = (Integer) o[0];
            String artikelnummer = (String) o[1];
            String bezeichnung = (String) o[2];
            String kurzbezeichnung = (String) o[3];
            String zusatzbezeichnung = (String) o[4];
            String zusatzbezeichnung2 = (String) o[5];
            String einheit = (String) o[6];
            String gruppe = (String) o[7];
            String klasse = (String) o[8];
            Short versteckt = (Short) o[9];
            Integer mwstsatzIId = (Integer) o[10];
            Integer artgruIId = (Integer) o[11];

            Object[] oZeile = new Object[REPORT_KUNDENPREISLISTE_ANZAHL_SPALTEN];

            oZeile[REPORT_KUNDENPREISLISTE_ARTIKELNUMMER] = artikelnummer;
            oZeile[REPORT_KUNDENPREISLISTE_BEZEICHNUNG] = bezeichnung;
            oZeile[REPORT_KUNDENPREISLISTE_KURZBEZEICHNUNG] = kurzbezeichnung;
            oZeile[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG] = zusatzbezeichnung;
            oZeile[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG2] = zusatzbezeichnung2;
            oZeile[REPORT_KUNDENPREISLISTE_ARTIKELGRUPPE] = gruppe;
            oZeile[REPORT_KUNDENPREISLISTE_ARTIKELKLASSE] = klasse;
            oZeile[REPORT_KUNDENPREISLISTE_VERSTECKT] = Helper.short2Boolean(versteckt);
            oZeile[REPORT_KUNDENPREISLISTE_ENTHAELT_SOKO] = new Boolean(false);

            BigDecimal preisBasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                    datGueltikeitsdatumI, null, kundeDto.getCWaehrung(), theClientDto);

            // Preisbasis fuer Menge =1 ist nun definiert

            int iAnzahlZeilenSubreport = 8;
            String[] fieldnames = new String[] { "Menge", "Basis", "BasisPreis", "Fixpreis", "Rabattsatz",
                    "BerechneterPreis", "Waehrung", "Soko" };

            ArrayList al = new ArrayList();

            if (nurSonderkonditionen == false) {

                Object[] zeile = new Object[iAnzahlZeilenSubreport];
                zeile[0] = null;
                zeile[1] = "VK-Preisbasis";
                zeile[2] = preisBasis;
                zeile[3] = null;

                VkPreisfindungPreislisteDto artikelPreisliste = null;

                try {
                    artikelPreisliste = getVkPreisfindungFac().getAktuellePreislisteByArtikelIIdPreislisteIId(
                            artikel_i_id, kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                            new Date(System.currentTimeMillis()), kundeDto.getCWaehrung(), theClientDto);
                } catch (Throwable t) {
                    // ignore
                }

                if (artikelPreisliste != null) {

                    if (artikelPreisliste.getNArtikelfixpreis() != null) {
                        zeile[5] = artikelPreisliste.getNArtikelfixpreis();
                    } else {
                        zeile[4] = artikelPreisliste.getNArtikelstandardrabattsatz().doubleValue();

                        if (preisBasis != null) {

                            zeile[5] = getVkPreisfindungFac().berechneVerkaufspreis(preisBasis,
                                    artikelPreisliste.getNArtikelstandardrabattsatz().doubleValue()).nettopreis;
                        } else {
                            zeile[5] = new BigDecimal(0);
                        }
                    }

                } else {

                    zeile[5] = preisBasis;
                }

                zeile[6] = kundeDto.getCWaehrung();
                zeile[7] = new Boolean(false);

                al.add(zeile);

                // Staffelpreis
                VkpfMengenstaffelDto[] vkpfMengenstaffelDtos = getVkPreisfindungFac()
                        .vkpfMengenstaffelFindByArtikelIIdGueltigkeitsdatum(artikel_i_id, datGueltikeitsdatumI,
                                kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(), theClientDto);
                for (int i = 0; i < vkpfMengenstaffelDtos.length; i++) {
                    VkpfMengenstaffelDto vkpfMengenstaffelDto = vkpfMengenstaffelDtos[i];

                    if (vkpfMengenstaffelDto.getVkpfartikelpreislisteIId() == null
                            || vkpfMengenstaffelDto.getVkpfartikelpreislisteIId()
                                    .equals(kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste())) {
                        BigDecimal preisBasisStaffel = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                datGueltikeitsdatumI, vkpfMengenstaffelDto.getNMenge(),
                                vkpfMengenstaffelDto.getVkpfartikelpreislisteIId(), kundeDto.getCWaehrung(),
                                theClientDto);

                        zeile = new Object[iAnzahlZeilenSubreport];
                        zeile[0] = vkpfMengenstaffelDto.getNMenge();
                        zeile[1] = "VK-Staffelpreis";
                        zeile[2] = preisBasisStaffel;

                        String waehrung = theClientDto.getSMandantenwaehrung();

                        if (vkpfMengenstaffelDto.getVkpfartikelpreislisteIId() != null) {
                            waehrung = getVkPreisfindungFac()
                                    .vkpfartikelpreislisteFindByPrimaryKey(
                                            vkpfMengenstaffelDto.getVkpfartikelpreislisteIId())
                                    .getWaehrungCNr();
                        }

                        zeile[5] = waehrung;
                        if (vkpfMengenstaffelDto.getNArtikelfixpreis() != null) {
                            zeile[3] = vkpfMengenstaffelDto.getNArtikelfixpreis();
                            zeile[5] = vkpfMengenstaffelDto.getNArtikelfixpreis();
                            zeile[6] = waehrung;

                        } else {

                            zeile[3] = null;
                            zeile[4] = vkpfMengenstaffelDto.getFArtikelstandardrabattsatz();
                            zeile[5] = getVkPreisfindungFac().berechneVerkaufspreis(preisBasisStaffel,
                                    vkpfMengenstaffelDto.getFArtikelstandardrabattsatz()).nettopreis;
                            zeile[6] = kundeDto.getCWaehrung();
                            zeile[7] = new Boolean(false);
                        }

                        al.add(zeile);
                    }

                }

            }

            // Soko Artikel
            KundesokoDto kundeSokoArtikel = getKundesokoFac()
                    .kundesokoFindByKundeIIdArtikelIIdGueltigkeitsdatumOhneExc(kundeIId, artikel_i_id,
                            datGueltikeitsdatumI);

            if (kundeSokoArtikel != null) {
                oZeile[REPORT_KUNDENPREISLISTE_ENTHAELT_SOKO] = new Boolean(true);
                KundesokomengenstaffelDto[] kundesokomengenstaffelDto = getKundesokoFac()
                        .kundesokomengenstaffelFindByKundesokoIIdInZielWaehrung(kundeSokoArtikel.getIId(),
                                datGueltikeitsdatumI, kundeDto.getCWaehrung(), theClientDto);

                for (int u = 0; u < kundesokomengenstaffelDto.length; u++) {

                    KundesokomengenstaffelDto kdsDto = kundesokomengenstaffelDto[u];

                    Object[] zeile = new Object[iAnzahlZeilenSubreport];
                    zeile[0] = kdsDto.getNMenge();
                    zeile[1] = "Soko-Artikel";
                    zeile[2] = preisBasis;

                    if (kdsDto.getNArtikelfixpreis() != null) {
                        zeile[3] = kdsDto.getNArtikelfixpreis();
                        zeile[5] = kdsDto.getNArtikelfixpreis();
                    } else {
                        zeile[4] = kdsDto.getFArtikelstandardrabattsatz();

                        BigDecimal nPreisbasis = null;
                        if (iPreisbasis == 0 || iPreisbasis == 2) {

                            // WH 21.06.06 Es gilt die VK-Basis, die zu
                            // Beginn
                            // der Mengenstaffel gueltig ist
                            nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                    datGueltikeitsdatumI, null, kundeDto.getCWaehrung(), theClientDto);
                        } else {
                            nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                    datGueltikeitsdatumI, kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                                    kundeDto.getCWaehrung(), theClientDto);
                        }

                        if (nPreisbasis != null) {
                            zeile[6] = kundeDto.getCWaehrung();
                            zeile[5] = getVkPreisfindungFac().berechneVerkaufspreis(nPreisbasis,
                                    kdsDto.getFArtikelstandardrabattsatz()).nettopreis;
                        }

                    }

                    zeile[6] = kundeDto.getCWaehrung();

                    al.add(zeile);
                }

                // Soko Artikelgruppe
                if (artgruIId != null) {
                    KundesokoDto kundeSokoArtGru = getKundesokoFac()
                            .kundesokoFindByKundeIIdArtgruIIdGueltigkeitsdatumOhneExc(kundeIId, artgruIId,
                                    datGueltikeitsdatumI);

                    if (kundeSokoArtGru != null) {
                        kundesokomengenstaffelDto = getKundesokoFac()
                                .kundesokomengenstaffelFindByKundesokoIIdInZielWaehrung(
                                        kundeSokoArtGru.getIId(), datGueltikeitsdatumI, kundeDto.getCWaehrung(),
                                        theClientDto);

                        for (int u = 0; u < kundesokomengenstaffelDto.length; u++) {

                            KundesokomengenstaffelDto kdsDto = kundesokomengenstaffelDto[u];

                            Object[] zeile = new Object[iAnzahlZeilenSubreport];
                            zeile[0] = kdsDto.getNMenge();
                            zeile[1] = "Soko-Artikelgruppe";
                            zeile[2] = preisBasis;

                            if (kdsDto.getNArtikelfixpreis() != null) {
                                zeile[3] = kdsDto.getNArtikelfixpreis();
                                zeile[5] = kdsDto.getNArtikelfixpreis();
                            } else {
                                zeile[4] = kdsDto.getFArtikelstandardrabattsatz();

                                BigDecimal nPreisbasis = null;
                                if (iPreisbasis == 0 || iPreisbasis == 2) {

                                    // WH 21.06.06 Es gilt die VK-Basis, die
                                    // zu
                                    // Beginn
                                    // der Mengenstaffel gueltig ist
                                    nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                            datGueltikeitsdatumI, null, kundeDto.getCWaehrung(), theClientDto);
                                } else {
                                    nPreisbasis = getVkPreisfindungFac().ermittlePreisbasis(artikel_i_id,
                                            datGueltikeitsdatumI,
                                            kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                                            kundeDto.getCWaehrung(), theClientDto);
                                }

                                if (nPreisbasis != null) {

                                    zeile[5] = getVkPreisfindungFac().berechneVerkaufspreis(nPreisbasis,
                                            kdsDto.getFArtikelstandardrabattsatz()).nettopreis;
                                }

                            }

                            zeile[6] = kundeDto.getCWaehrung();

                            al.add(zeile);
                        }

                    }
                }

            }
            Object[][] dataSub = new Object[al.size()][fieldnames.length];
            dataSub = (Object[][]) al.toArray(dataSub);

            oZeile[REPORT_KUNDENPREISLISTE_SUBREPORT_PREISE] = new LPDatenSubreport(dataSub, fieldnames);
            alDaten.add(oZeile);

            if (bMitArtikelbezeichnungenInMandantensprache) {
                Object[] oZeileMand = oZeile.clone();

                Artikelspr artikelspr = em.find(Artikelspr.class,
                        new ArtikelsprPK(artikel_i_id, theClientDto.getLocUiAsString()));
                if (artikelspr != null) {
                    oZeileMand[REPORT_KUNDENPREISLISTE_BEZEICHNUNG] = artikelspr.getCBez();
                    oZeileMand[REPORT_KUNDENPREISLISTE_KURZBEZEICHNUNG] = artikelspr.getCKbez();
                    oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG] = artikelspr.getCZbez();
                    oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG2] = artikelspr.getCZbez2();
                } else {
                    oZeileMand[REPORT_KUNDENPREISLISTE_BEZEICHNUNG] = null;
                    oZeileMand[REPORT_KUNDENPREISLISTE_KURZBEZEICHNUNG] = null;
                    oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG] = null;
                    oZeileMand[REPORT_KUNDENPREISLISTE_ZUSATZBEZEICHNUNG2] = null;
                }

                alDaten.add(oZeileMand);

            }

        }

        session.close();

        Object[][] dataTemp = new Object[1][1];
        data = (Object[][]) alDaten.toArray(dataTemp);
        parameter.put("P_ARTIKELNRVON", artikelNrVon);
        parameter.put("P_ARTIKELNRBIS", artikelNrBis);
        parameter.put("P_MITVERSTECKTEN", new Boolean(bMitVersteckten));
        parameter.put("P_NURSOKO", new Boolean(nurSonderkonditionen));
        parameter.put("P_MITMANDANTENSPRACHE", new Boolean(bMitArtikelbezeichnungenInMandantensprache));

        parameter.put("P_PREISGUELTIGKEIT", datGueltikeitsdatumI);
    } catch (RemoteException e) {
        throwEJBExceptionLPRespectOld(e);
    }
    initJRDS(parameter, KundeReportFac.REPORT_MODUL, KundeReportFac.REPORT_KUNDENPREISLISTE,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    return getReportPrint();
}

From source file:com.lp.server.partner.ejbfac.WebshopCustomerServiceEjb.java

License:Open Source License

@Override
public WebshopCustomersResult getCustomers(WebshopAuthHeader header) {
    WebshopCustomersResult result = new WebshopCustomersResult();

    List<FLRKunde> flrCustomers = new ArrayList<FLRKunde>();
    Session session = null;
    try {// w ww  .ja va 2s.co  m
        setupSessionParams(header);

        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        String sLocUI = Helper.locale2String(authController.getWebClientDto().getLocUi());
        session.enableFilter("filterLocale").setParameter("paramLocale", sLocUI);

        String queryString = MessageFormat.format(
                "select kunde FROM FLRKunde as kunde "
                        + "left outer join kunde.flrpartner.partner_paselektion_set as paset "
                        + "left outer join paset.flrselektion as s " + "WHERE s.b_webshop = 1 AND "
                        + " kunde.mandant_c_nr = ''{0}'' " + " ORDER BY kunde.i_id",
                new Object[] { authController.getWebClientDto().getMandant() });

        Query query = session.createQuery(queryString);
        flrCustomers = query.list();
        addCustomerReferences(flrCustomers, result);

        result.setOkay();
        return result;
    } catch (HeliumSimpleAuthException e) {
        myLogger.error("HeliumSimpleAuthException (" + e.getErrorCode() + ")");
        return new WebshopCustomersResult(WebshopCustomersResult.ERROR_AUTHENTIFICATION);
    } catch (Exception e) {
        myLogger.error("Error (" + e.getMessage() + ")");
        return new WebshopCustomersResult(WebshopCustomersResult.ERROR_EJB_EXCEPTION);
    } finally {
        HelperWebshop.closeFLRSession(session);
    }
}