Example usage for org.hibernate.criterion Restrictions not

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

Introduction

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

Prototype

public static Criterion not(Criterion expression) 

Source Link

Document

Return the negation of an expression

Usage

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

License:Open Source License

public void importiereMonatsbestellung(ArrayList<ImportMonatsbestellungDto> importMonatbestellung,
        TheClientDto theClientDto) {/*  w  w  w .  java 2  s. c om*/

    // letzte Bestellung des Lieferanten suchen und nachsehen, ob diese in
    // diesem Monat bereits vorhanden ist.

    // PJ 17876
    Integer iMonatsbestellungsart = 0;
    try {
        ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_BESTELLUNG, ParameterFac.PARAMETER_MONATSBESTELLUNGSART);
        iMonatsbestellungsart = (Integer) parameter.getCWertAsObject();
    } catch (RemoteException e2) {
        throwEJBExceptionLPRespectOld(e2);
    }

    if (iMonatsbestellungsart == 2) {
        importiereBestellung(importMonatbestellung, theClientDto);
        return;
    }

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

        SessionFactory factory = FLRSessionFactory.getFactory();
        Session session = factory.openSession();
        Criteria c = session.createCriteria(FLRBestellung.class);
        c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE,
                importMonatbestellung.get(i).getLieferantIId()));

        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(importMonatbestellung.get(i).getWeDatum().getTime());

        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);

        c.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime()));

        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);

        SimpleDateFormat dateformat = new SimpleDateFormat("MMMM", theClientDto.getLocUi());
        dateformat.format(cal.getTime());

        String projektTextMonatsbestellung = "Monatsbestellung " + dateformat.format(cal.getTime()) + " "
                + cal.get(Calendar.YEAR);

        c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG,
                projektTextMonatsbestellung));

        c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime()));

        //
        String[] s = new String[2];
        s[0] = BestellungFac.BESTELLSTATUS_ERLEDIGT;
        s[1] = BestellungFac.BESTELLSTATUS_STORNIERT;
        c.add(Restrictions.not(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, s)));

        c.addOrder(Order.desc(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM));
        c.setMaxResults(1);

        List<?> list = c.list();

        Integer bestellungIId = null;

        if (list.size() > 0) {
            FLRBestellung b = (FLRBestellung) list.iterator().next();
            bestellungIId = b.getI_id();
        }

        Lieferant lieferant = em.find(Lieferant.class, importMonatbestellung.get(i).getLieferantIId());
        Partner partner = em.find(Partner.class, lieferant.getPartnerIId());

        if (bestellungIId == null) {

            BestellungDto bsdto = createBestellungDto(importMonatbestellung.get(i).getLieferantIId(),
                    theClientDto.getMandant(), theClientDto.getIDPersonal());

            try {
                BestellungtextDto bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr(
                        theClientDto.getMandant(), partner.getLocaleCNrKommunikation(),
                        MediaFac.MEDIAART_KOPFTEXT, theClientDto);
                if (bsText != null) {
                    bsdto.setBestelltextIIdKopftext(bsText.getIId());
                }
                bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr(
                        theClientDto.getMandant(), partner.getLocaleCNrKommunikation(),
                        MediaFac.MEDIAART_FUSSTEXT, theClientDto);
                if (bsText != null) {
                    bsdto.setBestelltextIIdFusstext(bsText.getIId());
                }
            } catch (RemoteException e1) {
                throwEJBExceptionLPRespectOld(e1);
            }

            bsdto.setDBelegdatum(new Date(cal.getTimeInMillis()));//
            bsdto.setDLiefertermin(new Timestamp(cal.getTimeInMillis()));

            bsdto.setCBez(projektTextMonatsbestellung);

            try {
                bestellungIId = getBestellungFac().createBestellung(bsdto, theClientDto);
            } catch (EJBExceptionLP e) {
                throw new EJBExceptionLP(e);
            } catch (RemoteException e) {
                throw new EJBExceptionLP(e);
            }

        }

        // Position anlegen
        try {
            BestellpositionDto bspos = createBestellPositionDto(bestellungIId,
                    importMonatbestellung.get(i).getLieferantIId(),
                    importMonatbestellung.get(i).getArtikelIId(), importMonatbestellung.get(i).getMenge(),
                    theClientDto);
            Integer bsPosIId = getBestellpositionFac().createBestellposition(bspos, theClientDto, null, null);

            // Wareneingang zu Verladedatum anlegen, wenn noch nicht
            // vorhanden

            if (iMonatsbestellungsart == 0) {
                Timestamp tVerladedatum = new java.sql.Timestamp(
                        importMonatbestellung.get(i).getWeDatum().getTime());

                Query query = em.createNamedQuery("WareneingangfindByBestellungIIdTWareneingangsdatum");
                query.setParameter(1, bestellungIId);
                query.setParameter(2, tVerladedatum);
                Collection<?> col = query.getResultList();

                Integer wareneingangId = null;

                if (col.size() > 0) {
                    Wareneingang we = (Wareneingang) col.iterator().next();
                    wareneingangId = we.getIId();
                } else {
                    WareneingangDto wedto = new WareneingangDto();
                    wedto.setBestellungIId(bestellungIId);
                    wedto.setCLieferscheinnr(importMonatbestellung.get(i).getLieferscheinnr());
                    wedto.setTLieferscheindatum(tVerladedatum);
                    wedto.setTWareneingangsdatum(tVerladedatum);
                    wedto.setLagerIId(lieferant.getLagerIIdZubuchungslager());
                    wedto.setNWechselkurs(new BigDecimal(1));
                    try {
                        wareneingangId = getWareneingangFac().createWareneingang(wedto, theClientDto);
                    } catch (RemoteException e) {
                        throw new EJBExceptionLP(e);
                    }
                }

                try {
                    WareneingangspositionDto weposDto = new WareneingangspositionDto();
                    weposDto.setBestellpositionIId(bsPosIId);
                    weposDto.setNGeliefertemenge(importMonatbestellung.get(i).getMenge());
                    weposDto.setPersonalIIdAendern(theClientDto.getIDPersonal());
                    weposDto.setPersonalIIdAnlegen(theClientDto.getIDPersonal());
                    weposDto.setTAendern(new Timestamp(System.currentTimeMillis()));
                    weposDto.setTAnlegen(weposDto.getTAendern());
                    weposDto.setWareneingangIId(wareneingangId);
                    BigDecimal nGeliefertpreis = bspos.getNNettogesamtpreis();
                    weposDto.setNGelieferterpreis(nGeliefertpreis);
                    getWareneingangFac().createWareneingangsposition(weposDto, theClientDto);

                    getBestellungFac().aktiviereBestellung(bestellungIId, theClientDto);

                    getBestellpositionFac().manuellAufVollstaendigGeliefertSetzen(bsPosIId, theClientDto);

                } catch (EJBExceptionLP e) {
                    throw new EJBExceptionLP(e);
                } catch (RemoteException e) {
                    throw new EJBExceptionLP(e);
                }
            }

        } catch (EJBExceptionLP e) {
            throw new EJBExceptionLP(e);
        } catch (RemoteException e) {
            throw new EJBExceptionLP(e);
        }
        session.close();
    }

}

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

