Example usage for org.hibernate Criteria createCriteria

List of usage examples for org.hibernate Criteria createCriteria

Introduction

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

Prototype

public Criteria createCriteria(String associationPath) throws HibernateException;

Source Link

Document

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

Usage

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

            dto.setWaehrungCNr(erDto.getWaehrungCNr());

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

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

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

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

                if (bdBezahltERKurs != null) {

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

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

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

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

                dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    dto.setWaehrungCNr(erDto.getWaehrungCNr());

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

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

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

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

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

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

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

                BigDecimal gesamtUst = new BigDecimal(0);

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

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

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

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

                data[i][FELD_ALLE_WERTUST] = gesamtUst;

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

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

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

        StringBuffer sSortierung = new StringBuffer();
        // Sortierung nach Kostenstelle
        mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        // Sortieung nach Lieferant
        mapParameter.put(LPReport.P_SORTIERENACHLIEFERANT,
                new Boolean(krit.iSortierung == krit.KRIT_SORT_NACH_PARTNER));
        if (krit.iSortierung == krit.KRIT_SORT_NACH_PARTNER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.lieferant", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == krit.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(getTextRespectUISpr("er.eingangsrechnungsnummer", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        }
        StringBuffer sFilter = new StringBuffer();
        if (sVon != null) {
            sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sVon + " ");
        }
        if (sBis != null) {
            sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sBis + " ");
        }
        if (krit.kostenstelleIId != null) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId);
            sFilter.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" ");
            sFilter.append(kstDto.getCNr());
        }
        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());
        initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL,
                EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_ALLE, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

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

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

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

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

        StringBuffer sSortierung = new StringBuffer();
        // Sortierung nach Kostenstelle
        sSortierung.append(
                getTextRespectUISpr("lp.sortierungnach", theClientDto.getMandant(), theClientDto.getLocUi())
                        + ": ");
        mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        // Sortieung nach Kunde
        mapParameter.put(LPReport.P_SORTIERENACHKUNDE,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.losnr", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        StringBuffer sFilter = new StringBuffer();
        sFilter.append(
                getTextRespectUISpr("lp.filter", theClientDto.getMandant(), theClientDto.getLocUi()) + ": ");
        if (bNurAngelegte) {
            sFilter.append(getTextRespectUISpr("lp.nichtausgegebene", theClientDto.getMandant(),
                    theClientDto.getLocUi()) + ", ");
        }
        if (sVon != null) {
            sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sVon + " ");
        }
        if (sBis != null) {
            sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sBis + " ");
        }
        if (krit.kostenstelleIId != null) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId);
            sFilter.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" ");
            sFilter.append(kstDto.getCNr());
        }
        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put("P_VON", krit.dVon);
        mapParameter.put("P_BIS", krit.dBis);
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());
        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_ALLE,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException t) {
        throwEJBExceptionLPRespectOld(t);
        return null;
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

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

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

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

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

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

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

        if (dStichtag != null) {

            dStichtag = Helper.cutDate(dStichtag);

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

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

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

            String datumsart = "";

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

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

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

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

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

            }

            mapParameter.put("P_DATUMSART", datumsart);

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

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

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

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

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

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

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

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

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

        // 2tes sortierkriterium immer Losnr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            // PJ 15009

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

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

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

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

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printAblieferungsstatistik(java.sql.Date dVon, java.sql.Date dBis, Integer artikelIId,
        boolean bSortiertNachArtikel, boolean bVerdichtetNachArtikel, TheClientDto theClientDto)
        throws EJBExceptionLP {
    Session session = null;/* w w w . j  a v  a 2 s. c om*/
    try {

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

        this.useCase = UC_ABLIEFERUNGSSTATISTIK;
        this.index = -1;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLosablieferung.class);
        if (dVon != null) {
            dVon = Helper.cutDate(dVon);

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

            mapParameter.put("P_VON", new Timestamp(dVon.getTime()));

        }
        if (dBis != null) {

            c.add(Restrictions.lt(FertigungFac.FLR_LOSABLIEFERUNG_T_AENDERN,
                    Helper.cutTimestamp(new Timestamp(dBis.getTime() + 24 * 3600000))));

            mapParameter.put("P_BIS", new Timestamp(dBis.getTime()));

        }
        Criteria cLos = c.createCriteria(FertigungFac.FLR_LOSABLIEFERUNG_FLRLOS);
        // Filter nach Mandant
        cLos.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));

        Criteria cStueckliste = cLos.createCriteria(FertigungFac.FLR_LOS_FLRSTUECKLISTE);
        Criteria cArtikel = cStueckliste.createCriteria(StuecklisteFac.FLR_STUECKLISTE_FLRARTIKEL);
        if (artikelIId != null) {
            cArtikel.add(Restrictions.eq("i_id", artikelIId));
        }

        mapParameter.put("P_VERDICHTET", new Boolean(bVerdichtetNachArtikel));

        if (bSortiertNachArtikel) {
            cArtikel.addOrder(Order.asc("c_nr"));
            mapParameter.put(LPReport.P_SORTIERUNG, getTextRespectUISpr("artikel.artikelnummerlang",
                    theClientDto.getMandant(), theClientDto.getLocUi()));
        } else {

            mapParameter.put(LPReport.P_SORTIERUNG, getTextRespectUISpr("fert.ablieferdatum",
                    theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        c.addOrder(Order.desc(FertigungFac.FLR_LOSABLIEFERUNG_T_AENDERN));

        List<?> list = c.list();
        data = new Object[list.size()][10];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLosablieferung losab = (FLRLosablieferung) iter.next();
            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                    losab.getFlrlos().getFlrstueckliste().getFlrartikel().getI_id(), theClientDto);
            data[i][ABLIEF_LOSNUMMER] = losab.getFlrlos().getC_nr();
            data[i][ABLIEF_IDENT] = artikelDto.getCNr();
            data[i][ABLIEF_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
            if (artikelDto.getArtikelsprDto().getCZbez() != null) {
                data[i][ABLIEF_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
            } else {
                data[i][ABLIEF_ZUSATZBEZEICHNUNG] = "";
            }
            data[i][ABLIEF_DATUM] = losab.getT_aendern();
            data[i][ABLIEF_MENGE] = losab.getN_menge();
            data[i][ABLIEF_ABLIEFERPREIS] = losab.getN_gestehungspreis();
            data[i][ABLIEF_MATERIALWERT] = losab.getN_materialwert();
            data[i][ABLIEF_ARBEITSZEITWERT] = losab.getN_arbeitszeitwert();
            data[i][ABLIEF_WERT] = losab.getN_gestehungspreis().multiply(losab.getN_menge());
        }

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

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printAufloesbareFehlmengen(Integer iSortierung, Boolean bNurArtikelMitLagerstand,
        Boolean bOhneEigengefertigteArtikel, TheClientDto theClientDto) {
    Session session = null;/*from w  ww . j av  a  2 s.  co m*/
    try {

        this.useCase = UC_AUFLOESBARE_FEHLMENGEN;
        this.index = -1;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRFehlmenge.class);
        c.createCriteria(ArtikelFac.FLR_FEHLMENGE_FLRLOSSOLLMATERIAL)
                .createCriteria(FertigungFac.FLR_LOSSOLLMATERIAL_FLRLOS)
                .add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
        // c.add(Restrictions.eq("artikel_i_id",9223));
        List<?> list = c.list();
        int i = 0;
        LinkedList<ReportAufloesbareFehlmengenDto> cData = new LinkedList<ReportAufloesbareFehlmengenDto>();

        HashMap<Integer, String> hmVorhandeneBestelltEintraege = new HashMap<Integer, String>();

        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRFehlmenge fm = (FLRFehlmenge) iter.next();

            boolean bDatensatzVerwenden = true;
            // gleich den Lagerstand holen
            BigDecimal bdLagerstand = getLagerFac().getLagerstandAllerLagerEinesMandanten(fm.getArtikel_i_id(),
                    theClientDto);

            if (bNurArtikelMitLagerstand.booleanValue()) {
                // vorher Lagerstand pruefen
                if (bdLagerstand.compareTo(new BigDecimal(0)) <= 0) {
                    bDatensatzVerwenden = false;
                }
            }

            if (bDatensatzVerwenden) {

                if (bOhneEigengefertigteArtikel == true) {
                    StuecklisteDto stklDto = getStuecklisteFac()
                            .stuecklisteFindByMandantCNrArtikelIIdOhneExc(fm.getArtikel_i_id(), theClientDto);

                    if (stklDto != null) {
                        if (!Helper.short2boolean(stklDto.getBFremdfertigung())) {
                            continue;
                        }
                    }
                }
                ReportAufloesbareFehlmengenDto rep = new ReportAufloesbareFehlmengenDto();
                rep.setBdFehlmenge(fm.getN_menge());
                rep.setBdLagerstand(bdLagerstand);
                rep.setBdBestellt(getArtikelbestelltFac().getAnzahlBestellt(fm.getArtikel_i_id()));
                rep.setBLos(true);
                rep.setBdReserviert(
                        getReservierungFac().getAnzahlReservierungen(fm.getArtikel_i_id(), theClientDto));
                rep.setDTermin(fm.getT_liefertermin());
                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(fm.getArtikel_i_id(),
                        theClientDto);
                rep.setSArtikelBezeichnung(artikelDto.getArtikelsprDto().getCBez());
                rep.setSArtikelZusatzBezeichnung(artikelDto.getArtikelsprDto().getCZbez());
                rep.setSArtikelNummer(artikelDto.getCNr());
                rep.setIArtikelIId(artikelDto.getIId());
                rep.setSEinheit(artikelDto.getEinheitCNr());
                rep.setSBelegnummer("ALO" + fm.getFlrlossollmaterial().getFlrlos().getC_nr());
                rep.setSProjekt(fm.getFlrlossollmaterial().getFlrlos().getC_projekt());
                if (fm.getFlrlossollmaterial().getFlrlos().getFlrstueckliste() != null) {
                    ArtikelDto artikelDtoStueckliste = getArtikelFac().artikelFindByPrimaryKeySmall(fm
                            .getFlrlossollmaterial().getFlrlos().getFlrstueckliste().getFlrartikel().getI_id(),
                            theClientDto);
                    rep.setSStuecklisteBezeichnung(artikelDtoStueckliste.getArtikelsprDto().getCBez());
                    rep.setSStuecklisteZusatzBezeichnung(artikelDtoStueckliste.getArtikelsprDto().getCZbez());
                    rep.setSStuecklisteNummer(artikelDtoStueckliste.getCNr());
                }
                cData.add(rep);

                if (!hmVorhandeneBestelltEintraege.containsKey(fm.getArtikel_i_id())) {

                    // HQL
                    Session session2 = factory.openSession();

                    String query = "SELECT a.n_menge, a.c_belegartnr, a.i_belegartpositionid FROM FLRArtikelbestellt a WHERE a.flrartikel.i_id="
                            + fm.getArtikel_i_id();

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

                    List<?> results = qResult.list();
                    Iterator<?> it2 = results.iterator();
                    while (it2.hasNext()) {
                        Object[] o = (Object[]) it2.next();

                        rep = new ReportAufloesbareFehlmengenDto();
                        rep.setSArtikelBezeichnung(artikelDto.getArtikelsprDto().getCBez());
                        rep.setSArtikelZusatzBezeichnung(artikelDto.getArtikelsprDto().getCZbez());
                        rep.setSArtikelNummer(artikelDto.getCNr());
                        rep.setIArtikelIId(artikelDto.getIId());
                        rep.setSEinheit(artikelDto.getEinheitCNr());
                        rep.setBLos(false);

                        BestellpositionDto dto = getBestellpositionFac()
                                .bestellpositionFindByPrimaryKeyOhneExc((Integer) o[2]);
                        if (dto != null) {
                            BestellungDto bestellungDto = getBestellungFac()
                                    .bestellungFindByPrimaryKey(dto.getBelegIId());
                            if (dto.getTAuftragsbestaetigungstermin() != null) {
                                rep.setDTermin(dto.getTAuftragsbestaetigungstermin());
                            } else if (dto.getTUebersteuerterLiefertermin() != null) {
                                rep.setDTermin(dto.getTUebersteuerterLiefertermin());
                            } else if (bestellungDto.getDLiefertermin() != null) {
                                rep.setDTermin(bestellungDto.getDLiefertermin());
                            }
                            rep.setSBelegnummer("BBS" + bestellungDto.getCNr());
                            rep.setBdOffen((BigDecimal) o[0]);
                            rep.setSABNummer(dto.getCABNummer());

                            BSMahnungDto[] dtos = getBSMahnwesenFac().bsmahnungFindByBestellungIId(dto.getIId(),
                                    theClientDto);
                            if (dtos.length > 0) {
                                rep.setIMahnstufe(dtos[0].getMahnstufeIId());
                            }

                        } else {
                            rep.setSBelegnummer("BS not found");
                        }

                        cData.add(rep);

                    }
                    hmVorhandeneBestelltEintraege.put(fm.getArtikel_i_id(), "");
                    closeSession(session2);
                }
            }
        }
        Collections.sort(cData, new ComparatorAufloesbareFehlmengen(iSortierung.intValue()));
        data = new Object[cData.size()][AFM_SPALTENANZAHL];
        i = 0;
        for (Iterator<ReportAufloesbareFehlmengenDto> iter = cData.iterator(); iter.hasNext(); i++) {
            ReportAufloesbareFehlmengenDto rep = (ReportAufloesbareFehlmengenDto) iter.next();
            data[i][AFM_ARTIKELBEZEICHNUNG] = rep.getSArtikelBezeichnung();
            data[i][AFM_ARTIKELZUSATZBEZEICHNUNG] = rep.getSArtikelZusatzBezeichnung();
            data[i][AFM_ARTIKELNUMMER] = rep.getSArtikelNummer();
            data[i][AFM_EINHEIT] = rep.getSEinheit();
            data[i][AFM_FEHLMENGE] = rep.getBdFehlmenge();
            data[i][AFM_LAGERSTAND] = rep.getBdLagerstand();
            data[i][AFM_BELEGNUMMER] = rep.getSBelegnummer().substring(1);
            data[i][AFM_BESTELLT] = rep.getBdBestellt();
            data[i][AFM_RESERVIERT] = rep.getBdReserviert();
            data[i][AFM_PROJEKT] = rep.getSProjekt();
            data[i][AFM_OFFEN] = rep.getBdOffen();
            data[i][AFM_MAHNSTUFE] = rep.getIMahnstufe();
            data[i][AFM_ABNUMMER] = rep.getSABNummer();
            data[i][AFM_STUECKLISTEBEZEICHNUNG] = rep.getSStuecklisteBezeichnung();
            data[i][AFM_STUECKLISTEZUSATZBEZEICHNUNG] = rep.getSStuecklisteZusatzBezeichnung();
            data[i][AFM_STUECKLISTENUMMER] = rep.getSStuecklisteNummer();
            data[i][AFM_TERMIN] = rep.getDTermin();
            BigDecimal bdFiktiverLagerstand = null;
            if (rep.getBdLagerstand() == null) {
                bdFiktiverLagerstand = new BigDecimal(0);
            } else {
                bdFiktiverLagerstand = rep.getBdLagerstand();
            }
            for (int y = 0; y < cData.size(); y++) {
                ReportAufloesbareFehlmengenDto rafHelper = cData.get(y);
                if (rafHelper.isBLos() && rep.isBLos()) {
                    if (rafHelper.getIArtikelIId().equals(rep.getIArtikelIId())
                            && (rafHelper.getDTermin().before(rep.getDTermin())
                                    || rafHelper.getDTermin().equals(rep.getDTermin()))) {
                        if (rafHelper.getDTermin().equals(rep.getDTermin())) {
                            if (i >= y) {
                                bdFiktiverLagerstand = bdFiktiverLagerstand
                                        .subtract(rafHelper.getBdFehlmenge() == null ? new BigDecimal(0)
                                                : rafHelper.getBdFehlmenge());
                            }
                        } else {
                            bdFiktiverLagerstand = bdFiktiverLagerstand
                                    .subtract(rafHelper.getBdFehlmenge() == null ? new BigDecimal(0)
                                            : rafHelper.getBdFehlmenge());
                        }
                    }
                }
            }
            data[i][AFM_FIKTIVERLAGERSTAND] = bdFiktiverLagerstand;
        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        String sSortierung = null;
        boolean bSortiertNachArtikelnummer = false;
        if (iSortierung.intValue() == Helper.SORTIERUNG_NACH_IDENT) {
            sSortierung = "Sortiert nach Artikelnummer";
            bSortiertNachArtikelnummer = true;

        } else if (iSortierung.intValue() == Helper.SORTIERUNG_NACH_LOSNUMMER) {
            sSortierung = "Sortiert nach Losnummer";
        }
        mapParameter.put("P_SORTIERTNACHARTIKELNUMMER", bSortiertNachArtikelnummer);
        mapParameter.put(P_SORTIERUNG, sSortierung);
        String sFilter = null;
        if (bNurArtikelMitLagerstand.booleanValue()) {
            sFilter = "Nur Artikel mit Lagerstand";
        }
        mapParameter.put(P_FILTER, sFilter);

        mapParameter.put("P_OHNEEIGENGEFERTIGTEARTIKEL", bOhneEigengefertigteArtikel);

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

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printStueckrueckmeldung(Integer losIId, int iSortierung, TheClientDto theClientDto)
        throws EJBExceptionLP {
    Session session = null;//from   w w  w .  ja va  2  s.  co m
    try {
        this.useCase = UC_STUECKRUECKMELDUNG;
        this.index = -1;
        // Los holen
        LosDto losDto = getFertigungFac().losFindByPrimaryKey(losIId);
        if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ANGELEGT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_NOCH_NICHT_AUSGEGEBEN, "");
        } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_STORNIERT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_STORNIERT, "");
        }
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLossollarbeitsplan.class);
        // Nur Buchungen auf dieses Los
        c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, losIId));

        // Sortierung
        if (iSortierung == Helper.SORTIERUNG_NACH_IDENT) {
            c.createCriteria(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL)
                    .addOrder(Order.asc(ArtikelFac.FLR_ARTIKEL_C_NR));
        } else if (iSortierung == Helper.SORTIERUNG_NACH_ARBEITSGANG) {
            c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_ARBEITSGANGNUMMER));
        }
        List<?> list = c.list();

        ArrayList alDaten = new ArrayList();
        Iterator<?> iter = list.iterator();
        while (iter.hasNext()) {
            FLRLossollarbeitsplan item = (FLRLossollarbeitsplan) iter.next();

            LosgutschlechtDto[] losgutschlechDtos = getFertigungFac()
                    .losgutschlechtFindByLossollarbeitsplanIId(item.getI_id());

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

                Object[] oZeile = new Object[SRM_SPALTENANZAHL];
                ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(item.getFlrartikel().getI_id(),
                        theClientDto);
                oZeile[SRM_IDENT] = artikelDto.getCNr();
                oZeile[SRM_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
                oZeile[SRM_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();

                oZeile[SRM_ARBEITSGANG] = item.getI_arbeitsgangsnummer();
                ZeitdatenDto zd = getZeiterfassungFac()
                        .zeitdatenFindByPrimaryKey(losgutschlechDtos[i].getZeitdatenIId(), theClientDto);
                oZeile[SRM_GEBUCHT] = zd.getTZeit();

                oZeile[SRM_GUT] = losgutschlechDtos[i].getNGut();
                oZeile[SRM_SCHLECHT] = losgutschlechDtos[i].getNSchlecht();
                oZeile[SRM_INARBEIT] = losgutschlechDtos[i].getNInarbeit();
                oZeile[SRM_OFFEN] = losDto.getNLosgroesse().subtract(losgutschlechDtos[i].getNGut())
                        .subtract(losgutschlechDtos[i].getNSchlecht())
                        .subtract(losgutschlechDtos[i].getNInarbeit());
                if (item.getFlrmaschine() != null) {
                    oZeile[SRM_MASCHINE] = item.getFlrmaschine().getC_identifikationsnr();
                }

                PersonalDto personalDto = getPersonalFac().personalFindByPrimaryKey(zd.getPersonalIId(),
                        theClientDto);

                oZeile[SRM_PERSONAL] = personalDto.formatAnrede();
                alDaten.add(oZeile);
            }

        }

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

        // Parameter
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        mapParameter.put("P_ANGELEGT", new java.util.Date(losDto.getTAnlegen().getTime()));
        String sAuftragsnummer;
        String sInternerKommentar = null;
        String sKunde;
        Timestamp dLiefertermin;
        if (losDto.getAuftragpositionIId() != null) {
            // Auftrag holen
            AuftragpositionDto aufposDto = getAuftragpositionFac()
                    .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId());
            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(aufposDto.getBelegIId());
            sAuftragsnummer = auftragDto.getCNr();
            // Internen Kommentar aus dem Auftrag, anhaengig von einem
            // Mandantenparameter
            ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_FERTIGUNG,
                    ParameterFac.PARAMETER_KOMMENTAR_AM_FERTIGUNGSBEGLEITSCHEIN);
            short iValue = Short.parseShort(parameter.getCWert());
            boolean bDruckeKommentar = Helper.short2boolean(iValue);
            if (bDruckeKommentar) {
                sInternerKommentar = auftragDto.getXInternerkommentar();
            }
            // Kunde holen
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(),
                    theClientDto);
            sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1();
            if (aufposDto.getTUebersteuerbarerLiefertermin() != null) {
                dLiefertermin = aufposDto.getTUebersteuerbarerLiefertermin();
            } else {
                dLiefertermin = auftragDto.getDLiefertermin();
            }
        } else {
            sAuftragsnummer = "";
            sKunde = "";
            dLiefertermin = null;
        }
        mapParameter.put("P_AUFTRAGNUMMER", sAuftragsnummer);
        mapParameter.put("P_AUFTRAG_INTERNERKOMMENTAR", sInternerKommentar);

        KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(losDto.getKostenstelleIId());
        mapParameter.put("P_KOSTENSTELLENUMMER", kstDto.getCNr());
        mapParameter.put("P_KUNDE", sKunde);
        mapParameter.put("P_LOSGROESSE", losDto.getNLosgroesse());
        mapParameter.put("P_LOSNUMMER", losDto.getCNr());
        mapParameter.put("P_PRODUKTIONSBEGINN", losDto.getTProduktionsbeginn());
        mapParameter.put("P_LIEFERTERMIN", dLiefertermin);
        // Materialliste?
        if (losDto.getStuecklisteIId() != null) {
            StuecklisteDto stkDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(),
                    theClientDto);
            mapParameter.put("P_STUECKLISTEBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCBez());
            mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG",
                    stkDto.getArtikelDto().getArtikelsprDto().getCZbez());
            mapParameter.put("P_STUECKLISTENUMMER", stkDto.getArtikelDto().getCNr());
        } else {
            mapParameter.put("P_STUECKLISTEBEZEICHNUNG", losDto.getCProjekt());
            mapParameter.put("P_STUECKLISTENUMMER", getTextRespectUISpr("fert.materialliste",
                    theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_STUECKRUECKMELDUNG,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (Exception t) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER, t);
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

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

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

                        if (arLosIId != null) {

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

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

                            }

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

                        }

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

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

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

                            // den finde ich ueber die Auftragsposition

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

                            dto.setProjektIId(auftragDto.getProjektIId());

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

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

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

                        // Projekt= Speisekassa

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

                        dto.setCProjekt(speisekassaDto.getCBez());

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

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

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

                    bewegungsvorschau.add(dto);

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

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

                if (arLosIId != null) {

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

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

                    }

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

                }

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

                    dto.setProjektIId(auftragDto.getProjektIId());

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

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

