Example usage for org.hibernate.criterion Restrictions not

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

Introduction

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

Prototype

public static Criterion not(Criterion expression) 

Source Link

Document

Return the negation of an expression

Usage

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printHalbfertigfabrikatsinventur(java.sql.Timestamp tsStichtag, int iSortierung,
        boolean bVerdichtet, Integer partnerIIdFertigungsort, TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;/*from  ww  w  .ja va 2  s. c o m*/
    try {
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        if (tsStichtag != null) {
            mapParameter.put("P_STICHTAG", tsStichtag);
            Calendar c = Calendar.getInstance();
            c.setTimeInMillis(tsStichtag.getTime());
            c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1);
            tsStichtag = new java.sql.Timestamp(c.getTimeInMillis());
            tsStichtag = Helper.cutTimestamp(tsStichtag);
        }

        this.useCase = UC_HALBFERTIGFABRIKATSINVENTUR;
        this.index = -1;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLosReport.class);
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
        // c.add(Restrictions.eq("i_id", 99579));

        if (partnerIIdFertigungsort != null) {
            c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_PARTNER_I_ID_FERTIGUNGSORT,
                    partnerIIdFertigungsort));
        }

        if (tsStichtag == null) {
            c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
                    new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_ERLEDIGT,
                            FertigungFac.STATUS_ANGELEGT, FertigungFac.STATUS_GESTOPPT })));
        } else {
            c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
                    new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT })));

            c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOS_T_ERLEDIGT, tsStichtag),
                    Restrictions.isNull(FertigungFac.FLR_LOS_T_ERLEDIGT)));

            c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tsStichtag),
                    Restrictions.isNull(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT)));

            c.add(Restrictions.le(FertigungFac.FLR_LOS_T_AUSGABE, tsStichtag));
        }

        // Sortierung nach Losnummer
        c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR));
        List<?> list = c.list();

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

        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLosReport item = (FLRLosReport) iter.next();

            Object[] zeile = new Object[17];

            zeile[HF_LOSNUMMER] = item.getC_nr();
            zeile[HF_LOSGROESSE] = item.getN_losgroesse();

            if (item.getFlrstueckliste() != null) {
                zeile[HF_ARTIKELNUMMER] = item.getFlrstueckliste().getFlrartikel().getC_nr();
                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                        item.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
                zeile[HF_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                ;
            } else {
                zeile[HF_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(),
                        theClientDto.getLocUi());
                zeile[HF_BEZEICHNUNG] = item.getC_projekt();
            }

            LosablieferungDto[] losablieferungDtos = getFertigungFac()
                    .losablieferungFindByLosIId(item.getI_id(), true, theClientDto);
            BigDecimal bdAbgeliefert = new BigDecimal(0.0000);
            for (int j = 0; j < losablieferungDtos.length; j++) {

                if (tsStichtag == null) {
                    bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge());
                } else {
                    if (tsStichtag.after(losablieferungDtos[j].getTAendern())) {
                        bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge());
                    }
                }

            }
            zeile[HF_ERLEDIGT] = bdAbgeliefert;

            // Nun eine Zeile pro Position

            // Ausgegebenes Material
            LossollmaterialDto[] sollmat = getFertigungFac().lossollmaterialFindByLosIId(item.getI_id());

            for (int j = 0; j < sollmat.length; j++) {
                BigDecimal bdMenge = getFertigungFac().getAusgegebeneMenge(sollmat[j].getIId(), tsStichtag,
                        theClientDto);
                zeile[HF_POSITION_AUSGEGEBEN] = bdMenge;

                // Einkaufspreis des ersten Lieferanten hinzufuegen
                ArtikellieferantDto dto = getArtikelFac().getArtikelEinkaufspreis(sollmat[j].getArtikelIId(),
                        null, new BigDecimal(1), theClientDto.getSMandantenwaehrung(),
                        new java.sql.Date(sollmat[j].getTAendern().getTime()), theClientDto);
                if (dto != null) {
                    zeile[HF_POSITION_EKPREIS] = dto.getLief1Preis();
                }

                // CK:2008-12-23 Wegen Beistellteilen ist die Verfaelschung
                // des Gestehungspreises falsch
                // es muss immer der Gestehungspreis zum ausgabezeitpunkt
                // verwendet werden.
                BigDecimal bdPreis = getFertigungFac().getAusgegebeneMengePreis(sollmat[j].getIId(), tsStichtag,
                        theClientDto);
                zeile[HF_POSITION_PREIS] = bdPreis;

                BigDecimal sollsatzmenge = new BigDecimal(0);

                if (item.getN_losgroesse().doubleValue() != 0) {
                    sollsatzmenge = sollmat[j].getNMenge().divide(item.getN_losgroesse(),
                            BigDecimal.ROUND_HALF_EVEN);
                }

                BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert);

                if (theoretischabgeliefert.doubleValue() > bdMenge.doubleValue()) {
                    theoretischabgeliefert = bdMenge;
                }

                zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert;
                zeile[HF_POSITION_OFFEN] = bdMenge.subtract(theoretischabgeliefert);

                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(sollmat[j].getArtikelIId(),
                        theClientDto);
                zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr();
                zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung();

                if (bVerdichtet) {
                    if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) {
                        boolean bGefunden = false;
                        for (int k = 0; k < alDaten.size(); k++) {
                            Object[] zeileTemp = (Object[]) alDaten.get(k);

                            if (zeileTemp[HF_POSITION_ARTIKELNUMMMER]
                                    .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) {
                                bGefunden = true;

                                zeileTemp[HF_LOSNUMMER] = "";
                                zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN])
                                        .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]);
                                zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT])
                                        .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]);

                                // Neuen Preis berechnen

                                BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS];
                                BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN];

                                BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS];
                                BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN];

                                BigDecimal wertNeu = alterPreis.multiply(alteOffen)
                                        .add(neuerPreis.multiply(neueOffen));

                                if (neueOffen.add(alteOffen).doubleValue() != 0) {
                                    zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4,
                                            BigDecimal.ROUND_HALF_EVEN);
                                } else {
                                    zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0);
                                }

                                zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen);

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

                    } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) {
                        boolean bGefunden = false;
                        for (int k = 0; k < alDaten.size(); k++) {
                            Object[] zeileTemp = (Object[]) alDaten.get(k);

                            if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) {
                                bGefunden = true;

                                zeileTemp[HF_POSITION_ARTIKELNUMMMER] = "";
                                zeileTemp[HF_POSITION_BEZEICHNUNG] = "";

                                zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN])
                                        .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]);
                                zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT])
                                        .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]);

                                // Neuen Preis berechnen

                                BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS];
                                BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN];

                                BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS];
                                BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN];

                                BigDecimal wertNeu = alterPreis.multiply(alteOffen)
                                        .add(neuerPreis.multiply(neueOffen));

                                if (neueOffen.add(alteOffen).doubleValue() != 0) {
                                    zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4,
                                            BigDecimal.ROUND_HALF_EVEN);
                                } else {
                                    zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0);
                                }

                                zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen);

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

                    }
                } else {

                    alDaten.add(zeile);
                }
                zeile = new Object[17];
                zeile[HF_LOSNUMMER] = item.getC_nr();
            }

            // Verbrauchte Arbeitszeit
            LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac()
                    .lossollarbeitsplanFindByLosIId(item.getI_id());
            for (int j = 0; j < lossollarbeitsplanDto.length; j++) {
                AuftragzeitenDto[] zeiten = getZeiterfassungFac().getAllZeitenEinesBeleges(
                        LocaleFac.BELEGART_LOS, item.getI_id(), null, null, null, tsStichtag, false, false,
                        theClientDto);

                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(
                        lossollarbeitsplanDto[j].getArtikelIIdTaetigkeit(), theClientDto);
                zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr();
                zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung();

                BigDecimal bdArbeitszeitwert = new BigDecimal(0);
                BigDecimal bdIstZeit = new BigDecimal(0);

                for (int k = 0; k < zeiten.length; k++) {
                    if (artikelDto.getIId().equals(zeiten[k].getArtikelIId())) {

                        bdArbeitszeitwert = bdArbeitszeitwert.add(zeiten[k].getBdKosten());
                        bdIstZeit = bdIstZeit.add(new BigDecimal(zeiten[k].getDdDauer().doubleValue()));
                    }
                }
                BigDecimal sollsatzmenge = new BigDecimal(0);

                if (item.getN_losgroesse().doubleValue() != 0) {

                    sollsatzmenge = lossollarbeitsplanDto[j].getNGesamtzeit().divide(item.getN_losgroesse(),
                            BigDecimal.ROUND_HALF_EVEN);
                }

                if (Helper.short2boolean(lossollarbeitsplanDto[j].getBNurmaschinenzeit())) {
                    zeile[HF_POSITION_AUSGEGEBEN] = new BigDecimal(0);
                } else {
                    zeile[HF_POSITION_AUSGEGEBEN] = lossollarbeitsplanDto[j].getNGesamtzeit();
                }

                BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert);

                BigDecimal restist = bdIstZeit.subtract(theoretischabgeliefert);

                if (restist.doubleValue() <= 0) {
                    restist = new BigDecimal(0);
                }

                if (theoretischabgeliefert.doubleValue() > bdIstZeit.doubleValue()) {
                    theoretischabgeliefert = bdIstZeit;
                }
                zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert;
                zeile[HF_POSITION_OFFEN] = restist;

                if (bdIstZeit.doubleValue() != 0) {
                    zeile[HF_POSITION_PREIS] = bdArbeitszeitwert.divide(bdIstZeit, BigDecimal.ROUND_HALF_EVEN);
                } else {
                    zeile[HF_POSITION_PREIS] = new BigDecimal(0);
                }

                AuftragzeitenDto[] maschinenzeiten = getZeiterfassungFac().getAllMaschinenzeitenEinesBeleges(
                        item.getI_id(), lossollarbeitsplanDto[j].getIId(), null, tsStichtag, theClientDto);

                BigDecimal bdArbeitszeitwertMaschine = new BigDecimal(0);
                BigDecimal bdIstZeitMaschine = new BigDecimal(0);

                for (int k = 0; k < maschinenzeiten.length; k++) {

                    bdArbeitszeitwertMaschine = bdArbeitszeitwertMaschine.add(maschinenzeiten[k].getBdKosten());
                    bdIstZeitMaschine = bdIstZeitMaschine
                            .add(new BigDecimal(maschinenzeiten[k].getDdDauer().doubleValue()));

                }

                if (lossollarbeitsplanDto[j].getMaschineIId() == null) {
                    zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = new BigDecimal(0);
                } else {
                    zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = lossollarbeitsplanDto[j].getNGesamtzeit();
                }

                theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert);
                BigDecimal restistMaschine = bdIstZeitMaschine.subtract(theoretischabgeliefert);

                if (restistMaschine.doubleValue() <= 0) {
                    restistMaschine = new BigDecimal(0);
                }

                if (theoretischabgeliefert.doubleValue() > bdIstZeitMaschine.doubleValue()) {
                    theoretischabgeliefert = bdIstZeitMaschine;
                }
                zeile[HF_POSITION_ABGELIFERT_MASCHINE] = theoretischabgeliefert;
                zeile[HF_POSITION_OFFEN_MASCHINE] = restistMaschine;

                if (bdIstZeitMaschine.doubleValue() != 0) {
                    zeile[HF_POSITION_PREIS_MASCHINE] = bdArbeitszeitwertMaschine.divide(bdIstZeitMaschine,
                            BigDecimal.ROUND_HALF_EVEN);
                } else {
                    zeile[HF_POSITION_PREIS_MASCHINE] = new BigDecimal(0);
                }

                if (bVerdichtet) {
                    if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) {
                        boolean bGefunden = false;
                        for (int k = 0; k < alDaten.size(); k++) {
                            Object[] zeileTemp = (Object[]) alDaten.get(k);

                            if (zeileTemp[HF_POSITION_ARTIKELNUMMMER]
                                    .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) {
                                bGefunden = true;

                                zeileTemp[HF_LOSNUMMER] = "";
                                zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN])
                                        .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]);
                                zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT])
                                        .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]);

                                // Neuen Preis berechnen

                                BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS];
                                BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN];

                                BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS];
                                BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN];

                                BigDecimal wertNeu = alterPreis.multiply(alteOffen)
                                        .add(neuerPreis.multiply(neueOffen));

                                if (neueOffen.add(alteOffen).doubleValue() != 0) {
                                    zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4,
                                            BigDecimal.ROUND_HALF_EVEN);
                                } else {
                                    zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0);
                                }

                                zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen);

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

                    } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) {
                        boolean bGefunden = false;
                        for (int k = 0; k < alDaten.size(); k++) {
                            Object[] zeileTemp = (Object[]) alDaten.get(k);

                            if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) {
                                bGefunden = true;

                                zeileTemp[HF_POSITION_ARTIKELNUMMMER] = "";
                                zeileTemp[HF_POSITION_BEZEICHNUNG] = "";
                                zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN])
                                        .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]);
                                zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT])
                                        .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]);

                                // Neuen Preis berechnen

                                BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS];
                                BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN];

                                BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS];
                                BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN];

                                BigDecimal wertNeu = alterPreis.multiply(alteOffen)
                                        .add(neuerPreis.multiply(neueOffen));

                                if (neueOffen.add(alteOffen).doubleValue() != 0) {
                                    zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4,
                                            BigDecimal.ROUND_HALF_EVEN);
                                } else {
                                    zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0);
                                }

                                zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen);

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

                    }
                } else {

                    alDaten.add(zeile);
                }

                zeile = new Object[17];
                zeile[HF_LOSNUMMER] = item.getC_nr();

            }

        }
        mapParameter.put(LPReport.P_WAEHRUNG, theClientDto.getSMandantenwaehrung());
        mapParameter.put("P_VERDICHTET", new Boolean(bVerdichtet));

        if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) {
            // Sortierng nach Losnr
            data = new Object[alDaten.size()][17];
            data = (Object[][]) alDaten.toArray(data);

            initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL,
                    FertigungReportFac.REPORT_HALBFERTIGFABRIKATSINVENTUR, theClientDto.getMandant(),
                    theClientDto.getLocUi(), theClientDto);
        } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) {

            // Sortieren nach Identnr
            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);

                    if (((String) a1[HF_POSITION_ARTIKELNUMMMER])
                            .compareTo((String) a2[HF_POSITION_ARTIKELNUMMMER]) > 0) {
                        alDaten.set(j, a2);
                        alDaten.set(j + 1, a1);
                    }
                }
            }
            data = new Object[alDaten.size()][17];
            data = (Object[][]) alDaten.toArray(data);

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

        }
        return getReportPrint();
    } catch (RemoteException t) {
        throwEJBExceptionLPRespectOld(t);
    } finally {
        closeSession(session);
    }
    return getReportPrint();
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printLosstatistik(java.sql.Timestamp tVon, java.sql.Timestamp tBis, Integer losIId,
        Integer stuecklisteIId, Integer auftragIId, boolean bArbeitsplanSortiertNachAG, boolean bVerdichtet,
        java.sql.Timestamp tStichtag, TheClientDto theClientDto) {

    this.useCase = UC_LOSSTATISTIK;
    this.index = -1;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = factory.openSession();

    PersonalDto[] personalDtos = null;/*from   w  w w .ja  v  a  2s  .c om*/
    MaschineDto[] maschineDtos = null;
    try {
        personalDtos = getPersonalFac().personalFindByMandantCNr(theClientDto.getMandant(), true);
        maschineDtos = getZeiterfassungFac().maschineFindByMandantCNr(theClientDto.getMandant());
    } catch (RemoteException ex1) {
        throwEJBExceptionLPRespectOld(ex1);
    }

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

    Criteria c = session.createCriteria(FLRLosReport.class);
    c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
    c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
            new String[] { LocaleFac.STATUS_ANGELEGT, LocaleFac.STATUS_STORNIERT })));
    if (stuecklisteIId != null) {
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, stuecklisteIId));

        StuecklisteDto stuecklisteDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(stuecklisteIId,
                theClientDto);
        mapParameter.put("P_STUECKLISTE", stuecklisteDto.getArtikelDto().formatArtikelbezeichnung());

    }
    if (losIId != null) {
        c.add(Restrictions.eq("i_id", losIId));
    }
    if (auftragIId != null) {
        c.createAlias("flrauftrag", "a").add(Restrictions.eq("a.i_id", auftragIId));

        try {
            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragIId);
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(),
                    theClientDto);
            mapParameter.put("P_AUFTRAG", auftragDto.getCNr());
            mapParameter.put("P_AUFTRAGPROJEKT", auftragDto.getCBezProjektbezeichnung());
            mapParameter.put("P_AUFTRAGKUNDE", kundeDto.getPartnerDto().formatAnrede());

            mapParameter.put("P_BEARBEITER",
                    getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdAnlegen(), theClientDto));
            if (auftragDto.getPersonalIIdVertreter() != null) {
                mapParameter.put("P_VERTRETER",
                        getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdVertreter(), theClientDto));
            }

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

    }
    if (tStichtag != null) {
        mapParameter.put("P_STICHTAG", tStichtag);// new
        // Timestamp(tStichtag.getTime()));
        tStichtag = Helper.cutTimestamp(new Timestamp(tStichtag.getTime() + 24 * 3600000));
    }

    if (losIId == null && auftragIId == null) {

        if (tVon != null) {
            c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tVon),
                    Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tVon)));
            mapParameter.put("P_VON", tVon);
        }
        if (tBis != null) {
            c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tBis),
                    Restrictions.lt(FertigungFac.FLR_LOS_T_ERLEDIGT, tBis)));
            mapParameter.put("P_BIS", new Timestamp(tBis.getTime() - 3600000));
        }

        if (tStichtag != null) {
            c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag),
                    Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag)));
            c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tStichtag),
                    Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tStichtag)));
        }

    }
    c.addOrder(Order.asc("c_nr"));

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

    Iterator<?> resultListIterator = results.iterator();
    while (resultListIterator.hasNext()) {
        FLRLosReport los = (FLRLosReport) resultListIterator.next();

        try {

            LosDto losDto = getFertigungFac().losFindByPrimaryKey(los.getI_id());

            BigDecimal abgeliefert = new BigDecimal(0);
            for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                abgeliefert = abgeliefert.add(item.getN_menge());
            }

            // VKpreis
            BigDecimal vkPreis = null;

            if (los.getFlrauftragposition() != null) {
                vkPreis = los.getFlrauftragposition()
                        .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte();
            } else {

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

                    Integer kundeIId = null;

                    if (los.getFlrauftrag() != null) {
                        kundeIId = los.getFlrauftrag().getFlrkunde().getI_id();
                    }
                    if (kundeIId == null && los.getFlrkunde() != null) {
                        kundeIId = los.getFlrkunde().getI_id();
                    }

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

                        MwstsatzDto mwstsatzDtoAktuell = getMandantFac()
                                .mwstsatzFindByMwstsatzbezIIdAktuellster(kundeDto.getMwstsatzbezIId(),
                                        theClientDto);

                        VkpreisfindungDto vkpreisfindungDto = getVkPreisfindungFac().verkaufspreisfindung(
                                los.getFlrstueckliste().getArtikel_i_id(), kundeIId, losDto.getNLosgroesse(),
                                losDto.getTProduktionsende(),
                                kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                                mwstsatzDtoAktuell.getIId(), theClientDto.getSMandantenwaehrung(),
                                theClientDto);

                        VerkaufspreisDto kundenVKPreisDto = Helper.getVkpreisBerechnet(vkpreisfindungDto);
                        if (kundenVKPreisDto != null) {
                            vkPreis = kundenVKPreisDto.nettopreis;
                        }
                    } else {
                        VkPreisfindungEinzelverkaufspreisDto vkpreisDto = getVkPreisfindungFac()
                                .getArtikeleinzelverkaufspreis(los.getFlrstueckliste().getArtikel_i_id(), null,
                                        theClientDto.getSMandantenwaehrung(), theClientDto);
                        if (vkpreisDto != null && vkpreisDto.getNVerkaufspreisbasis() != null) {
                            vkPreis = vkpreisDto.getNVerkaufspreisbasis();
                        }
                    }

                }
            }

            // Zuerst Material
            Session session2 = factory.openSession();
            Criteria cSoll = session.createCriteria(FLRLossollmaterial.class);
            cSoll.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLMATERIAL_LOS_I_ID, los.getI_id()));
            cSoll.createAlias("flrartikel", "a");
            cSoll.addOrder(Order.asc("a.c_nr"));
            List<?> resultsSoll = cSoll.list();
            Iterator<?> resultListIteratorSoll = resultsSoll.iterator();
            while (resultListIteratorSoll.hasNext()) {
                FLRLossollmaterial sollmat = (FLRLossollmaterial) resultListIteratorSoll.next();
                if (bVerdichtet == false && sollmat.getIstmaterialset().size() > 0) {
                    int i = 0;
                    for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) {
                        FLRLosistmaterial item = (FLRLosistmaterial) iter.next();
                        LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                        losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr());
                        ArtikelDto artikelDto = getArtikelFac()
                                .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto);
                        losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());

                        Timestamp tsBuchungszeit = null;

                        List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac()
                                .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS,
                                        item.getI_id());

                        for (int k = 0; k < snrDtos.size(); k++) {

                            LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS,
                                    item.getI_id(), snrDtos.get(k).getCSeriennrChargennr());
                            tsBuchungszeit = bewDto.getTBuchungszeit();
                            break;
                        }

                        losStatistikDto.setBuchungszeit(tsBuchungszeit);

                        if (i == 0) {
                            losStatistikDto.setSollmenge(sollmat.getN_menge());
                            losStatistikDto.setSollpreis(sollmat.getN_sollpreis());
                        } else {
                            losStatistikDto.setSollmenge(new BigDecimal(0));
                            losStatistikDto.setSollpreis(new BigDecimal(0));
                        }

                        losStatistikDto.setBMaterial(true);
                        losStatistikDto.setIstpreis(getFertigungFac()
                                .getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto));
                        losStatistikDto.setAbgelieferteMenge(abgeliefert);
                        losStatistikDto.setVkpreisStueckliste(vkPreis);

                        BigDecimal istmenge = new BigDecimal(0);

                        if (Helper.short2boolean(item.getB_abgang()) == true) {
                            istmenge = istmenge.add(item.getN_menge());
                        } else {
                            istmenge = istmenge.subtract(item.getN_menge());
                        }

                        losStatistikDto.setIstmenge(istmenge);

                        if (tStichtag == null) {

                            al.add(losStatistikDto);
                            i++;
                        } else {
                            if (tsBuchungszeit == null) {
                                al.add(losStatistikDto);
                                i++;
                            } else {
                                if (tsBuchungszeit.before(tStichtag)) {
                                    al.add(losStatistikDto);
                                    i++;
                                }
                            }

                        }

                    }
                } else {

                    LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                    losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr());
                    ArtikelDto artikelDto = getArtikelFac()
                            .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto);
                    losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());
                    losStatistikDto.setSollmenge(sollmat.getN_menge());
                    losStatistikDto.setSollpreis(sollmat.getN_sollpreis());
                    losStatistikDto.setBMaterial(true);
                    losStatistikDto.setIstpreis(
                            getFertigungFac().getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto));
                    losStatistikDto.setAbgelieferteMenge(abgeliefert);
                    losStatistikDto.setVkpreisStueckliste(vkPreis);

                    BigDecimal istmenge = new BigDecimal(0);
                    for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) {
                        FLRLosistmaterial item = (FLRLosistmaterial) iter.next();

                        if (tStichtag != null) {

                            Timestamp tsBuchungszeit = null;

                            List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac()
                                    .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS,
                                            item.getI_id());

                            for (int k = 0; k < snrDtos.size(); k++) {

                                LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS,
                                        item.getI_id(), snrDtos.get(k).getCSeriennrChargennr());
                                tsBuchungszeit = bewDto.getTBuchungszeit();
                                break;
                            }

                            if (tsBuchungszeit.after(tStichtag)) {
                                continue;
                            }

                        }

                        if (Helper.short2boolean(item.getB_abgang()) == true) {
                            istmenge = istmenge.add(item.getN_menge());
                        } else {
                            istmenge = istmenge.subtract(item.getN_menge());
                        }
                    }
                    losStatistikDto.setIstmenge(istmenge);

                    al.add(losStatistikDto);
                }
            }
            session2.close();

            LossollarbeitsplanDto[] lossollarbeitsplanDtos = getFertigungFac()
                    .lossollarbeitsplanFindByLosIId(los.getI_id());
            // PJ14351 Nach AG sortieren
            if (bArbeitsplanSortiertNachAG == true) {

                // Nach Fertigungsgruppe sortieren
                for (int k = lossollarbeitsplanDtos.length - 1; k > 0; --k) {
                    for (int j = 0; j < k; ++j) {
                        Integer a1 = lossollarbeitsplanDtos[j].getIArbeitsgangnummer();
                        Integer a2 = lossollarbeitsplanDtos[j + 1].getIArbeitsgangnummer();
                        if (a1.intValue() > a2.intValue()) {
                            LossollarbeitsplanDto temp = lossollarbeitsplanDtos[j];
                            lossollarbeitsplanDtos[j] = lossollarbeitsplanDtos[j + 1];
                            lossollarbeitsplanDtos[j + 1] = temp;
                        }
                    }
                }
            }

            ArrayList<LosStatistikDto> hmSoll = new ArrayList<LosStatistikDto>();

            // Zuerst Maschinenzeiten
            for (int i = 0; i < lossollarbeitsplanDtos.length; i++) {
                if (lossollarbeitsplanDtos[i].getMaschineIId() != null) {
                    Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit();
                    BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit();
                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId,
                            theClientDto);

                    // Schon vorhanden?
                    boolean bGefunden = false;
                    for (int j = 0; j < hmSoll.size(); j++) {
                        LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);
                        if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) {
                            if (lossollarbeitsplanDtos[i].getMaschineIId()
                                    .equals(losStatistikDto.getMaschineIId())) {
                                losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit));
                                bGefunden = true;
                                hmSoll.set(j, losStatistikDto);
                            }
                        }
                    }
                    if (!bGefunden) {
                        LosStatistikDto losStatistikMaschineDto = new LosStatistikDto(losDto);
                        losStatistikMaschineDto.setArtikelnummer(artikelDto.getCNr());
                        losStatistikMaschineDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());
                        losStatistikMaschineDto.setSollmenge(sollzeit);
                        losStatistikMaschineDto.setBMaterial(false);
                        losStatistikMaschineDto.setBIstPerson(false);

                        losStatistikMaschineDto.setAbgelieferteMenge(abgeliefert);
                        losStatistikMaschineDto.setVkpreisStueckliste(vkPreis);

                        losStatistikMaschineDto.setSollpreis(getZeiterfassungFac()
                                .getMaschinenKostenZumZeitpunkt(lossollarbeitsplanDtos[i].getMaschineIId(),
                                        Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()))));
                        MaschineDto maschineDto = getZeiterfassungFac()
                                .maschineFindByPrimaryKey(lossollarbeitsplanDtos[i].getMaschineIId());

                        String maschinenname = "M:";
                        if (maschineDto.getCIdentifikationsnr() != null) {
                            maschinenname += maschineDto.getCIdentifikationsnr() + " ";
                        }
                        maschinenname += maschineDto.getCBez();

                        losStatistikMaschineDto.setPersonMaschine(maschinenname);
                        losStatistikMaschineDto.setMaschineIId(maschineDto.getIId());

                        hmSoll.add(losStatistikMaschineDto);
                    }
                }
            }
            // Dann Personalzeiten
            for (int i = 0; i < lossollarbeitsplanDtos.length; i++) {

                if (!Helper.short2boolean(lossollarbeitsplanDtos[i].getBNurmaschinenzeit())) {

                    Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit();
                    BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit();
                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId,
                            theClientDto);

                    // Schon vorhanden?
                    boolean bGefunden = false;
                    for (int j = 0; j < hmSoll.size(); j++) {
                        LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);
                        if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) {

                            if (losStatistikDto.getMaschineIId() == null) {
                                losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit));
                                hmSoll.set(j, losStatistikDto);
                                bGefunden = true;
                            }

                        }

                    }

                    if (!bGefunden) {
                        LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                        losStatistikDto.setArtikelnummer(artikelDto.getCNr());
                        losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());
                        losStatistikDto.setSollmenge(sollzeit);
                        losStatistikDto.setBMaterial(false);
                        losStatistikDto.setBIstPerson(true);
                        losStatistikDto.setAbgelieferteMenge(abgeliefert);
                        losStatistikDto.setVkpreisStueckliste(vkPreis);
                        ArtikellieferantDto artikellieferantDto = getArtikelFac().getArtikelEinkaufspreis(
                                artikelDto.getIId(), new BigDecimal(1), theClientDto.getSMandantenwaehrung(),
                                theClientDto);
                        if (artikellieferantDto != null && artikellieferantDto.getLief1Preis() != null) {
                            losStatistikDto.setSollpreis(artikellieferantDto.getLief1Preis());
                        } else {
                            losStatistikDto.setSollpreis(new BigDecimal(0));
                        }
                        hmSoll.add(losStatistikDto);

                    }
                }
            }
            // Dann Zeiten

            AuftragzeitenDto[] maschinenzeitenDtos = getZeiterfassungFac()
                    .getAllMaschinenzeitenEinesBeleges(los.getI_id(), null, null, tStichtag, theClientDto);

            AuftragzeitenDto[] personalzeitenDtos = getZeiterfassungFac().getAllZeitenEinesBeleges(
                    LocaleFac.BELEGART_LOS, los.getI_id(), null, null, null, tStichtag, true, false,
                    theClientDto);

            for (int i = 0; i < personalzeitenDtos.length; i++) {

                boolean bGefunden = false;
                for (int j = 0; j < hmSoll.size(); j++) {
                    LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);

                    if (losStatistikDto.getMaschineIId() == null) {

                        if (losStatistikDto.getArtikelnummer().equals(personalzeitenDtos[i].getSArtikelcnr())) {
                            bGefunden = true;

                        }
                    }
                }

                if (bGefunden == false) {
                    LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                    losStatistikDto.setArtikelnummer(personalzeitenDtos[i].getSArtikelcnr());
                    losStatistikDto.setArtikelbezeichnung(personalzeitenDtos[i].getSArtikelbezeichnung());
                    losStatistikDto.setSollmenge(new BigDecimal(0));
                    losStatistikDto.setSollpreis(new BigDecimal(0));
                    losStatistikDto.setAbgelieferteMenge(abgeliefert);
                    losStatistikDto.setVkpreisStueckliste(vkPreis);
                    hmSoll.add(losStatistikDto);

                }
            }

            for (int i = 0; i < maschinenzeitenDtos.length; i++) {
                boolean bGefunden = false;

                if (tStichtag != null && maschinenzeitenDtos[i].getTsEnde() != null
                        && tStichtag.before(maschinenzeitenDtos[i].getTsEnde())) {
                    continue;
                }

                for (int j = 0; j < hmSoll.size(); j++) {
                    LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);

                    if (losStatistikDto.getMaschineIId() != null && losStatistikDto.getMaschineIId()
                            .equals(maschinenzeitenDtos[i].getIPersonalMaschinenId())) {

                        if (losStatistikDto.getArtikelnummer()
                                .equals(maschinenzeitenDtos[i].getSArtikelcnr())) {
                            bGefunden = true;

                        }
                    }
                }

                if (bGefunden == false) {
                    LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                    losStatistikDto.setArtikelnummer(maschinenzeitenDtos[i].getSArtikelcnr());
                    losStatistikDto.setArtikelbezeichnung(maschinenzeitenDtos[i].getSArtikelbezeichnung());
                    losStatistikDto.setMaschineIId(maschinenzeitenDtos[i].getIPersonalMaschinenId());
                    losStatistikDto.setSollmenge(new BigDecimal(0));
                    losStatistikDto.setSollpreis(new BigDecimal(0));
                    losStatistikDto.setAbgelieferteMenge(abgeliefert);
                    losStatistikDto.setVkpreisStueckliste(vkPreis);

                    hmSoll.add(losStatistikDto);

                }

            }

            for (int k = 0; k < hmSoll.size(); k++) {
                LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(k);

                losStatistikDto.setAbgelieferteMenge(abgeliefert);

                int iPos = al.size();
                al.add(losStatistikDto);
                // Personen
                if (losStatistikDto.getMaschineIId() == null) {
                    for (int i = 0; i < personalDtos.length; i++) {
                        PersonalDto personalDto = personalDtos[i];

                        BigDecimal bdgesamtzeit = new BigDecimal(0);
                        BigDecimal bdgesamtkosten = new BigDecimal(0);
                        String person = "";
                        for (int j = 0; j < personalzeitenDtos.length; j++) {
                            AuftragzeitenDto azDto = personalzeitenDtos[j];
                            if (azDto != null) {
                                if (personalDto.getIId().equals(azDto.getIPersonalMaschinenId())
                                        && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) {
                                    bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer()));
                                    bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten());
                                    person = azDto.getSPersonalMaschinenname();
                                    personalzeitenDtos[j] = null;
                                }
                            }
                        }
                        if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) {

                            LosStatistikDto losStatistikPersonDto = new LosStatistikDto(losDto);
                            losStatistikPersonDto.setPersonMaschine(person);
                            losStatistikPersonDto.setBMaterial(false);
                            losStatistikPersonDto.setAbgelieferteMenge(abgeliefert);
                            losStatistikPersonDto.setVkpreisStueckliste(vkPreis);

                            losStatistikPersonDto.setIstmenge(bdgesamtzeit);
                            if (bdgesamtzeit.doubleValue() != 0) {
                                losStatistikPersonDto.setIstpreis(
                                        bdgesamtkosten.divide(bdgesamtzeit, 4, BigDecimal.ROUND_HALF_EVEN));
                            } else {
                                losStatistikPersonDto.setIstpreis(new BigDecimal(0));
                            }
                            al.add(losStatistikPersonDto);

                        }

                    }
                }
                // Maschinen
                if (losStatistikDto.getMaschineIId() != null) {
                    for (int i = 0; i < maschineDtos.length; i++) {
                        MaschineDto maschineDto = maschineDtos[i];

                        BigDecimal bdgesamtzeit = new BigDecimal(0);
                        BigDecimal bdgesamtkosten = new BigDecimal(0);
                        for (int j = 0; j < maschinenzeitenDtos.length; j++) {

                            if (tStichtag != null && maschinenzeitenDtos[j].getTsEnde() != null
                                    && tStichtag.before(maschinenzeitenDtos[j].getTsEnde())) {
                                continue;
                            }

                            AuftragzeitenDto azDto = maschinenzeitenDtos[j];
                            if (maschineDto.getIId().equals(azDto.getIPersonalMaschinenId())
                                    && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) {
                                if (losStatistikDto.getMaschineIId().equals(azDto.getIPersonalMaschinenId())) {
                                    bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer()));
                                    bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten());
                                }

                            }
                        }
                        if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) {

                            BigDecimal kosten = bdgesamtkosten.divide(bdgesamtzeit, 4,
                                    BigDecimal.ROUND_HALF_EVEN);

                            if (losStatistikDto.getIstmenge() != null) {
                                losStatistikDto.setIstmenge(losStatistikDto.getIstmenge().add(bdgesamtzeit));
                            } else {
                                losStatistikDto.setIstmenge(bdgesamtzeit);
                            }

                            if (losStatistikDto.getIstpreis() != null) {
                                losStatistikDto.setIstpreis(losStatistikDto.getIstpreis().add(kosten));
                            } else {
                                losStatistikDto.setIstpreis(kosten);
                            }
                            al.set(iPos, losStatistikDto);
                        }

                    }
                }
            }

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

    }
    session.close();

    data = new Object[al.size()][23];
    for (int i = 0; i < al.size(); i++) {
        LosStatistikDto losStatistikDto = (LosStatistikDto) al.get(i);
        data[i][LOSSTATISTIK_GRUPPIERUNG] = losStatistikDto.getLosDto().getCNr();

        if (losStatistikDto.getLosDto().getTManuellerledigt() != null) {
            data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTManuellerledigt();
        } else {
            data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTErledigt();
        }

        data[i][LOSSTATISTIK_BEWERTUNG] = losStatistikDto.getLosDto().getFBewertung();
        data[i][LOSSTATISTIK_GEPLANTESSOLLMATERIAL] = losStatistikDto.getLosDto().getNSollmaterial();
        data[i][LOSSTATISTIK_GRUPPIERUNGBEZEICHNUNG] = losStatistikDto.getLosDto().getCProjekt();
        data[i][LOSSTATISTIK_GRUPPIERUNGERLEDIGT] = losStatistikDto.getLosDto().getTErledigt();
        data[i][LOSSTATISTIK_GRUPPIERUNGAUSGABE] = losStatistikDto.getLosDto().getTAusgabe();
        data[i][LOSSTATISTIK_GRUPPIERUNABGELIEFERTEMENGE] = losStatistikDto.getAbgelieferteMenge();
        data[i][LOSSTATISTIK_GRUPPIERUNGLOSGROESSE] = losStatistikDto.getLosDto().getNLosgroesse();
        data[i][LOSSTATISTIK_GRUPPIERUNVKPREIS] = losStatistikDto.getVkpreisStueckliste();
        data[i][LOSSTATISTIK_BUCHUNGSZEIT] = losStatistikDto.getBuchungszeit();

        if (losStatistikDto.getLosDto().getStuecklisteIId() != null) {
            data[i][LOSSTATISTIK_GRUPPIERUNGSTKLARTIKEL] = getStuecklisteFac()
                    .stuecklisteFindByPrimaryKey(losStatistikDto.getLosDto().getStuecklisteIId(), theClientDto)
                    .getArtikelDto().formatArtikelbezeichnung();
        }

        if (losStatistikDto.getLosDto().getAuftragIId() != null) {
            AuftragDto auftragDto = getAuftragFac()
                    .auftragFindByPrimaryKey(losStatistikDto.getLosDto().getAuftragIId());
            if (auftragDto.getKundeIIdAuftragsadresse() != null) {
                KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(),
                        theClientDto);
                data[i][LOSSTATISTIK_GRUPPIERUNGKUNDE] = kundeDto.getPartnerDto().formatAnrede();
            }
        }

        data[i][LOSSTATISTIK_ISTMENGE] = losStatistikDto.getIstmenge();
        data[i][LOSSTATISTIK_ISTPREIS] = losStatistikDto.getIstpreis();
        data[i][LOSSTATISTIK_PERSONALMASCHINE] = losStatistikDto.getPersonMaschine();
        data[i][LOSSTATISTIK_ISTPERSON] = new Boolean(losStatistikDto.isBIstPerson());
        data[i][LOSSTATISTIK_SOLLMENGE] = losStatistikDto.getSollmenge();
        data[i][LOSSTATISTIK_SOLLPREIS] = losStatistikDto.getSollpreis();
        data[i][LOSSTATISTIK_ARTIKELNUMMER] = losStatistikDto.getArtikelnummer();
        data[i][LOSSTATISTIK_ARTIKELBEZEICHNUNG] = losStatistikDto.getArtikelbezeichnung();
        data[i][LOSSTATISTIK_UNTERGRUPPEMATERIAL] = new Boolean(losStatistikDto.isBMaterial());
    }

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

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