License:Open Source License

/**
 * METHODE VON CK//  w  ww .j  av  a2 s  . co m
 * 
 * @param iVorlaufzeit
 *            Integer
 * @param dateFuerEintraegeOhneLiefertermin
 *            Date
 * @param theClientDto
 *            String
 */
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void erstelleBestellvorschlag(Integer iVorlaufzeit, Integer iToleranz,
        java.sql.Date dateFuerEintraegeOhneLiefertermin, ArrayList<Integer> arLosIId,
        ArrayList<Integer> arAuftragIId, boolean bMitNichtlagerbewirtschafteten,
        boolean bNurLospositionenBeruecksichtigen, TheClientDto theClientDto) {
    // alten bestellvorschlag loeschen
    loescheBestellvorlaegeEinesMandaten(theClientDto);
    Session session = null;
    try {

        // Wenn auftragsIId angebeben werden, dann deren Los suchen

        if (arAuftragIId != null) {

            for (int i = 0; i < arAuftragIId.size(); i++) {
                LosDto[] losDtos = getFertigungFac().losFindByAuftragIId(arAuftragIId.get(i));

                for (int j = 0; j < losDtos.length; j++) {
                    if (arLosIId == null) {
                        arLosIId = new ArrayList<Integer>();
                    }

                    arLosIId.add(losDtos[j].getIId());

                }

            }

        }

        // Wenn losIIds vorhanden dann nur die Artikel dieser Lose
        ArrayList<Integer> arArtikelIIds = new ArrayList<Integer>();
        if (arLosIId != null) {
            if (arLosIId.size() > 0) {
                Object[] oLosIId = new Object[arLosIId.size()];
                oLosIId = arLosIId.toArray();
                session = FLRSessionFactory.getFactory().openSession();
                org.hibernate.Criteria critLose = session.createCriteria(FLRLos.class);
                critLose.add(Restrictions.in(FertigungFac.FLR_LOS_I_ID, oLosIId));
                List<?> resultListLose = critLose.list();
                Iterator<?> resultListLoseIterator = resultListLose.iterator();
                while (resultListLoseIterator.hasNext()) {
                    FLRLos los = (FLRLos) resultListLoseIterator.next();
                    LossollmaterialDto[] material = getFertigungFac()
                            .lossollmaterialFindByLosIId(los.getI_id());
                    for (int i = 0; i < material.length; i++) {
                        if (material[i].getArtikelIId() != null) {
                            arArtikelIIds.add(material[i].getArtikelIId());
                        }
                    }
                }
            }
            closeSession(session);
        }

        // Alle Lagerbewirtschafteten Artikel holen
        session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria crit = session.createCriteria(FLRArtikel.class);
        // Filter nach Mandant
        crit.add(Restrictions.eq(ArtikelFac.FLR_ARTIKEL_MANDANT_C_NR, theClientDto.getMandant()));
        // keine Hand- und AZ-Artikel
        crit.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKELLISTE_ARTIKELART_C_NR,
                new String[] { ArtikelFac.ARTIKELART_HANDARTIKEL, ArtikelFac.ARTIKELART_ARBEITSZEIT })));
        if (bMitNichtlagerbewirtschafteten == false) {
            // nur lagerbewirtschaftete
            crit.add(Restrictions.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, Helper.boolean2Short(true)));
        }
        // Zusaetlich nach Losen wenn Materialien vorhanden
        if (arArtikelIIds.size() > 0) {
            Object[] oArtikelIIds = arArtikelIIds.toArray();
            crit.add(Restrictions.in(ArtikelFac.FLR_ARTIKEL_I_ID, oArtikelIIds));
        }

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

            if (Helper.short2boolean(artikel.getB_lagerbewirtschaftet())) {

                // Ist dieser Artikel eine Stueckliste?
                StuecklisteDto stuecklisteDto = getStuecklisteFac()
                        .stuecklisteFindByMandantCNrArtikelIIdOhneExc(artikel.getI_id(), theClientDto);

                if (stuecklisteDto != null
                        && Helper.short2boolean(stuecklisteDto.getBFremdfertigung()) == false) {
                    // selbstgefertigte Stuecklisten werden im BV nicht
                    // beruecksichtigt.
                } else {
                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(artikel.getI_id(),
                            theClientDto);
                    ArtklaDto artklsDto = null;
                    if (artikelDto.getArtklaIId() != null) {
                        artklsDto = getArtikelFac().artklaFindByPrimaryKey(artikelDto.getArtklaIId(),
                                theClientDto);
                    }
                    if (artklsDto != null && Helper.short2boolean(artklsDto.getBTops()) == true) {
                        // Keine tops artikel
                    } else {
                        // Wenn keine Stueckliste, bzw. Fremdgefertigte
                        // Stueckliste, dann
                        ArrayList<?> al = null;

                        if (bNurLospositionenBeruecksichtigen == true) {
                            al = getInternebestellungFac().berechneBedarfe(artikelDto, iVorlaufzeit, iToleranz,
                                    dateFuerEintraegeOhneLiefertermin, false, theClientDto, arLosIId);
                        } else {
                            al = getInternebestellungFac().berechneBedarfe(artikelDto, iVorlaufzeit, iToleranz,
                                    dateFuerEintraegeOhneLiefertermin, false, theClientDto, null);
                        }

                        MaterialbedarfDto[] materialbedarf = new MaterialbedarfDto[al.size()];
                        materialbedarf = (MaterialbedarfDto[]) al.toArray(materialbedarf);

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

                            bestellvorschlagDtoErzeugen(materialbedarf[i].getSBelegartCNr(),
                                    artikel.getMandant_c_nr(), artikel.getI_id(),
                                    materialbedarf[i].getIBelegIId(), materialbedarf[i].getIBelegpositionIId(),
                                    new java.sql.Timestamp(materialbedarf[i].getTTermin().getTime()),
                                    materialbedarf[i].getNMenge(), materialbedarf[i].getProjektIId(),
                                    theClientDto);
                        }
                    }
                }
            } else {
                if (bMitNichtlagerbewirtschafteten == true) {

                    BigDecimal stdMenge = new BigDecimal(0);
                    ArtikellieferantDto[] dtos = getArtikelFac()
                            .artikellieferantFindByArtikelIId(artikel.getI_id(), theClientDto);

                    if (dtos != null && dtos.length > 0 && dtos[0].getFStandardmenge() != null) {
                        stdMenge = new BigDecimal(dtos[0].getFStandardmenge());
                    }

                    bestellvorschlagDtoErzeugen(null, artikel.getMandant_c_nr(), artikel.getI_id(), null, null,
                            new java.sql.Timestamp(dateFuerEintraegeOhneLiefertermin.getTime()), stdMenge, null,
                            theClientDto);

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

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

License:Open Source License

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

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

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

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

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

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

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

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

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

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

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

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

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

            if (bEchteLiefermahnungVorhanden == false) {

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

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

                if (bABLiefermahnungVorhanden == false) {

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

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

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

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

                                }
                            }
                        }
                    }
                }
            }

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

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

