Example usage for org.hibernate Criteria createCriteria

List of usage examples for org.hibernate Criteria createCriteria

Introduction

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

Prototype

public Criteria createCriteria(String associationPath) throws HibernateException;

Source Link

Document

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

Usage

From source file:com.lp.server.rechnung.ejbfac.RechnungFacBean.java

License:Open Source License

/**
 * Die Anzahl der an einen Kunden gelegten Rechnungen in eimem zeitraum
 * ermitteln. geht ueber hibernate (der performace wegen).
 * /*w  w w .  j  a v  a  2  s  .com*/
 * @param theClientDto
 *            String
 * @param kundeIId
 *            Integer
 * @param dVon
 *            Date
 * @param dBis
 *            Date
 * @param bStatistikadresse
 *            boolean
 * @return Integer
 * @throws EJBExceptionLP
 */
public Integer getAnzahlDerRechnungenVomKundenImZeitraum(TheClientDto theClientDto, Integer kundeIId, Date dVon,
        Date dBis, boolean bStatistikadresse) throws EJBExceptionLP {
    Session session = null;
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnung.class);
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(Restrictions
                .eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_RECHNUNG));
        if (kundeIId != null) {
            if (bStatistikadresse == true) {
                c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_KUNDE_I_ID_STATISTIKADRESSE, kundeIId));
            } else {
                c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRKUNDE)
                        .add(Restrictions.eq(KundeFac.FLR_KUNDE_I_ID, kundeIId));
            }
        }
        if (dVon != null) {
            c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dVon));
        }
        if (dBis != null) {
            c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dBis));
        }
        // Filter nach Status
        Collection<String> cStati = new LinkedList<String>();
        cStati.add(RechnungFac.STATUS_BEZAHLT);
        cStati.add(RechnungFac.STATUS_TEILBEZAHLT);
        cStati.add(RechnungFac.STATUS_OFFEN);
        cStati.add(RechnungFac.STATUS_VERBUCHT);
        c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, cStati));
        List<?> list = c.list();
        return new Integer(list.size());
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

From source file:com.lp.server.rechnung.ejbfac.RechnungFacBean.java

License:Open Source License

public Integer getZahlungsmoraleinesKunden(Integer kundeIId, boolean bStatistikadresse,
        TheClientDto theClientDto) {/*from   www .  j  a va  2 s .c  o  m*/
    Session session = null;

    SessionFactory factory = FLRSessionFactory.getFactory();
    session = factory.openSession();

    Criteria c = session.createCriteria(FLRRechnung.class);
    c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
    c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(
            Restrictions.eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_RECHNUNG));
    if (kundeIId != null) {
        if (bStatistikadresse == true) {
            c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_KUNDE_I_ID_STATISTIKADRESSE, kundeIId));
        } else {
            c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRKUNDE)
                    .add(Restrictions.eq(KundeFac.FLR_KUNDE_I_ID, kundeIId));
        }
    }

    c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM,
            new java.sql.Date(System.currentTimeMillis())));

    try {
        ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_ZAHLUNGSMORAL_MONATE);
        Integer iAnzalMonate = (Integer) parameter.getCWertAsObject();

        Calendar cal = Calendar.getInstance();

        cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - iAnzalMonate.intValue());

        c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, new java.sql.Date(cal.getTimeInMillis())));

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

    // Filter nach Status
    Collection<String> cStati = new LinkedList<String>();
    cStati.add(RechnungFac.STATUS_BEZAHLT);

    c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, cStati));
    c.addOrder(Order.desc("c_nr"));
    try {
        ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_ZAHLUNGSMORAL_ANZAHL_RECHNUNGEN);
        Integer iAnzalRechnungen = (Integer) parameter.getCWertAsObject();
        c.setMaxResults(iAnzalRechnungen);
    } catch (RemoteException e) {
        throwEJBExceptionLPRespectOld(e);
    }

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

    if (list.size() == 0) {
        return 0;
    }
    Iterator<?> iter = list.iterator();
    int iZaehler = 0;
    int iGesamtTage = 0;

    while (iter.hasNext()) {
        FLRRechnung rech = (FLRRechnung) iter.next();

        RechnungDto rechnungDto = rechnungFindByPrimaryKey(rech.getI_id());
        if (rechnungDto.getTBezahltdatum() != null) {
            iGesamtTage += Helper.ermittleTageEinesZeitraumes(rechnungDto.getTBelegdatum(),
                    rechnungDto.getTBezahltdatum());

            iZaehler++;
        }
    }

    if (iZaehler != 0) {
        return iGesamtTage / iZaehler;
    } else {
        return 0;
    }

}

From source file:com.lp.server.rechnung.ejbfac.RechnungFacBean.java

License:Open Source License

public FLRRechnungReport[] rechnungFindByBelegdatumVonBis(String mandantCNr, Date dVon, Date dBis,
        Collection<String> cRechnungstyp, Collection<String> cStati, Integer kundeIId,
        boolean bStatistikadresse) {
    Session session = null;/*from w w w  .j a va 2 s  .c  o  m*/
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnungReport.class);
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, mandantCNr));
        c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, cStati));
        if (dVon != null) {
            c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dVon));
        }
        if (dBis != null) {
            c.add(Restrictions.lt(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dBis));
        }

        if (kundeIId != null) {
            if (bStatistikadresse == true) {

                c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_KUNDE_I_ID_STATISTIKADRESSE, kundeIId));
            } else {
                c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_KUNDE_I_ID, kundeIId));
            }
        }

        c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART)
                .add(Restrictions.in(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, cRechnungstyp));
        List<?> list = c.list();
        if (list.isEmpty()) {
            return new FLRRechnungReport[0];
        } else {
            int i = 0;
            FLRRechnungReport[] re = new FLRRechnungReport[list.size()];
            for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
                re[i++] = (FLRRechnungReport) iter.next();
            }
            return re;
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

From source file:com.lp.server.rechnung.ejbfac.RechnungFacBean.java

License:Open Source License

public ArrayList<Integer> getAngelegteRechnungen(TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;// w  w  w . j  av a 2s .  co m
    ArrayList<Integer> a = new ArrayList<Integer>();
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnung.class);
        // Filter auf Mandant
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // nur Rechnungen
        c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(Restrictions
                .eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_RECHNUNG));
        // Filter nach Status: nur angelegte
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, RechnungFac.STATUS_ANGELEGT));
        // nach RE-Nummer sortieren
        c.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_C_NR));
        // Query ausfuehren
        List<?> list = c.list();
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRRechnung item = (FLRRechnung) iter.next();
            a.add(item.getI_id());
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }
    return a;
}

From source file:com.lp.server.rechnung.ejbfac.RechnungReportFacBean.java

License:Open Source License