License:Open Source License

/**
 * Daten fuer eine Bewegungsvorschau erstellen
 * /*  w  w w  .ja  va2 s  . c o m*/
 * @param artikelDto
 *            ArtikelDto
 * @param bInternebestellungMiteinbeziehen
 *            boolean
 * @param alTheoretischeZusatzeintraege
 *            Optional. Hier koennen der Bewegungsvorschau "kuenstlich"
 *            weitere Eintraege hinzugefuegt werden.
 * @param cNrUserI
 *            String
 * @return ArrayList
 * @throws EJBExceptionLP
 */
private ArrayList<BewegungsvorschauDto> getBewegungsvorschau(ArtikelDto artikelDto,
        boolean bInternebestellungMiteinbeziehen, ArrayList<BewegungsvorschauDto> alTheoretischeZusatzeintraege,
        boolean bTermineVorHeuteAufHeute, TheClientDto theClientDto, ArrayList<Integer> arLosIId)
        throws EJBExceptionLP {
    ArrayList<BewegungsvorschauDto> bewegungsvorschau = new ArrayList<BewegungsvorschauDto>();
    // Zusatzeintraege hinzufuegen
    if (alTheoretischeZusatzeintraege != null) {
        // hier nur Eintraege dieses Artikels beruecksichtigen
        for (Iterator<?> iter = alTheoretischeZusatzeintraege.iterator(); iter.hasNext();) {
            BewegungsvorschauDto item = (BewegungsvorschauDto) iter.next();
            if (artikelDto.getIId().equals(item.getArtikelIId())) {
                bewegungsvorschau.add(item);
            }
        }
    }

    Session session = null;
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // ------------------------------------------------------------------
        // ----
        // Bestelltliste
        // ------------------------------------------------------------------
        // ----
        Criteria cBestellt = session.createCriteria(FLRArtikelbestellt.class);
        // Filter nach Artikel
        cBestellt.createAlias(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_FLRARTIKEL, "a")
                .add(Restrictions.eq("a.i_id", artikelDto.getIId()));
        // Sortierung nach Liefertermin
        cBestellt.addOrder(Order.asc(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_D_LIEFERTERMIN));
        // Query ausfuehren
        List<?> listBestellt = cBestellt.list();
        for (Iterator<?> iter = listBestellt.iterator(); iter.hasNext();) {
            FLRArtikelbestellt item = (FLRArtikelbestellt) iter.next();
            if (item.getC_belegartnr().equals(LocaleFac.BELEGART_BESTELLUNG)) {
                BestellpositionDto bestpos = getBestellpositionFac()
                        .bestellpositionFindByPrimaryKeyOhneExc(item.getI_belegartpositionid());
                if (bestpos != null) { // Bestelltliste koennte inkonsistent
                    // sein.
                    BestellungDto bestellung = getBestellungFac()
                            .bestellungFindByPrimaryKey(bestpos.getBestellungIId());
                    // wenn die Bestellung "meinem" Mandanten gehoert
                    if (!bestellung.getStatusCNr().equals(LocaleFac.STATUS_STORNIERT)) {
                        // if (bestellung.getTManuellGeliefert() == null) {
                        if (bestpos.getBestellpositionstatusCNr() != null
                                && !bestpos.getBestellpositionstatusCNr().equals(LocaleFac.STATUS_ERLEDIGT)) {
                            if (bestellung.getMandantCNr().equals(theClientDto.getMandant())) {
                                // Bewegungsvorschaueintrag erzeugen
                                BewegungsvorschauDto dto = new BewegungsvorschauDto();
                                dto.setArtikelIId(item.getFlrartikel().getI_id());
                                dto.setCBelegartCNr(LocaleFac.BELEGART_BESTELLUNG);
                                dto.setCProjekt(bestellung.getCBez());
                                dto.setIBelegIId(bestellung.getIId());
                                dto.setIBelegPositionIId(item.getI_belegartpositionid());
                                dto.setNMenge(item.getN_menge());
                                dto.setTLiefertermin(new Timestamp(item.getT_liefertermin().getTime()));
                                dto.setTABTerminBestellung(bestpos.getTAuftragsbestaetigungstermin());
                                dto.setCBelegnummer(bestellung.getCNr());
                                // Lieferant holen
                                LieferantDto lieferantDto = getLieferantFac().lieferantFindByPrimaryKey(
                                        bestellung.getLieferantIIdBestelladresse(), theClientDto);
                                dto.setPartnerDto(lieferantDto.getPartnerDto());
                                bewegungsvorschau.add(dto);
                            }
                        }
                        // }
                    }
                } else {
                    // Eintrag in der Bestelltliste, zu dem es gar keine
                    // Bestellposition gibt
                    // -> loeschen.
                    getArtikelbestelltFac().removeArtikelbestellt(LocaleFac.BELEGART_BESTELLUNG,
                            item.getI_belegartpositionid());
                }
            }
        }
        // ------------------------------------------------------------------
        // ----
        // Reservierungsliste
        // ------------------------------------------------------------------
        // ----
        Criteria cReservierung = session.createCriteria(FLRArtikelreservierung.class);
        // Filter nach Artikel
        cReservierung.createAlias(ArtikelbestelltFac.FLR_ARTIKELBESTELLT_FLRARTIKEL, "a")
                .add(Restrictions.eq("a.i_id", artikelDto.getIId()));
        // Sortierung nach Liefertermin
        cReservierung.addOrder(Order.asc(ReservierungFac.FLR_ARTIKELRESERVIERUNG_D_LIEFERTERMIN));
        // Query ausfuehren
        List<?> listReservierung = cReservierung.list();
        for (Iterator<?> iter = listReservierung.iterator(); iter.hasNext();) {
            FLRArtikelreservierung item = (FLRArtikelreservierung) iter.next();
            // --------------------------------------------------------------
            // ------
            // Auftragsreservierung
            // --------------------------------------------------------------
            // ------
            if (item.getC_belegartnr().equals(LocaleFac.BELEGART_AUFTRAG)) {
                AuftragpositionDto aufpos = getAuftragpositionFac()
                        .auftragpositionFindByPrimaryKeyOhneExc(item.getI_belegartpositionid());
                if (aufpos != null) {
                    AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(aufpos.getBelegIId());
                    if (auftragDto.getMandantCNr().equals(theClientDto.getMandant())) {
                        // Bewegungsvorschaueintrag erzeugen
                        BewegungsvorschauDto dto = new BewegungsvorschauDto();
                        dto.setArtikelIId(item.getFlrartikel().getI_id());
                        dto.setCBelegartCNr(LocaleFac.BELEGART_AUFTRAG);
                        dto.setCProjekt(auftragDto.getCBezProjektbezeichnung());
                        dto.setProjektIId(auftragDto.getProjektIId());
                        dto.setIBelegIId(auftragDto.getIId());
                        dto.setIBelegPositionIId(item.getI_belegartpositionid());
                        dto.setNMenge(item.getN_menge().negate());
                        // Termine vor heute werden auf heute umgerechnet
                        Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime());
                        if (tsTermin.before(getTimestamp()) && bTermineVorHeuteAufHeute) {
                            tsTermin = Helper.cutTimestamp(getTimestamp());
                        }
                        dto.setTLiefertermin(tsTermin);
                        dto.setCBelegnummer(auftragDto.getCNr());
                        // Kunde holen
                        KundeDto kundeDto = getKundeFac()
                                .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto);
                        dto.setPartnerDto(kundeDto.getPartnerDto());
                        dto.setKundeDto(kundeDto);
                        bewegungsvorschau.add(dto);
                    }
                } else {
                    // es wurde eine Auftragsreservierung gefunden, zu der
                    // es keine Auftragsposition gibt.
                    // -> loeschen.
                    getReservierungFac().removeArtikelreservierung(LocaleFac.BELEGART_AUFTRAG,
                            item.getI_belegartpositionid());
                }
            }
            // Losreservierung
            else if (item.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)) {
                LossollmaterialDto losmat = getFertigungFac()
                        .lossollmaterialFindByPrimaryKeyOhneExc(item.getI_belegartpositionid());
                if (losmat != null) {
                    LosDto losDto = getFertigungFac().losFindByPrimaryKey(losmat.getLosIId());
                    if (losDto.getMandantCNr().equals(theClientDto.getMandant())) {

                        if (arLosIId != null) {

                            // Nur bestimmte Lose beruecksichtigen
                            boolean bGefunden = false;
                            for (int i = 0; i < arLosIId.size(); i++) {

                                if (losDto.getIId().equals(arLosIId.get(i))) {
                                    bGefunden = true;
                                    break;
                                }

                            }

                            if (bGefunden == false) {
                                // auslassen
                                continue;
                            }

                        }

                        // Bewegungsvorschaueintrag erzeugen
                        BewegungsvorschauDto dto = new BewegungsvorschauDto();
                        dto.setArtikelIId(item.getFlrartikel().getI_id());
                        dto.setCBelegartCNr(LocaleFac.BELEGART_LOS);
                        dto.setCProjekt(losDto.getCProjekt());

                        dto.setIBelegIId(losDto.getIId());
                        dto.setIBelegPositionIId(item.getI_belegartpositionid());
                        dto.setNMenge(item.getN_menge().negate());
                        // Termine vor heute werden auf heute umgerechnet
                        Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime());
                        if (tsTermin.before(getTimestamp()) && bTermineVorHeuteAufHeute) {
                            tsTermin = Helper.cutTimestamp(getTimestamp());
                        }
                        dto.setTLiefertermin(tsTermin);
                        dto.setCBelegnummer(losDto.getCNr());
                        // wenn das Los auftragsbezogen ist, dann hol ich
                        // auch den Kunden
                        if (losDto.getAuftragpositionIId() != null || losDto.getAuftragIId() != null) {

                            Integer auftragIId = losDto.getAuftragIId();
                            if (auftragIId == null) {
                                AuftragpositionDto aufposDto = getAuftragpositionFac()
                                        .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId());
                                auftragIId = aufposDto.getBelegIId();
                            }

                            // den finde ich ueber die Auftragsposition

                            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragIId);

                            dto.setProjektIId(auftragDto.getProjektIId());

                            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(
                                    auftragDto.getKundeIIdAuftragsadresse(), theClientDto);
                            dto.setPartnerDto(kundeDto.getPartnerDto());
                        }
                        bewegungsvorschau.add(dto);
                    }
                } else {
                    // es wurde eine Auftragsreservierung gefunden, zu der
                    // es keine Auftragsposition gibt.
                    // -> loeschen.
                    getReservierungFac().removeArtikelreservierung(LocaleFac.BELEGART_LOS,
                            item.getI_belegartpositionid());
                }
            } else if (item.getC_belegartnr().equals(LocaleFac.BELEGART_KUECHE)) {
                Speiseplanposition speiseplanposition = em.find(Speiseplanposition.class,
                        item.getI_belegartpositionid());
                if (speiseplanposition != null) {
                    SpeiseplanpositionDto speiseplanpositionDto = SpeiseplanpositionDtoAssembler
                            .createDto(speiseplanposition);

                    // Bewegungsvorschaueintrag erzeugen
                    BewegungsvorschauDto dto = new BewegungsvorschauDto();
                    dto.setArtikelIId(item.getFlrartikel().getI_id());
                    dto.setCBelegartCNr(LocaleFac.BELEGART_KUECHE);

                    SpeiseplanDto speiseplanDto = null;
                    try {
                        speiseplanDto = getKuecheFac()
                                .speiseplanFindByPrimaryKey(speiseplanpositionDto.getSpeiseplanIId());
                        dto.setCBelegnummer("K");

                        // Projekt= Speisekassa

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

                        dto.setCProjekt(speisekassaDto.getCBez());

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

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

                    dto.setIBelegIId(speiseplanDto.getIId());
                    dto.setIBelegPositionIId(item.getI_belegartpositionid());
                    dto.setNMenge(item.getN_menge().negate());
                    // Termine vor heute werden auf heute umgerechnet
                    Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime());
                    if (tsTermin.before(getTimestamp()) && bTermineVorHeuteAufHeute) {
                        tsTermin = Helper.cutTimestamp(getTimestamp());
                    }
                    dto.setTLiefertermin(tsTermin);

                    bewegungsvorschau.add(dto);

                } else {
                    getReservierungFac().removeArtikelreservierung(LocaleFac.BELEGART_KUECHE,
                            item.getI_belegartpositionid());
                }

            }
        }
        // ------------------------------------------------------------------
        // ----
        // Fehlmengen
        // ------------------------------------------------------------------
        // ----
        Criteria cFehlmenge = session.createCriteria(FLRFehlmenge.class);
        // Filter nach Artikel
        cFehlmenge.add(Restrictions.eq(ArtikelFac.FLR_FEHLMENGE_ARTIKEL_I_ID, artikelDto.getIId()));
        // Sortierung nach Liefertermin
        cFehlmenge.addOrder(Order.asc(ArtikelFac.FLR_FEHLMENGE_T_LIEFERTERMIN));
        List<?> listFehlmenge = cFehlmenge.list();
        for (Iterator<?> iter = listFehlmenge.iterator(); iter.hasNext();) {
            FLRFehlmenge item = (FLRFehlmenge) iter.next();
            // kontrollieren, ob das los auch von diesem mandanten ist
            if (item.getFlrlossollmaterial() != null && item.getFlrlossollmaterial().getFlrlos()
                    .getMandant_c_nr().equals(theClientDto.getMandant())) {
                // Los holen
                LosDto losDto = getFertigungFac()
                        .losFindByPrimaryKey(item.getFlrlossollmaterial().getFlrlos().getI_id());

                if (arLosIId != null) {

                    // Nur bestimmte Lose beruecksichtigen
                    boolean bGefunden = false;
                    for (int i = 0; i < arLosIId.size(); i++) {

                        if (losDto.getIId().equals(arLosIId.get(i))) {
                            bGefunden = true;
                            break;
                        }

                    }

                    if (bGefunden == false) {
                        // auslassen
                        continue;
                    }

                }

                // Bewegungsvorschaueintrag erzeugen
                BewegungsvorschauDto dto = new BewegungsvorschauDto();
                dto.setArtikelIId(item.getFlrartikel().getI_id());
                dto.setCBelegartCNr(LocaleFac.BELEGART_LOS);
                dto.setIBelegIId(losDto.getIId());
                dto.setIBelegPositionIId(item.getFlrlossollmaterial().getI_id());
                dto.setNMenge(item.getN_menge().negate());
                // Termine vor heute werden auf heute umgerechnet
                Timestamp tsTermin = new Timestamp(item.getT_liefertermin().getTime());
                if (tsTermin.before(getTimestamp())) {
                    tsTermin = Helper.cutTimestamp(getTimestamp());
                }
                dto.setTLiefertermin(tsTermin);
                dto.setCBelegnummer(item.getFlrlossollmaterial().getFlrlos().getC_nr());
                // wenn das Los auftragsbezogen ist, dann hol ich auch den
                // Kunden
                if (losDto.getAuftragpositionIId() != null) {
                    // den finde ich ueber die Auftragsposition
                    AuftragpositionDto aufposDto = getAuftragpositionFac()
                            .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId());
                    AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(aufposDto.getBelegIId());

                    dto.setProjektIId(auftragDto.getProjektIId());

                    KundeDto kundeDto = getKundeFac()
                            .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto);
                    dto.setPartnerDto(kundeDto.getPartnerDto());
                }
                bewegungsvorschau.add(dto);
            }
        }
        // ------------------------------------------------------------------
        // ----
        // noch erwartete Losablieferungen
        // ------------------------------------------------------------------
        // ----
        Criteria cAblieferung = session.createCriteria(FLRLos.class);
        // Filter nach Mandant
        cAblieferung.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
        // OHNE STORNIERTE
        cAblieferung.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
                new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_ERLEDIGT })));
        // Filter nach Artikel
        cAblieferung.createCriteria(FertigungFac.FLR_LOS_FLRSTUECKLISTE)
                .createCriteria(StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL)
                .add(Restrictions.eq("i_id", artikelDto.getIId()));
        // Sortierung nach Liefertermin (=Produktionsende)
        cAblieferung.addOrder(Order.asc(FertigungFac.FLR_LOS_T_PRODUKTIONSENDE));
        // Query ausfuehren
        List<?> listAblieferung = cAblieferung.list();
        for (Iterator<?> iter = listAblieferung.iterator(); iter.hasNext();) {
            FLRLos los = (FLRLos) iter.next();
            BigDecimal bdOffen = los.getN_losgroesse();
            // von der Losgroesse die bisherigen Ablieferungen subtrahieren
            for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                FLRLosablieferung item2 = (FLRLosablieferung) iter2.next();
                bdOffen = bdOffen.subtract(item2.getN_menge());
            }
            if (bdOffen.compareTo(new BigDecimal(0)) > 0) {
                BewegungsvorschauDto dto = new BewegungsvorschauDto();
                dto.setArtikelIId(los.getFlrstueckliste().getFlrartikel().getI_id());
                dto.setCBelegartCNr(LocaleFac.BELEGART_LOSABLIEFERUNG);
                dto.setIBelegIId(los.getI_id());
                dto.setIBelegPositionIId(null);
                dto.setNMenge(bdOffen);
                dto.setTLiefertermin(new Timestamp(los.getT_produktionsende().getTime()));
                dto.setCBelegnummer(los.getC_nr());
                LosDto losDto = getFertigungFac().losFindByPrimaryKey(los.getI_id());
                // wenn das Los auftragsbezogen ist, dann hol ich auch den
                // Kunden
                if (losDto.getAuftragpositionIId() != null) {
                    // den finde ich ueber die Auftragsposition
                    AuftragpositionDto aufposDto = getAuftragpositionFac()
                            .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId());
                    AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(aufposDto.getBelegIId());
                    KundeDto kundeDto = getKundeFac()
                            .kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto);
                    dto.setPartnerDto(kundeDto.getPartnerDto());
                }
                bewegungsvorschau.add(dto);
            }
        }
        // Interne Bestellung miteinbeziehen
        if (bInternebestellungMiteinbeziehen) {
            Criteria cIB = session.createCriteria(FLRInternebestellung.class);
            // Filter nach Mandant
            cIB.add(Restrictions.eq(FertigungFac.FLR_INTERNE_BESTELLUNG_MANDANT_C_NR,
                    theClientDto.getMandant())).
            // Filter nach Artikel
                    createCriteria(FertigungFac.FLR_INTERNE_BESTELLUNG_FLRSTUECKLISTE)
                    .createCriteria(StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL)
                    .add(Restrictions.eq("i_id", artikelDto.getIId()));
            // Sortierung nach Liefertermin (=Produktionsende)
            cIB.addOrder(Order.asc(FertigungFac.FLR_INTERNE_BESTELLUNG_T_LIEFERTERMIN));
            List<?> listIB = cIB.list();
            for (Iterator<?> iter = listIB.iterator(); iter.hasNext();) {
                FLRInternebestellung ib = (FLRInternebestellung) iter.next();
                BewegungsvorschauDto dto = new BewegungsvorschauDto();
                dto.setArtikelIId(ib.getFlrstueckliste().getFlrartikel().getI_id());
                dto.setCBelegartCNr(ib.getBelegart_c_nr());
                dto.setIBelegIId(ib.getI_belegiid());
                dto.setIBelegPositionIId(ib.getI_belegpositioniid());
                dto.setNMenge(ib.getN_menge());
                dto.setTLiefertermin(new Timestamp(ib.getT_liefertermin().getTime()));
                bewegungsvorschau.add(dto);
            }
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        closeSession(session);
    }
    return bewegungsvorschau;
}

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