License:Open Source License

private FLRRechnung[] getVerbuchbareRechnungen(java.sql.Date dStichtag, TheClientDto theClientDto)
        throws EJBExceptionLP {
    Session session = null;/* w  ww .  ja  va2s  . c o m*/
    try {
        pruefeAufAngelegte(dStichtag, theClientDto, RechnungFac.RECHNUNGTYP_RECHNUNG);
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnung.class);
        // nur Rechnungen
        c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(Restrictions
                .eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_RECHNUNG));
        // Filter nach Mandant
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Noch nicht verbuchte
        c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME));
        // Stichtag
        c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag));
        // Und nach status
        Collection<String> coll = new LinkedList<String>();
        coll.add(RechnungFac.STATUS_BEZAHLT);
        coll.add(RechnungFac.STATUS_OFFEN);
        coll.add(RechnungFac.STATUS_TEILBEZAHLT);
        coll.add(RechnungFac.STATUS_VERBUCHT);
        c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll));
        c.addOrder(Property.forName("c_nr").asc());
        // zu exportierende Belege holen
        List<?> list = c.list();
        FLRRechnung[] reArray = new FLRRechnung[list.size()];
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRRechnung re = (FLRRechnung) iter.next();
            reArray[i] = re;
        }
        return reArray;
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

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