License:Open Source License

public int wiederholendeZusatzkostenAnlegen(TheClientDto theClientDto) {

    int iAnzahlAngelegt = 0;
    Session session = FLRSessionFactory.getFactory().openSession();

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

    crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
    crit.add(Restrictions.eq("eingangsrechnungart_c_nr", EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN));

    crit.add(Restrictions.not(Restrictions.eq("status_c_nr", EingangsrechnungFac.STATUS_STORNIERT)));

    crit.add(Restrictions.isNull("t_wiederholenderledigt"));

    crit.add(Restrictions.isNull("eingangsrechnung_i_id_nachfolger"));
    crit.add(Restrictions.isNotNull("auftragwiederholungsintervall_c_nr"));

    crit.add(Restrictions.lt("t_belegdatum",
            Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000)))));

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

        // Naechster faelliger Termin nach Heute
        Calendar cBeginn = Calendar.getInstance();
        cBeginn.setTimeInMillis(flrEingangsrechnung.getT_belegdatum().getTime());

        String intervall = flrEingangsrechnung.getAuftragwiederholungsintervall_c_nr();

        Timestamp tHeute = Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000)));

        if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2WOECHENTLICH)) {
            cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 14);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_WOECHENTLICH)) {
            cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 7);
        }/*from w  w  w.  j  av a 2 s  .  co  m*/

        if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 1);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 2);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_3JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 3);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_4JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 4);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_5JAHR)) {
            cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 5);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_MONATLICH)) {
            cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 1);
        } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_QUARTAL)) {
            cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 3);
        }

        Date tBelegdatumNeu = new Date(cBeginn.getTimeInMillis());

        if (cBeginn.getTimeInMillis() < tHeute.getTime()) {

            Eingangsrechnung er = em.find(Eingangsrechnung.class, flrEingangsrechnung.getI_id());

            EingangsrechnungDto erDtoNeu = assembleEingangsrechnungDto(er);
            erDtoNeu.setIId(null);
            erDtoNeu.setDBelegdatum(tBelegdatumNeu);
            erDtoNeu.setStatusCNr(EingangsrechnungFac.STATUS_ANGELEGT);
            Integer idNeu = createEingangsrechnung(erDtoNeu, theClientDto).getIId();

            // Nachfolger setzten
            er.setEingangsrechnungIIdNachfolger(idNeu);
            iAnzahlAngelegt++;
        }

    }

    return iAnzahlAngelegt;
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printKontierungsjournal(TheClientDto theClientDto, int iFilterER, Integer kostenstelleIId,
        int iKritDatum, Date dVon, Date dBis, boolean bZusatzkosten) {
    Session session = null;/*from  w w  w.  jav a2  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;/*from  w w  w  . j a va2 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;// w w  w.  j  a va 2  s  . c  om
    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.FertigungFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public KapazitaetsvorschauDto getKapazitaetsvorschau(TheClientDto theClientDto) throws EJBExceptionLP {
    KapazitaetsvorschauDto kapDto = null;
    Session session = null;/*  www.  j  ava  2  s  . c o  m*/
    try {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

License:Open Source License

public boolean istErstlos(LosDto losDto, TheClientDto theClientDto) {

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

        SessionFactory factory = FLRSessionFactory.getFactory();
        org.hibernate.Session session = factory.openSession();
        Criteria c = session.createCriteria(FLRLosReport.class);
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));

        c.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, losDto.getStuecklisteIId()));
        c.add(Restrictions.lt(FertigungFac.FLR_LOS_C_NR, losDto.getCNr()));
        c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
                new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT })));

        // Sortierung nach Losnummer
        c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR));
        c.setMaxResults(1);//from   ww  w  . jav  a 2s  .  c o  m
        List<?> list = c.list();

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

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