License:Open Source License

private IBuchungsjournalExportFormatter getBuchungsjournalExportFormatterHVRaw(Date von, Date bis,
        boolean mitAutoEB, boolean mitManEB, boolean mitAutoB, String bezeichnung, TheClientDto theClientDto)
        throws EJBExceptionLP, RemoteException {

    List<Integer> mitlaufendeKonten = getIIdsMitlaufendeKonten(theClientDto);
    Session session = FLRSessionFactory.getFactory().openSession();
    Criteria c = session.createCriteria(FLRFinanzBuchung.class, "b");
    c.createAlias("b.flrkostenstelle", "ks");
    if (!mitAutoB)
        c.add(Restrictions.like("b.b_autombuchung", 0));
    if (!mitAutoEB)
        c.add(Restrictions.like("b.b_autombuchungeb", 0));
    if (!mitManEB)
        c.add(Restrictions.not(Restrictions.like("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG)));
    c.add(Restrictions.ge("b.d_buchungsdatum", von)).add(Restrictions.le("b.d_buchungsdatum", bis))
            .add(Restrictions.like("ks.mandant_c_nr", theClientDto.getMandant()))
            .addOrder(Order.asc("b.d_buchungsdatum")).addOrder(Order.asc("b.i_id"));

    Iterator<?> iter = c.list().iterator();

    List<FLRFinanzBuchungDetail> details = new ArrayList<FLRFinanzBuchungDetail>();
    while (iter.hasNext()) {
        FLRFinanzBuchung buchung = (FLRFinanzBuchung) iter.next();
        List<?> detailList = session.createCriteria(FLRFinanzBuchungDetail.class)
                .add(Restrictions.eq("buchung_i_id", buchung.getI_id())).addOrder(Order.asc("i_id")).list();
        List<FLRFinanzBuchungDetail> nichtSachkonto = new ArrayList<FLRFinanzBuchungDetail>();
        for (Object o : detailList) {
            FLRFinanzBuchungDetail detail = (FLRFinanzBuchungDetail) o;
            if (!detail.getFlrkonto().getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO))
                nichtSachkonto.add(detail);
            //alle Debit-/Kreditorbuchungen merken
        }/*from   w  ww .  j a va  2 s  .  c o m*/
        for (Object o : detailList) {
            FLRFinanzBuchungDetail detail = (FLRFinanzBuchungDetail) o;

            //            if(detailList.size() == 2) { // wenn nur 2 Buchungsdetails, dann muessen beide Exportiert werden
            //               details.add(detail);   //da die Buchung sonst nicht ausgeglichen ist.
            //               if(mitlaufendeKonten.contains(detail.getKonto_i_id()))
            //                  myLogger.warn("Direkte Buchung auf Sammelkonto: " +
            //                        "buchung_i_id = " + buchung.getI_id() + "; " +
            //                              "konto: " + detail.getFlrkonto().getC_nr() + " " +
            //                                    "" + detail.getFlrkonto().getC_bez());
            //            } else
            if (!mitlaufendeKonten.contains(detail.getKonto_i_id())) {
                details.add(detail); // nicht mitlaufende Konten mussen immer dabei sein.
            } else {
                boolean mitlaufend = false;
                for (FLRFinanzBuchungDetail nichtSKDetail : nichtSachkonto) {
                    if (detail.getN_betrag().equals(nichtSKDetail.getN_betrag()) && detail
                            .getBuchungdetailart_c_nr().equals(nichtSKDetail.getBuchungdetailart_c_nr())) {
                        mitlaufend = true;
                        break;
                    }
                    //anhand der vorher gemerkten Debi-/Kreditorbuchungen erkennen ob mitlaufende Buchung
                }
                if (!mitlaufend) {
                    details.add(detail);

                    myLogger.warn("Direkte Buchung auf mitlaufendes Konto: " + "buchung_i_id = "
                            + buchung.getI_id() + "; " + "belegnr: " + buchung.getC_belegnummer() + "; "
                            + "konto: " + detail.getFlrkonto().getC_nr() + " " + detail.getFlrkonto().getC_bez()
                            + (buchung.getT_storniert() == null ? "" : " ,storniert"));
                }
            }
        }

    }
    return new BuchungsjournalExportHVRawFormatter(details);
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
private List<BuchungsjournalExportDatevBuchung> getBuchungen(Date von, Date bis, boolean mitAutoEB,
        boolean mitManEB, boolean mitAutoB, TheClientDto theClientDto) throws RemoteException, EJBExceptionLP {
    String mandant = theClientDto.getMandant();
    ParametermandantDto pMitlaufendesKonto = getParameterFac().getMandantparameter(mandant,
            ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_MITLAUFENDES_KONTO);
    String durchlaufKonto = pMitlaufendesKonto.getCWert();
    ParametermandantDto pKontoklassenOhneUst = getParameterFac().getMandantparameter(mandant,
            ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_KONTOKLASSEN_OHNE_BU_SCHLUESSEL);
    List<String> kontoklassenOhneUst = Arrays.asList(pKontoklassenOhneUst.getCWert().split(","));

    FinanzamtDto[] finanzaemter = getFinanzFac().finanzamtFindAll(theClientDto);
    List<Integer> mitlaufendeKonten = new ArrayList<Integer>();
    Map<Integer, Integer> mwstKonten = new HashMap<Integer, Integer>();
    for (FinanzamtDto amt : finanzaemter) {
        SteuerkategorieDto[] stkDtos = getFinanzServiceFac()
                .steuerkategorieFindByFinanzamtIId(amt.getPartnerIId(), theClientDto);
        for (SteuerkategorieDto stkat : stkDtos) {
            if (stkat.getKontoIIdForderungen() != null)
                mitlaufendeKonten.add(stkat.getKontoIIdForderungen());
            if (stkat.getKontoIIdVerbindlichkeiten() != null)
                mitlaufendeKonten.add(stkat.getKontoIIdVerbindlichkeiten());

            SteuerkategoriekontoDto[] stkks = getFinanzServiceFac().steuerkategoriekontoFindAll(stkat.getIId());
            for (SteuerkategoriekontoDto stkk : stkks) {
                if (mwstKonten.containsKey(stkk.getKontoIIdEk()))
                    mwstKonten.put(stkk.getKontoIIdEk(), null);
                else
                    mwstKonten.put(stkk.getKontoIIdEk(), stkk.getMwstsatzbezIId());

                if (mwstKonten.containsKey(stkk.getKontoIIdVk()))
                    mwstKonten.put(stkk.getKontoIIdVk(), null);
                else
                    mwstKonten.put(stkk.getKontoIIdVk(), stkk.getMwstsatzbezIId());

                if (mwstKonten.containsKey(stkk.getKontoIIdEinfuhrUst()))
                    mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), null);
                else
                    mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), stkk.getMwstsatzbezIId());
                //gibt es fuer ein Konto mehrere zugewiesene MwstSaetze, null in die Map schreiben
                //so weiss man, dass das Konto entweder nur einen MwstSatz haben kann oder aber
                //wenn vorhanden in der Map aber null, dann MwstSatz berechnen.
            }//from  w w  w.  ja  v  a2s.  c o  m
        }
    }
    List<BuchungsjournalExportDatevBuchung> buchungen = new ArrayList<BuchungsjournalExportDatevBuchung>();
    Session session = FLRSessionFactory.getFactory().openSession();
    Criteria c = session.createCriteria(FLRFinanzBuchung.class);
    c.createAlias("flrkostenstelle", "ks");
    if (!mitAutoB)
        c.add(Restrictions.like("b_autombuchung", 0));
    if (!mitAutoEB)
        c.add(Restrictions.like("b_autombuchungeb", 0));
    if (!mitManEB)
        c.add(Restrictions.not(Restrictions.like("buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG)));
    c.add(Restrictions.ge("d_buchungsdatum", von)).add(Restrictions.le("d_buchungsdatum", bis))
            .add(Restrictions.like("ks.mandant_c_nr", mandant)).addOrder(Order.asc("d_buchungsdatum"))
            .addOrder(Order.asc("c_belegnummer"));
    Iterator<?> iter = c.list().iterator();
    while (iter.hasNext()) {
        FLRFinanzBuchung hvBuchung = (FLRFinanzBuchung) iter.next();
        @SuppressWarnings("unchecked")
        List<FLRFinanzBuchungDetail> haben = session.createCriteria(FLRFinanzBuchungDetail.class)
                .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id()))
                .add(Restrictions.or(
                        Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung),
                                Restrictions.gt("n_betrag", BigDecimal.ZERO)),
                        Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung),
                                Restrictions.lt("n_betrag", BigDecimal.ZERO))))
                .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG),
                        Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten))))
                .addOrder(Order.asc("i_id")).list();
        @SuppressWarnings("unchecked")
        List<FLRFinanzBuchungDetail> soll = session.createCriteria(FLRFinanzBuchungDetail.class)
                .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id()))
                .add(Restrictions.or(
                        Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung),
                                Restrictions.gt("n_betrag", BigDecimal.ZERO)),
                        Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung),
                                Restrictions.lt("n_betrag", BigDecimal.ZERO))))
                .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG),
                        Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten))))
                .addOrder(Order.asc("i_id")).list();

        String gegenkontoCNr;
        FLRFinanzKonto flrGegenkonto = null;
        List<FLRFinanzBuchungDetail> zuBuchen;
        String uid = null;
        boolean buSchluesselErlaubt = true;
        boolean buSchluesselGanzeBuchung = true;
        if (soll.size() == 1) {
            flrGegenkonto = soll.get(0).getFlrkonto();
            gegenkontoCNr = flrGegenkonto.getC_nr();
            uid = getUIDZuKonto(flrGegenkonto, theClientDto);
            zuBuchen = haben;
        } else if (haben.size() == 1) {
            gegenkontoCNr = haben.get(0).getFlrkonto().getC_nr();
            flrGegenkonto = soll.get(0).getFlrkonto();
            uid = getUIDZuKonto(flrGegenkonto, theClientDto);
            zuBuchen = soll;
        } else {
            zuBuchen = soll;
            zuBuchen.addAll(haben);
            gegenkontoCNr = durchlaufKonto;
        }
        if (flrGegenkonto != null
                && flrGegenkonto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) {
            for (String klassen : kontoklassenOhneUst) {
                if (!klassen.isEmpty() && flrGegenkonto.getC_nr().startsWith(klassen)) {
                    buSchluesselGanzeBuchung = false;
                    break;
                }
            }
        }

        //         zuBuchen = getBuchungenKorrekteUst(zuBuchen, mwstKonten);

        for (int i = 0; i < zuBuchen.size(); i++) {
            FLRFinanzBuchungDetail b = zuBuchen.get(i);
            FLRFinanzKonto konto = b.getFlrkonto();
            buSchluesselErlaubt = true;
            if (konto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) {
                for (String klassen : kontoklassenOhneUst) {
                    if (!klassen.isEmpty() && konto.getC_nr().startsWith(klassen)) {
                        buSchluesselErlaubt = false;
                        break;
                    }
                }
            }

            Integer fibuCode = 0;
            BigDecimal umsatz = null;
            if (mwstKonten.containsKey(b.getKonto_i_id())) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_KONTIERUNG_ZUGEORDNET,
                        "Fehler! keine Mwst-Buchung erwartet!",
                        (hvBuchung.getFlrfbbelegart() == null ? hvBuchung.getC_text()
                                : hvBuchung.getFlrfbbelegart().getC_nr()) + " " + hvBuchung.getC_belegnummer());
                //               System.out.println("Fehler! keine Mwst-Buchung erwartet! " + hvBuchung.getC_belegnummer() + ", id = " + hvBuchung.getI_id());
                //               break;
            } else {
                if (zuBuchen.size() > i + 1) {
                    FLRFinanzBuchungDetail mwstBuchung = zuBuchen.get(i + 1);
                    if (mwstKonten.containsKey(mwstBuchung.getKonto_i_id())) {
                        Integer mwstIId = mwstKonten.get(mwstBuchung.getKonto_i_id());
                        MwstsatzDto mwstDto;
                        if (mwstIId != null) {
                            mwstDto = getMandantFac().mwstsatzFindZuDatum(mwstIId,
                                    new Timestamp(hvBuchung.getD_buchungsdatum().getTime()));
                        } else {
                            mwstDto = getMandantFac().getMwstSatzVonBruttoBetragUndUst(mandant,
                                    new Timestamp(hvBuchung.getD_buchungsdatum().getTime()), b.getN_betrag(),
                                    mwstBuchung.getN_betrag());
                        }
                        fibuCode = mwstDto.getIFibumwstcode();
                        if (fibuCode == null) {
                            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_EXPORT_KEIN_MWSTCODE, "",
                                    mwstDto.getMwstsatzbezDto().getCBezeichnung());
                        }
                        umsatz = b.getN_betrag().add(mwstBuchung.getN_betrag()).abs();
                        i++;
                    }
                }
            }
            BuchungsjournalExportDatevBuchung datevBuchung = new BuchungsjournalExportDatevBuchung();
            datevBuchung.setUmsatz(umsatz == null ? b.getN_betrag().abs() : umsatz);
            boolean negativ = b.getN_betrag().signum() < 0;
            datevBuchung.setSoll(negativ != b.getBuchungdetailart_c_nr().equals(BuchenFac.SollBuchung)); //XOR
            datevBuchung.setKonto(b.getFlrkonto().getC_nr());
            datevBuchung.setGegenkonto(gegenkontoCNr);
            if (hvBuchung.getT_storniert() != null) {
                fibuCode += 20;
            }
            if (buSchluesselErlaubt && buSchluesselGanzeBuchung)
                datevBuchung.setBuSchluessel(fibuCode == 0 ? "" : fibuCode.toString());
            datevBuchung.setBelegdatum(hvBuchung.getD_buchungsdatum());
            datevBuchung.setBeleg(hvBuchung.getC_belegnummer());
            datevBuchung.setBuchungstext(hvBuchung.getC_text());
            datevBuchung.setUid(uid == null ? getUIDZuKonto(b.getFlrkonto(), theClientDto) : uid);
            buchungen.add(datevBuchung);
        }
    }

    return buchungen;
}

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

