Example usage for org.hibernate.criterion Restrictions in

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

Introduction

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

Prototype

public static Criterion in(String propertyName, Collection values) 

Source Link

Document

Apply an "in" constraint to the named property.

Usage

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

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

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

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

            if (bEchteLiefermahnungVorhanden == false) {

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

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

                if (bABLiefermahnungVorhanden == false) {

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

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

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

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

                                }
                            }
                        }
                    }
                }
            }

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

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

            dto.setWaehrungCNr(erDto.getWaehrungCNr());

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

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

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

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

                if (bdBezahltERKurs != null) {

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

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

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

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

                dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    dto.setWaehrungCNr(erDto.getWaehrungCNr());

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

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

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

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

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printOffene(TheClientDto theClientDto, int iSort, Integer lieferantIId, Date dStichtag,
        boolean bStichtagIstFreigabeDatum, boolean bZusatzkosten, boolean mitNichtZugeordnetenBelegen) {
    this.useCase = UC_OFFENE;

    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;/*  www . jav  a  2s.c om*/
    try {
        Map<Integer, ZahlungszielDto> mZahlungsziel = getMandantFac()
                .zahlungszielFindAllByMandantAsDto(theClientDto.getMandant(), theClientDto);

        session = factory.openSession();

        List<Integer> lieferantenIIds = new ArrayList<Integer>();
        if (lieferantIId != null) {
            lieferantenIIds.add(lieferantIId);
        } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) {
            Iterator<?> iter = session.createCriteria(FLRLieferant.class).createAlias("flrpartner", "p")
                    .addOrder(Order.asc("p.c_name1nachnamefirmazeile1"))
                    .add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()))

                    .list().iterator();
            while (iter.hasNext()) {
                lieferantenIIds.add(((FLRLieferant) iter.next()).getI_id());
            }
        } else {
            lieferantenIIds.add(null);
        }

        List<Object[]> dataList = new ArrayList<Object[]>();

        for (Integer liefIId : lieferantenIIds) {
            Criteria crit = session.createCriteria(FLREingangsrechnungReport.class);
            // Filter nach Mandant
            crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));

            Collection<String> cStati = new LinkedList<String>();
            cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT);
            cStati.add(EingangsrechnungFac.STATUS_ANGELEGT);
            cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT);
            crit.add(Restrictions.in("status_c_nr", cStati));

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

            if (liefIId != null) {
                crit.add(Restrictions.eq("lieferant_i_id", liefIId));
            }
            if (bStichtagIstFreigabeDatum) {
                crit.add(Restrictions.le("t_freigabedatum", dStichtag));
            } else {
                crit.add(Restrictions.le("t_belegdatum", dStichtag));
            }
            crit.add(Restrictions.or(Restrictions.gt("t_bezahltdatum", dStichtag),
                    Restrictions.isNull("t_bezahltdatum")));
            crit.add(Restrictions.or(Restrictions.gt("t_manuellerledigt", dStichtag),
                    Restrictions.isNull("t_manuellerledigt")));

            if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) {
                crit.addOrder(Order.asc("c_nr"));
            } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) {
                crit.addOrder(Order.asc("c_nr"));
            } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) {
                crit.addOrder(Order.asc("t_faelligkeit")).addOrder(Order.asc("c_nr")); // Inerhalb wird immer nach
                // Rechnungsnummer sortiert
            } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) {
                crit.addOrder(Order.asc("t_faelligkeit_skonto1")).addOrder(Order.asc("c_nr"));
            } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) {
                crit.addOrder(Order.asc("t_faelligkeit_skonto2")).addOrder(Order.asc("c_nr"));
            }
            if (iSort != EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) {
                mitNichtZugeordnetenBelegen = false;
            }
            List<?> resultList = crit.list();

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

            Object[][] tempData = new Object[resultList.size()][OFFENE_ANZAHL_FELDER];

            if (mitNichtZugeordnetenBelegen) {
                LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(liefIId, theClientDto);

                if (liefDto.getKontoIIdKreditorenkonto() != null) {
                    // TODO: nur FLRFinanzBuchungDetail holen
                    Query query = session.createQuery(
                            "SELECT buchungdetail from FLRFinanzBuchungDetail buchungdetail LEFT OUTER JOIN buchungdetail.flrbuchung AS buchung"
                                    + " WHERE"
                                    + BuchungDetailQueryBuilder.buildNurOffeneBuchungDetails("buchungdetail")
                                    + "AND"
                                    + BuchungDetailQueryBuilder.buildNichtZuordenbareVonKonto("buchungdetail",
                                            "buchung", liefDto.getKontoIIdKreditorenkonto())
                                    + (dStichtag == null ? ""
                                            : ("AND buchung.d_buchungsdatum<='"
                                                    + Helper.formatDateWithSlashes(dStichtag) + "'")));

                    @SuppressWarnings("unchecked")
                    List<FLRFinanzBuchungDetail> bdList = query.list();
                    if (bdList.size() > 0) {
                        if (tempData.length < 1) {
                            tempData = new Object[1][OFFENE_ANZAHL_FELDER];
                            String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2();
                            tempData[0][OFFENE_FELD_FIRMA] = sFirma;
                            tempData[0][OFFENE_FELD_KREDITORENNR] = getFinanzFac()
                                    .kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto()).getCNr();
                        }
                        tempData[0][OFFENE_SUBREPORT_OFFENE_BUCHUNGEN] = FinanzSubreportGenerator
                                .createBuchungsdetailSubreport(bdList, false);
                    }
                }

            }
            while (resultListIterator.hasNext()) {
                FLREingangsrechnungReport er = (FLREingangsrechnungReport) resultListIterator.next();
                EingangsrechnungDto erDto = getEingangsrechnungFac()
                        .eingangsrechnungFindByPrimaryKey(er.getI_id());
                LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(erDto.getLieferantIId(),
                        theClientDto);

                String sErCNr = erDto.getCNr();
                String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2();
                ZahlungszielDto zzDto = mZahlungsziel.get(erDto.getZahlungszielIId());
                tempData[row][OFFENE_FELD_ER_C_NR] = sErCNr;
                tempData[row][OFFENE_FELD_FIRMA] = sFirma;
                tempData[row][OFFENE_FELD_ERDATUM] = er.getT_belegdatum();
                tempData[row][OFFENE_FELD_MAHNDATUM] = erDto.getTMahndatum();
                tempData[row][OFFENE_FELD_KREDITORENNR] = liefDto.getKontoIIdKreditorenkonto() != null
                        ? getFinanzFac().kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto())
                                .getCNr()
                        : null;
                tempData[row][OFFENE_FELD_MAHNSTUFE] = er.getMahnstufe_i_id();
                tempData[row][OFFENE_FELD_FREIGABEDATUM] = er.getT_freigabedatum();
                tempData[row][OFFENE_FELD_WERT] = erDto.getNBetrag();
                tempData[row][OFFENE_FELD_LIEFERANTENRECHNUNGSNUMMER] = erDto.getCLieferantenrechnungsnummer();
                tempData[row][OFFENE_FELD_TEXT] = erDto.getCText();
                if (zzDto != null) {
                    tempData[row][OFFENE_FELD_ZAHLUNGSZIEL] = zzDto.getCBez();
                    tempData[row][OFFENE_FELD_SKONTOTAGE1] = zzDto.getSkontoAnzahlTage1();
                    tempData[row][OFFENE_FELD_SKONTOTAGE2] = zzDto.getSkontoAnzahlTage2();
                    tempData[row][OFFENE_FELD_SKONTOPROZENT1] = zzDto.getSkontoProzentsatz1();
                    tempData[row][OFFENE_FELD_SKONTOPROZENT2] = zzDto.getSkontoProzentsatz2();
                    tempData[row][OFFENE_FELD_NETTOTAGE] = zzDto.getAnzahlZieltageFuerNetto();
                    if (erDto.getDFreigabedatum() != null) {
                        if (zzDto.getAnzahlZieltageFuerNetto() != null) {
                            tempData[row][OFFENE_FELD_FAELLIGKEIT] = er.getT_faelligkeit();
                        }
                        if (zzDto.getSkontoAnzahlTage1() != null) {
                            tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO1] = er.getT_faelligkeit_skonto1();
                        }
                        if (zzDto.getSkontoAnzahlTage2() != null) {
                            tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO2] = er.getT_faelligkeit_skonto2();
                        }
                    }
                }

                // datum der letzten zahlung bis zum stichtag ermitteln
                EingangsrechnungzahlungDto[] zahlungen = getEingangsrechnungFac()
                        .eingangsrechnungzahlungFindByEingangsrechnungIId(er.getI_id());
                java.sql.Date dZahldatum = null;
                for (int i = 0; i < zahlungen.length; i++) {
                    if ((dZahldatum == null || zahlungen[i].getTZahldatum().after(dZahldatum))
                            && !zahlungen[i].getTZahldatum().after(dStichtag)) {
                        dZahldatum = new Date(zahlungen[i].getTZahldatum().getTime());
                    }
                }
                tempData[row][OFFENE_FELD_ZAHLDATUM] = dZahldatum;
                // Zahlungsbetrag bis zum Stichtag ermitteln
                BigDecimal bdBezahltFw = new BigDecimal(0);
                BigDecimal bdBezahltKursBelegdatum = new BigDecimal(0);
                for (int i = 0; i < zahlungen.length; i++) {
                    if (!zahlungen[i].getTZahldatum().after(dStichtag)) {
                        bdBezahltFw = bdBezahltFw.add(zahlungen[i].getNBetragfw());
                        bdBezahltKursBelegdatum = bdBezahltKursBelegdatum
                                .add(zahlungen[i].getNBetragfw().multiply(erDto.getNKurs()));
                    }
                }

                tempData[row][OFFENE_FELD_BETRAG] = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdBezahltFw,
                        erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(),
                        // new Date(System.currentTimeMillis()),
                        dStichtag, theClientDto);
                tempData[row][OFFENE_FELD_BETRAG_KURS_BELEGDATUM] = bdBezahltKursBelegdatum;
                tempData[row][OFFENE_FELD_OFFEN] = getLocaleFac().rechneUmInAndereWaehrungZuDatum(
                        erDto.getNBetragfw().subtract(bdBezahltFw), erDto.getWaehrungCNr(),
                        theClientDto.getSMandantenwaehrung(),
                        // new Date(System.currentTimeMillis()),
                        dStichtag, theClientDto);
                tempData[row][OFFENE_FELD_OFFEN_KURS_BELEGDATUM] = erDto.getNBetrag()
                        .subtract(bdBezahltKursBelegdatum);

                tempData[row][OFFENE_FELD_BETRAG_FW] = bdBezahltFw;
                tempData[row][OFFENE_FELD_OFFEN_FW] = erDto.getNBetragfw().subtract(bdBezahltFw);
                tempData[row][OFFENE_FELD_ERWAEHRUNG] = erDto.getWaehrungCNr();
                tempData[row][OFFENE_FELD_WERT_FW] = erDto.getNBetragfw();
                tempData[row][OFFENE_FELD_ERKURS] = erDto.getNKurs();
                WechselkursDto wkDto = getLocaleFac().getKursZuDatum(erDto.getWaehrungCNr(),
                        theClientDto.getSMandantenwaehrung(), dStichtag, theClientDto);
                tempData[row][OFFENE_FELD_KURS_STICHTAG] = wkDto.getNKurs()
                        .setScale(LocaleFac.ANZAHL_NACHKOMMASTELLEN_WECHSELKURS, RoundingMode.HALF_EVEN);
                row++;
            }
            dataList.addAll(Arrays.asList(tempData));
        }

        data = dataList.toArray(new Object[0][]);
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        mapParameter.put("P_DATUM", dStichtag);
        mapParameter.put("P_STICHTAGISTFREIGABEDATUM", new Boolean(bStichtagIstFreigabeDatum));
        mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten));
        String sSortierung = null;
        if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) {
            sSortierung = "Lieferant";
        } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) {
            sSortierung = "Rechnungsnummer";
        } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) {
            sSortierung = getTextRespectUISpr("lp.faelligkeit", theClientDto.getMandant(),
                    theClientDto.getLocUi());
        } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) {
            sSortierung = getTextRespectUISpr("er.faelligkeitskonto1", theClientDto.getMandant(),
                    theClientDto.getLocUi());
        } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) {
            sSortierung = getTextRespectUISpr("er.faelligkeitskonto2", theClientDto.getMandant(),
                    theClientDto.getLocUi());
        }
        mapParameter.put("P_SORTIERUNGNACHLIEFERANT",
                new Boolean(iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT));
        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung);

        String sZessionstext = null;
        sZessionstext = getParameterFac().parametermandantFindByPrimaryKey(ParameterFac.PARAMETER_ZESSIONSTEXT,
                ParameterFac.KATEGORIE_ALLGEMEIN, theClientDto.getMandant()).getCWert();
        if (sZessionstext != null) {
            mapParameter.put("P_ZESSIONSTEXT", sZessionstext);
        }
        mapParameter.put("P_MANDANTENWAEHRUNG", theClientDto.getSMandantenwaehrung());
        initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL,
                EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_OFFENE, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