public JasperPrintLP printRechnungenOffene(ReportRechnungJournalKriterienDto krit, TheClientDto theClientDto)
        throws EJBExceptionLP {
    Session session = null;/*from w w  w. j  av a 2s.  c o m*/
    try {
        Map<String, Object> mapParameter = new TreeMap<String, Object>();

        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);

        this.useCase = UC_REPORT_RECHNUNGEN_OFFENE;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // Kunde oder Statistikadresse verwenden
        final String critKundeIId;
        final String critFLRKunde;
        if (krit.getBVerwendeStatistikAdresse()) {
            critKundeIId = RechnungFac.FLR_RECHNUNG_KUNDE_I_ID_STATISTIKADRESSE;
            critFLRKunde = RechnungFac.FLR_RECHNUNG_FLRSTATISTIKADRESSE;
        } else {
            critKundeIId = RechnungFac.FLR_RECHNUNG_KUNDE_I_ID;
            critFLRKunde = RechnungFac.FLR_RECHNUNG_FLRKUNDE;
        }

        List<Integer> kundenIIds = new ArrayList<Integer>();

        if (krit.kundeIId != null) {
            kundenIIds.add(krit.kundeIId);
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            Iterator<?> iter = session.createCriteria(FLRKunde.class).createAlias("flrpartner", "p")
                    .addOrder(Order.asc("p.c_name1nachnamefirmazeile1"))
                    .add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())).list().iterator();
            while (iter.hasNext())
                kundenIIds.add(((FLRKunde) iter.next()).getI_id());
        } else {
            kundenIIds.add(null);
        }

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

        for (Integer kndIId : kundenIIds) {

            Criteria c = session.createCriteria(FLRRechnungReport.class);
            // Filter nach Mandant
            c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
            // Rechnungstypen
            Collection<String> cRechnungstyp = new LinkedList<String>();
            cRechnungstyp.add(RechnungFac.RECHNUNGTYP_RECHNUNG);
            if (krit.getBGutschriftenBeruecksichtigen()) {
                cRechnungstyp.add(RechnungFac.RECHNUNGTYP_GUTSCHRIFT);
            }
            c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART)
                    .add(Restrictions.in(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, cRechnungstyp));
            // Kostenstelle
            if (krit.kostenstelleIId != null) {
                c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
            }
            if (kndIId != null) {
                c.add(Restrictions.eq(critKundeIId, kndIId));
                KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kndIId, theClientDto);
                mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatTitelAnrede());
            }
            // Filter nach einem Vertrter
            if (krit.vertreterIId != null) {
                c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_FLRVERTRETER + ".i_id", krit.vertreterIId));
            }
            String sVon = null;
            String sBis = null;
            if (krit.dVon != null) {
                c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, krit.dVon));
                sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi());
            }
            if (krit.dBis != null) {
                c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, krit.dBis));
                sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi());
            }
            LpBelegnummerFormat f = getBelegnummerGeneratorObj()
                    .getBelegnummernFormat(theClientDto.getMandant());
            Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
            String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG)
                    .getCWert();
            if (krit.sBelegnummerVon != null) {
                sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                        sMandantKuerzel, krit.sBelegnummerVon);
                c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_C_NR, sVon));
            }
            if (krit.sBelegnummerBis != null) {
                sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr,
                        sMandantKuerzel, krit.sBelegnummerBis);
                c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_C_NR, sBis));
            }
            // Alle Stati ausser Angelegt, Bezahlt, Storniert
            Collection<String> cStati = new LinkedList<String>();
            cStati.add(RechnungFac.STATUS_ANGELEGT);
            cStati.add(RechnungFac.STATUS_STORNIERT);

            c.add(Restrictions.not(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, cStati)));

            c.add(Restrictions.or(Restrictions.gt("t_bezahltdatum", krit.getTStichtag()),
                    Restrictions.isNull("t_bezahltdatum")));

            boolean mitNichtZugeordnetenBelegen = false;
            // Sortierung nach Kostenstelle
            if (krit.bSortiereNachKostenstelle) {
                c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
            }
            // Sortierung nach Kunde
            if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
                c.createCriteria(critFLRKunde).createCriteria(KundeFac.FLR_PARTNER)
                        .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
                c.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_C_NR));
                mitNichtZugeordnetenBelegen = krit.getBMitNichtZugeordnetendBelegen();
            }
            // Sortierung nach Belegnummer
            else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
                c.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_C_NR));
            } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
                c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRVERTRETER)
                        .addOrder(Order.asc(PersonalFac.FLR_PERSONAL_C_KURZZEICHEN));
            } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_FAELLIGKEIT) {
                c.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_T_FAELLIGKEIT))
                        .addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_C_NR));
            }
            // stichtag ab belegdatum
            c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, krit.getTStichtag()));
            List<?> firstResultList = c.list();
            Iterator<?> firstResultListIterator = firstResultList.iterator();
            List<FLRRechnungReport> resultList = new LinkedList<FLRRechnungReport>();
            while (firstResultListIterator.hasNext()) {
                FLRRechnungReport re = (FLRRechnungReport) firstResultListIterator.next();
                // stichtag bereits bezahlt?
                if (re.getT_bezahltdatum() == null || !krit.getTStichtag().after(re.getT_bezahltdatum())) {
                    resultList.add(re);
                }
            }
            Iterator<?> resultListIterator = resultList.iterator();
            int row = 0;
            Object[][] tempData = new Object[resultList.size()][OFFENE_ANZAHL_SPALTEN];

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

            if (mitNichtZugeordnetenBelegen && kundeDto.getIidDebitorenkonto() != 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", kundeDto.getIidDebitorenkonto())
                                + (krit.getTStichtag() == null ? ""
                                        : (" AND buchung.d_buchungsdatum<='"
                                                + Helper.formatDateWithSlashes(krit.getTStichtag()) + "'")));

                @SuppressWarnings("unchecked")
                List<FLRFinanzBuchungDetail> bdList = query.list();
                if (bdList.size() > 0) {
                    if (tempData.length < 1) {
                        tempData = new Object[1][OFFENE_ANZAHL_SPALTEN];
                        String sFirma = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1();
                        tempData[row][OFFENE_FELD_FIRMA] = sFirma;
                        tempData[row][OFFENE_FELD_DEBITORENNR] = kundeDto.getIidDebitorenkonto() != null
                                ? getFinanzFac().kontoFindByPrimaryKey(kundeDto.getIidDebitorenkonto()).getCNr()
                                : null;
                    }
                    tempData[0][OFFENE_SUBREPORT_OFFENE_BUCHUNGEN] = FinanzSubreportGenerator
                            .createBuchungsdetailSubreport(bdList, true);
                }
            }

            while (resultListIterator.hasNext()) {
                FLRRechnungReport re = (FLRRechnungReport) resultListIterator.next();
                RechnungDto reDto = getRechnungFac().rechnungFindByPrimaryKey(re.getI_id());
                // Kunde oder Statistikadresse?
                final Integer kundeIId, kundeIIdStatistik;
                if (krit.getBVerwendeStatistikAdresse()) {
                    kundeIId = reDto.getKundeIIdStatistikadresse();
                } else {
                    kundeIId = reDto.getKundeIId();
                    // Statistikdaten wenn nicht Kriterium Statistikadresse
                    kundeIIdStatistik = reDto.getKundeIIdStatistikadresse();

                    KundeDto kundeDtoStatistik = getKundeFac().kundeFindByPrimaryKey(kundeIIdStatistik,
                            theClientDto);
                    String sFirmaStatistik = kundeDtoStatistik.getPartnerDto().getCName1nachnamefirmazeile1();

                    String sKundeLKZStatistik = null;
                    if (kundeDtoStatistik.getPartnerDto().getLandplzortDto() != null) {
                        sKundeLKZStatistik = kundeDtoStatistik.getPartnerDto().getLandplzortDto().getLandDto()
                                .getCLkz();
                    }
                    tempData[row][OFFENE_FELD_FIRMA_STATISTIK] = sFirmaStatistik;
                    tempData[row][OFFENE_FELD_FIRMA_LKZ_STATISTIK] = sKundeLKZStatistik;

                }

                if (kundeDto == null || kundeDto.getIId() != kundeIId) {
                    kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto);
                }

                String sFirma = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1();

                String sKundeLKZ = null;
                if (kundeDto.getPartnerDto().getLandplzortDto() != null) {
                    sKundeLKZ = kundeDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz();
                }
                tempData[row][OFFENE_FELD_RECHNUNGART] = re.getFlrrechnungart().getRechnungtyp_c_nr();
                tempData[row][OFFENE_FELD_RECHNUNGSNUMMER] = reDto.getCNr();
                tempData[row][OFFENE_FELD_FIRMA] = sFirma;
                tempData[row][OFFENE_FELD_FIRMA_LKZ] = sKundeLKZ;
                tempData[row][OFFENE_FELD_RECHNUNGSDATUM] = re.getD_belegdatum();

                tempData[row][OFFENE_FELD_KURS] = re.getN_kurs();
                tempData[row][OFFENE_FELD_WAEHRUNG] = re.getWaehrung_c_nr();
                tempData[row][OFFENE_FELD_DEBITORENNR] = kundeDto.getIidDebitorenkonto() != null
                        ? getFinanzFac().kontoFindByPrimaryKey(kundeDto.getIidDebitorenkonto()).getCNr()
                        : null;

                // Vertreter
                if (re.getFlrvertreter() != null) {
                    if (re.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                        tempData[row][OFFENE_FELD_VERTRETER] = re.getFlrvertreter().getFlrpartner()
                                .getC_name1nachnamefirmazeile1() + " "
                                + re.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2();
                    } else {
                        tempData[row][OFFENE_FELD_VERTRETER] = re.getFlrvertreter().getFlrpartner()
                                .getC_name1nachnamefirmazeile1();
                    }
                }
                // datum der letzten zahlung bis zum stichtag ermitteln
                RechnungzahlungDto[] zahlungen = getRechnungFac().zahlungFindByRechnungIId(re.getI_id());
                java.sql.Date dZahldatum = null;
                for (int i = 0; i < zahlungen.length; i++) {
                    if ((dZahldatum == null || zahlungen[i].getDZahldatum().after(dZahldatum))
                            && !zahlungen[i].getDZahldatum().after(krit.getTStichtag())) {
                        dZahldatum = new Date(zahlungen[i].getDZahldatum().getTime());
                    }
                }
                // Zahlungsbetrag bis zum Stichtag ermitteln
                BigDecimal bdBezahlt = new BigDecimal(0);
                for (int i = 0; i < zahlungen.length; i++) {
                    if (!zahlungen[i].getDZahldatum().after(krit.getTStichtag())) {
                        bdBezahlt = bdBezahlt.add(zahlungen[i].getNBetrag());
                    }
                }
                if (reDto.getKostenstelleIId() != null) {
                    KostenstelleDto kstDto = getSystemFac()
                            .kostenstelleFindByPrimaryKey(reDto.getKostenstelleIId());
                    tempData[row][OFFENE_FELD_KOSTENSTELLE] = kstDto.getCNr();
                }

                if (reDto.getNWert() == null) {
                    EJBExceptionLP ex = new EJBExceptionLP(EJBExceptionLP.FEHLER_RECHNUNG_HAT_KEINEN_WERT, "");
                    ArrayList<Object> alInfo = new ArrayList<Object>();
                    alInfo.add("ID: " + reDto.getIId());
                    alInfo.add("Nr: " + reDto.getCNr());
                    ex.setAlInfoForTheClient(alInfo);
                    throw ex;
                }
                BigDecimal bdWertBrutto = reDto.getNWert().add(reDto.getNWertust());
                BigDecimal bdWertNetto = reDto.getNWert();

                BigDecimal bdWertBruttoFW = reDto.getNWertfw().add(reDto.getNWertustfw());
                BigDecimal bdWertNettoFW = reDto.getNWertfw();

                BigDecimal bdBezahltUst = getRechnungFac().getBereitsBezahltWertVonRechnungUst(reDto.getIId(),
                        null, krit.getTStichtag());
                BigDecimal bdBezahltNetto = getRechnungFac().getBereitsBezahltWertVonRechnung(reDto.getIId(),
                        null, krit.getTStichtag());

                BigDecimal bdBezahltUstFw = getRechnungFac()
                        .getBereitsBezahltWertVonRechnungUstFw(reDto.getIId(), null, krit.getTStichtag());
                BigDecimal bdBezahltNettoFw = getRechnungFac()
                        .getBereitsBezahltWertVonRechnungFw(reDto.getIId(), null, krit.getTStichtag());

                BigDecimal bdNettoOffenFw = reDto.getNWertfw().subtract(bdBezahltNettoFw);

                BigDecimal bdUstOffenFw = reDto.getNWertustfw().subtract(bdBezahltUstFw);

                BigDecimal bdNettoOffenMandWhg = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdNettoOffenFw,
                        reDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), krit.getTStichtag(),
                        theClientDto);
                BigDecimal bdUstOffenMandWhg = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdUstOffenFw,
                        reDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), krit.getTStichtag(),
                        theClientDto);

                BigDecimal bdUstAnzahlungMandWhg = new BigDecimal(0);
                BigDecimal bdNettoAnzahlungMandWhg = new BigDecimal(0);
                BigDecimal bdUstAnzahlungFW = new BigDecimal(0);
                BigDecimal bdNettoAnzahlungFW = new BigDecimal(0);
                if (reDto.getAuftragIId() != null
                        && reDto.getRechnungartCNr().equals(RechnungFac.RECHNUNGART_SCHLUSSZAHLUNG)) {
                    bdNettoAnzahlungMandWhg = getLocaleFac().rechneUmInAndereWaehrungZuDatum(
                            getRechnungFac().getAnzahlungenZuSchlussrechnungFw(reDto.getIId()),
                            reDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), krit.getTStichtag(),
                            theClientDto);
                    bdUstAnzahlungMandWhg = getLocaleFac().rechneUmInAndereWaehrungZuDatum(
                            getRechnungFac().getAnzahlungenZuSchlussrechnungUstFw(reDto.getIId()),
                            reDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), krit.getTStichtag(),
                            theClientDto);

                }

                tempData[row][OFFENE_FELD_WERT_BRUTTO_ANZAHLUNGEN] = bdNettoAnzahlungMandWhg
                        .add(bdUstAnzahlungMandWhg);
                tempData[row][OFFENE_FELD_WERT_NETTO_ANZAHLUNGEN] = bdNettoAnzahlungMandWhg;
                tempData[row][OFFENE_FELD_WERT_BRUTTO_ANZAHLUNGEN_FW] = bdNettoAnzahlungFW
                        .add(bdUstAnzahlungFW);
                tempData[row][OFFENE_FELD_WERT_NETTO_ANZAHLUNGEN_FW] = bdNettoAnzahlungFW;

                // SP554
                bdNettoOffenMandWhg = bdNettoOffenMandWhg.subtract(bdNettoAnzahlungMandWhg);
                bdUstOffenMandWhg = bdUstOffenMandWhg.subtract(bdUstAnzahlungMandWhg);

                if (re.getFlrrechnungart().getRechnungtyp_c_nr().equals(RechnungFac.RECHNUNGTYP_RECHNUNG)) {
                    tempData[row][OFFENE_FELD_WERT_BRUTTO] = bdWertBrutto;
                    tempData[row][OFFENE_FELD_WERT_NETTO] = bdWertNetto;
                    tempData[row][OFFENE_FELD_WERT_BRUTTO_OFFEN] = bdNettoOffenMandWhg.add(bdUstOffenMandWhg);
                    tempData[row][OFFENE_FELD_WERT_NETTO_OFFEN] = bdNettoOffenMandWhg;

                    // FW
                    tempData[row][OFFENE_FELD_WERT_BRUTTO_FW] = bdWertBruttoFW;
                    tempData[row][OFFENE_FELD_WERT_NETTO_FW] = bdWertNettoFW;
                    tempData[row][OFFENE_FELD_WERT_BRUTTO_OFFEN_FW] = bdNettoOffenFw.add(bdUstOffenFw);
                    tempData[row][OFFENE_FELD_WERT_NETTO_OFFEN_FW] = bdNettoOffenFw;

                } else if (re.getFlrrechnungart().getRechnungtyp_c_nr()
                        .equals(RechnungFac.RECHNUNGTYP_GUTSCHRIFT)) {
                    tempData[row][OFFENE_FELD_WERT_BRUTTO] = bdWertBrutto.negate();
                    tempData[row][OFFENE_FELD_WERT_NETTO] = bdWertNetto.negate();
                    tempData[row][OFFENE_FELD_WERT_BRUTTO_OFFEN] = bdNettoOffenMandWhg.add(bdUstOffenMandWhg)
                            .negate();
                    tempData[row][OFFENE_FELD_WERT_NETTO_OFFEN] = bdNettoOffenMandWhg.negate();

                    // FW
                    tempData[row][OFFENE_FELD_WERT_BRUTTO_FW] = bdWertBruttoFW.negate();
                    tempData[row][OFFENE_FELD_WERT_NETTO_FW] = bdWertNettoFW.negate();
                    tempData[row][OFFENE_FELD_WERT_BRUTTO_OFFEN_FW] = bdNettoOffenFw.add(bdUstOffenFw).negate();
                    tempData[row][OFFENE_FELD_WERT_NETTO_OFFEN_FW] = bdNettoOffenFw.negate();

                }

                tempData[row][OFFENE_FELD_MAHNDATUM] = getMahnwesenFac()
                        .getAktuellesMahndatumEinerRechnung(reDto.getIId(), theClientDto);
                tempData[row][OFFENE_FELD_MAHNSTUFE] = getMahnwesenFac()
                        .getAktuelleMahnstufeEinerRechnung(reDto.getIId(), theClientDto);
                tempData[row][OFFENE_FELD_MAHNSPERRE] = reDto.getTMahnsperrebis();
                // Faelligkeitsdatum
                // java.sql.Date dFaellig;
                // if (reDto.getZahlungszielIId() != null) {
                // dFaellig =
                // getMandantFac().berechneZielDatumFuerBelegdatum(reDto
                // .getTBelegdatum(),
                // reDto.getZahlungszielIId(), theClientDto);
                // }
                // else {
                // dFaellig = new
                // java.sql.Date(reDto.getTBelegdatum().getTime());
                // }
                if (re.getT_faelligkeit() != null) {
                    tempData[row][OFFENE_FELD_FAELLIGKEITSDATUM] = new java.util.Date(
                            re.getT_faelligkeit().getTime());
                } else {
                    throw new EJBExceptionLP(EJBExceptionLP.FEHLER_RECHNUNG_FAELLIGKEIT_NICHT_BERECHENBAR,
                            new Exception("Faelligkeit nicht berechenbar"));
                }
                // Differenz in Tagen: Stichtag - Faelligkeitsdatum
                tempData[row][OFFENE_FELD_TAGE_BIS_FAELLIGKEITSDATUM] = Helper
                        .getDifferenzInTagen(krit.getTStichtag(), re.getT_faelligkeit());
                row++;
            }
            dataList.addAll(Arrays.asList(tempData));
        }

        data = dataList.toArray(new Object[0][]);

        // Waehrung
        mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr());
        mapParameter.put("P_STICHTAG", Helper.formatDatum(krit.getTStichtag(), theClientDto.getLocUi()));
        StringBuffer sSortierung = new StringBuffer();
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            if (krit.getBVerwendeStatistikAdresse()) {
                sSortierung.append(getTextRespectUISpr("rech.statistikadresse", theClientDto.getMandant(),
                        theClientDto.getLocUi()));
            } else {
                sSortierung.append(
                        getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
            }
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(getTextRespectUISpr("rechnung.rechnungsnummer", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.vertreter", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_FAELLIGKEIT) {
            sSortierung.append(
                    getTextRespectUISpr("lp.faelligkeit", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        mapParameter.put(LPReport.P_SORTIERENACHKUNDE,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));
        mapParameter.put(LPReport.P_SORTIERENACHVERTRETER,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER));

        String sZessionstext = null;
        sZessionstext = getParameterFac().parametermandantFindByPrimaryKey(ParameterFac.PARAMETER_ZESSIONSTEXT,
                ParameterFac.KATEGORIE_ALLGEMEIN, theClientDto.getMandant()).getCWert();
        if (sZessionstext != null) {
            mapParameter.put("P_ZESSIONSTEXT", sZessionstext);
        }
        /**
         * @todo zinsen PJ 4538
         */

        initJRDS(mapParameter, RechnungReportFac.REPORT_MODUL, RechnungReportFac.REPORT_RECHNUNGEN_OFFENE,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
        // }
        // catch (FinderException ex) {
        // { // @ToDo FinderException
        // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_DRUCKEN,
        // null);
        // }
        // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_DRUCKEN, ex);
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        try {
            session.close();
        } catch (HibernateException he) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER, he);
        }
    }
}

From source file:com.lp.server.rechnung.ejbfac.RechnungReportFacBean.java