License:Open Source License

private FLREingangsrechnung[] getVerbuchbareEingangsrechnungen(java.sql.Date dStichtag,
        TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;/*from www  .jav a2  s.  c  o m*/
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLREingangsrechnung.class);
        // Filter nach Mandant
        c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, theClientDto.getMandant()));
        // Noch nicht verbuchte
        c.add(Restrictions.isNull(EingangsrechnungFac.FLR_ER_T_FIBUUEBERNAHME));
        // Keine stornierten
        c.add(Restrictions.not(
                Restrictions.eq(EingangsrechnungFac.FLR_ER_STATUS_C_NR, EingangsrechnungFac.STATUS_STORNIERT)));
        // PJ 15286 Ohne Eingangsrechnungen mit Betrag = 0
        c.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_N_BETRAG, new BigDecimal(0))));
        // Stichtag
        c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dStichtag));
        c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR));
        List<?> list = c.list();
        FLREingangsrechnung[] erArray = new FLREingangsrechnung[list.size()];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLREingangsrechnung er = (FLREingangsrechnung) iter.next();
            erArray[i] = er;
        }
        return erArray;
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public MahnlaufDto createMahnlaufMitMahnvorschlag(TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;//from   w  w w. j  a va  2  s.c  o m
    try {
        MahnlaufDto mahnlaufDto = null;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnungReport.class);
        // Filter nach Mandant.
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter nach Stati
        String[] sStati = new String[] { RechnungFac.STATUS_OFFEN, RechnungFac.STATUS_TEILBEZAHLT,
                RechnungFac.STATUS_VERBUCHT };
        c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, sStati));

        // PJ 17236
        ParametermandantDto p = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_RECHNUNG, ParameterFac.PARAMETER_MAHNUNGEN_AB_GF_JAHR);
        Integer iGFJahrAB = (Integer) p.getCWertAsObject();
        c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_I_GESCHAEFTSJAHR, iGFJahrAB));

        c.createAlias(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART, "ra").add(Restrictions
                .not(Restrictions.eq("ra.rechnungtyp_c_nr", RechnungFac.RECHNUNGTYP_PROFORMARECHNUNG)));

        // Query ausfuehren.
        List<?> listRechnungen = c.list();
        // nur, wenn Rechnungen eingetragen sind.
        if (listRechnungen.size() > 0) {
            mahnlaufDto = context.getBusinessObject(MahnwesenFac.class).createMahnlauf(theClientDto);
            for (Iterator<?> iter = listRechnungen.iterator(); iter.hasNext();) {

                FLRRechnungReport flrRechnung = (FLRRechnungReport) iter.next();

                RechnungDto rechnungDto = getRechnungFac().rechnungFindByPrimaryKey(flrRechnung.getI_id());
                boolean mahnbar = false;
                // kann die Rechnung gemahnt werden?
                mahnbar = istRechnungMahnbar(flrRechnung.getI_id(), theClientDto);

                myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr() + " mahnbar: "
                        + mahnbar);
                // mahnung anlegen
                if (mahnbar) {
                    Integer mahnstufe = berechneMahnstufeFuerRechnung(rechnungDto, theClientDto);
                    if (mahnstufe != null) {
                        // pruefen, ob diese Mahnstufe schon gemahnt wurde
                        try {
                            Query query = em.createNamedQuery("MahnungfindByRechnungMahnstufe");
                            query.setParameter(1, flrRechnung.getI_id());
                            query.setParameter(2, mahnstufe);
                            // @todo getSingleResult oder getResultList ?
                            Mahnung mahnung = (Mahnung) query.getSingleResult();
                            myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                    + ", Stufe " + mahnstufe + " ist bereits in einem Mahnvorschlag");
                        } catch (NoResultException ex1) {

                            Integer letzteMahnstufe = getAktuelleMahnstufeEinerRechnung(flrRechnung.getI_id(),
                                    theClientDto);

                            if (letzteMahnstufe == null || !letzteMahnstufe.equals(mahnstufe)
                                    || (letzteMahnstufe != null
                                            && letzteMahnstufe == FinanzServiceFac.MAHNSTUFE_99)) {
                                myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                        + " wird gemahnt");
                                MahnungDto mahnungDto = new MahnungDto();
                                mahnungDto.setTMahndatum(super.getDate());
                                mahnungDto.setMahnlaufIId(mahnlaufDto.getIId());
                                mahnungDto.setMahnstufeIId(mahnstufe);
                                mahnungDto.setRechnungIId(flrRechnung.getI_id());

                                mahnungDto.setTGedruckt(null);
                                // Mahnsperre
                                if (rechnungDto.getTMahnsperrebis() != null) {
                                    if (super.getDate().before(rechnungDto.getTMahnsperrebis())) {
                                        continue;
                                    }
                                }

                                Integer mahnstufeIId = getAktuelleMahnstufeEinerRechnung(rechnungDto.getIId(),
                                        theClientDto);

                                if (mahnstufeIId != null
                                        && mahnstufeIId.intValue() == FinanzServiceFac.MAHNSTUFE_99) {
                                    mahnungDto.setTGedruckt(new java.sql.Timestamp(System.currentTimeMillis()));
                                    mahnungDto.setPersonalIIdGedruckt(theClientDto.getIDPersonal());
                                }

                                mahnungDto.setTLetztesmahndatum(getAktuellesMahndatumEinerRechnung(
                                        flrRechnung.getI_id(), theClientDto));
                                mahnungDto.setMahnstufeIIdLetztemahnstufe(mahnstufeIId);

                                context.getBusinessObject(MahnwesenFac.class).createMahnung(mahnungDto,
                                        theClientDto);
                            } else {
                                myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                        + " hat bereits Mahnstufe " + mahnstufe);
                            }
                        }
                    } else {
                        myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                + " muss nicht gemahnt werden");
                    }
                }
            }
        }
        return mahnlaufDto;
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    }
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printLieferscheinAlle(ReportLieferscheinJournalKriterienDto krit,
        TheClientDto theClientDto) {//from  w w w.  ja  v a  2s . c  o  m
    Session session = null;
    try {
        cAktuellerReport = LieferscheinReportFac.REPORT_LIEFERSCHEIN_ALLE;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // Kunde oder Statistikadresse verwenden
        final String critKundeIId;
        final String critFLRKunde;
        if (krit.getBVerwendeRechnungsAdresse()) {
            critKundeIId = LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_RECHNUNGSADRESSE;
            critFLRKunde = LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDERECHNUNGSADRESSE;
        } else {
            critKundeIId = LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_LIEFERADRESSE;
            critFLRKunde = LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDE;
        }

        Criteria c = session.createCriteria(FLRLieferschein.class);
        // Filter nach Mandant
        c.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_MANDANT_C_NR, theClientDto.getMandant()));

        // Filter nach Kostenstelle
        if (krit.kostenstelleIId != null) {
            c.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
        }
        // Filter nach einem Kunden
        if (krit.kundeIId != null) {
            c.add(Restrictions.eq(critKundeIId, krit.kundeIId));
        }
        // Filter nach einem Vertrter
        if (krit.vertreterIId != null) {
            c.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_FLRVERTRETER + ".i_id", krit.vertreterIId));
        }
        // Filter nach Status (keine stornierten)
        c.add(Restrictions.not(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR,
                LieferscheinFac.LSSTATUS_STORNIERT)));
        // Nur offene anzeigen?
        if (krit.getBNurOffene()) {
            Collection<String> cStati = new LinkedList<String>();
            cStati.add(LieferscheinFac.LSSTATUS_ANGELEGT);
            cStati.add(LieferscheinFac.LSSTATUS_OFFEN);
            c.add(Restrictions.in(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR, cStati));
        }
        // Datum von/bis
        String sVon = null;
        String sBis = null;
        if (krit.dVon != null) {
            c.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, krit.dVon));
            sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi());
        }
        if (krit.dBis != null) {
            c.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, krit.dBis));
            sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi());
        }

        // Belegnummer von/bis
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();
        if (krit.sBelegnummerVon != null) {
            sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerVon);
            c.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_C_NR, sVon));
        }
        if (krit.sBelegnummerBis != null) {
            sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerBis);
            c.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_C_NR, sBis));
        }
        // Sortierung nach Kostenstelle ist optional
        if (krit.bSortiereNachKostenstelle) {
            c.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
        }
        // Sortierung nach Partner ist optional
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            c.createCriteria(critFLRKunde).createCriteria(KundeFac.FLR_PARTNER)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            c.addOrder(Order.asc(LieferscheinFac.FLR_LIEFERSCHEIN_C_NR));
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            c.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRVERTRETER)
                    .addOrder(Order.asc(PersonalFac.FLR_PERSONAL_C_KURZZEICHEN));
        }
        List<?> list = c.list();
        data = new Object[list.size()][REPORT_ALLE_ANZAHL_SPALTEN];

        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRLieferschein r = (FLRLieferschein) iter.next();
            data[i][FELD_ALLE_BELEGDATUM] = r.getD_belegdatum();
            data[i][FELD_ALLE_PROJEKT] = r.getC_bez_projektbezeichnung();
            data[i][FELD_ALLE_STATUS] = r.getLieferscheinstatus_status_c_nr();
            data[i][FELD_ALLE_BELEGDATUM] = r.getD_belegdatum();
            data[i][FELD_ALLE_LIEFERSCHEINNUMMER] = r.getC_nr();
            // Bezahlte Betraege

            BigDecimal bdWertmw = r.getN_gesamtwertinlieferscheinwaehrung();

            data[i][FELD_ALLE_BETRAG] = bdWertmw;
            // Kostenstelle
            if (r.getFlrkostenstelle() != null) {
                String sKostenstellen = "";
                KostenstelleDto k = null;
                RechnungkontierungDto[] rechnungkontierungsDto = getRechnungFac()
                        .rechnungkontierungFindByRechnungIId(r.getI_id());
                if (rechnungkontierungsDto.length != 0) {
                    for (int e = 0; e < rechnungkontierungsDto.length; e++) {
                        k = getSystemFac()
                                .kostenstelleFindByPrimaryKey(rechnungkontierungsDto[e].getKostenstelleIId());
                        sKostenstellen = sKostenstellen + k.getCNr() + " ";
                    }
                } else {
                    sKostenstellen = r.getFlrkostenstelle().getC_nr();
                }
                data[i][FELD_ALLE_KOSTENSTELLENUMMER] = sKostenstellen;
            } else {
                data[i][FELD_ALLE_KOSTENSTELLENUMMER] = null;
            }
            // Kundendaten
            FLRKunde flrKunde, flrKundeStatistik;
            if (krit.getBVerwendeRechnungsAdresse()) {
                flrKunde = r.getFlrkunderechnungsadresse();
            } else {
                flrKunde = r.getFlrkunde();

                // Statistikdaten wenn nicht Kriterium Rechnungsadresse
                flrKundeStatistik = r.getFlrkunderechnungsadresse();
                data[i][FELD_ALLE_KUNDE_RECHNUNG] = flrKundeStatistik.getFlrpartner()
                        .getC_name1nachnamefirmazeile1();
                if (flrKundeStatistik.getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                    data[i][FELD_ALLE_KUNDE2_RECHNUNG] = flrKundeStatistik.getFlrpartner()
                            .getC_name2vornamefirmazeile2();
                } else {
                    data[i][FELD_ALLE_KUNDE2_RECHNUNG] = "";
                }
                PartnerDto partnerDtoStatistik = getPartnerFac()
                        .partnerFindByPrimaryKey(flrKundeStatistik.getFlrpartner().getI_id(), theClientDto);
                data[i][FELD_ALLE_ADRESSE_RECHNUNG] = partnerDtoStatistik.formatAdresse();

            }
            data[i][FELD_ALLE_KUNDE] = flrKunde.getFlrpartner().getC_name1nachnamefirmazeile1();
            if (r.getFlrvertreter() != null) {
                if (r.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                    data[i][FELD_ALLE_VERTRETER] = r.getFlrvertreter().getFlrpartner()
                            .getC_name1nachnamefirmazeile1() + " "
                            + r.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2();
                } else {
                    data[i][FELD_ALLE_VERTRETER] = r.getFlrvertreter().getFlrpartner()
                            .getC_name1nachnamefirmazeile1();
                }
            }
            if (flrKunde.getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                data[i][FELD_ALLE_KUNDE2] = flrKunde.getFlrpartner().getC_name2vornamefirmazeile2();
            } else {
                data[i][FELD_ALLE_KUNDE2] = "";
            }
            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(flrKunde.getFlrpartner().getI_id(),
                    theClientDto);
            data[i][FELD_ALLE_ADRESSE] = partnerDto.formatAdresse();
            data[i][FELD_ALLE_ORT] = partnerDto.formatAdresse();
            if (r.getFlrrechnung() != null) {
                data[i][FELD_ALLE_RECHNUNGSNUMMER] = r.getFlrrechnung().getC_nr();
            }

            // Debitorenkontonummer
            KontoDtoSmall kontoDtoDeb = null;
            if (flrKunde.getKonto_i_id_debitorenkonto() != null) {
                kontoDtoDeb = getFinanzFac()
                        .kontoFindByPrimaryKeySmallOhneExc(flrKunde.getKonto_i_id_debitorenkonto());
            }
            String sKontonummer;
            if (kontoDtoDeb != null) {
                sKontonummer = kontoDtoDeb.getCNr();
            } else {
                sKontonummer = "";
            }
            data[i][FELD_ALLE_DEBITORENKONTO] = sKontonummer;
            data[i][FELD_ALLE_WAEHRUNG] = r.getWaehrung_c_nr_lieferscheinwaehrung();
            data[i][FELD_ALLE_KURS] = new BigDecimal(r.getF_wechselkursmandantwaehrungzulieferscheinwaehrung());

            // 14217
            String sLaenderart = getFinanzServiceFac().getLaenderartZuPartner(partnerDto.getIId(),
                    theClientDto);
            data[i][FELD_ALLE_LAENDERART] = sLaenderart;
            i++;
        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);
        // Waehrung
        mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr());
        StringBuffer sSortierung = new StringBuffer();
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            if (krit.getBVerwendeRechnungsAdresse()) {
                sSortierung.append(getTextRespectUISpr("lp.rechnungsadresse", theClientDto.getMandant(),
                        theClientDto.getLocUi()));
            } else {
                sSortierung.append(
                        getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
            }
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(
                    getTextRespectUISpr("bes.belegnummer", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.vertreter", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        StringBuffer sFilter = new StringBuffer();
        if (sVon != null) {
            sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sVon + " ");
        }
        if (sBis != null) {
            sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sBis + " ");
        }
        if (krit.kostenstelleIId != null) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId);
            sFilter.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" ");
            sFilter.append(kstDto.getCNr());
        }
        // Statistikadresse
        if (krit.getBVerwendeRechnungsAdresse()) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            sFilter.append(getTextRespectUISpr("lp.rechnungsadresse", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        }

        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        mapParameter.put(LPReport.P_SORTIERENACHKUNDE,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));
        mapParameter.put(LPReport.P_SORTIERENACHVERTRETER,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER));
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());
        initJRDS(mapParameter, LieferscheinReportFac.REPORT_MODUL, cAktuellerReport, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);
        return getReportPrint();

    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

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