License:Open Source License

private void pruefeAufAngelegte(Date dStichtag, TheClientDto theClientDto, String sRechnungstyp)
        throws EJBExceptionLP {
    Session session = null;//from  w w  w  . j ava  2  s. c  om
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnung.class);
        // nur Rechnungen
        c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART)
                .add(Restrictions.eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, sRechnungstyp));
        // Filter nach Mandant
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Noch nicht verbuchte
        c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME));
        // Stichtag
        c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag));
        // Und nach status
        Collection<String> coll = new LinkedList<String>();
        // Zuerst schauen, ob es noch angelegte gibt, in diesem fall muss
        // der export abgebrochen werden
        coll.add(RechnungFac.STATUS_ANGELEGT);
        c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll));
        List<?> listAngelegte = c.list();
        if (!listAngelegte.isEmpty()) {
            StringBuffer sb = new StringBuffer();
            for (Iterator<?> iter = listAngelegte.iterator(); iter.hasNext();) {
                FLRRechnung re = (FLRRechnung) iter.next();
                sb.append(re.getC_nr());
                sb.append(" an ").append(re.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1());
                sb.append("\n");
            }
            EJBExceptionLP ex = new EJBExceptionLP(
                    EJBExceptionLP.FEHLER_FINANZ_EXPORT_BELEG_IST_NOCH_NICHT_AKTIVIERT,
                    new Exception("noch nicht aktivierte Belege"));
            // Kunden holen
            ArrayList<Object> a = new ArrayList<Object>();
            a.add(sb.toString());
            ex.setAlInfoForTheClient(a);
            throw ex;
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }
}