public Integer createZahlungsvorschlag(ZahlungsvorschlagkriterienDto krit, TheClientDto theClientDto)
        throws EJBExceptionLP {
    Integer iZViid = null;//from   w w w .j a v a  2  s. c  o m
    Session session = null;
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLREingangsrechnungReport.class);
        // Es werden alle offenen ERs dieses Mandanten ausgewertet.
        // 1. Filter nach Mandant
        c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, theClientDto.getMandant()));
        // 2. Filter nach Status
        Collection<String> collStati = new LinkedList<String>();
        collStati.add(EingangsrechnungFac.STATUS_ANGELEGT);
        collStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT);
        c.add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, collStati));
        // Abfragen
        List<?> list = c.list();
        if (list.size() > 0) {
            // wenn da welche daherkommen, mach ich einen neuen lauf
            ZahlungsvorschlaglaufDto zvlaufDto = new ZahlungsvorschlaglaufDto();
            zvlaufDto.setBankverbindungIId(krit.getBankvertbindungIId());
            zvlaufDto.setBMitskonto(Helper.boolean2Short(krit.isBMitSkonto()));
            zvlaufDto.setISkontoueberziehungsfristintagen(krit.getISkontoUeberziehungsfristInTagen());
            zvlaufDto.setMandantCNr(theClientDto.getMandant());
            zvlaufDto.setTNaechsterzahlungslauf(krit.getDNaechsterZahlungslauf());
            zvlaufDto.setTZahlungsstichtag(krit.getDZahlungsstichtag());
            iZViid = createZahlungsvorschlaglauf(zvlaufDto, theClientDto);
            // Zahlungsziele cachen
            final Map<Integer, ZahlungszielDto> mZahlungsziele = (Map<Integer, ZahlungszielDto>) getMandantFac()
                    .zahlungszielFindAllByMandantAsDto(theClientDto.getMandant(), theClientDto);
            for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
                FLREingangsrechnungReport e = (FLREingangsrechnungReport) iter.next();
                // Offenen Werte ermitteln
                BigDecimal bdBruttowertFW = e.getN_betragfw();
                BigDecimal bdBruttooffenFW = bdBruttowertFW
                        .subtract(getEingangsrechnungFac().getBezahltBetragFw(e.getI_id(), null));
                // Wenn noch was offen ist
                if (bdBruttooffenFW.compareTo(new BigDecimal(0)) > 0) {
                    // Faelligkeitsdatum berechnen
                    // das ist grundsaetzlich Freigabedatum + Zahlungsziel (sofern definiert)
                    java.util.Date dFaellig = e.getT_freigabedatum();
                    // Netto faellig - ebenfalls plus Zahlungsziel (sofern definiert)
                    java.util.Date dFaelligNetto = e.getT_freigabedatum();
                    int iZielTage = 0;
                    BigDecimal bdAngewandterSkontoSatz = new BigDecimal(0);
                    if (e.getZahlungsziel_i_id() != null) {
                        ZahlungszielDto zzDto = mZahlungsziele.get(e.getZahlungsziel_i_id());
                        // mit Skonto zahlen
                        if (krit.isBMitSkonto()) {
                            // Skontoueberziehungstage einrechnen
                            dFaellig = Helper.addiereTageZuDatum(dFaellig,
                                    krit.getISkontoUeberziehungsfristInTagen());
                            boolean bSkontoGehtSichAus = false;

                            // schaun, ob sich der erste Skonto noch ausgeht
                            if (zzDto.getSkontoAnzahlTage1() != null && zzDto.getSkontoProzentsatz1() != null) {
                                // Bei diesem Datum waere mit Skonto1 zu zahlen
                                java.util.Date dFaelligBeiSkonto1 = Helper.addiereTageZuDatum(dFaellig,
                                        zzDto.getSkontoAnzahlTage1());
                                // wenn das spaetestens heute ist -> anwenden
                                if (dFaelligBeiSkonto1.compareTo(Helper.cutDate(getDate())) >= 0) {
                                    bSkontoGehtSichAus = true;
                                    bdAngewandterSkontoSatz = zzDto.getSkontoProzentsatz1();
                                    iZielTage = zzDto.getSkontoAnzahlTage1();
                                }
                            }
                            // wenn nicht, dann schaun, ob sich der zweite ausgeht
                            if (!bSkontoGehtSichAus && zzDto.getSkontoAnzahlTage2() != null
                                    && zzDto.getSkontoProzentsatz2() != null) {
                                // Bei diesem Datum waere mit Skonto2 zu zahlen
                                java.util.Date dFaelligBeiSkonto2 = Helper.addiereTageZuDatum(dFaellig,
                                        zzDto.getSkontoAnzahlTage2());
                                // wenn das spaetestens heute ist -> anwenden
                                if (dFaelligBeiSkonto2.compareTo(Helper.cutDate(getDate())) >= 0) {
                                    bSkontoGehtSichAus = true;
                                    bdAngewandterSkontoSatz = zzDto.getSkontoProzentsatz2();
                                    iZielTage = zzDto.getSkontoAnzahlTage2();
                                }
                            }
                            // wenn auch das nicht gegangen ist, muss sowieso netto gezahlt werden
                            if (!bSkontoGehtSichAus && zzDto.getAnzahlZieltageFuerNetto() != null) {
                                iZielTage = zzDto.getAnzahlZieltageFuerNetto();
                            }
                        }
                        // nicht mit Skonto zahlen -> nettotage
                        else {
                            if (zzDto.getAnzahlZieltageFuerNetto() != null) {
                                iZielTage = zzDto.getAnzahlZieltageFuerNetto();
                            }
                        }
                        // Nettofaelligkeitsdatum
                        if (zzDto.getAnzahlZieltageFuerNetto() != null) {
                            dFaelligNetto = Helper.addiereTageZuDatum(dFaelligNetto,
                                    zzDto.getAnzahlZieltageFuerNetto());
                        }
                    }
                    // Zieltage addieren
                    dFaellig = Helper.addiereTageZuDatum(dFaellig, iZielTage);
                    // wenn vor dem naechsten Zahlungslauf faellig, dann speichern
                    if (dFaellig.before(krit.getDNaechsterZahlungslauf())) {
                        // vorher noch den Skontosatz anwenden
                        BigDecimal bdMultiplikator = new BigDecimal(1)
                                .subtract(bdAngewandterSkontoSatz.movePointLeft(2));
                        bdBruttooffenFW = bdBruttooffenFW.multiply(bdMultiplikator)
                                .setScale(FinanzFac.NACHKOMMASTELLEN, RoundingMode.HALF_UP);
                        // Dto zusammenbauen
                        ZahlungsvorschlagDto zvDto = new ZahlungsvorschlagDto();
                        zvDto.setBBezahlen(Helper.boolean2Short(true));
                        zvDto.setEingangsrechnungIId(e.getI_id());
                        zvDto.setNAngewandterskontosatz(bdAngewandterSkontoSatz);
                        zvDto.setNOffen(bdBruttooffenFW);
                        zvDto.setTFaellig(new java.sql.Date(dFaellig.getTime())); // in sql-date umwandeln
                        zvDto.setZahlungsvorschlaglaufIId(iZViid);
                        // Eintrag speichern
                        createZahlungsvorschlag(zvDto);
                    }
                }
            }
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        if (session != null) {
            session.close();
        }
    }
    return iZViid;
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public String gebeMehrereLoseAus(Integer fertigungsgruppeIId, boolean throwExceptionWhenCreate,
        boolean bAufAktualisierungPruefen, TheClientDto theClientDto) {

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

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

    String s = null;//  w  ww . j  av a  2 s.co  m

    String[] stati = new String[4];
    stati[0] = FertigungFac.STATUS_ANGELEGT;
    crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati));
    crit.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId));
    crit.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
    byte[] CRLFAscii = { 13, 10 };
    List<?> resultList = crit.list();
    Iterator<?> resultListIterator = resultList.iterator();
    boolean bKopfzeileEinfuegen = true;
    while (resultListIterator.hasNext()) {
        FLRLosReport flrLos = (FLRLosReport) resultListIterator.next();

        if (bAufAktualisierungPruefen) {
            boolean bGeandert = false;
            if (flrLos.getStueckliste_i_id() != null) {
                StuecklisteDto stklDto = getStuecklisteFac()
                        .stuecklisteFindByPrimaryKey(flrLos.getStueckliste_i_id(), theClientDto);
                // ist der Arbeitsplan der Stueckliste aktueller als der des
                // Loses?
                if (flrLos.getT_aktualisierungarbeitszeit() != null
                        && stklDto.getTAendernarbeitsplan().after(flrLos.getT_aktualisierungarbeitszeit())) {
                    bGeandert = true;
                }

                if (flrLos.getT_aktualisierungstueckliste() != null
                        && stklDto.getTAendernposition().after(flrLos.getT_aktualisierungstueckliste())) {
                    bGeandert = true;
                }

                if (bGeandert == true) {
                    if (bKopfzeileEinfuegen == true) {
                        bKopfzeileEinfuegen = false;
                        s = "<font size='3' face='Monospaced'>";

                        s += Helper.fitString2Length("Losnummer", 12, '\u00A0');
                        s += Helper.fitString2Length("Stkl.Nr.", 25, '\u00A0');
                        s += Helper.fitString2Length("Stkl.Bez.", 40, '\u00A0');
                        s += Helper.fitString2Length("Anlagedatum", 14, '\u00A0');
                        s += Helper.fitString2Length("\u00C4nd.Dat.Stkl.", 14, '\u00A0');

                        s += Helper.fitString2Length("\u00C4nd.Dat.AP", 14, '\u00A0');

                        s += "<br>";
                        s += "<br>";

                    }

                    s += Helper.fitString2Length(flrLos.getC_nr(), 12, '\u00A0');

                    s += Helper.fitString2Length(stklDto.getArtikelDto().getCNr(), 25, '\u00A0');
                    if (stklDto.getArtikelDto().getArtikelsprDto() != null) {
                        s += Helper.fitString2Length(stklDto.getArtikelDto().getArtikelsprDto().getCBez(), 40,
                                '\u00A0');
                    } else {
                        s += Helper.fitString2Length("", 40, '\u00A0');
                    }
                    s += Helper.fitString2Length(
                            Helper.formatDatum(flrLos.getT_anlegen(), theClientDto.getLocUi()), 14, '\u00A0');
                    s += Helper.fitString2Length(
                            Helper.formatDatum(stklDto.getTAendernposition(), theClientDto.getLocUi()), 14,
                            '\u00A0');
                    s += Helper.fitString2Length(
                            Helper.formatDatum(stklDto.getTAendernarbeitsplan(), theClientDto.getLocUi()), 14,
                            '\u00A0');
                    s += "<br>";

                }
            }

        } else {
            try {
                context.getBusinessObject(FertigungFac.class).gebeLosAus(flrLos.getI_id(), false,
                        throwExceptionWhenCreate, theClientDto, null);
            } catch (RemoteException e) {
                throwEJBExceptionLPRespectOld(e);
            }
        }

    }
    return s;
}

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