License:Open Source License

private KundeDto[] findAllKundeByDebitorennr(KundeDto kundeDtoI, TheClientDto theClientDto)
        throws EJBExceptionLP {
    ArrayList<KundeDto> list = new ArrayList<KundeDto>();
    if (kundeDtoI.getIDebitorenkontoAsIntegerNotiId() != null) {
        Session session = null;/*from w ww .  j a v  a 2  s .  co m*/
        try {
            SessionFactory factory = FLRSessionFactory.getFactory();
            session = factory.openSession();
            // Kunden finden
            Criteria c = session.createCriteria(FLRKunde.class);
            // alle mit diesem Debitorenkonto
            c.createCriteria(KundeFac.FLR_KONTO).add(Restrictions.eq(FinanzFac.FLR_KONTO_C_NR,
                    kundeDtoI.getIDebitorenkontoAsIntegerNotiId().toString()));
            // aber nicht denselben
            c.add(Restrictions.not(Restrictions.eq(KundeFac.FLR_KUNDE_I_ID, kundeDtoI.getIId())));
            c.add(Restrictions.eq(KundeFac.FLR_KUNDE_MANDANT_C_NR, theClientDto.getMandant()));
            // query ausfuehren
            List<?> resultList = c.list();
            for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) {
                FLRKunde item = (FLRKunde) iter.next();
                list.add(kundeFindByPrimaryKey(item.getI_id(), theClientDto));
            }
        } finally {
            if (session != null) {
                session.close();
            }
        }
    }
    KundeDto[] returnArray = new KundeDto[list.size()];
    return (KundeDto[]) list.toArray(returnArray);
}

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