License:Open Source License

public JasperPrintLP printFertigungsbegleitschein(Integer losIId, Boolean bStammtVonSchnellanlage,
        TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;//from   ww  w  . j  a  v  a2s  . co  m
    try {
        this.useCase = UC_FERTIGUNGSBEGLEITSCHEIN;
        this.index = -1;
        // Los holen
        LosDto losDto = getFertigungFac().losFindByPrimaryKey(losIId);
        if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ANGELEGT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_NOCH_NICHT_AUSGEGEBEN, "");
        } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_STORNIERT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_STORNIERT, "");
        } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ERLEDIGT)) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_BEREITS_ERLEDIGT, "");
        }

        // Hole Parameter UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT
        String artikelnrZuUnterdruecken = null;
        ParametermandantDto parameterNulltaetigkeit = getParameterFac().getMandantparameter(
                theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN,
                ParameterFac.PARAMETER_UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT);
        if (parameterNulltaetigkeit.getCWert() != null && !parameterNulltaetigkeit.getCWert().equals("")
                && !parameterNulltaetigkeit.getCWert().equals(" ")) {
            artikelnrZuUnterdruecken = parameterNulltaetigkeit.getCWert();
        }

        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRLossollarbeitsplan.class);
        if (artikelnrZuUnterdruecken != null) {
            c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL, "a");
            c.add(Restrictions.not(
                    Restrictions.and(Restrictions.isNotNull(FertigungFac.FLR_LOSSOLLARBEITSPLAN_MASCHINE_I_ID),
                            Restrictions.eq("a.c_nr", artikelnrZuUnterdruecken))));
        }
        c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, losIId));
        // Sortierung nach Arbeitsgang
        c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_ARBEITSGANGNUMMER));
        c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_UNTERARBEITSGANG));
        List<?> list = c.list();

        int iSizeMaterial = 0;
        ParametermandantDto parameterMaterial = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNGSBEGLEITSCHEIN_MIT_MATERIAL);
        short iMaterial = Short.parseShort(parameterMaterial.getCWert());
        boolean bMitMaterial = Helper.short2boolean(iMaterial);
        if (bMitMaterial) {
            // Hier Material einfuegen
            Object[][] material = getDataAusgabeListe(new Integer[] { losIId }, Helper.SORTIERUNG_NACH_IDENT,
                    true, false, null, theClientDto);

            if (material == null) {
                iSizeMaterial = 0;
            } else {
                iSizeMaterial = material.length;
            }

            data = new Object[list.size() + material.length][BEGL_SPALTENANZAHL];
            for (int i = 0; i < iSizeMaterial; i++) {
                data[i][BEGL_IST_MATERIAL] = new Boolean(true);
                data[i][BEGL_MATERIAL_ARTIKELKLASSE] = material[i][AUSG_ARTIKELKLASSE];
                data[i][BEGL_MATERIAL_AUSGABE] = material[i][AUSG_AUSGABE];
                data[i][BEGL_MATERIAL_BEZEICHNUNG] = material[i][AUSG_BEZEICHNUNG];
                data[i][BEGL_MATERIAL_EINHEIT] = material[i][AUSG_EINHEIT];
                data[i][BEGL_MATERIAL_FARBCODE] = material[i][AUSG_FARBCODE];
                data[i][BEGL_MATERIAL_IDENT] = material[i][AUSG_IDENT];
                data[i][BEGL_MATERIAL_LAGER] = material[i][AUSG_LAGER];
                data[i][BEGL_MATERIAL_LAGERORT] = material[i][AUSG_LAGERORT];
                data[i][BEGL_MATERIAL_MENGE] = material[i][AUSG_MENGE];
                data[i][BEGL_MATERIAL_MONTAGEART] = material[i][AUSG_MONTAGEART];
                data[i][BEGL_MATERIAL_SCHALE] = material[i][AUSG_SCHALE];
                data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG] = material[i][AUSG_ZUSATZBEZEICHNUNG];
                data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG2] = material[i][AUSG_ZUSATZBEZEICHNUNG2];
                data[i][BEGL_MATERIAL_HOEHE] = material[i][AUSG_HOEHE];
                data[i][BEGL_MATERIAL_BREITE] = material[i][AUSG_BREITE];
                data[i][BEGL_MATERIAL_TIEFE] = material[i][AUSG_TIEFE];
                data[i][BEGL_MATERIAL_MATERIAL] = material[i][AUSG_MATERIAL];
                data[i][BEGL_BAUFORM] = material[i][AUSG_BAUFORM];
                data[i][BEGL_VERPACKUNGSART] = material[i][AUSG_VERPACKUNGSART];
                data[i][BEGL_GEWICHTKG] = material[i][AUSG_GEWICHTKG];
                data[i][BEGL_MATERIAL_REVISION] = material[i][AUSG_REVISION];
                data[i][BEGL_MATERIAL_INDEX] = material[i][AUSG_INDEX];
                data[i][BEGL_NURZURINFORMATION] = material[i][AUSG_NUR_ZUR_INFO];

            }

        } else {
            data = new Object[list.size()][BEGL_SPALTENANZAHL];
        }

        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) {
            FLRLossollarbeitsplan item = (FLRLossollarbeitsplan) iter.next();
            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(item.getFlrartikel().getI_id(),
                    theClientDto);
            data[i + iSizeMaterial][BEGL_IST_MATERIAL] = new Boolean(false);
            data[i + iSizeMaterial][BEGL_IDENT] = artikelDto.getCNr();
            data[i + iSizeMaterial][BEGL_NURZURINFORMATION] = Helper.short2Boolean(artikelDto.getbNurzurinfo());
            data[i + iSizeMaterial][BEGL_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez();
            data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez();
            data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG2] = artikelDto.getArtikelsprDto().getCZbez2();
            data[i + iSizeMaterial][BEGL_ARBEITSGANG] = item.getI_arbeitsgangsnummer();
            data[i + iSizeMaterial][BEGL_UNTERARBEITSGANG] = item.getI_unterarbeitsgang();
            data[i + iSizeMaterial][BEGL_AGART] = item.getAgart_c_nr();
            data[i + iSizeMaterial][BEGL_AUFSPANNUNG] = item.getI_aufspannung();
            data[i + iSizeMaterial][BEGL_MATERIAL_REVISION] = artikelDto.getCRevision();
            data[i + iSizeMaterial][BEGL_MATERIAL_INDEX] = artikelDto.getCIndex();
            data[i + iSizeMaterial][BEGL_FERTIG] = Helper.short2Boolean(item.getB_fertig());

            // Ein Mandantenparameter entscheidet, ob auch die Sollzeiten
            // gedruckt werden
            ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_FERTIGUNG,
                    ParameterFac.FERTIGUNG_FERTIGUNGSBEGLEITSCHEIN_MIT_SOLLDATEN);
            short iValue = Short.parseShort(parameter.getCWert());
            boolean bDruckeSolldaten = Helper.short2boolean(iValue);
            if (bDruckeSolldaten) {
                data[i + iSizeMaterial][BEGL_RUESTZEIT] = item.getL_ruestzeit()
                        .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN);
                data[i + iSizeMaterial][BEGL_STUECKZEIT] = item.getL_stueckzeit()
                        .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN);
                data[i + iSizeMaterial][BEGL_GESAMTZEIT] = item.getN_gesamtzeit();
            }
            LossollarbeitsplanDto l = getFertigungFac().lossollarbeitsplanFindByPrimaryKey(item.getI_id());
            StringBuffer sKommentar = new StringBuffer();
            if (l.getCKomentar() != null) {
                sKommentar.append(l.getCKomentar() + "\n");
            }
            if (l.getXText() != null) {
                sKommentar.append(l.getXText());
            }
            data[i + iSizeMaterial][BEGL_KOMMENTAR] = sKommentar.toString();
            // Maschinenzeiterfassung
            if (l.getMaschineIId() != null) {
                MaschineDto maschineDto = getZeiterfassungFac().maschineFindByPrimaryKey(l.getMaschineIId());
                data[i + iSizeMaterial][BEGL_MASCHINE] = maschineDto.getCIdentifikationsnr();
                data[i + iSizeMaterial][BEGL_MASCHINE_BEZEICHNUNG] = maschineDto.getCBez();
            }

            if (l.getLossollmaterialIId() != null) {
                LossollmaterialDto posDto = getFertigungFac()
                        .lossollmaterialFindByPrimaryKey(l.getLossollmaterialIId());
                ArtikelDto artikelDtoFremdmaterial = getArtikelFac()
                        .artikelFindByPrimaryKeySmall(posDto.getArtikelIId(), theClientDto);
                data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKEL] = artikelDtoFremdmaterial.getCNr();
                if (artikelDtoFremdmaterial.getArtikelsprDto() != null) {
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELBEZEICHNUNG] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCBez();
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELKURZBEZEICHNUNG] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCKbez();
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCZbez();
                    data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG2] = artikelDtoFremdmaterial
                            .getArtikelsprDto().getCZbez2();
                }
                data[i + iSizeMaterial][BEGL_FREMDMATERIAL_SOLLMENGE] = posDto.getNMenge();

                LoslagerentnahmeDto[] laeger = getFertigungFac()
                        .loslagerentnahmeFindByLosIId(posDto.getLosIId());
                if (laeger.length > 0) {
                    ArtikellagerplaetzeDto artikellagerplaetzeDto = getLagerFac()
                            .artikellagerplaetzeFindByArtikelIIdLagerIId(artikelDtoFremdmaterial.getIId(),
                                    laeger[0].getLagerIId());
                    if (artikellagerplaetzeDto != null && artikellagerplaetzeDto.getLagerplatzDto() != null) {
                        data[i + iSizeMaterial][BEGL_FREMDMATERIAL_LAGERORT] = artikellagerplaetzeDto
                                .getLagerplatzDto().getCLagerplatz();
                    }
                }

            }

        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        mapParameter.put("P_ANGELEGT", new java.util.Date(losDto.getTAnlegen().getTime()));
        String sAuftragsnummer;
        String sInternerKommentar = null;
        String sKunde;
        String sKundeLieferadresse;
        Timestamp dLiefertermin;
        String sLieferart;
        String sAbteilung = null;
        String sSpediteur = null;
        Boolean bPoenale = Boolean.FALSE;
        Boolean bRoHs = Boolean.FALSE;
        if (losDto.getAuftragIId() != null) {
            // Auftrag holen
            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(losDto.getAuftragIId());
            sAuftragsnummer = auftragDto.getCNr();
            sLieferart = getLocaleFac().lieferartFindByIIdLocaleOhneExc(auftragDto.getLieferartIId(),
                    theClientDto.getLocUi(), theClientDto);

            if (auftragDto.getSpediteurIId() != null) {
                sSpediteur = getMandantFac().spediteurFindByPrimaryKey(auftragDto.getSpediteurIId())
                        .getCNamedesspediteurs();
            }

            bPoenale = Helper.short2Boolean(auftragDto.getBPoenale());
            bRoHs = Helper.short2Boolean(auftragDto.getBRoHs());
            // Internen Kommentar aus dem Auftrag, abhaengig von einem
            // Mandantenparameter
            ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_FERTIGUNG,
                    ParameterFac.PARAMETER_KOMMENTAR_AM_FERTIGUNGSBEGLEITSCHEIN);
            short iValue = Short.parseShort(parameter.getCWert());
            boolean bDruckeKommentar = Helper.short2boolean(iValue);
            if (bDruckeKommentar) {
                sInternerKommentar = auftragDto.getXInternerkommentar();
            }
            // Kunde holen
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(),
                    theClientDto);

            sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1();

            KundeDto kundeDtoLieferadresse = getKundeFac()
                    .kundeFindByPrimaryKey(auftragDto.getKundeIIdLieferadresse(), theClientDto);
            sKundeLieferadresse = kundeDtoLieferadresse.getPartnerDto().getCName1nachnamefirmazeile1();

            sAbteilung = kundeDto.getPartnerDto().getCName3vorname2abteilung();

            if (losDto.getAuftragpositionIId() != null) {
                AuftragpositionDto aufposDto = getAuftragpositionFac()
                        .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId());
                if (aufposDto.getTUebersteuerbarerLiefertermin() != null) {
                    dLiefertermin = aufposDto.getTUebersteuerbarerLiefertermin();
                } else {
                    dLiefertermin = auftragDto.getDLiefertermin();
                }
            } else {
                dLiefertermin = auftragDto.getDLiefertermin();
            }
        } else {
            sAuftragsnummer = "";

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

                sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1();
            } else {
                sKunde = "";
            }

            sKundeLieferadresse = "";
            dLiefertermin = null;
            sLieferart = "";
            sSpediteur = "";
        }

        mapParameter.put("P_AUFTRAGNUMMER", sAuftragsnummer);
        mapParameter.put("P_AUFTRAG_INTERNERKOMMENTAR", sInternerKommentar);
        mapParameter.put("P_AUFTRAG_KUNDE_ABTEILUNG", sAbteilung);
        mapParameter.put("P_LIEFERART", sLieferart);
        mapParameter.put("P_SPEDITEUR", sSpediteur);
        mapParameter.put("P_POENALE", bPoenale);
        mapParameter.put("P_ROHS", bRoHs);
        KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(losDto.getKostenstelleIId());
        mapParameter.put("P_KOSTENSTELLENUMMER", kstDto.getCNr());
        mapParameter.put("P_KUNDE", sKunde);
        mapParameter.put("P_KUNDE_LIEFERADRESSE", sKundeLieferadresse);
        mapParameter.put("P_LOSGROESSE", losDto.getNLosgroesse());

        mapParameter.put("P_LOSKLASSEN", getLosLosKlassenAlsString(losDto.getIId()));

        mapParameter.put("P_LOSNUMMER", losDto.getCNr());
        mapParameter.put("P_PRODUKTIONSBEGINN", losDto.getTProduktionsbeginn());
        mapParameter.put("P_PRODUKTIONSENDE", losDto.getTProduktionsende());
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTime(losDto.getTProduktionsende());
        mapParameter.put("P_PRODUKTIONSENDE_KW", new Integer(gc.get(Calendar.WEEK_OF_YEAR)));

        mapParameter.put("P_LIEFERTERMIN", dLiefertermin);

        // Fertigungsort
        if (losDto.getPartnerIIdFertigungsort() != null) {
            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(losDto.getPartnerIIdFertigungsort(),
                    theClientDto);
            mapParameter.put("P_FERTIGUNGSORT", partnerDto.formatTitelAnrede());
        }

        // Erstlos
        mapParameter.put("P_ERSTLOS", new Boolean(istErstlos(losDto, theClientDto)));

        boolean bDruckeUeberschriftMaterial = false;
        if (bMitMaterial == true && iSizeMaterial > 0) {
            bDruckeUeberschriftMaterial = true;
        }

        mapParameter.put("P_DRUCKEUEBERSCHRIFTMATERIAL", new Boolean(bDruckeUeberschriftMaterial));

        ArrayList<Object> images = new ArrayList<Object>();
        String sLosStuecklisteArtikelKommentar = "";
        // Bild einfuegen
        String sMengenEinheit = "";
        if (losDto.getStuecklisteIId() != null) {
            StuecklisteDto stuecklisteDto = getStuecklisteFac()
                    .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto);
            // Einheit
            if (stuecklisteDto.getArtikelDto() != null) {
                if (stuecklisteDto.getArtikelDto().getEinheitCNr() != null) {
                    sMengenEinheit = stuecklisteDto.getArtikelDto().getEinheitCNr();
                }
            }

            // Sperren
            String sperren = getArtikelFac().getArtikelsperrenText(stuecklisteDto.getArtikelIId());

            mapParameter.put("P_STUECKLISTESPERRSTATUS", sperren);

            // Abmessungen
            GeometrieDto geometrieDto = stuecklisteDto.getArtikelDto().getGeometrieDto();
            if (geometrieDto != null) {
                mapParameter.put(P_ARTIKEL_BREITE, geometrieDto.getFBreite());
                mapParameter.put(P_ARTIKEL_HOEHE, geometrieDto.getFHoehe());
                mapParameter.put(P_ARTIKEL_TIEFE, geometrieDto.getFTiefe());
            }
            // Bauform
            VerpackungDto verpackungDto = stuecklisteDto.getArtikelDto().getVerpackungDto();
            if (verpackungDto != null) {
                mapParameter.put("P_ARTIKEL_BAUFORM", verpackungDto.getCBauform());
                mapParameter.put("P_ARTIKEL_VERPACKUNGSART", verpackungDto.getCVerpackungsart());
            }

            mapParameter.put("P_INDEX", stuecklisteDto.getArtikelDto().getCIndex());
            mapParameter.put("P_REVISION", stuecklisteDto.getArtikelDto().getCRevision());

            ArtikelkommentarDto[] artikelkommentarDto = getArtikelkommentarFac()
                    .artikelkommentardruckFindByArtikelIIdBelegartCNr(stuecklisteDto.getArtikelIId(),
                            LocaleFac.BELEGART_LOS, theClientDto.getLocUiAsString(), theClientDto);

            if (artikelkommentarDto != null && artikelkommentarDto.length > 0) {

                for (int j = 0; j < artikelkommentarDto.length; j++) {
                    if (artikelkommentarDto[j].getArtikelkommentarsprDto() != null) {
                        // Text Kommentar
                        if (artikelkommentarDto[j].getDatenformatCNr().trim()
                                .indexOf(MediaFac.DATENFORMAT_MIMETYPEART_TEXT) != -1) {
                            if (sLosStuecklisteArtikelKommentar == "") {
                                sLosStuecklisteArtikelKommentar += artikelkommentarDto[j]
                                        .getArtikelkommentarsprDto().getXKommentar();
                            } else {
                                sLosStuecklisteArtikelKommentar += "\n"
                                        + artikelkommentarDto[j].getArtikelkommentarsprDto().getXKommentar();
                            }
                        } else if (artikelkommentarDto[j].getDatenformatCNr()
                                .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_JPEG)
                                || artikelkommentarDto[j].getDatenformatCNr()
                                        .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_PNG)
                                || artikelkommentarDto[j].getDatenformatCNr()
                                        .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_GIF)) {
                            byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia();
                            if (bild != null) {
                                java.awt.Image myImage = Helper.byteArrayToImage(bild);
                                images.add(myImage);
                            }
                        } else if (artikelkommentarDto[j].getDatenformatCNr()
                                .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_TIFF)) {

                            byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia();

                            java.awt.Image[] tiffs = Helper.tiffToImageArray(bild);
                            if (tiffs != null) {
                                for (int k = 0; k < tiffs.length; k++) {
                                    images.add(tiffs[k]);
                                }
                            }

                        }
                    }
                }
            }
        }
        mapParameter.put("P_MENGENEINHEIT", sMengenEinheit);
        mapParameter.put("P_PROJEKT", losDto.getCProjekt());
        mapParameter.put("P_LOSKOMMENTAR", losDto.getCKommentar());
        mapParameter.put("P_LOSLANGTEXT", losDto.getXText());

        FertigungsgruppeDto fertGruppeDto = getStuecklisteFac()
                .fertigungsgruppeFindByPrimaryKey(losDto.getFertigungsgruppeIId());
        mapParameter.put("P_FERTIGUNGSGRUPPE", fertGruppeDto.getCBez());

        // Materialliste?
        if (losDto.getStuecklisteIId() != null) {
            StuecklisteDto stkDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(),
                    theClientDto);

            if (sLosStuecklisteArtikelKommentar != "") {
                mapParameter.put("P_STUECKLISTEARTIKELKOMMENTAR",
                        Helper.formatStyledTextForJasper(sLosStuecklisteArtikelKommentar));
            }

            mapParameter.put("P_STUECKLISTEBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCBez());

            mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG",
                    stkDto.getArtikelDto().getArtikelsprDto().getCZbez());
            mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG2",
                    stkDto.getArtikelDto().getArtikelsprDto().getCZbez2());

            mapParameter.put("P_STUECKLISTEKURZBEZEICHNUNG",
                    stkDto.getArtikelDto().getArtikelsprDto().getCKbez());
            mapParameter.put("P_STUECKLISTEREFERENZNUMMER", stkDto.getArtikelDto().getCReferenznr());

            mapParameter.put("P_STUECKLISTENUMMER", stkDto.getArtikelDto().getCNr());

            mapParameter.put("P_STUECKLISTE_GEWICHTKG", stkDto.getArtikelDto().getFGewichtkg());

            if (stkDto.getArtikelDto().getVerpackungDto() != null) {
                mapParameter.put("P_STUECKLISTE_BAUFORM",
                        stkDto.getArtikelDto().getVerpackungDto().getCBauform());
                mapParameter.put("P_STUECKLISTE_VERPACKUNGSART",
                        stkDto.getArtikelDto().getVerpackungDto().getCVerpackungsart());
            }

            if (stkDto.getArtikelDto().getGeometrieDto() != null) {
                mapParameter.put("P_STUECKLISTE_BREITETEXT",
                        stkDto.getArtikelDto().getGeometrieDto().getCBreitetext());
                mapParameter.put("P_STUECKLISTE_BREITE", stkDto.getArtikelDto().getGeometrieDto().getFBreite());
                mapParameter.put("P_STUECKLISTE_HOEHE", stkDto.getArtikelDto().getGeometrieDto().getFHoehe());
                mapParameter.put("P_STUECKLISTE_TIEFE", stkDto.getArtikelDto().getGeometrieDto().getFTiefe());
            }

            // Stuecklisteneigenschaften
            StuecklisteeigenschaftDto[] stuecklisteeigenschaftDtos = getStuecklisteFac()
                    .stuecklisteeigenschaftFindByStuecklisteIId(losDto.getStuecklisteIId());
            ArrayList<Object[]> al = new ArrayList<Object[]>();
            for (int j = 0; j < stuecklisteeigenschaftDtos.length; j++) {
                StuecklisteeigenschaftDto dto = stuecklisteeigenschaftDtos[j];

                Object[] o = new Object[2];
                String sStklEigenschaftArt = dto.getStuecklisteeigenschaftartDto().getCBez();
                o[0] = sStklEigenschaftArt;
                o[1] = dto.getCBez();
                al.add(o);

                // Index und Materialplatz auch einzeln an Report uebergeben
                if (sStklEigenschaftArt.equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_INDEX)) {
                    mapParameter.put(P_STUECKLISTENEIGENSCHAFT_INDEX, dto.getCBez());
                }
                if (sStklEigenschaftArt
                        .equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_MATERIALPLATZ)) {
                    mapParameter.put(P_STUECKLISTENEIGENSCHAFT_MATERIALPLATZ, dto.getCBez());
                }

            }

            if (stuecklisteeigenschaftDtos.length > 0) {
                String[] fieldnames = new String[] { "F_EIGENSCHAFTART", "F_BEZEICHNUNG" };
                Object[][] dataSub = new Object[al.size()][fieldnames.length];
                dataSub = (Object[][]) al.toArray(dataSub);

                mapParameter.put("DATENSUBREPORT", new LPDatenSubreport(dataSub, fieldnames));
            }

        } else {
            mapParameter.put("P_STUECKLISTEBEZEICHNUNG", losDto.getCProjekt());
            mapParameter.put("P_STUECKLISTENUMMER", getTextRespectUISpr("fert.materialliste",
                    theClientDto.getMandant(), theClientDto.getLocUi()));
        }

        mapParameter.put("P_SCHNELLANLAGE", bStammtVonSchnellanlage);

        // Formularnummer anhaengen, wenn vorhanden
        String report = FertigungReportFac.REPORT_FERTIGUNGSBEGLEITSCHEIN;

        if (fertGruppeDto.getIFormularnummer() != null) {
            report = report.replace(".", fertGruppeDto.getIFormularnummer() + ".");
        }

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

        JasperPrintLP print = getReportPrint();
        Integer cachedReportvariante = theClientDto.getReportvarianteIId();
        if (images != null) {
            for (int k = 0; k < images.size(); k++) {
                mapParameter = new HashMap<String, Object>();
                mapParameter.put("P_BILD", images.get(k));
                this.useCase = UC_GANZSEITIGESBILD;
                this.index = -1;
                data = new Object[1][1];
                data[0][0] = images.get(k);
                theClientDto.setReportvarianteIId(cachedReportvariante);
                initJRDS(mapParameter, REPORT_MODUL_ALLGEMEIN, REPORT_GANZSEITIGESBILD,
                        theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
                print = Helper.addReport2Report(print, getReportPrint().getPrint());
            }
        }
        return print;
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}