License:Open Source License

public JasperPrintLP printZahlungsjournal(TheClientDto theClientDto, int iSortierung, Date dVon, Date dBis,
        Integer bankverbindungIId, boolean bSortierungNachKostenstelle) throws EJBExceptionLP {
    this.useCase = UC_REPORT_ZAHLUNGSJOURNAL;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;/*from  w w w.  j  av a 2s  .  c om*/
    try {
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnungZahlung.class);
        // Filter von/bis
        if (dVon != null) {
            c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_ZAHLUNG_D_ZAHLDATUM, dVon));
        }
        if (dBis != null) {
            c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_ZAHLUNG_D_ZAHLDATUM, dBis));
        }

        if (bankverbindungIId != null) {
            c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_ZAHLUNG_BANKVERBINDUNG_I_ID, bankverbindungIId));
        }

        Criteria cRechnung = c.createCriteria(RechnungFac.FLR_RECHNUNG_ZAHLUNG_FLRRECHNUNG);
        // Filter nach Mandant
        cRechnung.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Sortierung

        if (bSortierungNachKostenstelle) {
            cRechnung.createCriteria(RechnungFac.FLR_RECHNUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
        }

        if (iSortierung == RechnungReportFac.REPORT_ZAHLUNGEN_SORT_BANK_AUSZUG) {
            // SK full_join wird hier benoetigt damit auch Gutschriften die
            // keine Bankverbindung haben angedruckt werden
            c.createCriteria(RechnungFac.FLR_RECHNUNG_ZAHLUNG_FLRBANKVERBINDUNG,
                    CriteriaSpecification.FULL_JOIN)
                    .createCriteria(FinanzFac.FLR_BANKKONTO_FLRBANK, CriteriaSpecification.FULL_JOIN)
                    .createCriteria(BankFac.FLR_PARTNERBANK_FLRPARTNER, CriteriaSpecification.FULL_JOIN)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1));

            c.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_ZAHLUNG_I_AUSZUG));
        } else if (iSortierung == RechnungReportFac.REPORT_ZAHLUNGEN_SORT_RECHNUNGSNUMMER) {
            cRechnung.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_C_NR));
        } else if (iSortierung == RechnungReportFac.REPORT_ZAHLUNGEN_SORT_ZAHLUNGSAUSGANG) {
            c.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_ZAHLUNG_D_ZAHLDATUM));
        }
        List<?> resultList = c.list();
        Iterator<?> resultListIterator = resultList.iterator();
        int row = 0;
        data = new Object[resultList.size()][ZAHLUNGEN_ANZAHL_FELDER];

        while (resultListIterator.hasNext()) {
            FLRRechnungZahlung zahlung = (FLRRechnungZahlung) resultListIterator.next();
            RechnungDto erDto = getRechnungFac().rechnungFindByPrimaryKey(zahlung.getRechnung_i_id());
            String sErCNr = erDto.getCNr();
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(erDto.getKundeIId(), theClientDto);

            String sFirma = kundeDto.getPartnerDto().formatAnrede();
            data[row][ZAHLUNGEN_FELD_DEBITORENKONTO] = kundeDto.getIDebitorenkontoAsIntegerNotiId();
            data[row][ZAHLUNGEN_FELD_ER_C_NR] = sErCNr;
            data[row][ZAHLUNGEN_FELD_KOSTENSTELLE] = zahlung.getFlrrechnung().getFlrkostenstelle().getC_nr();
            data[row][ZAHLUNGEN_FELD_RECHNUNGSART] = erDto.getRechnungartCNr();
            data[row][ZAHLUNGEN_FELD_FIRMA] = sFirma;
            data[row][ZAHLUNGEN_FELD_ZAHLDATUM] = zahlung.getD_zahldatum();

            String sLaenderart = getFinanzServiceFac().getLaenderartZuPartner(kundeDto.getPartnerIId(),
                    theClientDto);
            data[row][ZAHLUNGEN_FELD_LAENDERART] = sLaenderart;
            if (zahlung.getFlrbankverbindung() != null) {
                data[row][ZAHLUNGEN_FELD_BANK] = zahlung.getFlrbankverbindung().getFlrbank().getFlrpartner()
                        .getC_name1nachnamefirmazeile1();
            } else {
            }
            data[row][ZAHLUNGEN_FELD_AUSZUG] = zahlung.getI_auszug();
            data[row][ZAHLUNGEN_FELD_WECHSEL] = zahlung.getD_wechsel_faellig_am();
            data[row][ZAHLUNGEN_FELD_BELEGWAEHRUNG] = erDto.getWaehrungCNr();
            if (zahlung.getFlrbankverbindung() != null) {
                data[row][ZAHLUNGEN_FELD_KONTO] = zahlung.getFlrbankverbindung().getC_kontonummer();
            }
            if (RechnungFac.RECHNUNGART_GUTSCHRIFT.equals(erDto.getRechnungartCNr())) {
                data[row][ZAHLUNGEN_FELD_BETRAG] = zahlung.getN_betrag().negate();
                data[row][ZAHLUNGEN_FELD_BETRAG_UST] = zahlung.getN_betrag_ust().negate();
                data[row][ZAHLUNGEN_FELD_BETRAG_MANDANTENWAEHRUNG_ZU_BELEGZEIT] = zahlung.getN_betragfw()
                        .multiply(erDto.getNKurs()).negate();
                data[row][ZAHLUNGEN_FELD_BETRAG_UST_MANDANTENWAEHRUNG_ZU_BELEGZEIT] = zahlung
                        .getN_betrag_ustfw().multiply(erDto.getNKurs()).negate();
                data[row][ZAHLUNGEN_FELD_BETRAG_FW] = zahlung.getN_betragfw().negate();
                data[row][ZAHLUNGEN_FELD_BETRAG_UST_FW] = zahlung.getN_betrag_ustfw().negate();
            } else {
                data[row][ZAHLUNGEN_FELD_BETRAG] = zahlung.getN_betrag();
                data[row][ZAHLUNGEN_FELD_BETRAG_UST] = zahlung.getN_betrag_ust();
                data[row][ZAHLUNGEN_FELD_BETRAG_MANDANTENWAEHRUNG_ZU_BELEGZEIT] = zahlung.getN_betragfw()
                        .multiply(erDto.getNKurs());
                data[row][ZAHLUNGEN_FELD_BETRAG_UST_MANDANTENWAEHRUNG_ZU_BELEGZEIT] = zahlung
                        .getN_betrag_ustfw().multiply(erDto.getNKurs());
                data[row][ZAHLUNGEN_FELD_BETRAG_FW] = zahlung.getN_betragfw();
                data[row][ZAHLUNGEN_FELD_BETRAG_UST_FW] = zahlung.getN_betrag_ustfw();
            }
            data[row][ZAHLUNGEN_FELD_ZAHLUNGSART] = zahlung.getZahlungsart_c_nr();
            if (zahlung.getFlrkassenbuch() != null) {
                data[row][ZAHLUNGEN_FELD_KASSENBUCH] = zahlung.getFlrkassenbuch().getC_bez();
            } else {
                data[row][ZAHLUNGEN_FELD_KASSENBUCH] = "";
            }
            row++;
        }
    } catch (RemoteException e) {
        throwEJBExceptionLPRespectOld(e);
    } finally {
        try {
            session.close();
        } catch (HibernateException he) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER, he);
        }
    }
    Map<String, Object> mapParameter = new TreeMap<String, Object>();
    mapParameter.put("VON", dVon);
    mapParameter.put("BIS", dBis);

    mapParameter.put("WAEHRUNG_C_NR", theClientDto.getSMandantenwaehrung());

    String sSortierung = null;
    if (iSortierung == RechnungReportFac.REPORT_ZAHLUNGEN_SORT_BANK_AUSZUG) {
        sSortierung = "Bank, Auszug";
    } else if (iSortierung == RechnungReportFac.REPORT_ZAHLUNGEN_SORT_RECHNUNGSNUMMER) {
        sSortierung = "Rechnungsnummer";
    } else if (iSortierung == RechnungReportFac.REPORT_ZAHLUNGEN_SORT_ZAHLUNGSAUSGANG) {
        sSortierung = "Zahlungseingangsdatum";
    }
    mapParameter.put("SORTIERUNG", sSortierung);

    mapParameter.put("P_SORTIERTNACHKOSTENSTELLE", new Boolean(bSortierungNachKostenstelle));

    initJRDS(mapParameter, RechnungReportFac.REPORT_MODUL, RechnungReportFac.REPORT_ZAHLUNGSJOURNAL,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    return getReportPrint();
}

From source file:com.lp.server.rechnung.ejbfac.RechnungReportFacBean.java

License:Open Source License