License:Open Source License

@TransactionTimeout(6000)
public void perAuftragsnummerLoseAbliefern(Integer auftragIId, TheClientDto theClientDto) {
    // Alle// ww  w. j a  v  a 2s  . c  o m
    try {

        AuftragpositionDto[] dtos = getAuftragpositionFac().auftragpositionFindByAuftragOffeneMenge(auftragIId);
        ArrayList<Object> alGehtNicht = new ArrayList<Object>();
        for (int i = 0; i < dtos.length; i++) {
            AuftragpositionDto auftragpositionDto = dtos[i];

            if (auftragpositionDto.getArtikelIId() != null) {
                StuecklisteDto stuecklisteDto = getStuecklisteFac()
                        .stuecklisteFindByMandantCNrArtikelIIdOhneExc(auftragpositionDto.getArtikelIId(),
                                theClientDto);
                if (stuecklisteDto != null
                        && Helper.short2boolean(stuecklisteDto.getBMaterialbuchungbeiablieferung()) == true) {
                    ArtikelDto artikelDto = getArtikelFac()
                            .artikelFindByPrimaryKey(stuecklisteDto.getArtikelIId(), theClientDto);

                    BigDecimal nMengeOffen = auftragpositionDto.getNOffeneMenge();

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

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

                    String[] stati = new String[2];
                    stati[0] = FertigungFac.STATUS_IN_PRODUKTION;
                    stati[1] = FertigungFac.STATUS_TEILERLEDIGT;
                    crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati));
                    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
                    crit.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, stuecklisteDto.getIId()));

                    crit.addOrder(Order.asc("c_nr"));

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

                    while (resultListIterator.hasNext() && nMengeOffen.doubleValue() > 0) {
                        FLRLosReport flrLos = (FLRLosReport) resultListIterator.next();

                        BigDecimal bdOffenLos = flrLos.getN_losgroesse()
                                .subtract(getFertigungFac().getErledigteMenge(flrLos.getI_id(), theClientDto));
                        if (bdOffenLos.doubleValue() > 0) {

                            boolean bErledigt = false;

                            LosablieferungDto losablieferungDto = new LosablieferungDto();
                            losablieferungDto.setLosIId(flrLos.getI_id());

                            if (bdOffenLos.doubleValue() >= nMengeOffen.doubleValue()) {
                                losablieferungDto.setNMenge(nMengeOffen);
                                if (bdOffenLos.doubleValue() == nMengeOffen.doubleValue()) {
                                    bErledigt = true;
                                }
                                nMengeOffen = new BigDecimal(0);

                            } else {
                                losablieferungDto.setNMenge(bdOffenLos);
                                nMengeOffen = nMengeOffen.subtract(bdOffenLos);
                                bErledigt = true;
                            }
                            // Materialbuchen
                            bucheMaterialAufLos(losFindByPrimaryKey(flrLos.getI_id()),
                                    losablieferungDto.getNMenge(), false, false, true, theClientDto, null,
                                    false);

                            // Sind sollsatzgroeszen unterschritten?
                            // Sollsatzgroessen pruefen
                            pruefePositionenMitSollsatzgroesseUnterschreitung(flrLos.getI_id(),
                                    losablieferungDto.getNMenge(), theClientDto);

                            createLosablieferung(losablieferungDto, theClientDto, bErledigt);

                        }
                    }

                    if (nMengeOffen.doubleValue() > 0) {
                        alGehtNicht.add(artikelDto.formatArtikelbezeichnung() + " "
                                + Helper.formatZahl(nMengeOffen, 4, theClientDto.getLocUi()) + " "
                                + artikelDto.getEinheitCNr());
                    }

                }
            }

        }

        if (alGehtNicht.size() > 0) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_ABLIEFERN_PER_AUFTRAGSNUMMER_NICHT_MOEGLICH,
                    alGehtNicht, new Exception("Zuwenig offene Lose"));

        }

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

}

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

