Example usage for org.hibernate.criterion Restrictions le

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

Introduction

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

Prototype

public static SimpleExpression le(String propertyName, Object value) 

Source Link

Document

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

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;// ww  w  . ja  v  a  2 s  . c om
    try {
        this.useCase = UC_KONTIERUNG;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria cKontierung = session.createCriteria(FLREingangsrechnungKontierung.class);

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

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

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

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

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

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

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

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

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

            dto.setWaehrungCNr(erDto.getWaehrungCNr());

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

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

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

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

                if (bdBezahltERKurs != null) {

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

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

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

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

                dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    dto.setWaehrungCNr(erDto.getWaehrungCNr());

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

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

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

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

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

License:Open Source License

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

    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;/* w ww .  ja v  a  2 s .c  o  m*/
    try {
        Map<Integer, ZahlungszielDto> mZahlungsziel = getMandantFac()
                .zahlungszielFindAllByMandantAsDto(theClientDto.getMandant(), theClientDto);

        session = factory.openSession();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printAlle(ReportJournalKriterienDto krit, TheClientDto theClientDto, boolean bZusatzkosten,
        boolean bDatumIstFreigabedatum) {
    Session session = null;/* ww  w .j a v  a  2s. 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;// w  w  w  .  ja  v a  2  s .co 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 .  j a v a 2  s . com*/

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

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

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

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

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

        if (dStichtag != null) {

            dStichtag = Helper.cutDate(dStichtag);

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

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

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

            String datumsart = "";

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

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

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

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

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

            }

            mapParameter.put("P_DATUMSART", datumsart);

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

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

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

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

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

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

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

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

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

        // 2tes sortierkriterium immer Losnr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            // PJ 15009

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

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

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

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

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

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

        if (dStichtag != null) {

            dStichtag = Helper.cutDate(dStichtag);

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

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

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

            String datumsart = "";

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

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

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

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

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

            }

            mapParameter.put("P_DATUMSART", datumsart);

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

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

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

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

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

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

                    }

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

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

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

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

                    }

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

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

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

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

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

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

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

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

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

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

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

                    // PJ 15009

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

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

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

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

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

                        }

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

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

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

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

                        }

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

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

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

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

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

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

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

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

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

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

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

                        // PJ 15009

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

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

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

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

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

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

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

                        }

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

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

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

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

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

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

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

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

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

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

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

                        // PJ 15009

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

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

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

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

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

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

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

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

                }

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

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

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

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

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

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

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

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

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

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

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

                // PJ 15009

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

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

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

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

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

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

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

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

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

                    }

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

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

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

                    }
                }
            }
        }

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

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

            Object[] zeile = new Object[17];

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

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

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

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

            }
            zeile[HF_ERLEDIGT] = bdAbgeliefert;

            // Nun eine Zeile pro Position

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

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

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

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

                BigDecimal sollsatzmenge = new BigDecimal(0);

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

                BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert);

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

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

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

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

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

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

                                // Neuen Preis berechnen

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

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

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

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

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

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

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

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

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

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

                                // Neuen Preis berechnen

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

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

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

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

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

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

                    }
                } else {

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

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

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

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

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

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

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

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

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

                BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert);

                BigDecimal restist = bdIstZeit.subtract(theoretischabgeliefert);

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

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

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

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

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

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

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

                }

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

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

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

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

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

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

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

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

                                // Neuen Preis berechnen

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

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

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

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

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

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

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

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

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

                                // Neuen Preis berechnen

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

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

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

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

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

                                alDaten.set(k, zeileTemp);
                            }

                        }

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

                    }
                } else {

                    alDaten.add(zeile);
                }

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

            }

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

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

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

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

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

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

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

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

License:Open Source License

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

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

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

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

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

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

    }
    return new BuchungsjournalExportHVRawFormatter(details);
}

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

License:Open Source License

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

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

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

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

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

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

        //         zuBuchen = getBuchungenKorrekteUst(zuBuchen, mwstKonten);

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

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

    return buchungen;
}

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

License:Open Source License

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