License:Open Source License

private LieferantDto[] findAllLieferantenByKreditorennr(LieferantDto lieferantDtoI, TheClientDto theClientDto)
        throws EJBExceptionLP {
    ArrayList<LieferantDto> list = new ArrayList<LieferantDto>();
    if (lieferantDtoI.getIKreditorenkontoAsIntegerNotiId() != null) {
        Session session = null;/*  ww w  .  j  a  va2 s  . c  o  m*/
        try {
            SessionFactory factory = FLRSessionFactory.getFactory();
            session = factory.openSession();
            // Lieferanten finden
            Criteria c = session.createCriteria(FLRLieferant.class);
            // alle mit diesem Kreditorenkonto
            c.createCriteria(LieferantFac.FLR_KONTO).add(Restrictions.eq(FinanzFac.FLR_KONTO_C_NR,
                    lieferantDtoI.getIKreditorenkontoAsIntegerNotiId().toString()));
            // aber nicht denselben
            c.add(Restrictions.not(Restrictions.eq(LieferantFac.FLR_LIEFERANT_I_ID, lieferantDtoI.getIId())));
            c.add(Restrictions.eq(LieferantFac.FLR_LIEFERANT_MANDANT_C_NR, theClientDto.getMandant()));
            // query ausfuehren
            List<?> resultList = c.list();
            for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) {
                FLRLieferant item = (FLRLieferant) iter.next();
                list.add(lieferantFindByPrimaryKey(item.getI_id(), theClientDto));
            }
        } finally {
            if (session != null) {
                session.close();
            }
        }
    }
    LieferantDto[] returnArray = new LieferantDto[list.size()];
    return (LieferantDto[]) list.toArray(returnArray);
}