License:Open Source License

public BigDecimal getAnzahlInFertigung(Integer artikelIId, TheClientDto theClientDto) {
    BigDecimal anzahl = new BigDecimal(0);
    Session session = null;//from  w  w w . j  a  v  a  2s. co  m

    StuecklisteDto stuecklisteDto = getStuecklisteFac().stuecklisteFindByMandantCNrArtikelIIdOhneExc(artikelIId,
            theClientDto);
    if (stuecklisteDto != null) {
        // --------------------------------------------------------------
        // ---------
        session = FLRSessionFactory.getFactory().openSession();

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

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

        crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati));
        crit.add(
                Restrictions.eq(FertigungFac.FLR_INTERNE_BESTELLUNG_STUECKLISTE_I_ID, stuecklisteDto.getIId()));

        List<?> resultList = crit.list();
        Iterator<?> resultListIterator = resultList.iterator();
        while (resultListIterator.hasNext()) {
            FLRLos flrLos = (FLRLos) resultListIterator.next();
            if (flrLos.getStatus_c_nr().equals(FertigungFac.STATUS_TEILERLEDIGT)) {
                // Erledigte Menge bestimmen.
                BigDecimal bdErledigt = getErledigteMenge(flrLos.getI_id(), theClientDto);
                // Wenn noch was offen ist (es koennte auch
                // Ueberlieferungen geben).
                if (flrLos.getN_losgroesse().compareTo(bdErledigt) > 0) {
                    anzahl = anzahl.add(flrLos.getN_losgroesse().subtract(bdErledigt));
                }
            } else {
                anzahl = anzahl.add(flrLos.getN_losgroesse());
            }
        }
    }

    return anzahl;
}

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