private JasperPrintLP buildWarenausgangsjournal(ReportRechnungJournalKriterienDto krit,
        TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;/*  w w w  .  java2 s .  co  m*/
    try {

        String querySelect = "SELECT R.C_NR AS R_C_NR," + "R.T_BELEGDATUM AS R_T_BELEGDATUM," + "COALESCE "
                + "(LP.N_NETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT, P.N_NETTOEINZELPREISPLUSAUFSCHLAGMINUSRABATT, P.N_NETTOEINZELPREIS ) "
                + "AS P_N_NETTOEINZELPREISPLUSAUFSCHLAGMINUSRABATT,"
                + "PN.C_NAME1NACHNAMEFIRMAZEILE1 AS PN_C_NAME1NACHNAMEFIRMAZEILE1,"
                + "KN.I_KUNDENNUMMER AS KN_I_KUNDENNUMMER," + "AR.C_NR AS AR_C_NR," + "ARS.C_BEZ AS ARS_C_BEZ,"
                + "ARK.C_NR AS ARK_C_NR," + "ARG.C_NR AS ARG_C_NR," + "LA.C_LKZ AS LA_C_LKZ,"
                + "AR.C_WARENVERKEHRSNUMMER AS AR_C_WARENVERKEHRSNUMMER,"
                + "COALESCE (LP.N_MENGE, P.N_MENGE) AS P_N_MENGE,"
                + "COALESCE (cast (LP.EINHEIT_C_NR AS VARCHAR), cast (P.EINHEIT_C_NR AS VARCHAR)) AS P_EINHEIT_C_NR,"
                + "ARS.C_ZBEZ AS ARS_C_ZBEZ," + "R.N_PROVISION AS R_N_PROVISION,"
                + "PE.C_KURZZEICHEN AS PE_C_KURZZEICHEN," + "KNTE.C_NR AS KNTE_C_NR,"
                + "KNTD.C_NR AS KNTD_C_NR," + "LPO.C_PLZ AS LPO_C_PLZ," + "LA2.C_LKZ AS LA2_C_LKZ,"
                + "PN.C_STRASSE AS PN_C_STRASSE,"
                + "COALESCE (LSPOSMWSTSATZ.F_MWSTSATZ, POSMWSTSATZ.F_MWSTSATZ, MWSTSATZ.F_MWSTSATZ) AS MWSTSATZ_F_MWSTSATZ,"
                + "BRANCH.C_NR AS BRANCH_C_NR," + "cast (PARTKL.C_NR AS VARCHAR) AS PARTKL_C_NR,"
                + "LA2.C_LKZ AS LA2_C_LKZ," + "L.C_NR AS L_C_NR," + "L.T_BELEGDATUM AS L_T_BELEGDATUM,"
                + "PARTNER_STATISTIK.I_ID AS PART_STATISTIK_I_ID,"
                + "cast (PARTNER_STATISTIK.ANREDE_C_NR AS VARCHAR) AS PART_STATISTIK_ANREDE_C_NR,"
                + "PARTNER_STATISTIK.C_NAME1NACHNAMEFIRMAZEILE1 AS PARTNER_STATISTIK_C_NAME1,"
                + "PARTNER_STATISTIK.C_NAME2VORNAMEFIRMAZEILE2 AS PARTNER_STATISTIK_C_NAME2,"
                + "PARTNER_STATISTIK.C_NAME3VORNAME2ABTEILUNG AS PARTNER_STATISTIK_C_NAME3_ABTEILUNG,"
                + "PARTNER_STATISTIK.C_STRASSE AS PARTNER_STATISTIK_C_STRASSE,"
                + "PARTNER_STATISTIK_LAND.C_LKZ AS PARTNER_STATISTIK_C_LKZ,"
                + "PARTNER_STATISTIK_ORT.C_NAME AS PARTNER_STATISTIK_C_ORT,"
                + "PARTNER_STATISTIK_LPO.C_PLZ AS PARTNER_STATISTIK_C_PLZ," + "PN.I_ID AS PARTNER_I_ID,"
                + "cast (R.WAEHRUNG_C_NR AS VARCHAR)AS R_WAEHRUNG_C_NR," + "R.N_KURS AS R_N_KURS,"
                + "R.RECHNUNGART_C_NR AS R_RECHNUNGART_C_NR,"
                + "R.RECHNUNG_I_ID_ZURECHNUNG AS R_RECHNUNG_I_ID_ZURECHNUNG,"
                + "AR.F_VERTRETERPROVISIONMAX AS AR_F_VERTRETERPROVISIONMAX,"
                + "COALESCE (R.C_BESTELLNUMMER,L.C_BESTELLNUMMER) AS R_BESTELLNUMMER,"
                + "KNRECHNUNGSADRESSELS.I_KUNDENNUMMER AS KN_RECHNUNGSADRESSELS_I_KUNDENNUMMER,"
                + "PARTNERRECHNUNGSADRESSELS.C_NAME1NACHNAMEFIRMAZEILE1 AS PARTNERRECHNUNGSADRESSELSBEZEICHNUNG,"
                + "PARTNERRECHNUNGSADRESSELS.C_KBEZ AS PARTNERRECHNUNGSADRESSELSKBEZ,"
                + "KN.C_HINWEISEXTERN AS KUNDEHINWEISEXTERN," + "KN.C_HINWEISINTERN AS KUNDEHINWEISINTERN,"
                + "PEPROVISION.C_KURZZEICHEN AS PEPROVISION_C_KURZZEICHEN,"
                + "AR.F_GEWICHTKG AS ARTIKELGEWICHTKG," + "RELAGER.C_NR AS RELAGERCNR,"
                + "LSLAGER.C_NR AS LSLAGERCNR," + "LSZIELLAGER.C_NR AS LSZIELLAGERCNR,"
                + "KNLIEFERADRESSELS.I_KUNDENNUMMER AS KN_KNLIEFERADRESSELS_I_KUNDENNUMMER,"
                + "cast(COALESCE (P.X_TEXTINHALT,LP.X_TEXTINHALT) AS VARCHAR) AS R_TEXTINHALT, "
                + "PLIEFERADRESSELS.C_ILN AS C_ILNLIEFERADRESSELS, " + "PN.C_ILN AS C_ILNPARTNER, "
                + "PLIEFERADRESSELS.I_ID AS PART_STATISTIK_I_ID,"
                + "cast (PLIEFERADRESSELS.ANREDE_C_NR AS VARCHAR) AS PLIEFERADRESSELS_ANREDE_C_NR,"
                + "PLIEFERADRESSELS.C_NAME1NACHNAMEFIRMAZEILE1 AS PLIEFERADRESSELS_C_NAME1,"
                + "PLIEFERADRESSELS.C_NAME2VORNAMEFIRMAZEILE2 AS PLIEFERADRESSELS_C_NAME2,"
                + "PLIEFERADRESSELS.C_NAME3VORNAME2ABTEILUNG AS PLIEFERADRESSELS_C_NAME3_ABTEILUNG,"
                + "PLIEFERADRESSELS.C_STRASSE AS PLIEFERADRESSELS_C_STRASSE,"
                + "PLIEFERADRESSELS_LAND.C_LKZ AS PLIEFERADRESSELS_C_LKZ,"
                + "PLIEFERADRESSELS_ORT.C_NAME AS PLIEFERADRESSELS_C_ORT,"
                + "PLIEFERADRESSELS_LPO.C_PLZ AS PLIEFERADRESSELS_C_PLZ, " + "BEGR.C_NR AS BEGR_C_NR, "
                + "ABP.T_UEBERSTEUERTERLIEFERTERMIN AS UEBERSTEUERTERLIEFERTERMIN, "
                + "KN.I_LIEFERDAUER AS LIEFERDAUER, " + "AB.C_NR AS AUFTRAGSNUMMER, "
                + "ABG.C_NR AS AUFTRGABEGRUENDUNG, "
                + " COALESCE ( (SELECT AVG(N_GESTEHUNGSPREIS) FROM WW_LAGERBEWEGUNG WHERE I_BELEGARTPOSITIONID=P.I_ID AND C_BELEGARTNR=R.RECHNUNGART_C_NR AND B_HISTORIE=0),(SELECT AVG(N_GESTEHUNGSPREIS) FROM WW_LAGERBEWEGUNG WHERE I_BELEGARTPOSITIONID=LP.I_ID AND C_BELEGARTNR='Lieferschein' AND B_HISTORIE=0)) AS GESTPREIS,"
                + " KT.C_BEZ, " + "CASE WHEN LP.POSITION_I_ID_ARTIKELSET IS NULL THEN "
                + " CASE WHEN (SELECT COUNT(*) FROM LS_LIEFERSCHEINPOSITION WHERE POSITION_I_ID_ARTIKELSET=LP.I_ID) > 0 THEN 'Kopf' "
                + " ELSE NULL END "
                + "ELSE 'Position' END AS ARTIKELSETART, COALESCE (R.C_BEZ,L.C_BEZ) AS R_BEZ ";

        String queryFrom = "FROM RECH_RECHNUNG R "
                + "INNER JOIN RECH_RECHNUNGPOSITION P ON P.RECHNUNG_I_ID=R.I_ID "
                + "LEFT OUTER JOIN LS_LIEFERSCHEIN L ON L.I_ID=P.LIEFERSCHEIN_I_ID "
                + "LEFT OUTER JOIN LS_LIEFERSCHEINPOSITION LP ON LP.LIEFERSCHEIN_I_ID=P.LIEFERSCHEIN_I_ID "
                + "LEFT OUTER JOIN PART_KUNDE KN ON KN.I_ID=R.KUNDE_I_ID "
                + "LEFT OUTER JOIN PART_PARTNER PN ON PN.I_ID=KN.PARTNER_I_ID "
                + "LEFT OUTER JOIN WW_ARTIKEL AR ON AR.I_ID=COALESCE(LP.ARTIKEL_I_ID, P.ARTIKEL_I_ID) "
                + "LEFT OUTER JOIN WW_ARTKLA ARK ON ARK.I_ID=AR.ARTKLA_I_ID "
                + "LEFT OUTER JOIN WW_ARTGRU ARG ON ARG.I_ID=AR.ARTGRU_I_ID "
                + "LEFT OUTER JOIN LP_LAND LA ON LA.I_ID=AR.LAND_I_ID_URSPRUNGSLAND "
                + "LEFT OUTER JOIN PERS_PERSONAL PE ON PE.I_ID=R.PERSONAL_I_ID_VERTRETER "
                + "LEFT OUTER JOIN FB_KONTO KNTE ON KNTE.I_ID=KN.KONTO_I_ID_ERLOESEKONTO "
                + "LEFT OUTER JOIN FB_KONTO KNTD ON KNTD.I_ID=KN.KONTO_I_ID_DEBITORENKONTO "
                + "LEFT OUTER JOIN LP_LANDPLZORT LPO ON LPO.I_ID=PN.LANDPLZORT_I_ID "
                + "LEFT OUTER JOIN LP_LAND LA2 ON LA2.I_ID=LPO.LAND_I_ID "
                + "LEFT OUTER JOIN LP_MWSTSATZ MWSTSATZ ON MWSTSATZ.I_ID=R.MWSTSATZ_I_ID "
                + "LEFT OUTER JOIN LP_MWSTSATZ POSMWSTSATZ ON POSMWSTSATZ.I_ID=P.MWSTSATZ_I_ID "
                + "LEFT OUTER JOIN LP_MWSTSATZ LSPOSMWSTSATZ ON LSPOSMWSTSATZ.I_ID=LP.MWSTSATZ_I_ID "
                + "LEFT OUTER JOIN PART_BRANCHE BRANCH ON BRANCH.I_ID=PN.BRANCHE_I_ID "
                + "LEFT OUTER JOIN PART_PARTNERKLASSE PARTKL ON PARTKL.I_ID=PN.PARTNERKLASSE_I_ID "
                + "LEFT OUTER JOIN PART_KUNDE KNSTATISTIK ON KNSTATISTIK.I_ID=R.KUNDE_I_ID_STATISTIKADRESSE "
                + "LEFT OUTER JOIN PART_PARTNER PARTNER_STATISTIK ON PARTNER_STATISTIK.I_ID = KNSTATISTIK.PARTNER_I_ID "
                + "LEFT OUTER JOIN LP_LANDPLZORT PARTNER_STATISTIK_LPO ON PARTNER_STATISTIK_LPO.I_ID=PARTNER_STATISTIK.LANDPLZORT_I_ID "
                + "LEFT OUTER JOIN LP_LAND PARTNER_STATISTIK_LAND ON PARTNER_STATISTIK_LAND.I_ID=PARTNER_STATISTIK_LPO.LAND_I_ID "
                + "LEFT OUTER JOIN LP_ORT PARTNER_STATISTIK_ORT ON PARTNER_STATISTIK_ORT.I_ID=PARTNER_STATISTIK_LPO.ORT_I_ID "
                + "LEFT OUTER JOIN PART_KUNDE KNRECHNUNGSADRESSELS ON KNRECHNUNGSADRESSELS.I_ID=L.KUNDE_I_ID_RECHNUNGSADRESSE "
                + "LEFT OUTER JOIN PART_PARTNER PARTNERRECHNUNGSADRESSELS ON PARTNERRECHNUNGSADRESSELS.I_ID=KNRECHNUNGSADRESSELS.PARTNER_I_ID "
                + "LEFT OUTER JOIN PERS_PERSONAL PEPROVISION ON PEPROVISION.I_ID=KN.PERSONAL_I_ID_BEKOMMEPROVISION "
                + "LEFT OUTER JOIN WW_LAGER RELAGER ON RELAGER.I_ID=R.LAGER_I_ID "
                + "LEFT OUTER JOIN WW_LAGER LSLAGER ON LSLAGER.I_ID=L.LAGER_I_ID "
                + "LEFT OUTER JOIN WW_LAGER LSZIELLAGER ON LSZIELLAGER.I_ID=L.ZIELLAGER_I_ID "
                + "LEFT OUTER JOIN PART_KUNDE KNLIEFERADRESSELS ON KNLIEFERADRESSELS.I_ID=L.KUNDE_I_ID_LIEFERADRESSE "
                + "LEFT OUTER JOIN PART_PARTNER PLIEFERADRESSELS ON PLIEFERADRESSELS.I_ID=KNLIEFERADRESSELS.PARTNER_I_ID "
                + "LEFT OUTER JOIN LP_LANDPLZORT PLIEFERADRESSELS_LPO ON PLIEFERADRESSELS_LPO.I_ID=PLIEFERADRESSELS.LANDPLZORT_I_ID "
                + "LEFT OUTER JOIN LP_LAND PLIEFERADRESSELS_LAND ON PLIEFERADRESSELS_LAND.I_ID=PLIEFERADRESSELS_LPO.LAND_I_ID "
                + "LEFT OUTER JOIN LP_ORT PLIEFERADRESSELS_ORT ON PLIEFERADRESSELS_ORT.I_ID=PLIEFERADRESSELS_LPO.ORT_I_ID "
                + "LEFT OUTER JOIN LS_BEGRUENDUNG BEGR ON BEGR.I_ID=L.BEGRUENDUNG_I_ID "
                + "LEFT OUTER JOIN AUFT_AUFTRAGPOSITION ABP ON ABP.I_ID=LP.AUFTRAGPOSITION_I_ID "
                + "LEFT OUTER JOIN AUFT_AUFTRAG AB ON AB.I_ID=ABP.AUFTRAG_I_ID "
                + "LEFT OUTER JOIN AUFT_AUFTRAGBEGRUENDUNG ABG ON ABG.I_ID=AB.AUFTRAGBEGRUENDUNG_I_ID "
                + "LEFT OUTER JOIN LP_KOSTENTRAEGER KT ON KT.I_ID=COALESCE(LP.KOSTENTRAEGER_I_ID, P.KOSTENTRAEGER_I_ID) "
                + "LEFT OUTER JOIN WW_ARTIKELSPR ARS ON ARS.ARTIKEL_I_ID=AR.I_ID AND ARS.LOCALE_C_NR='"
                + theClientDto.getLocUiAsString() + "' ";

        String queryWhere = "";
        if (krit.dVon != null && krit.dBis != null) {
            queryWhere = "WHERE R.T_BELEGDATUM BETWEEN '" + Helper.formatDateWithSlashes(krit.dVon) + "' AND '"
                    + Helper.formatDateWithSlashes(krit.dBis) + "' ";
        } else {
            if (krit.sBelegnummerVon != null && krit.sBelegnummerBis != null) {
                queryWhere = "WHERE R.C_NR BETWEEN '" + krit.sBelegnummerVon + "' AND '" + krit.sBelegnummerBis
                        + "' ";
            }
        }

        queryWhere = queryWhere + "AND (POSITIONSART_C_NR='"
                + RechnungFac.POSITIONSART_RECHNUNG_HANDEINGABE.trim() + "' " + "OR P.POSITIONSART_C_NR='"
                + RechnungFac.POSITIONSART_RECHNUNG_IDENT.trim() + "' " + "OR P.POSITIONSART_C_NR='"
                + RechnungFac.POSITIONSART_RECHNUNG_LIEFERSCHEIN.trim() + "' " + "OR P.POSITIONSART_C_NR='"
                + RechnungFac.POSITIONSART_RECHNUNG_TEXTEINGABE.trim() + "') ";
        String[] sRechnungsarten = null;
        if (krit.getBGutschriftenBeruecksichtigen()) {
            sRechnungsarten = new String[5];
            sRechnungsarten[0] = LocaleFac.BELEGART_RECHNUNG;
            sRechnungsarten[1] = LocaleFac.BELEGART_GUTSCHRIFT;
            sRechnungsarten[2] = RechnungFac.RECHNUNGART_WERTGUTSCHRIFT;
            sRechnungsarten[3] = RechnungFac.RECHNUNGART_ANZAHLUNG;
            sRechnungsarten[4] = RechnungFac.RECHNUNGART_SCHLUSSZAHLUNG;
        } else {
            sRechnungsarten = new String[3];
            sRechnungsarten[0] = LocaleFac.BELEGART_RECHNUNG;
            sRechnungsarten[1] = RechnungFac.RECHNUNGART_ANZAHLUNG;
            sRechnungsarten[2] = RechnungFac.RECHNUNGART_SCHLUSSZAHLUNG;
        }
        queryWhere = queryWhere + "AND R.MANDANT_C_NR = '" + theClientDto.getMandant() + "' ";
        boolean bFirstRechnungArt = true;
        for (int i = 0; i < sRechnungsarten.length; i++) {
            if (bFirstRechnungArt) {
                queryWhere = queryWhere + "AND RECHNUNGART_C_NR IN (";
                bFirstRechnungArt = false;
            } else {
                queryWhere = queryWhere + ", ";
            }
            queryWhere = queryWhere + "'" + sRechnungsarten[i].trim() + "'";
        }
        queryWhere = queryWhere + ")";
        queryWhere = queryWhere + "AND STATUS_C_NR NOT LIKE '" + RechnungFac.STATUS_STORNIERT + "' ";
        if (krit.kundeIId != null) {
            queryWhere = queryWhere + "AND R.KUNDE_I_ID = " + krit.kundeIId + " ";
        }
        if (krit.vertreterIId != null) {
            queryWhere = queryWhere + "AND R.PERSONAL_I_ID_VERTRETER = " + krit.vertreterIId + " ";
        }
        if (!krit.getBMitTexteingaben()) {
            // das OR muss wegen Gutschriften rein
            queryWhere = queryWhere
                    + "AND (LP.LIEFERSCHEINPOSITIONART_C_NR != 'Texteingabe' OR LP.LIEFERSCHEINPOSITIONART_C_NR IS NULL) ";
        }
        if (krit.kostenstelleIId != null) {
            queryWhere = queryWhere + "AND R.KOSTENSTELLE_I_ID = " + krit.kostenstelleIId + " ";
        }
        String queryOrder = "ORDER BY ";
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            queryOrder = queryOrder + "PN.C_NAME1NACHNAMEFIRMAZEILE1";
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            queryOrder = queryOrder + "R.C_NR";
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            queryOrder = queryOrder + "R.PERSONAL_I_ID_VERTRETER";
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {
            queryOrder = queryOrder + "AR.C_NR";
        }
        if (krit.getBVerwendeStatistikAdresse()) {
            queryOrder = queryOrder + ", PARTNER_STATISTIK.I_ID";
        }
        String queryString = querySelect + queryFrom + queryWhere + queryOrder;
        this.useCase = UC_REPORT_WARENAUSGANGSJOURNAL;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Query query = session.createSQLQuery(queryString);
        List<?> list = query.list();
        Map<Integer, Object> tmData = new TreeMap<Integer, Object>();
        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            tmData.put(i, iter.next());
            i++;
        }
        // Lieferscheine ohne Rechnung hinten anhaengen
        // Alle Lieferscheine ohne Rechnung Kriterien
        List<?> LsList = null;
        if (krit.dVon != null || krit.dBis != null) {
            Criteria cLsPosCrit = session.createCriteria(FLRLieferscheinposition.class);
            Criteria cLs = cLsPosCrit
                    .createCriteria(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN);
            // Filter nach Mandant
            cLs.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_MANDANT_C_NR, theClientDto.getMandant()));
            // Filter nach Status (keine stornierten)
            cLs.add(Restrictions
                    .not(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR,
                            LieferscheinFac.LSSTATUS_STORNIERT)));
            // Filter nach Datum
            if (krit.dVon != null) {
                cLs.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, krit.dVon));
            }
            if (krit.dBis != null) {
                cLs.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, krit.dBis));
            }

            cLsPosCrit.add(Restrictions.gt(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE,
                    new BigDecimal(0)));

            // Filter nach Kunde
            if (krit.kundeIId != null) {
                cLs.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_RECHNUNGSADRESSE,
                        krit.kundeIId));
            }
            // Filter nach Vertreter
            if (krit.vertreterIId != null) {
                cLs.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_PERSONAL_I_ID_VERTRETER,
                        krit.vertreterIId));
            }
            // Filter nach Kostenstelle
            if (krit.kostenstelleIId != null) {
                cLs.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KOSTENSTELLE_I_ID,
                        krit.kostenstelleIId));
            }
            if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
                cLs.addOrder(Order.asc(LieferscheinFac.FLR_LIEFERSCHEIN_C_NR));
            }

            if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
                cLs.createAlias("flrkunde", "k").createAlias("k.flrpartner", "p")
                        .addOrder(Order.asc("p.c_name1nachnamefirmazeile1"));

            }
            if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
                cLs.addOrder(Order.asc(LieferscheinFac.FLR_LIEFERSCHEIN_PERSONAL_I_ID_VERTRETER));
            }
            if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {
                cLsPosCrit.createAlias("flrartikel", "a").addOrder(Order.asc("a.c_nr"));
            }

            if (krit.getBNurOffene()) {
                Collection<String> cStati = new LinkedList<String>();
                cStati.add(LieferscheinFac.LSSTATUS_ANGELEGT);
                cStati.add(LieferscheinFac.LSSTATUS_OFFEN);
                cStati.add(LieferscheinFac.LSSTATUS_ERLEDIGT);
                cStati.add(LieferscheinFac.LSSTATUS_GELIEFERT);
            }
            cLs.add(Restrictions.isNull(LieferscheinFac.FLR_LIEFERSCHEIN_FLRRECHNUNG));
            LsList = cLsPosCrit.list();
        }
        // befuellen
        if (LsList != null) {
            for (Iterator<?> iter = LsList.iterator(); iter.hasNext();) {
                FLRLieferscheinposition lspos = (FLRLieferscheinposition) iter.next();
                Object[] dataRow = new Object[REPORT_WARENAUSGANG_ANZAHL_SPALTEN];
                dataRow[FELD_WARENAUSGANG_LIEFERSCHEINNUMMER] = lspos.getFlrlieferschein().getC_nr();
                dataRow[FELD_WARENAUSGANG_LIEFERSCHEINDATUM] = lspos.getFlrlieferschein().getD_belegdatum();

                if (lspos.getFlrlieferschein().getFlrbegruendung() != null) {
                    dataRow[FELD_WARENAUSGANG_GRUNDNICHTEINGEHALTEN] = lspos.getFlrlieferschein()
                            .getFlrbegruendung().getC_nr();

                    if (lspos.getFlrlieferschein().getFlrbegruendung().getC_bez() != null) {
                        dataRow[FELD_WARENAUSGANG_GRUNDNICHTEINGEHALTEN] = lspos.getFlrlieferschein()
                                .getFlrbegruendung().getC_bez();
                    }

                }

                dataRow[FELD_WARENAUSGANG_KUNDENBEZEICHNUNG] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_name1nachnamefirmazeile1();
                dataRow[FELD_WARENAUSGANG_TEXTEINGABE] = lspos.getC_textinhalt();
                dataRow[FELD_WARENAUSGANG_ILN_LIEFERADRESSE] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_iln();
                dataRow[FELD_WARENAUSGANG_KUNDENNUMMER_LIEFERADRESSE_LS] = lspos.getFlrlieferschein()
                        .getFlrkunde().getI_kundennummer();
                dataRow[FELD_WARENAUSGANG_KUNDENNUMMER] = lspos.getFlrlieferschein().getFlrkunde()
                        .getI_kundennummer();
                dataRow[FELD_WARENAUSGANG_PARTNER_I_ID] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getI_id();
                if (lspos.getFlrartikel() != null) {
                    dataRow[FELD_WARENAUSGANG_ARTIKELNUMMER] = lspos.getFlrartikel().getC_nr();
                    dataRow[FELD_WARENAUSGANG_ARTIKELPROVISION] = lspos.getFlrartikel()
                            .getF_vertreterprovisionmax();

                    if (lspos.getFlrartikel().getI_id() != null) {
                        ArtikelDto artikelDto = getArtikelFac()
                                .artikelFindByPrimaryKeySmall(lspos.getFlrartikel().getI_id(), theClientDto);
                        dataRow[FELD_WARENAUSGANG_ARTIKELBEZEICHNUNG] = artikelDto.formatArtikelbezeichnung();
                        dataRow[FELD_WARENAUSGANG_ARTIKEL_GEWICHTKG] = artikelDto.getFGewichtkg();
                        if (artikelDto.formatArtikelbezeichnung().length() > 1) {
                            if (artikelDto.formatBezeichnung() != null) {
                                // Comment out SK.. funktioniert so nicht
                                // ???
                                // data[i][
                                // FELD_WARENAUSGANG_ARTIKELBEZEICHNUNG2] =
                                // artikelDto.
                                // formatBezeichnung().substring(artikelDto.
                                // formatArtikelbezeichnung().
                                // length() - 1);
                            } else {
                                // data[i][
                                // FELD_WARENAUSGANG_ARTIKELBEZEICHNUNG2] =
                                // artikelDto.formatBezeichnung();
                            }
                        } else {
                            dataRow[FELD_WARENAUSGANG_ARTIKELBEZEICHNUNG2] = "";
                        }
                    } else {
                        dataRow[FELD_WARENAUSGANG_ARTIKELBEZEICHNUNG] = "";
                        dataRow[FELD_WARENAUSGANG_ARTIKELBEZEICHNUNG2] = "";
                    }
                    if (lspos.getFlrartikel().getFlrartikelklasse() != null) {
                        dataRow[FELD_WARENAUSGANG_ARTIKELKLASSE] = lspos.getFlrartikel().getFlrartikelklasse()
                                .getC_nr();
                    } else {
                        dataRow[FELD_WARENAUSGANG_ARTIKELKLASSE] = "";
                    }
                    if (lspos.getFlrartikel().getFlrartikelgruppe() != null) {
                        dataRow[FELD_WARENAUSGANG_ARTIKELGRUPPE] = lspos.getFlrartikel().getFlrartikelgruppe()
                                .getC_nr();
                    } else {
                        dataRow[FELD_WARENAUSGANG_ARTIKELGRUPPE] = "";
                    }
                    dataRow[FELD_WARENAUSGANG_EINHEIT] = lspos.getFlrartikel().getEinheit_c_nr();
                }

                dataRow[FELD_WARENAUSGANG_URSPRUNGSLAND] = "";
                dataRow[FELD_WARENAUSGANG_WARENVERKEHRSNUMMER] = "";
                dataRow[FELD_WARENAUSGANG_MENGE] = lspos.getN_menge();
                dataRow[FELD_WARENAUSGANG_POSITIONSPREIS] = lspos
                        .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt();
                dataRow[FELD_WARENAUSGANG_GESTPREIS] = getLagerFac()
                        .getGemittelterGestehungspreisEinerAbgangsposition(LocaleFac.BELEGART_LIEFERSCHEIN,
                                lspos.getI_id());

                if (lspos.getFlrkostentraeger() != null) {
                    dataRow[FELD_WARENAUSGANG_KOSTENTRAEGER] = lspos.getFlrkostentraeger().getC_bez();
                }

                dataRow[FELD_WARENAUSGANG_TEXTEINGABE] = lspos.getC_textinhalt();
                dataRow[FELD_WARENAUSGANG_RECHNUNGSPROVISION] = null;
                if (lspos.getFlrlieferschein().getPersonal_i_id_vertreter() != null) {
                    PersonalDto persDto = getPersonalFac().personalFindByPrimaryKey(
                            lspos.getFlrlieferschein().getPersonal_i_id_vertreter(), theClientDto);
                    dataRow[FELD_WARENAUSGANG_PROVISIONSEMPFAENGER] = persDto.getCKurzzeichen();
                }
                if (lspos.getFlrmwstsatz() != null) {
                    dataRow[FELD_WARENAUSGANG_MWST] = lspos.getFlrmwstsatz().getF_mwstsatz();
                }
                dataRow[FELD_WARENAUSGANG_ERLOESKONTO] = null;
                dataRow[FELD_WARENAUSGANG_DEBITORENKONTO] = null;
                if (lspos.getFlrlieferschein().getFlrkunde().getFlrpartner().getFlrlandplzort() == null) {
                    dataRow[FELD_WARENAUSGANG_PLZ] = "";
                    dataRow[FELD_WARENAUSGANG_LKZ] = "";
                    dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_ORT] = "";
                } else {
                    dataRow[FELD_WARENAUSGANG_PLZ] = lspos.getFlrlieferschein().getFlrkunde().getFlrpartner()
                            .getFlrlandplzort().getC_plz();
                    dataRow[FELD_WARENAUSGANG_LKZ] = lspos.getFlrlieferschein().getFlrkunde().getFlrpartner()
                            .getFlrlandplzort().getFlrland().getC_lkz();
                    dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_ORT] = lspos.getFlrlieferschein().getFlrkunde()
                            .getFlrpartner().getFlrlandplzort().getFlrort().getC_name();
                    dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_ORT] = lspos.getFlrlieferschein().getFlrkunde()
                            .getFlrpartner().getFlrlandplzort().getFlrort().getC_name();
                }
                dataRow[FELD_WARENAUSGANG_ADRESSE] = lspos.getFlrlieferschein().getFlrkunde().getFlrpartner()
                        .getC_strasse();
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_PARTNER_I_ID] = dataRow[FELD_WARENAUSGANG_PARTNER_I_ID];
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_ANREDE_C_NR] = lspos.getFlrlieferschein()
                        .getFlrkunde().getFlrpartner().getAnrede_c_nr();
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_C_NAME1] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_name1nachnamefirmazeile1();
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_C_NAME2] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_name2vornamefirmazeile2();
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_C_NAME3ABTEILUNG] = lspos.getFlrlieferschein()
                        .getFlrkunde().getFlrpartner().getC_name3vorname2abteilung();
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_C_STRASSE] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_strasse();
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_LAND] = dataRow[FELD_WARENAUSGANG_LKZ];
                dataRow[FELD_WARENAUSGANG_STATISTIKADRESSE_PLZ] = dataRow[FELD_WARENAUSGANG_PLZ];
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_PARTNER_I_ID] = dataRow[FELD_WARENAUSGANG_PARTNER_I_ID];
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_ANREDE_C_NR] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getAnrede_c_nr();
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_C_NAME1] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_name1nachnamefirmazeile1();
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_C_NAME2] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_name2vornamefirmazeile2();
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_C_NAME3ABTEILUNG] = lspos.getFlrlieferschein()
                        .getFlrkunde().getFlrpartner().getC_name3vorname2abteilung();
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_C_STRASSE] = lspos.getFlrlieferschein().getFlrkunde()
                        .getFlrpartner().getC_strasse();
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_LAND] = dataRow[FELD_WARENAUSGANG_LKZ];
                dataRow[FELD_WARENAUSGANG_LIEFERADRESSE_PLZ] = dataRow[FELD_WARENAUSGANG_PLZ];

                Integer brancheIId = lspos.getFlrlieferschein().getFlrkunde().getFlrpartner().getBranche_i_id();
                if (brancheIId != null) {
                    dataRow[FELD_WARENAUSGANG_BRANCHE] = getPartnerServicesFac()
                            .brancheFindByPrimaryKey(brancheIId, theClientDto).getCNr();
                }
                Integer partnerklIId = lspos.getFlrlieferschein().getFlrkunde().getFlrpartner()
                        .getPartnerklasse_i_id();
                if (partnerklIId != null) {
                    dataRow[FELD_WARENAUSGANG_PARTNERKLASSE] = getPartnerFac()
                            .partnerklasseFindByPrimaryKey(partnerklIId, theClientDto).getCNr();
                }
                dataRow[FELD_WARENAUSGANG_USTLAND] = null;
                dataRow[FELD_WARENAUSGANG_WAEHRUNG] = lspos.getFlrlieferschein()
                        .getWaehrung_c_nr_lieferscheinwaehrung();
                dataRow[FELD_WARENAUSGANG_KURS] = new BigDecimal(
                        lspos.getFlrlieferschein().getF_wechselkursmandantwaehrungzulieferscheinwaehrung());
                dataRow[FELD_WARENAUSGANG_BESTELLNUMMER] = lspos.getFlrlieferschein().getC_bestellnummer();
                dataRow[FELD_WARENAUSGANG_PROJEKT] = lspos.getFlrlieferschein().getC_bez_projektbezeichnung();
                if (lspos.getFlrlieferschein().getFlrkunderechnungsadresse() != null) {
                    dataRow[FELD_WARENAUSGANG_KUNDENNUMMER_RECHNUNGSADRESSE_LS] = lspos.getFlrlieferschein()
                            .getFlrkunderechnungsadresse().getI_kundennummer();
                    dataRow[FELD_WARENAUSGANG_KUNDENBEZEICHNUNG_RECHNUNGSADRESSE_LS] = lspos
                            .getFlrlieferschein().getFlrkunderechnungsadresse().getFlrpartner()
                            .getC_name1nachnamefirmazeile1();
                    dataRow[FELD_WARENAUSGANG_KUNDEKURZBEZEICHNUNG_RECHNUNGSADRESSE_LS] = lspos
                            .getFlrlieferschein().getFlrkunderechnungsadresse().getFlrpartner().getC_kbez();
                } else {
                    dataRow[FELD_WARENAUSGANG_KUNDENNUMMER_RECHNUNGSADRESSE_LS] = "";
                    dataRow[FELD_WARENAUSGANG_KUNDENBEZEICHNUNG_RECHNUNGSADRESSE_LS] = "";
                    dataRow[FELD_WARENAUSGANG_KUNDEKURZBEZEICHNUNG_RECHNUNGSADRESSE_LS] = "";
                }
                dataRow[FELD_WARENAUSGANG_KUNDE_HINWEISEXT] = lspos.getFlrlieferschein().getFlrkunde()
                        .getC_hinweisextern();
                dataRow[FELD_WARENAUSGANG_KUNDE_HINWEISINT] = lspos.getFlrlieferschein().getFlrkunde()
                        .getC_hinweisintern();

                if (lspos.getPosition_i_id_artikelset() != null) {

                    dataRow[FELD_WARENAUSGANG_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_POSITION;

                } else {
                    if (lspos.getSetartikel_set().size() > 0) {
                        dataRow[FELD_WARENAUSGANG_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_KOPF;
                    }
                }

                if (lspos.getFlrlieferschein().getFlrauftrag() != null) {
                    dataRow[FELD_WARENAUSGANG_KUNDE_LIEFERDAUER] = lspos.getFlrlieferschein().getFlrauftrag()
                            .getFlrkunde().getI_lieferdauer();

                    dataRow[FELD_WARENAUSGANG_AUFTRAG_NUMMER] = lspos.getFlrlieferschein().getFlrauftrag()
                            .getC_nr();

                    if (lspos.getFlrlieferschein().getFlrauftrag().getFlrbegruendung() != null) {
                        String bez = lspos.getFlrlieferschein().getFlrauftrag().getFlrbegruendung().getC_nr();

                        if (lspos.getFlrlieferschein().getFlrauftrag().getFlrbegruendung().getC_bez() != null) {
                            bez += " "
                                    + lspos.getFlrlieferschein().getFlrauftrag().getFlrbegruendung().getC_bez();
                        }

                        dataRow[FELD_WARENAUSGANG_AUFTRAG_BEGRUENDUNG] = bez;
                    }
                }
                if (lspos.getFlrpositionensichtauftrag() != null) {
                    dataRow[FELD_WARENAUSGANG_GEPLANTER_LIEFERTERMIN] = lspos.getFlrpositionensichtauftrag()
                            .getT_uebersteuerterliefertermin();
                }

                if (lspos.getFlrlieferschein().getFlrkunde().getFlrpersonal() != null) {
                    dataRow[FELD_WARENAUSGANG_KUNDE_PROVISIONSEMPFAENGER_KURZZEICHEN] = lspos
                            .getFlrlieferschein().getFlrkunde().getFlrpersonal().getC_kurzzeichen();
                } else {
                    dataRow[FELD_WARENAUSGANG_KUNDE_PROVISIONSEMPFAENGER_KURZZEICHEN] = "";
                }
                dataRow[FELD_WARENAUSGANG_LAGER_RECHNUNG] = "";
                if (lspos.getFlrlieferschein().getFlrlager() != null) {
                    dataRow[FELD_WARENAUSGANG_LAGER_LIEFERSCHEIN] = lspos.getFlrlieferschein().getFlrlager()
                            .getC_nr();
                } else {
                    dataRow[FELD_WARENAUSGANG_LAGER_LIEFERSCHEIN] = "";
                }
                if (lspos.getFlrlieferschein().getFlrziellager() != null) {
                    dataRow[FELD_WARENAUSGANG_ZIELLAGER_LIEFERSCHEIN] = lspos.getFlrlieferschein()
                            .getFlrziellager().getC_nr();
                } else {
                    dataRow[FELD_WARENAUSGANG_ZIELLAGER_LIEFERSCHEIN] = "";
                }
                if (lspos.getFlrlieferschein().getFlrkunderechnungsadresse() != null) {
                    dataRow[FELD_WARENAUSGANG_ILN_RECHNUNGSADRESSE] = lspos.getFlrlieferschein()
                            .getFlrkunderechnungsadresse().getFlrpartner().getC_iln();
                }

                tmData.put(i, dataRow);
                i++;
            }
        }

        // tmData in Object[][] umwandeln
        data = new Object[tmData.size()][REPORT_WARENAUSGANG_ANZAHL_SPALTEN];
        for (int y = 0; y < data.length; y++) {
            data[y] = (Object[]) tmData.get(y);
            if (RechnungFac.RECHNUNGART_GUTSCHRIFT.equals(data[y][FELD_WARENAUSGANG_RECHNUNGSART])
                    || RechnungFac.RECHNUNGART_WERTGUTSCHRIFT.equals(data[y][FELD_WARENAUSGANG_RECHNUNGSART])) {
                BigDecimal bdMenge = (BigDecimal) data[y][FELD_WARENAUSGANG_MENGE];
                if (bdMenge != null) {
                    data[y][FELD_WARENAUSGANG_MENGE] = bdMenge.multiply(new BigDecimal(-1));
                } else {
                    data[y][FELD_WARENAUSGANG_MENGE] = new BigDecimal(0);
                }
                // SK: Achtung bremst
                if (data[y][FELD_WARENAUSGANG_ZURECHNUNG] != null) {
                    RechnungDto rechDto = getRechnungFac()
                            .rechnungFindByPrimaryKey((Integer) data[y][FELD_WARENAUSGANG_ZURECHNUNG]);
                    data[y][FELD_WARENAUSGANG_ZURECHNUNG] = rechDto.getCNr();
                    data[y][FELD_WARENAUSGANG_LIEFERSCHEINDATUM] = rechDto.getTBelegdatum();
                }
            }

            // Dauert so zu lange.. Felder werden einzeln uebergeben
            /*
             * Integer partnerIId = (Integer)
             * data[y][FELD_WARENAUSGANG_STATISTIKADRESSE];
             * if(partnerIId!=null){ PartnerDto helper =
             * getPartnerFac().partnerFindByPrimaryKey(partnerIId ,
             * theClientDto); data[y][FELD_WARENAUSGANG_STATISTIKADRESSE]=
             * helper.formatFixTitelName1Name2(); }
             */
        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        StringBuffer sSortierung = new StringBuffer();

        mapParameter.put("P_MITTEXTEINGABEN", krit.getBMitTexteingaben());
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            if (krit.getBVerwendeStatistikAdresse()) {
                sSortierung.append(getTextRespectUISpr("rech.statistikadresse", theClientDto.getMandant(),
                        theClientDto.getLocUi()));
            } else {
                sSortierung.append(
                        getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
            }
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(
                    getTextRespectUISpr("bes.belegnummer", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.vertreter", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) {
            sSortierung.append(
                    getTextRespectUISpr("lp.artikel", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        if (krit.dBis != null && krit.dVon != null) {
            mapParameter.put(PARAMETER_WARENAUSGANG_BIS, krit.dBis.toString());
            mapParameter.put(PARAMETER_WARENAUSGANG_VON, krit.dVon.toString());
        }
        if (krit.sBelegnummerBis != null && krit.sBelegnummerVon != null) {
            mapParameter.put(PARAMETER_WARENAUSGANG_BIS, krit.sBelegnummerBis);
            mapParameter.put(PARAMETER_WARENAUSGANG_VON, krit.sBelegnummerVon);
        }
        mapParameter.put(PARAMETER_WARENAUSGNAG_GRUPPIERUNGNACHSTATISTIK, krit.getBVerwendeStatistikAdresse());
        mapParameter.put(PARAMETER_WARENAUSGANG_MANDANTENWAEHRUNG, theClientDto.getSMandantenwaehrung());
        initJRDS(mapParameter, RechnungReportFac.REPORT_MODUL, RechnungReportFac.REPORT_WARENAUSGANGSJOURNAL,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        if (session != null) {
            session.close();
        }
    }

}

From source file:com.lp.server.rechnung.ejbfac.RechnungReportFacBean.java

License:Open Source License

public JasperPrintLP printZusammenfassendeMeldung(java.sql.Date dVon, java.sql.Date dBis,
        Integer partnerIIdFinanzamt, TheClientDto theClientDto) {
    Session session = null;/*ww w.  ja  v a  2 s.c  o  m*/
    try {

        PartnerDto partnerDtoFinazamt = getPartnerFac().partnerFindByPrimaryKey(partnerIIdFinanzamt,
                theClientDto);

        this.useCase = UC_REPORT_ALLE;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // Kunde oder Statistikadresse verwenden

        Criteria c = session.createCriteria(FLRRechnungReport.class);
        // Filter nach Mandant
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));

        // Rechnungen und Gutschriften
        Collection<String> cArten = new LinkedList<String>();
        cArten.add(RechnungFac.RECHNUNGTYP_RECHNUNG);
        cArten.add(RechnungFac.RECHNUNGART_GUTSCHRIFT);
        c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART)
                .add(Restrictions.in(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, cArten));

        // Filter nach Status (keine stornierten)
        c.add(Restrictions
                .not(Restrictions.eq(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, RechnungFac.STATUS_STORNIERT)));

        // Datum von/bis
        String sVon = null;
        String sBis = null;
        if (dVon != null) {
            c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dVon));
            sVon = Helper.formatDatum(dVon, theClientDto.getLocUi());
        }
        if (dBis != null) {
            c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dBis));
            sBis = Helper.formatDatum(dBis, theClientDto.getLocUi());
        }

        // Belegnummer von/bis
        LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant());
        Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant());
        String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert();

        // Immer nach Kunde sortiert

        c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRKUNDE).createCriteria(KundeFac.FLR_PARTNER)
                .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
        c.addOrder(Order.asc(RechnungFac.FLR_RECHNUNG_C_NR));

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

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

        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRRechnungReport r = (FLRRechnungReport) iter.next();

            Object[] zeile = new Object[REPORT_ZM_ANZAHL_SPALTEN];

            zeile[FELD_ZM_BELEGDATUM] = r.getD_belegdatum();
            // Bezahlte Betraege
            BigDecimal bdBezahlt = getRechnungFac().getBereitsBezahltWertVonRechnung(r.getI_id(), null);
            BigDecimal bdBezahltUst = getRechnungFac().getBereitsBezahltWertVonRechnungUst(r.getI_id(), null);

            BigDecimal bdWertmw = null;
            BigDecimal bdWertUstmw = null;
            BigDecimal bdBezahltmw = null;
            BigDecimal bdBezahltUstmw = null;
            bdBezahltmw = bdBezahlt;
            bdBezahltUstmw = bdBezahltUst;

            bdWertmw = r.getN_wert();
            bdWertUstmw = r.getN_wertust();
            if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_GUTSCHRIFT)
                    || r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_WERTGUTSCHRIFT)) {
                if (bdWertmw != null)
                    bdWertmw = bdWertmw.negate();
                if (bdWertUstmw != null)
                    bdWertUstmw = bdWertUstmw.negate();
                if (bdBezahltmw != null)
                    bdBezahltmw = bdBezahltmw.negate();
                if (bdBezahltUstmw != null)
                    bdBezahltUstmw = bdBezahltUstmw.negate();
            }
            zeile[FELD_ZM_BETRAG] = bdWertmw;
            zeile[FELD_ZM_BETRAGUST] = bdWertUstmw;
            zeile[FELD_ZM_BEZAHLT] = bdBezahltmw;
            zeile[FELD_ZM_BEZAHLTUST] = bdBezahltUstmw;
            // Kostenstelle
            if (r.getFlrkostenstelle() != null) {
                String sKostenstellen = "";
                KostenstelleDto k = null;
                RechnungkontierungDto[] rechnungkontierungsDto = getRechnungFac()
                        .rechnungkontierungFindByRechnungIId(r.getI_id());
                if (rechnungkontierungsDto.length != 0) {
                    for (int e = 0; e < rechnungkontierungsDto.length; e++) {
                        k = getSystemFac()
                                .kostenstelleFindByPrimaryKey(rechnungkontierungsDto[e].getKostenstelleIId());
                        sKostenstellen = sKostenstellen + k.getCNr() + " ";
                    }
                } else {
                    sKostenstellen = r.getFlrkostenstelle().getC_nr();
                }
                zeile[FELD_ZM_KOSTENSTELLENUMMER] = sKostenstellen;
            } else {
                zeile[FELD_ZM_KOSTENSTELLENUMMER] = null;
            }
            // Kundendaten
            FLRKunde flrKunde, flrKundeStatistik;
            flrKunde = r.getFlrkunde();

            // Statistikdaten wenn nicht Kriterium Statistikadresse
            flrKundeStatistik = r.getFlrstatistikadresse();
            zeile[FELD_ZM_KUNDE_STATISTIK] = flrKundeStatistik.getFlrpartner().getC_name1nachnamefirmazeile1();
            if (flrKundeStatistik.getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                zeile[FELD_ZM_KUNDE2_STATISTIK] = flrKundeStatistik.getFlrpartner()
                        .getC_name2vornamefirmazeile2();
            } else {
                zeile[FELD_ZM_KUNDE2_STATISTIK] = "";
            }
            PartnerDto partnerDtoStatistik = getPartnerFac()
                    .partnerFindByPrimaryKey(flrKundeStatistik.getFlrpartner().getI_id(), theClientDto);
            zeile[FELD_ZM_ADRESSE_STATISTIK] = partnerDtoStatistik.formatAdresse();

            zeile[FELD_ZM_KUNDE] = flrKunde.getFlrpartner().getC_name1nachnamefirmazeile1();
            zeile[FELD_ZM_REVERSE_CHARGE] = Helper.short2Boolean(r.getB_reversecharge());
            zeile[FELD_ZM_KUNDE_UID] = flrKunde.getFlrpartner().getC_uid();
            if (r.getFlrvertreter() != null) {
                if (r.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                    zeile[FELD_ZM_VERTRETER] = r.getFlrvertreter().getFlrpartner()
                            .getC_name1nachnamefirmazeile1() + " "
                            + r.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2();
                } else {
                    zeile[FELD_ZM_VERTRETER] = r.getFlrvertreter().getFlrpartner()
                            .getC_name1nachnamefirmazeile1();
                }
            }
            if (flrKunde.getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                zeile[FELD_ZM_KUNDE2] = flrKunde.getFlrpartner().getC_name2vornamefirmazeile2();
            } else {
                zeile[FELD_ZM_KUNDE2] = "";
            }
            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(flrKunde.getFlrpartner().getI_id(),
                    theClientDto);
            zeile[FELD_ZM_ADRESSE] = partnerDto.formatAdresse();

            Integer mahnstufeIId = getMahnwesenFac().getAktuelleMahnstufeEinerRechnung(r.getI_id(),
                    theClientDto);

            if (mahnstufeIId != null) {
                zeile[FELD_ZM_MAHNSTUFE] = mahnstufeIId;
                MahnstufeDto mahnstufeDto = getMahnwesenFac()
                        .mahnstufeFindByPrimaryKey(new MahnstufePK(mahnstufeIId, r.getMandant_c_nr()));
                // Zinsen nur fuer noch nicht vollstaendig bezahlte
                if (!r.getStatus_c_nr().equals(RechnungFac.STATUS_BEZAHLT)) {
                    if (mahnstufeDto.getFZinssatz() != null) {
                        BigDecimal bdOffen = r.getN_wert().subtract(bdBezahlt);
                        // Zinsen
                        zeile[FELD_ZM_ZINSEN] = bdOffen
                                .multiply(new BigDecimal(mahnstufeDto.getFZinssatz().floatValue()))
                                .movePointLeft(2);
                    }
                }
            }
            zeile[FELD_ZM_ORT] = partnerDto.formatAdresse();
            if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_RECHNUNG)) {
                zeile[FELD_ZM_RECHNUNGSNUMMER] = "RE " + r.getC_nr();
                zeile[FELD_ZM_RECHNUNGSNUMMERZUGUTSCHRIFT] = "";
            } else if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_ANZAHLUNG)) {
                zeile[FELD_ZM_RECHNUNGSNUMMER] = "AZ " + r.getC_nr();
                zeile[FELD_ZM_RECHNUNGSNUMMERZUGUTSCHRIFT] = "";
            } else if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_SCHLUSSZAHLUNG)) {
                zeile[FELD_ZM_RECHNUNGSNUMMER] = "SZ " + r.getC_nr();
                zeile[FELD_ZM_RECHNUNGSNUMMERZUGUTSCHRIFT] = "";
            } else {
                if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_GUTSCHRIFT)
                        || r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_WERTGUTSCHRIFT)) {
                    zeile[FELD_ZM_RECHNUNGSNUMMER] = "GS " + r.getC_nr();
                    // wenn es eine Gutschrift ist die C_NR der Rechnung
                    // uebergeben
                    if (r.getFlrrechnung() != null) {
                        zeile[FELD_ZM_RECHNUNGSNUMMERZUGUTSCHRIFT] = "RE " + r.getFlrrechnung().getC_nr();
                    }
                } else {
                    zeile[FELD_ZM_RECHNUNGSNUMMER] = r.getC_nr();
                    zeile[FELD_ZM_RECHNUNGSNUMMERZUGUTSCHRIFT] = "";
                }
            }
            if (r.getZahlungsziel_i_id() != null) {
                zeile[FELD_ZM_ZIELDATUM] = getMandantFac().berechneZielDatumFuerBelegdatum(r.getD_belegdatum(),
                        r.getZahlungsziel_i_id(), theClientDto);
            }
            // Bezahlt
            if (r.getT_bezahltdatum() != null) {
                zeile[FELD_ZM_BEZAHLTDATUM] = r.getT_bezahltdatum();
                // Zahltage
                int iZahltage = Helper.getDifferenzInTagen(r.getD_belegdatum(), r.getT_bezahltdatum());
                zeile[FELD_ZM_ZAHLTAGE] = new Integer(iZahltage);
            }
            // Debitorenkontonummer
            KontoDtoSmall kontoDtoDeb = null;
            if (flrKunde.getKonto_i_id_debitorenkonto() != null) {
                kontoDtoDeb = getFinanzFac()
                        .kontoFindByPrimaryKeySmallOhneExc(flrKunde.getKonto_i_id_debitorenkonto());
            }
            String sKontonummer;
            if (kontoDtoDeb != null) {
                sKontonummer = kontoDtoDeb.getCNr();
            } else {
                sKontonummer = "";
            }
            zeile[FELD_ZM_DEBITORENKONTO] = sKontonummer;
            zeile[FELD_ZM_WAEHRUNG] = r.getWaehrung_c_nr();
            zeile[FELD_ZM_KURS] = r.getN_kurs();

            // 14217
            String sLaenderart = getFinanzServiceFac().getLaenderartZuPartner(partnerDtoFinazamt, partnerDto,
                    theClientDto);
            zeile[FELD_ZM_LAENDERART] = sLaenderart;

            if (sLaenderart != null && sLaenderart.equals(FinanzFac.LAENDERART_EU_AUSLAND_MIT_UID)) {
                alZeilen.add(zeile);
            }

        }

        data = new Object[alZeilen.size()][REPORT_ZM_ANZAHL_SPALTEN];
        data = alZeilen.toArray(data);

        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);
        // Waehrung
        HashMap mapParameter = new HashMap();
        mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr());
        StringBuffer sSortierung = new StringBuffer();

        sSortierung.append(getTextRespectUISpr("lp.kunde", 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 + " ");
        }

        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());

        FinanzamtDto finanzamtDto = getFinanzFac().finanzamtFindByPrimaryKey(partnerIIdFinanzamt,
                theClientDto.getMandant(), theClientDto);

        boolean bRunden = false;

        bRunden = Helper.short2boolean(finanzamtDto.getBUmsatzRunden());

        mapParameter.put("P_FA_NAME", finanzamtDto.getPartnerDto().formatFixName1Name2());
        mapParameter.put("P_FA_ADRESSE", finanzamtDto.getPartnerDto().formatAdresse());
        // Steuernummer
        mapParameter.put("P_FA_STEUERNUMMER", finanzamtDto.getCSteuernummer());
        mapParameter.put("P_FA_REFERAT", finanzamtDto.getCReferat());
        mapParameter.put("P_UMSATZRUNDEN", new Boolean(bRunden));

        initJRDS(mapParameter, RechnungReportFac.REPORT_MODUL, RechnungReportFac.REPORT_RECHNUNGEN_ZM,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();

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

}