License:Open Source License

public ArrayList<LosDto> getLoseInFertigung(Integer artikelIId, TheClientDto theClientDto) {
    Session session = null;//from  w w  w  .  ja  v  a  2  s .  com

    ArrayList<LosDto> lose = new ArrayList<LosDto>();

    try {
        StuecklisteDto stuecklisteDto = getStuecklisteFac()
                .stuecklisteFindByMandantCNrArtikelIIdOhneExc(artikelIId, theClientDto);
        if (stuecklisteDto != null) {
            // --------------------------------------------------------------
            // ---------
            session = FLRSessionFactory.getFactory().openSession();

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

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

            crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati));
            crit.add(Restrictions.eq(FertigungFac.FLR_INTERNE_BESTELLUNG_STUECKLISTE_I_ID,
                    stuecklisteDto.getIId()));

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

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

                if (flrLos.getStatus_c_nr().equals(FertigungFac.STATUS_TEILERLEDIGT)) {
                    // Erledigte Menge bestimmen.
                    BigDecimal bdErledigt = getErledigteMenge(flrLos.getI_id(), theClientDto);
                    // Wenn noch was offen ist (es koennte auch
                    // Ueberlieferungen geben).
                    if (flrLos.getN_losgroesse().compareTo(bdErledigt) > 0) {

                        lose.add(losDto);
                    }
                } else {
                    lose.add(losDto);
                }
            }
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        closeSession(session);
    }
    return lose;
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public KapazitaetsvorschauDto getKapazitaetsvorschau(TheClientDto theClientDto) throws EJBExceptionLP {
    KapazitaetsvorschauDto kapDto = null;
    Session session = null;//from  w  ww  . j  a  va  2s.c  o m
    try {

        // ------------------------------------------------------------------
        // -----
        // Benoetigte Parameter holen
        // ------------------------------------------------------------------
        // -----
        // Default Sicht nach Wochen
        // final int iSicht = FertigungFac.KAPAZITAETSVORSCHAU_NACH_WOCHEN;
        // Anzahl der angezeigten Vatergruppen. Alles andere wird nach
        // "Sonstige" verdichtet
        final ParametermandantDto parameterAnzahlGruppen = getParameterFac().getMandantparameter(
                theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG,
                ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ANZAHL_GRUPPEN);
        final int iParamAnzahlGruppen = (Integer) parameterAnzahlGruppen.getCWertAsObject();
        // Angezeigter Zeitraum = Anzahl der Spalten
        final ParametermandantDto parameterZeitraum = getParameterFac().getMandantparameter(
                theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG,
                ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ZEITRAUM);
        final int iParamZeitraum = (Integer) parameterZeitraum.getCWertAsObject();

        // ------------------------------------------------------------------
        // -----
        // Hibernate-Session erstellen
        // ------------------------------------------------------------------
        // -----
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // ------------------------------------------------------------------
        // -----
        // Artikel- / Maschinen-Vatergruppen holen
        // ------------------------------------------------------------------
        // -----
        // Alle Artikel-Vatergruppen
        Criteria cArtikelVatergruppen = session.createCriteria(FLRArtikelgruppe.class);
        cArtikelVatergruppen.add(Restrictions.isNull(ArtikelFac.FLR_ARTIKELGRUPPE_FLRARTIKELGRUPPE));
        List<?> listArtikelgruppen = cArtikelVatergruppen.list();
        // Alle Maschinen-Vatergruppen
        Criteria cMaschinengruppen = session.createCriteria(FLRMaschinengruppe.class);
        List<?> listMaschinengruppen = cMaschinengruppen.list();
        // ------------------------------------------------------------------
        // -----
        // Anzahl der sub-Diagramme bestimmen
        // das ist grundsaetzlich (iParamAnzahlGruppen + 1) x 2 ...
        // (Anzahl d. anzuzeigenden Vatergruppen + Sonstige) f. AZ und
        // Maschinen
        // wenn es weniger Vatergruppen als anzuzeigende gibt, reduziert
        // sich das aber
        // Gibt es keine Vatergruppe, wird daher alles nach "Sonstige"
        // verdichtet
        // ------------------------------------------------------------------
        // -----
        final int iAnzuzeigendeArtikelgruppen = Math.min(iParamAnzahlGruppen, listArtikelgruppen.size());

        final int iAnzuzeigendeMaschinengruppen = Math.min(iParamAnzahlGruppen, listMaschinengruppen.size());

        final int iAnzahlZeilen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen + 1;

        // ------------------------------------------------------------------
        // -----
        // Dto initialisieren
        // ------------------------------------------------------------------
        // -----
        kapDto = new KapazitaetsvorschauDto(iAnzahlZeilen, iParamZeitraum);
        // ------------------------------------------------------------------
        // -----
        // Beschriftung der x-Achse ermitteln. das sind die Kalenderwochen
        // ------------------------------------------------------------------
        // -----
        HashMap<Integer, Integer> hmKWIndizes = new HashMap<Integer, Integer>();

        String[] kw = new String[iParamZeitraum];
        GregorianCalendar gc = new GregorianCalendar();
        for (int i = 0; i < kw.length; i++) {
            int iKw = gc.get(GregorianCalendar.WEEK_OF_YEAR);
            kw[i] = "" + iKw;
            kapDto.setISpaltenueberschrift(i, kw[i]);
            hmKWIndizes.put(gc.get(GregorianCalendar.WEEK_OF_YEAR), i);
            gc.setTimeInMillis(gc.getTimeInMillis() + 7 * 24 * 60 * 60 * 1000); // 1 Woche dazu
        }
        // ------------------------------------------------------------------
        // -----
        // Beschriftung der y-Achse ermitteln. das sind die Namen der
        // Vatergruppen bzw. 2 x "Sonstige".
        // Weiters werden die Indizes im Daten-Array fuer die jeweiligen
        // Gruppen festgelegt.
        // ------------------------------------------------------------------
        // -----
        String sSonstige = getTextRespectUISpr("lp.sonstige", theClientDto.getMandant(),
                theClientDto.getLocUi());

        HashMap<Integer, Integer> hmArtikelGruppenIndizes = new HashMap<Integer, Integer>();
        HashMap<Integer, Integer> hmMaschinenGruppenIndizes = new HashMap<Integer, Integer>();

        // zuerst die Artikelvatergruppen
        for (int i = 0; i < iAnzuzeigendeArtikelgruppen; i++) {
            FLRArtikelgruppe item = (FLRArtikelgruppe) listArtikelgruppen.get(i);
            kapDto.setIZeilenueberschrift(i, item.getC_nr());
            hmArtikelGruppenIndizes.put(item.getI_id(), i);
        }
        // Dann Sonstige Artikelgruppen
        final int indexSonstigeArtikelGruppen = iAnzuzeigendeArtikelgruppen;
        kapDto.setIZeilenueberschrift(indexSonstigeArtikelGruppen, sSonstige);
        // Maschinengruppen
        for (int i = 0; i < iAnzuzeigendeMaschinengruppen; i++) {
            FLRMaschinengruppe item = (FLRMaschinengruppe) listMaschinengruppen.get(i);
            int index = iAnzuzeigendeArtikelgruppen + 1 + i;
            kapDto.setIZeilenueberschrift(index, item.getC_bez());
            hmMaschinenGruppenIndizes.put(item.getI_id(), index);
        }
        // zuletzt Sonstige Maschinengruppen
        final int indexSonstigeMaschinenGruppen = iAnzuzeigendeArtikelgruppen + 1
                + iAnzuzeigendeMaschinengruppen;
        kapDto.setIZeilenueberschrift(indexSonstigeMaschinenGruppen, sSonstige);

        // ------------------------------------------------------------------
        // -----
        // Lose holen
        // ------------------------------------------------------------------
        // -----
        Criteria cLose = session.createCriteria(FLRLos.class);
        // Filter nach Mandant
        cLose.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
        // Alle Stati ausser Erledigt, Gestoppt, Storniert
        Collection<String> cLoseStati = new LinkedList<String>();
        cLoseStati.add(FertigungFac.STATUS_ERLEDIGT);
        cLoseStati.add(FertigungFac.STATUS_GESTOPPT);
        cLoseStati.add(FertigungFac.STATUS_STORNIERT);
        cLose.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, cLoseStati)));
        List<?> listLose = cLose.list();
        // ------------------------------------------------------------------
        // -----
        // Auswertungszeitraum und verfuegbare Kapazitaeten ermitteln
        // ------------------------------------------------------------------
        // -----

        // 3 Monate in die zukunft
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(System.currentTimeMillis());
        c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 3);
        java.util.Date dMax = Helper.cutDate(new java.sql.Date(c.getTimeInMillis()));

        java.sql.Timestamp tVon = Helper.cutTimestamp(new java.sql.Timestamp(System.currentTimeMillis()));
        java.sql.Timestamp tBis = Helper.cutTimestamp(new java.sql.Timestamp(dMax.getTime()));
        // Verfuegbare Zeiten holen
        SollverfuegbarkeitDto[] oVerfuegbar = getZeiterfassungFac().getVerfuegbareSollzeit(tVon, tBis,
                theClientDto);
        // diese nun aufteilen
        for (int i = 0; i < oVerfuegbar.length; i++) {
            SollverfuegbarkeitDto svDto = oVerfuegbar[i];
            // "normale" AZ
            if (svDto.isBMannarbeitszeit()) {
                // die sind einer Artikelgruppe zugeordnet
                if (svDto.getIGruppeid() != null) {
                    Integer iZeile = hmArtikelGruppenIndizes.get(svDto.getIGruppeid());
                    // ist das eine sichtbare Gruppe
                    if (iZeile != null) {
                        for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) {
                            // mal 5 Tage
                            kapDto.addBdVerfuegbareStunden(iZeile, iSpalte,
                                    svDto.getNSollstunden().multiply(new BigDecimal(5)));
                        }
                    }
                    // wenn nicht, dann zu den sonstigen
                    else {
                        for (int iSpalte = 0; iSpalte < kapDto
                                .getDetails()[indexSonstigeArtikelGruppen].length; iSpalte++) {
                            // mal 5 Tage
                            kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iSpalte,
                                    svDto.getNSollstunden().multiply(new BigDecimal(5)));
                        }
                    }
                }
                // Rest = Sonstige Artikelgruppen
                else {
                    if (svDto.getTDatum() != null) {
                        // Die KW dieses Datums ermitteln, damit das
                        // zugeordnet werden kann
                        GregorianCalendar gcSV = new GregorianCalendar();
                        gcSV.setTime(svDto.getTDatum());
                        int kwSV = gcSV.get(Calendar.WEEK_OF_YEAR);
                        Integer iIndexDerKW = hmKWIndizes.get(kwSV);
                        if (iIndexDerKW != null) {
                            // Hier nicht mit 5 multiplizieren, da es fuer
                            // jeden Tag einen eigenen Eintrag gibt
                            kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iIndexDerKW,
                                    svDto.getNSollstunden());
                        } else {
                            // diese KW wird nicht mehr angezeigt - brauch
                            // ich nicht einrechnen
                        }
                    }
                }
            }
            // Maschinenzeit - die Verfuegbarkeit ist jeden Tag gleich
            else {
                Integer iZeile = hmMaschinenGruppenIndizes.get(svDto.getIGruppeid());
                // ist das eine sichtbare Gruppe
                if (iZeile != null) {
                    for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) {
                        // mal 5 Tage
                        kapDto.addBdVerfuegbareStunden(iZeile, iSpalte,
                                svDto.getNSollstunden().multiply(new BigDecimal(5)));
                    }
                }
                // wenn nicht, dann zu den sonstigen
                else {
                    for (int iSpalte = 0; iSpalte < kapDto
                            .getDetails()[indexSonstigeMaschinenGruppen].length; iSpalte++) {
                        // mal 5 Tage
                        kapDto.addBdVerfuegbareStunden(indexSonstigeMaschinenGruppen, iSpalte,
                                svDto.getNSollstunden().multiply(new BigDecimal(5)));
                    }
                }
            }
        }
        // ------------------------------------------------------------------
        // -----
        // Offene Zeiten ermitteln
        // ------------------------------------------------------------------
        // -----
        for (Iterator<?> iter = listLose.iterator(); iter.hasNext();) {
            FLRLos los = (FLRLos) iter.next();
            // Offene Menge ermitteln
            BigDecimal bdOffen = los.getN_losgroesse();
            for (Iterator<?> iterAblieferung = los.getAblieferungset().iterator(); iterAblieferung.hasNext();) {
                FLRLosablieferung item = (FLRLosablieferung) iterAblieferung.next();
                bdOffen = bdOffen.subtract(item.getN_menge());
            }
            // nur Lose mit tatsaechlich offener Menge>0
            if (bdOffen.compareTo(new BigDecimal(0)) > 0) {
                // Faktor zur Berechnung der offenen Zeiten = offene Menge /
                // Losgroesse. 2 Nachkommastellen sollten reichen.
                BigDecimal bdFaktor = bdOffen.divide(los.getN_losgroesse(), 2, BigDecimal.ROUND_HALF_EVEN);
                // Arbeitsplan holen
                Criteria cLosAZ = session.createCriteria(FLRLossollarbeitsplan.class);
                cLosAZ.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, los.getI_id()));
                List<?> listLosAZ = cLosAZ.list();
                // fuer alle Taetigkeiten
                for (Iterator<?> iterAZ = listLosAZ.iterator(); iterAZ.hasNext();) {
                    FLRLossollarbeitsplan losAZ = (FLRLossollarbeitsplan) iterAZ.next();
                    BigDecimal bdOffeneStunden = losAZ.getN_gesamtzeit().multiply(bdFaktor);
                    // ------------------------------------------------------
                    // -----------------
                    // Index der Gruppe bestimmen, der ich das zuordnen muss
                    // ------------------------------------------------------
                    // -----------------
                    int iZeilenIndex;
                    // 1. nach Maschinengruppe
                    // 2. nach Artikelgruppe der Taetigkeit
                    FLRMaschine flrMaschine = losAZ.getFlrmaschine();
                    Integer iMaschinengruppeIId = null;
                    Integer iArtikelgruppeIId = null;
                    if (flrMaschine != null) {
                        FLRMaschinengruppe flrMaschinengruppe = flrMaschine.getFlrmaschinengruppe();
                        if (flrMaschinengruppe != null) {
                            // Wenn diese Maschinengruppe dargestellt wird,
                            // dann kommt hier der index raus.
                            Integer i = hmMaschinenGruppenIndizes.get(flrMaschinengruppe.getI_id());
                            iMaschinengruppeIId = flrMaschinengruppe.getI_id();
                            if (i != null) {
                                iZeilenIndex = i;
                            }
                            // wenn nicht -> sonstige.
                            else {
                                iZeilenIndex = indexSonstigeMaschinenGruppen;
                            }
                        }
                        // Maschinen ohne Maschinengruppe werden nach
                        // "Sonstige" verdichtet.
                        else {
                            iZeilenIndex = indexSonstigeMaschinenGruppen;
                        }
                    } else {
                        FLRArtikel flrArtikel = losAZ.getFlrartikel();
                        FLRArtikelgruppe flrArtikelgruppe = flrArtikel.getFlrartikelgruppe();
                        if (flrArtikelgruppe != null) {
                            // Wenn diese Artikelgruppe dargestellt wird,
                            // dann kommt hier der index raus.
                            Integer i = hmArtikelGruppenIndizes.get(flrArtikelgruppe.getI_id());
                            iArtikelgruppeIId = flrArtikelgruppe.getI_id();
                            if (i != null) {
                                iZeilenIndex = i;
                            }
                            // wenn nicht -> sonstige.
                            else {
                                iZeilenIndex = indexSonstigeArtikelGruppen;
                            }
                        }
                        // Taetigkeiten ohne Artikelgruppe werden nach
                        // "Sonstige" verdichtet.
                        else {
                            iZeilenIndex = indexSonstigeArtikelGruppen;
                        }
                    }
                    // ------------------------------------------------------
                    // -----------------
                    // Jetzt hab ich die Gruppe, der ich das zuordnen muss
                    // nun muss die Zeit aufgeteilt werden
                    // ------------------------------------------------------
                    // -----------------
                    java.util.Date tLosStarttermin = los.getT_produktionsbeginn();
                    java.util.Date tLosEndetermin = los.getT_produktionsende();
                    // beide Termine duerfen nicht vor heute liegen
                    if (tLosStarttermin.before(getDate())) {
                        tLosStarttermin = getDate();
                    }
                    if (tLosEndetermin.before(getDate())) {
                        tLosEndetermin = getDate();
                    }
                    // Anzahl der betroffenen Kalenderwochen bestimmen
                    GregorianCalendar gcStart = new GregorianCalendar();
                    gcStart.setTime(tLosStarttermin);
                    GregorianCalendar gcEnde = new GregorianCalendar();
                    gcEnde.setTime(tLosEndetermin);
                    int iStartKW = gcStart.get(Calendar.WEEK_OF_YEAR);
                    int iEndeKW = gcEnde.get(Calendar.WEEK_OF_YEAR);
                    int iAnzahlKW = 1 + iEndeKW - iStartKW;
                    // nun auf die Wochen aufteilen
                    BigDecimal bdOffeneStundenJeWoche = bdOffeneStunden;

                    if (iAnzahlKW > 0) {
                        bdOffeneStundenJeWoche = bdOffeneStunden.divide(new BigDecimal(iAnzahlKW), 2,
                                RoundingMode.HALF_UP);
                    }

                    for (int iAktuelleKW = iStartKW; iAktuelleKW <= iEndeKW; iAktuelleKW++) {
                        Integer indexDerKW = hmKWIndizes.get(iAktuelleKW);
                        // wird diese Woche auch angezeigt?
                        if (indexDerKW != null) {
                            KapazitaetsvorschauDetailDto detailDto = new KapazitaetsvorschauDetailDto();
                            detailDto.setArtikelgruppeIId(iArtikelgruppeIId);
                            detailDto.setArtikelIIdTaetigkeit(losAZ.getFlrartikel().getI_id());
                            detailDto.setBdDauer(bdOffeneStundenJeWoche);
                            detailDto.setLosIId(los.getI_id());
                            detailDto.setLossollarbeitsplanIId(losAZ.getI_id());
                            detailDto.setMaschinengruppeIId(iMaschinengruppeIId);
                            kapDto.addDetail(iZeilenIndex, indexDerKW, detailDto);
                        }
                    }
                }
            }
        }

        // ------------------------------------------------------------------
        // -----
        // Diagramm aus den Daten erstellen
        // ------------------------------------------------------------------
        // -----
        SymbolAxis xAchse = new SymbolAxis("KW", kw);
        CombinedDomainXYPlot plot = new CombinedDomainXYPlot(xAchse);
        for (int iZeile = 0; iZeile < kapDto.getDetails().length; iZeile++) {
            XYSeries datenZeile = new XYSeries(kapDto.getIZeilenueberschrift(iZeile));
            // Balkenfarben festlegen ( >100% = rot, sonst hellgrau)
            // fuer jede zeile und jede spalte
            Paint[][] paints = new Paint[1][kapDto.getDetails()[iZeile].length];
            for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) {
                BigDecimal bdVerfuegbar = kapDto.getBdVerfuegbareStunden()[iZeile][iSpalte];
                BigDecimal bdBenoetigt = new BigDecimal(0);
                // Benoetigte Zeit jet Gruppe je Woche ermitteln
                for (Iterator<?> iter = kapDto.getDetails()[iZeile][iSpalte].iterator(); iter.hasNext();) {
                    KapazitaetsvorschauDetailDto item = (KapazitaetsvorschauDetailDto) iter.next();
                    bdBenoetigt = bdBenoetigt.add(item.getBdDauer());
                }
                BigDecimal value = new BigDecimal(0);
                if (bdVerfuegbar.compareTo(new BigDecimal(0)) > 0) {
                    value = (bdBenoetigt.multiply(new BigDecimal(100))).divide(bdVerfuegbar, 4,
                            BigDecimal.ROUND_HALF_EVEN);
                    if (value.doubleValue() > 100.0) {
                        paints[0][iSpalte] = Color.red;
                    } else {
                        paints[0][iSpalte] = Color.lightGray;
                    }
                }
                // tage ohne Verfuegbarkeit mach ich 100% und weisz
                else {
                    value = new BigDecimal(100.0);
                    // Wochen ohne Kapazitaet aber mit geplanter Zeit
                    if (bdBenoetigt.compareTo(new BigDecimal(0)) > 0) {
                        paints[0][iSpalte] = Color.MAGENTA;
                    }
                    // Wenn nichts verfuegbar aber auch nichts benoetigt ->
                    // weiss
                    else {
                        paints[0][iSpalte] = Color.white;
                    }
                }
                XYDataItem data = new XYDataItem(iSpalte, value.doubleValue());
                datenZeile.add(data);
            }
            // Zur Collection
            XYSeriesCollection xyDataset = new XYSeriesCollection();
            xyDataset.addSeries(datenZeile);

            // subplot erstellen
            XYItemRenderer renderer1 = new CustomXYBarRenderer(paints);

            // renderer1.setItemLabelsVisible(true);
            // Legende nicht anzeigen
            renderer1.setBaseSeriesVisibleInLegend(false);
            NumberAxis zeilenAchse = new NumberAxis(kapDto.getIZeilenueberschrift(iZeile));
            // Beschriftung der Y-Achse um 90 grad drehen
            zeilenAchse.setLabelAngle(Math.PI / 2.0);
            zeilenAchse.setAutoRange(true);
            XYPlot subplot1 = new XYPlot(xyDataset, null, zeilenAchse, renderer1);
            subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
            // Markierung bei 100%
            final Marker target = new ValueMarker(100.0);
            target.setPaint(Color.darkGray);
            // target.setLabel("100 %"); // Label
            // target.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
            // target.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
            subplot1.addRangeMarker(target);

            plot.add(subplot1); // plot.add(subplot1, 1);
        }
        JFreeChart lStackedBarChart = new JFreeChart(plot);

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

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

License:Open Source License

public boolean istErstlos(LosDto losDto, TheClientDto theClientDto) {

    if (losDto.getStuecklisteIId() != null) {

        SessionFactory factory = FLRSessionFactory.getFactory();
        org.hibernate.Session 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(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, losDto.getStuecklisteIId()));
        c.add(Restrictions.lt(FertigungFac.FLR_LOS_C_NR, losDto.getCNr()));
        c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
                new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT })));

        // Sortierung nach Losnummer
        c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR));
        c.setMaxResults(1);// ww w .  j  a  v a2s .  c  om
        List<?> list = c.list();

        if (list.size() > 0) {
            return false;
        } else {
            return true;
        }
    } else {
        return false;
    }
}