From source file:com.lp.server.rechnung.ejbfac.RechnungReportFacBean.java

License:Open Source License

private JasperPrintLP buildAlleReport(ReportRechnungJournalKriterienDto krit, String rechnungtypCNr,
        String sReportname, TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;/*from  w ww.j  a  v a  2  s .  c om*/
    try {
        this.useCase = UC_REPORT_ALLE;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // Kunde oder Statistikadresse verwenden
        final String critKundeIId;
        final String critFLRKunde;
        if (krit.getBVerwendeStatistikAdresse()) {
            critKundeIId = RechnungFac.FLR_RECHNUNG_KUNDE_I_ID_STATISTIKADRESSE;
            critFLRKunde = RechnungFac.FLR_RECHNUNG_FLRSTATISTIKADRESSE;
        } else {
            critKundeIId = RechnungFac.FLR_RECHNUNG_KUNDE_I_ID;
            critFLRKunde = RechnungFac.FLR_RECHNUNG_FLRKUNDE;
        }

        Criteria c = session.createCriteria(FLRRechnungReport.class);
        // Filter nach Mandant
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        if (krit.getBGutschriftenBeruecksichtigen()) {
            // Rechnungen und Gutschriften
            Collection<String> cArten = new LinkedList<String>();
            cArten.add(rechnungtypCNr);
            cArten.add(RechnungFac.RECHNUNGART_GUTSCHRIFT);
            c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART)
                    .add(Restrictions.in(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, cArten));
        } else {
            // nur Rechnungen
            c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART)
                    .add(Restrictions.eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, rechnungtypCNr));
        }
        // Filter nach Kostenstelle
        if (krit.kostenstelleIId != null) {
            c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
        }
        // Filter nach einem Kunden
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        if (krit.kundeIId != null) {
            c.add(Restrictions.eq(critKundeIId, krit.kundeIId));
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(krit.kundeIId, theClientDto);
            mapParameter.put("P_KUNDE", kundeDto.getPartnerDto().formatTitelAnrede());
        }
        // Filter nach einem Vertrter
        if (krit.vertreterIId != null) {
            c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_FLRVERTRETER + ".i_id", krit.vertreterIId));
        }
        // Filter nach Status (keine stornierten)
        c.add(Restrictions
                .not(Restrictions.eq(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, RechnungFac.STATUS_STORNIERT)));
        // Nur offene anzeigen?
        if (krit.getBNurOffene()) {
            Collection<String> cStati = new LinkedList<String>();
            cStati.add(RechnungFac.STATUS_ANGELEGT);
            cStati.add(RechnungFac.STATUS_OFFEN);
            cStati.add(RechnungFac.STATUS_TEILBEZAHLT);
            cStati.add(RechnungFac.STATUS_VERBUCHT);
            c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, cStati));
        }
        // Datum von/bis
        String sVon = null;
        String sBis = null;
        if (krit.dVon != null) {
            c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, krit.dVon));
            sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi());
        }
        if (krit.dBis != null) {
            c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, krit.dBis));
            sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi());
        }

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

        // Map mapZahlungsziele =
        // getMandantFac().zahlungszielFindAllByMandantAsDto
        // (theClientDto.getMandant(),
        // theClientDto.getIDUser());

        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRRechnungReport r = (FLRRechnungReport) iter.next();
            data[i][FELD_ALLE_BELEGDATUM] = r.getD_belegdatum();
            // Bezahlte Betraege
            BigDecimal bdBezahlt = getRechnungFac().getBereitsBezahltWertVonRechnung(r.getI_id(), null);
            BigDecimal bdBezahltUst = getRechnungFac().getBereitsBezahltWertVonRechnungUst(r.getI_id(), null);

            BigDecimal bdWertmw = null;
            BigDecimal bdWertUstmw = null;
            BigDecimal bdBezahltmw = null;
            BigDecimal bdBezahltUstmw = null;
            bdBezahltmw = bdBezahlt;
            bdBezahltUstmw = bdBezahltUst;

            BigDecimal bdWertFW = null;
            BigDecimal bdWertUstFW = null;
            BigDecimal bdBezahltFW = getRechnungFac().getBereitsBezahltWertVonRechnungFw(r.getI_id(), null);
            BigDecimal bdBezahltUstFW = getRechnungFac().getBereitsBezahltWertVonRechnungUstFw(r.getI_id(),
                    null);

            bdWertmw = r.getN_wert();
            bdWertUstmw = r.getN_wertust();
            bdWertFW = r.getN_wertfw();
            bdWertUstFW = r.getN_wertustfw();
            if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_GUTSCHRIFT)
                    || r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_WERTGUTSCHRIFT)) {
                if (bdWertmw != null)
                    bdWertmw = bdWertmw.negate();
                if (bdWertUstmw != null)
                    bdWertUstmw = bdWertUstmw.negate();
                if (bdBezahltmw != null)
                    bdBezahltmw = bdBezahltmw.negate();
                if (bdBezahltUstmw != null)
                    bdBezahltUstmw = bdBezahltUstmw.negate();
                // FW
                if (bdWertFW != null)
                    bdWertFW = bdWertFW.negate();
                if (bdWertUstFW != null)
                    bdWertUstFW = bdWertUstFW.negate();
                if (bdBezahltFW != null)
                    bdBezahltFW = bdBezahltFW.negate();
                if (bdBezahltUstFW != null)
                    bdBezahltUstFW = bdBezahltUstFW.negate();

            }
            data[i][FELD_ALLE_BETRAG] = bdWertmw;
            data[i][FELD_ALLE_BETRAGUST] = bdWertUstmw;
            data[i][FELD_ALLE_BEZAHLT] = bdBezahltmw;
            data[i][FELD_ALLE_BEZAHLTUST] = bdBezahltUstmw;

            data[i][FELD_ALLE_BETRAG_FW] = bdWertFW;
            data[i][FELD_ALLE_BETRAGUST_FW] = bdWertUstFW;
            data[i][FELD_ALLE_BEZAHLT_FW] = bdBezahltFW;
            data[i][FELD_ALLE_BEZAHLTUST_FW] = bdBezahltUstFW;

            BigDecimal bdUstAnzahlungMandWhg = new BigDecimal(0);
            BigDecimal bdNettoAnzahlungMandWhg = new BigDecimal(0);
            BigDecimal bdUstAnzahlungFW = new BigDecimal(0);
            BigDecimal bdNettoAnzahlungFW = new BigDecimal(0);
            if (r.getFlrauftrag() != null
                    && r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_SCHLUSSZAHLUNG)) {

                bdUstAnzahlungFW = getRechnungFac().getAnzahlungenZuSchlussrechnungUstFw(r.getI_id());
                bdNettoAnzahlungFW = getRechnungFac().getAnzahlungenZuSchlussrechnungFw(r.getI_id());

                bdNettoAnzahlungMandWhg = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdNettoAnzahlungFW,
                        r.getWaehrung_c_nr(), theClientDto.getSMandantenwaehrung(),
                        new Date(System.currentTimeMillis()), theClientDto);
                bdUstAnzahlungMandWhg = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdUstAnzahlungFW,
                        r.getWaehrung_c_nr(), theClientDto.getSMandantenwaehrung(),
                        new Date(System.currentTimeMillis()), theClientDto);

            }

            data[i][FELD_ALLE_WERT_ANZAHLUNGEN] = bdNettoAnzahlungMandWhg;
            data[i][FELD_ALLE_WERT_ANZAHLUNGENUST] = bdUstAnzahlungMandWhg;
            data[i][FELD_ALLE_WERT_ANZAHLUNGEN_FW] = bdNettoAnzahlungFW;
            data[i][FELD_ALLE_WERT_ANZAHLUNGENUST_FW] = bdUstAnzahlungFW;

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

                // Statistikdaten wenn nicht Kriterium Statistikadresse
                flrKundeStatistik = r.getFlrstatistikadresse();
                data[i][FELD_ALLE_KUNDE_STATISTIK] = flrKundeStatistik.getFlrpartner()
                        .getC_name1nachnamefirmazeile1();
                if (flrKundeStatistik.getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                    data[i][FELD_ALLE_KUNDE2_STATISTIK] = flrKundeStatistik.getFlrpartner()
                            .getC_name2vornamefirmazeile2();
                } else {
                    data[i][FELD_ALLE_KUNDE2_STATISTIK] = "";
                }
                PartnerDto partnerDtoStatistik = getPartnerFac()
                        .partnerFindByPrimaryKey(flrKundeStatistik.getFlrpartner().getI_id(), theClientDto);
                data[i][FELD_ALLE_ADRESSE_STATISTIK] = partnerDtoStatistik.formatAdresse();

            }
            data[i][FELD_ALLE_KUNDE] = flrKunde.getFlrpartner().getC_name1nachnamefirmazeile1();
            data[i][FELD_ALLE_REVERSE_CHARGE] = Helper.short2Boolean(r.getB_reversecharge());
            data[i][FELD_ALLE_STATUS] = r.getStatus_c_nr();
            data[i][FELD_ALLE_ZOLLBELEGNUMMER] = r.getC_zollpapier();
            data[i][FELD_ALLE_KUNDE_UID] = flrKunde.getFlrpartner().getC_uid();
            if (r.getFlrvertreter() != null) {
                if (r.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                    data[i][FELD_ALLE_VERTRETER] = r.getFlrvertreter().getFlrpartner()
                            .getC_name1nachnamefirmazeile1() + " "
                            + r.getFlrvertreter().getFlrpartner().getC_name2vornamefirmazeile2();
                } else {
                    data[i][FELD_ALLE_VERTRETER] = r.getFlrvertreter().getFlrpartner()
                            .getC_name1nachnamefirmazeile1();
                }
            }
            if (flrKunde.getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                data[i][FELD_ALLE_KUNDE2] = flrKunde.getFlrpartner().getC_name2vornamefirmazeile2();
            } else {
                data[i][FELD_ALLE_KUNDE2] = "";
            }
            PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(flrKunde.getFlrpartner().getI_id(),
                    theClientDto);
            data[i][FELD_ALLE_ADRESSE] = partnerDto.formatAdresse();
            Integer mahnstufeIId = getMahnwesenFac().getAktuelleMahnstufeEinerRechnung(r.getI_id(),
                    theClientDto);

            if (mahnstufeIId != null) {
                data[i][FELD_ALLE_MAHNSTUFE] = mahnstufeIId;
                MahnstufeDto mahnstufeDto = getMahnwesenFac()
                        .mahnstufeFindByPrimaryKey(new MahnstufePK(mahnstufeIId, r.getMandant_c_nr()));
                // Zinsen nur fuer noch nicht vollstaendig bezahlte
                if (!r.getStatus_c_nr().equals(RechnungFac.STATUS_BEZAHLT)) {
                    if (mahnstufeDto.getFZinssatz() != null) {
                        BigDecimal bdOffen = r.getN_wert().subtract(bdBezahlt);
                        // Zinsen
                        data[i][FELD_ALLE_ZINSEN] = bdOffen
                                .multiply(new BigDecimal(mahnstufeDto.getFZinssatz().floatValue()))
                                .movePointLeft(2);
                    }
                }
            }
            data[i][FELD_ALLE_ORT] = partnerDto.formatAdresse();
            if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_RECHNUNG)) {
                data[i][FELD_ALLE_RECHNUNGSNUMMER] = "RE " + r.getC_nr();
                data[i][FELD_ALLE_RECHNUNGSNUMMERZUGUTSCHRIFT] = "";
            } else {
                if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_GUTSCHRIFT)
                        || r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_WERTGUTSCHRIFT)) {
                    data[i][FELD_ALLE_RECHNUNGSNUMMER] = "GS " + r.getC_nr();
                    // wenn es eine Gutschrift ist die C_NR der Rechnung
                    // uebergeben
                    if (r.getFlrrechnung() != null) {
                        data[i][FELD_ALLE_RECHNUNGSNUMMERZUGUTSCHRIFT] = "RE " + r.getFlrrechnung().getC_nr();
                    }
                } else if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_ANZAHLUNG)) {
                    data[i][FELD_ALLE_RECHNUNGSNUMMER] = "AZ " + r.getC_nr();
                } else if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_SCHLUSSZAHLUNG)) {
                    data[i][FELD_ALLE_RECHNUNGSNUMMER] = "SR " + r.getC_nr();
                } else if (r.getFlrrechnungart().getC_nr().equals(RechnungFac.RECHNUNGART_PROFORMARECHNUNG)) {
                    data[i][FELD_ALLE_RECHNUNGSNUMMER] = "PF " + r.getC_nr();
                } else {
                    data[i][FELD_ALLE_RECHNUNGSNUMMER] = r.getC_nr();
                    data[i][FELD_ALLE_RECHNUNGSNUMMERZUGUTSCHRIFT] = "";
                }
            }
            if (r.getZahlungsziel_i_id() != null) {
                data[i][FELD_ALLE_ZIELDATUM] = getMandantFac().berechneZielDatumFuerBelegdatum(
                        r.getD_belegdatum(), r.getZahlungsziel_i_id(), theClientDto);
            }
            // Bezahlt
            if (r.getT_bezahltdatum() != null) {
                data[i][FELD_ALLE_BEZAHLTDATUM] = r.getT_bezahltdatum();
                // Zahltage
                int iZahltage = Helper.getDifferenzInTagen(r.getD_belegdatum(), r.getT_bezahltdatum());
                data[i][FELD_ALLE_ZAHLTAGE] = new Integer(iZahltage);
            }
            // Debitorenkontonummer
            KontoDtoSmall kontoDtoDeb = null;
            if (flrKunde.getKonto_i_id_debitorenkonto() != null) {
                kontoDtoDeb = getFinanzFac()
                        .kontoFindByPrimaryKeySmallOhneExc(flrKunde.getKonto_i_id_debitorenkonto());
            }
            String sKontonummer;
            if (kontoDtoDeb != null) {
                sKontonummer = kontoDtoDeb.getCNr();
            } else {
                sKontonummer = "";
            }
            data[i][FELD_ALLE_DEBITORENKONTO] = sKontonummer;
            data[i][FELD_ALLE_WAEHRUNG] = r.getWaehrung_c_nr();
            data[i][FELD_ALLE_KURS] = r.getN_kurs();

            // 14217
            String sLaenderart = getFinanzServiceFac().getLaenderartZuPartner(partnerDto.getIId(),
                    theClientDto);
            data[i][FELD_ALLE_LAENDERART] = sLaenderart;
            i++;
        }

        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);
        // Waehrung
        mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr());
        StringBuffer sSortierung = new StringBuffer();
        if (krit.bSortiereNachKostenstelle) {
            sSortierung.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sSortierung.append(", ");
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            if (krit.getBVerwendeStatistikAdresse()) {
                sSortierung.append(getTextRespectUISpr("rech.statistikadresse", theClientDto.getMandant(),
                        theClientDto.getLocUi()));
            } else {
                sSortierung.append(
                        getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi()));
            }
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) {
            sSortierung.append(
                    getTextRespectUISpr("bes.belegnummer", theClientDto.getMandant(), theClientDto.getLocUi()));
        } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            sSortierung.append(
                    getTextRespectUISpr("lp.vertreter", theClientDto.getMandant(), theClientDto.getLocUi()));
        }
        StringBuffer sFilter = new StringBuffer();
        if (sVon != null) {
            sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sVon + " ");
        }
        if (sBis != null) {
            sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" " + sBis + " ");
        }
        if (krit.kostenstelleIId != null) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId);
            sFilter.append(
                    getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi()));
            sFilter.append(" ");
            sFilter.append(kstDto.getCNr());
        }
        // Statistikadresse
        if (krit.getBVerwendeStatistikAdresse()) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            sFilter.append(getTextRespectUISpr("rech.nachstatistikadresse", theClientDto.getMandant(),
                    theClientDto.getLocUi()));
        }

        mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString());
        mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle));
        mapParameter.put(LPReport.P_SORTIERENACHKUNDE,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER));
        mapParameter.put(LPReport.P_SORTIERENACHVERTRETER,
                new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER));
        mapParameter.put(LPReport.P_FILTER, sFilter.toString());
        initJRDS(mapParameter, RechnungReportFac.REPORT_MODUL, sReportname, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
        // }
        // catch (FinderException ex) {
        // { // @ToDo FinderException
        // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_DRUCKEN,
        // null);
        // }
        // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_DRUCKEN, ex);
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

From source file:com.lp.server.stueckliste.ejbfac.StuecklisteReportFacBean.java

License:Open Source License

/**
 * Hole Stuecklisteneigenschaften fuer einen Artikel. Keys in Hashtable sind
 * StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_INDEX und
 * StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_MATERIALPLATZ.
 * /*from  w w  w.jav a 2s . c o m*/
 * @param iIdStklIDI
 *            Integer StuecklisteId
 * @param sMandantCNr
 *            String
 * @param theClientDto der aktuelle Benutzer
 * @return Hashtable
 * @throws EJBExceptionLP
 */
public Hashtable getStuecklisteEigenschaften(Integer iIdStklIDI, String sMandantCNr, TheClientDto theClientDto)
        throws EJBExceptionLP {
    Hashtable<String, String> daten = new Hashtable<String, String>();
    ;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;
    try {
        session = factory.openSession();
        Criteria crit = session.createCriteria(FLRStuecklisteeigenschaft.class);
        Criteria cStueckliste = crit.createCriteria("flrstueckliste");
        Criteria cArt = crit.createCriteria("flrstuecklisteeigenschaftart");

        cStueckliste.add(Restrictions.eq("i_id", iIdStklIDI));
        cStueckliste.add(Restrictions.eq("mandant_c_nr", sMandantCNr));

        List<?> resultList = crit.list();
        Iterator<?> it = resultList.iterator();
        while (it.hasNext()) {
            FLRStuecklisteeigenschaft flr = (FLRStuecklisteeigenschaft) it.next();
            if (flr.getFlrstuecklisteeigenschaftart().getC_bez()
                    .equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_INDEX)) {
                daten.put(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_INDEX, flr.getC_bez());
            }
            if (flr.getFlrstuecklisteeigenschaftart().getC_bez()
                    .equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_MATERIALPLATZ)) {
                daten.put(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_MATERIALPLATZ, flr.getC_bez());
            }
        }

    } finally {
        try {
            session.close();
        } catch (HibernateException he) {
            throw new EJBExceptionLP(EJBExceptionLP.FEHLER_HIBERNATE, he);
        }
    }
    if (daten != null && daten.size() == 0) {
        return null;
    }
    return daten;

}