Example usage for org.hibernate.criterion Restrictions ge

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

Introduction

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

Prototype

public static SimpleExpression ge(String propertyName, Object value) 

Source Link

Document

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

Usage

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printLosstatistik(java.sql.Timestamp tVon, java.sql.Timestamp tBis, Integer losIId,
        Integer stuecklisteIId, Integer auftragIId, boolean bArbeitsplanSortiertNachAG, boolean bVerdichtet,
        java.sql.Timestamp tStichtag, TheClientDto theClientDto) {

    this.useCase = UC_LOSSTATISTIK;
    this.index = -1;
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = factory.openSession();

    PersonalDto[] personalDtos = null;//from ww  w .j  av  a2s .com
    MaschineDto[] maschineDtos = null;
    try {
        personalDtos = getPersonalFac().personalFindByMandantCNr(theClientDto.getMandant(), true);
        maschineDtos = getZeiterfassungFac().maschineFindByMandantCNr(theClientDto.getMandant());
    } catch (RemoteException ex1) {
        throwEJBExceptionLPRespectOld(ex1);
    }

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

    Criteria c = session.createCriteria(FLRLosReport.class);
    c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant()));
    c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR,
            new String[] { LocaleFac.STATUS_ANGELEGT, LocaleFac.STATUS_STORNIERT })));
    if (stuecklisteIId != null) {
        c.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, stuecklisteIId));

        StuecklisteDto stuecklisteDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(stuecklisteIId,
                theClientDto);
        mapParameter.put("P_STUECKLISTE", stuecklisteDto.getArtikelDto().formatArtikelbezeichnung());

    }
    if (losIId != null) {
        c.add(Restrictions.eq("i_id", losIId));
    }
    if (auftragIId != null) {
        c.createAlias("flrauftrag", "a").add(Restrictions.eq("a.i_id", auftragIId));

        try {
            AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragIId);
            KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(),
                    theClientDto);
            mapParameter.put("P_AUFTRAG", auftragDto.getCNr());
            mapParameter.put("P_AUFTRAGPROJEKT", auftragDto.getCBezProjektbezeichnung());
            mapParameter.put("P_AUFTRAGKUNDE", kundeDto.getPartnerDto().formatAnrede());

            mapParameter.put("P_BEARBEITER",
                    getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdAnlegen(), theClientDto));
            if (auftragDto.getPersonalIIdVertreter() != null) {
                mapParameter.put("P_VERTRETER",
                        getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdVertreter(), theClientDto));
            }

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

    }
    if (tStichtag != null) {
        mapParameter.put("P_STICHTAG", tStichtag);// new
        // Timestamp(tStichtag.getTime()));
        tStichtag = Helper.cutTimestamp(new Timestamp(tStichtag.getTime() + 24 * 3600000));
    }

    if (losIId == null && auftragIId == null) {

        if (tVon != null) {
            c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tVon),
                    Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tVon)));
            mapParameter.put("P_VON", tVon);
        }
        if (tBis != null) {
            c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tBis),
                    Restrictions.lt(FertigungFac.FLR_LOS_T_ERLEDIGT, tBis)));
            mapParameter.put("P_BIS", new Timestamp(tBis.getTime() - 3600000));
        }

        if (tStichtag != null) {
            c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag),
                    Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag)));
            c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tStichtag),
                    Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tStichtag)));
        }

    }
    c.addOrder(Order.asc("c_nr"));

    List<?> results = c.list();
    ArrayList<LosStatistikDto> al = new ArrayList<LosStatistikDto>();

    Iterator<?> resultListIterator = results.iterator();
    while (resultListIterator.hasNext()) {
        FLRLosReport los = (FLRLosReport) resultListIterator.next();

        try {

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

            BigDecimal abgeliefert = new BigDecimal(0);
            for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) {
                FLRLosablieferung item = (FLRLosablieferung) iter2.next();
                abgeliefert = abgeliefert.add(item.getN_menge());
            }

            // VKpreis
            BigDecimal vkPreis = null;

            if (los.getFlrauftragposition() != null) {
                vkPreis = los.getFlrauftragposition()
                        .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte();
            } else {

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

                    Integer kundeIId = null;

                    if (los.getFlrauftrag() != null) {
                        kundeIId = los.getFlrauftrag().getFlrkunde().getI_id();
                    }
                    if (kundeIId == null && los.getFlrkunde() != null) {
                        kundeIId = los.getFlrkunde().getI_id();
                    }

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

                        MwstsatzDto mwstsatzDtoAktuell = getMandantFac()
                                .mwstsatzFindByMwstsatzbezIIdAktuellster(kundeDto.getMwstsatzbezIId(),
                                        theClientDto);

                        VkpreisfindungDto vkpreisfindungDto = getVkPreisfindungFac().verkaufspreisfindung(
                                los.getFlrstueckliste().getArtikel_i_id(), kundeIId, losDto.getNLosgroesse(),
                                losDto.getTProduktionsende(),
                                kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(),
                                mwstsatzDtoAktuell.getIId(), theClientDto.getSMandantenwaehrung(),
                                theClientDto);

                        VerkaufspreisDto kundenVKPreisDto = Helper.getVkpreisBerechnet(vkpreisfindungDto);
                        if (kundenVKPreisDto != null) {
                            vkPreis = kundenVKPreisDto.nettopreis;
                        }
                    } else {
                        VkPreisfindungEinzelverkaufspreisDto vkpreisDto = getVkPreisfindungFac()
                                .getArtikeleinzelverkaufspreis(los.getFlrstueckliste().getArtikel_i_id(), null,
                                        theClientDto.getSMandantenwaehrung(), theClientDto);
                        if (vkpreisDto != null && vkpreisDto.getNVerkaufspreisbasis() != null) {
                            vkPreis = vkpreisDto.getNVerkaufspreisbasis();
                        }
                    }

                }
            }

            // Zuerst Material
            Session session2 = factory.openSession();
            Criteria cSoll = session.createCriteria(FLRLossollmaterial.class);
            cSoll.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLMATERIAL_LOS_I_ID, los.getI_id()));
            cSoll.createAlias("flrartikel", "a");
            cSoll.addOrder(Order.asc("a.c_nr"));
            List<?> resultsSoll = cSoll.list();
            Iterator<?> resultListIteratorSoll = resultsSoll.iterator();
            while (resultListIteratorSoll.hasNext()) {
                FLRLossollmaterial sollmat = (FLRLossollmaterial) resultListIteratorSoll.next();
                if (bVerdichtet == false && sollmat.getIstmaterialset().size() > 0) {
                    int i = 0;
                    for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) {
                        FLRLosistmaterial item = (FLRLosistmaterial) iter.next();
                        LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                        losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr());
                        ArtikelDto artikelDto = getArtikelFac()
                                .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto);
                        losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());

                        Timestamp tsBuchungszeit = null;

                        List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac()
                                .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS,
                                        item.getI_id());

                        for (int k = 0; k < snrDtos.size(); k++) {

                            LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS,
                                    item.getI_id(), snrDtos.get(k).getCSeriennrChargennr());
                            tsBuchungszeit = bewDto.getTBuchungszeit();
                            break;
                        }

                        losStatistikDto.setBuchungszeit(tsBuchungszeit);

                        if (i == 0) {
                            losStatistikDto.setSollmenge(sollmat.getN_menge());
                            losStatistikDto.setSollpreis(sollmat.getN_sollpreis());
                        } else {
                            losStatistikDto.setSollmenge(new BigDecimal(0));
                            losStatistikDto.setSollpreis(new BigDecimal(0));
                        }

                        losStatistikDto.setBMaterial(true);
                        losStatistikDto.setIstpreis(getFertigungFac()
                                .getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto));
                        losStatistikDto.setAbgelieferteMenge(abgeliefert);
                        losStatistikDto.setVkpreisStueckliste(vkPreis);

                        BigDecimal istmenge = new BigDecimal(0);

                        if (Helper.short2boolean(item.getB_abgang()) == true) {
                            istmenge = istmenge.add(item.getN_menge());
                        } else {
                            istmenge = istmenge.subtract(item.getN_menge());
                        }

                        losStatistikDto.setIstmenge(istmenge);

                        if (tStichtag == null) {

                            al.add(losStatistikDto);
                            i++;
                        } else {
                            if (tsBuchungszeit == null) {
                                al.add(losStatistikDto);
                                i++;
                            } else {
                                if (tsBuchungszeit.before(tStichtag)) {
                                    al.add(losStatistikDto);
                                    i++;
                                }
                            }

                        }

                    }
                } else {

                    LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                    losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr());
                    ArtikelDto artikelDto = getArtikelFac()
                            .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto);
                    losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());
                    losStatistikDto.setSollmenge(sollmat.getN_menge());
                    losStatistikDto.setSollpreis(sollmat.getN_sollpreis());
                    losStatistikDto.setBMaterial(true);
                    losStatistikDto.setIstpreis(
                            getFertigungFac().getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto));
                    losStatistikDto.setAbgelieferteMenge(abgeliefert);
                    losStatistikDto.setVkpreisStueckliste(vkPreis);

                    BigDecimal istmenge = new BigDecimal(0);
                    for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) {
                        FLRLosistmaterial item = (FLRLosistmaterial) iter.next();

                        if (tStichtag != null) {

                            Timestamp tsBuchungszeit = null;

                            List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac()
                                    .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS,
                                            item.getI_id());

                            for (int k = 0; k < snrDtos.size(); k++) {

                                LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS,
                                        item.getI_id(), snrDtos.get(k).getCSeriennrChargennr());
                                tsBuchungszeit = bewDto.getTBuchungszeit();
                                break;
                            }

                            if (tsBuchungszeit.after(tStichtag)) {
                                continue;
                            }

                        }

                        if (Helper.short2boolean(item.getB_abgang()) == true) {
                            istmenge = istmenge.add(item.getN_menge());
                        } else {
                            istmenge = istmenge.subtract(item.getN_menge());
                        }
                    }
                    losStatistikDto.setIstmenge(istmenge);

                    al.add(losStatistikDto);
                }
            }
            session2.close();

            LossollarbeitsplanDto[] lossollarbeitsplanDtos = getFertigungFac()
                    .lossollarbeitsplanFindByLosIId(los.getI_id());
            // PJ14351 Nach AG sortieren
            if (bArbeitsplanSortiertNachAG == true) {

                // Nach Fertigungsgruppe sortieren
                for (int k = lossollarbeitsplanDtos.length - 1; k > 0; --k) {
                    for (int j = 0; j < k; ++j) {
                        Integer a1 = lossollarbeitsplanDtos[j].getIArbeitsgangnummer();
                        Integer a2 = lossollarbeitsplanDtos[j + 1].getIArbeitsgangnummer();
                        if (a1.intValue() > a2.intValue()) {
                            LossollarbeitsplanDto temp = lossollarbeitsplanDtos[j];
                            lossollarbeitsplanDtos[j] = lossollarbeitsplanDtos[j + 1];
                            lossollarbeitsplanDtos[j + 1] = temp;
                        }
                    }
                }
            }

            ArrayList<LosStatistikDto> hmSoll = new ArrayList<LosStatistikDto>();

            // Zuerst Maschinenzeiten
            for (int i = 0; i < lossollarbeitsplanDtos.length; i++) {
                if (lossollarbeitsplanDtos[i].getMaschineIId() != null) {
                    Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit();
                    BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit();
                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId,
                            theClientDto);

                    // Schon vorhanden?
                    boolean bGefunden = false;
                    for (int j = 0; j < hmSoll.size(); j++) {
                        LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);
                        if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) {
                            if (lossollarbeitsplanDtos[i].getMaschineIId()
                                    .equals(losStatistikDto.getMaschineIId())) {
                                losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit));
                                bGefunden = true;
                                hmSoll.set(j, losStatistikDto);
                            }
                        }
                    }
                    if (!bGefunden) {
                        LosStatistikDto losStatistikMaschineDto = new LosStatistikDto(losDto);
                        losStatistikMaschineDto.setArtikelnummer(artikelDto.getCNr());
                        losStatistikMaschineDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());
                        losStatistikMaschineDto.setSollmenge(sollzeit);
                        losStatistikMaschineDto.setBMaterial(false);
                        losStatistikMaschineDto.setBIstPerson(false);

                        losStatistikMaschineDto.setAbgelieferteMenge(abgeliefert);
                        losStatistikMaschineDto.setVkpreisStueckliste(vkPreis);

                        losStatistikMaschineDto.setSollpreis(getZeiterfassungFac()
                                .getMaschinenKostenZumZeitpunkt(lossollarbeitsplanDtos[i].getMaschineIId(),
                                        Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()))));
                        MaschineDto maschineDto = getZeiterfassungFac()
                                .maschineFindByPrimaryKey(lossollarbeitsplanDtos[i].getMaschineIId());

                        String maschinenname = "M:";
                        if (maschineDto.getCIdentifikationsnr() != null) {
                            maschinenname += maschineDto.getCIdentifikationsnr() + " ";
                        }
                        maschinenname += maschineDto.getCBez();

                        losStatistikMaschineDto.setPersonMaschine(maschinenname);
                        losStatistikMaschineDto.setMaschineIId(maschineDto.getIId());

                        hmSoll.add(losStatistikMaschineDto);
                    }
                }
            }
            // Dann Personalzeiten
            for (int i = 0; i < lossollarbeitsplanDtos.length; i++) {

                if (!Helper.short2boolean(lossollarbeitsplanDtos[i].getBNurmaschinenzeit())) {

                    Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit();
                    BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit();
                    ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId,
                            theClientDto);

                    // Schon vorhanden?
                    boolean bGefunden = false;
                    for (int j = 0; j < hmSoll.size(); j++) {
                        LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);
                        if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) {

                            if (losStatistikDto.getMaschineIId() == null) {
                                losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit));
                                hmSoll.set(j, losStatistikDto);
                                bGefunden = true;
                            }

                        }

                    }

                    if (!bGefunden) {
                        LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                        losStatistikDto.setArtikelnummer(artikelDto.getCNr());
                        losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung());
                        losStatistikDto.setSollmenge(sollzeit);
                        losStatistikDto.setBMaterial(false);
                        losStatistikDto.setBIstPerson(true);
                        losStatistikDto.setAbgelieferteMenge(abgeliefert);
                        losStatistikDto.setVkpreisStueckliste(vkPreis);
                        ArtikellieferantDto artikellieferantDto = getArtikelFac().getArtikelEinkaufspreis(
                                artikelDto.getIId(), new BigDecimal(1), theClientDto.getSMandantenwaehrung(),
                                theClientDto);
                        if (artikellieferantDto != null && artikellieferantDto.getLief1Preis() != null) {
                            losStatistikDto.setSollpreis(artikellieferantDto.getLief1Preis());
                        } else {
                            losStatistikDto.setSollpreis(new BigDecimal(0));
                        }
                        hmSoll.add(losStatistikDto);

                    }
                }
            }
            // Dann Zeiten

            AuftragzeitenDto[] maschinenzeitenDtos = getZeiterfassungFac()
                    .getAllMaschinenzeitenEinesBeleges(los.getI_id(), null, null, tStichtag, theClientDto);

            AuftragzeitenDto[] personalzeitenDtos = getZeiterfassungFac().getAllZeitenEinesBeleges(
                    LocaleFac.BELEGART_LOS, los.getI_id(), null, null, null, tStichtag, true, false,
                    theClientDto);

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

                boolean bGefunden = false;
                for (int j = 0; j < hmSoll.size(); j++) {
                    LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);

                    if (losStatistikDto.getMaschineIId() == null) {

                        if (losStatistikDto.getArtikelnummer().equals(personalzeitenDtos[i].getSArtikelcnr())) {
                            bGefunden = true;

                        }
                    }
                }

                if (bGefunden == false) {
                    LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                    losStatistikDto.setArtikelnummer(personalzeitenDtos[i].getSArtikelcnr());
                    losStatistikDto.setArtikelbezeichnung(personalzeitenDtos[i].getSArtikelbezeichnung());
                    losStatistikDto.setSollmenge(new BigDecimal(0));
                    losStatistikDto.setSollpreis(new BigDecimal(0));
                    losStatistikDto.setAbgelieferteMenge(abgeliefert);
                    losStatistikDto.setVkpreisStueckliste(vkPreis);
                    hmSoll.add(losStatistikDto);

                }
            }

            for (int i = 0; i < maschinenzeitenDtos.length; i++) {
                boolean bGefunden = false;

                if (tStichtag != null && maschinenzeitenDtos[i].getTsEnde() != null
                        && tStichtag.before(maschinenzeitenDtos[i].getTsEnde())) {
                    continue;
                }

                for (int j = 0; j < hmSoll.size(); j++) {
                    LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j);

                    if (losStatistikDto.getMaschineIId() != null && losStatistikDto.getMaschineIId()
                            .equals(maschinenzeitenDtos[i].getIPersonalMaschinenId())) {

                        if (losStatistikDto.getArtikelnummer()
                                .equals(maschinenzeitenDtos[i].getSArtikelcnr())) {
                            bGefunden = true;

                        }
                    }
                }

                if (bGefunden == false) {
                    LosStatistikDto losStatistikDto = new LosStatistikDto(losDto);
                    losStatistikDto.setArtikelnummer(maschinenzeitenDtos[i].getSArtikelcnr());
                    losStatistikDto.setArtikelbezeichnung(maschinenzeitenDtos[i].getSArtikelbezeichnung());
                    losStatistikDto.setMaschineIId(maschinenzeitenDtos[i].getIPersonalMaschinenId());
                    losStatistikDto.setSollmenge(new BigDecimal(0));
                    losStatistikDto.setSollpreis(new BigDecimal(0));
                    losStatistikDto.setAbgelieferteMenge(abgeliefert);
                    losStatistikDto.setVkpreisStueckliste(vkPreis);

                    hmSoll.add(losStatistikDto);

                }

            }

            for (int k = 0; k < hmSoll.size(); k++) {
                LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(k);

                losStatistikDto.setAbgelieferteMenge(abgeliefert);

                int iPos = al.size();
                al.add(losStatistikDto);
                // Personen
                if (losStatistikDto.getMaschineIId() == null) {
                    for (int i = 0; i < personalDtos.length; i++) {
                        PersonalDto personalDto = personalDtos[i];

                        BigDecimal bdgesamtzeit = new BigDecimal(0);
                        BigDecimal bdgesamtkosten = new BigDecimal(0);
                        String person = "";
                        for (int j = 0; j < personalzeitenDtos.length; j++) {
                            AuftragzeitenDto azDto = personalzeitenDtos[j];
                            if (azDto != null) {
                                if (personalDto.getIId().equals(azDto.getIPersonalMaschinenId())
                                        && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) {
                                    bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer()));
                                    bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten());
                                    person = azDto.getSPersonalMaschinenname();
                                    personalzeitenDtos[j] = null;
                                }
                            }
                        }
                        if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) {

                            LosStatistikDto losStatistikPersonDto = new LosStatistikDto(losDto);
                            losStatistikPersonDto.setPersonMaschine(person);
                            losStatistikPersonDto.setBMaterial(false);
                            losStatistikPersonDto.setAbgelieferteMenge(abgeliefert);
                            losStatistikPersonDto.setVkpreisStueckliste(vkPreis);

                            losStatistikPersonDto.setIstmenge(bdgesamtzeit);
                            if (bdgesamtzeit.doubleValue() != 0) {
                                losStatistikPersonDto.setIstpreis(
                                        bdgesamtkosten.divide(bdgesamtzeit, 4, BigDecimal.ROUND_HALF_EVEN));
                            } else {
                                losStatistikPersonDto.setIstpreis(new BigDecimal(0));
                            }
                            al.add(losStatistikPersonDto);

                        }

                    }
                }
                // Maschinen
                if (losStatistikDto.getMaschineIId() != null) {
                    for (int i = 0; i < maschineDtos.length; i++) {
                        MaschineDto maschineDto = maschineDtos[i];

                        BigDecimal bdgesamtzeit = new BigDecimal(0);
                        BigDecimal bdgesamtkosten = new BigDecimal(0);
                        for (int j = 0; j < maschinenzeitenDtos.length; j++) {

                            if (tStichtag != null && maschinenzeitenDtos[j].getTsEnde() != null
                                    && tStichtag.before(maschinenzeitenDtos[j].getTsEnde())) {
                                continue;
                            }

                            AuftragzeitenDto azDto = maschinenzeitenDtos[j];
                            if (maschineDto.getIId().equals(azDto.getIPersonalMaschinenId())
                                    && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) {
                                if (losStatistikDto.getMaschineIId().equals(azDto.getIPersonalMaschinenId())) {
                                    bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer()));
                                    bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten());
                                }

                            }
                        }
                        if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) {

                            BigDecimal kosten = bdgesamtkosten.divide(bdgesamtzeit, 4,
                                    BigDecimal.ROUND_HALF_EVEN);

                            if (losStatistikDto.getIstmenge() != null) {
                                losStatistikDto.setIstmenge(losStatistikDto.getIstmenge().add(bdgesamtzeit));
                            } else {
                                losStatistikDto.setIstmenge(bdgesamtzeit);
                            }

                            if (losStatistikDto.getIstpreis() != null) {
                                losStatistikDto.setIstpreis(losStatistikDto.getIstpreis().add(kosten));
                            } else {
                                losStatistikDto.setIstpreis(kosten);
                            }
                            al.set(iPos, losStatistikDto);
                        }

                    }
                }
            }

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

    }
    session.close();

    data = new Object[al.size()][23];
    for (int i = 0; i < al.size(); i++) {
        LosStatistikDto losStatistikDto = (LosStatistikDto) al.get(i);
        data[i][LOSSTATISTIK_GRUPPIERUNG] = losStatistikDto.getLosDto().getCNr();

        if (losStatistikDto.getLosDto().getTManuellerledigt() != null) {
            data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTManuellerledigt();
        } else {
            data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTErledigt();
        }

        data[i][LOSSTATISTIK_BEWERTUNG] = losStatistikDto.getLosDto().getFBewertung();
        data[i][LOSSTATISTIK_GEPLANTESSOLLMATERIAL] = losStatistikDto.getLosDto().getNSollmaterial();
        data[i][LOSSTATISTIK_GRUPPIERUNGBEZEICHNUNG] = losStatistikDto.getLosDto().getCProjekt();
        data[i][LOSSTATISTIK_GRUPPIERUNGERLEDIGT] = losStatistikDto.getLosDto().getTErledigt();
        data[i][LOSSTATISTIK_GRUPPIERUNGAUSGABE] = losStatistikDto.getLosDto().getTAusgabe();
        data[i][LOSSTATISTIK_GRUPPIERUNABGELIEFERTEMENGE] = losStatistikDto.getAbgelieferteMenge();
        data[i][LOSSTATISTIK_GRUPPIERUNGLOSGROESSE] = losStatistikDto.getLosDto().getNLosgroesse();
        data[i][LOSSTATISTIK_GRUPPIERUNVKPREIS] = losStatistikDto.getVkpreisStueckliste();
        data[i][LOSSTATISTIK_BUCHUNGSZEIT] = losStatistikDto.getBuchungszeit();

        if (losStatistikDto.getLosDto().getStuecklisteIId() != null) {
            data[i][LOSSTATISTIK_GRUPPIERUNGSTKLARTIKEL] = getStuecklisteFac()
                    .stuecklisteFindByPrimaryKey(losStatistikDto.getLosDto().getStuecklisteIId(), theClientDto)
                    .getArtikelDto().formatArtikelbezeichnung();
        }

        if (losStatistikDto.getLosDto().getAuftragIId() != null) {
            AuftragDto auftragDto = getAuftragFac()
                    .auftragFindByPrimaryKey(losStatistikDto.getLosDto().getAuftragIId());
            if (auftragDto.getKundeIIdAuftragsadresse() != null) {
                KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(),
                        theClientDto);
                data[i][LOSSTATISTIK_GRUPPIERUNGKUNDE] = kundeDto.getPartnerDto().formatAnrede();
            }
        }

        data[i][LOSSTATISTIK_ISTMENGE] = losStatistikDto.getIstmenge();
        data[i][LOSSTATISTIK_ISTPREIS] = losStatistikDto.getIstpreis();
        data[i][LOSSTATISTIK_PERSONALMASCHINE] = losStatistikDto.getPersonMaschine();
        data[i][LOSSTATISTIK_ISTPERSON] = new Boolean(losStatistikDto.isBIstPerson());
        data[i][LOSSTATISTIK_SOLLMENGE] = losStatistikDto.getSollmenge();
        data[i][LOSSTATISTIK_SOLLPREIS] = losStatistikDto.getSollpreis();
        data[i][LOSSTATISTIK_ARTIKELNUMMER] = losStatistikDto.getArtikelnummer();
        data[i][LOSSTATISTIK_ARTIKELBEZEICHNUNG] = losStatistikDto.getArtikelbezeichnung();
        data[i][LOSSTATISTIK_UNTERGRUPPEMATERIAL] = new Boolean(losStatistikDto.isBMaterial());
    }

    initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_LOSSTATISTIK,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    return getReportPrint();
}

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

License:Open Source License

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

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

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

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

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

        }
        if (dBis != null) {

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

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

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

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

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

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

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

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

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

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

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

License:Open Source License

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

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

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

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

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

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

    }
    return new BuchungsjournalExportHVRawFormatter(details);
}

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

License:Open Source License

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

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

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

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

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

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

        //         zuBuchen = getBuchungenKorrekteUst(zuBuchen, mwstKonten);

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

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

    return buchungen;
}

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

License:Open Source License

@TransactionTimeout(20000)
public ArrayList<IntrastatDto> getIntrastatDatenWareneingang(java.sql.Date dVon, java.sql.Date dBis,
        BigDecimal bdTransportkosten, TheClientDto theClientDto) throws EJBExceptionLP {
    ArrayList<IntrastatDto> daten = new ArrayList<IntrastatDto>();
    Session session = null;/*from w w  w  .j a v a  2  s  .c o  m*/
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRWareneingangspositionen.class);
        Criteria cWE = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRWARENEINGANG);
        Criteria cBesPos = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRBESTELLPOSITION);
        Criteria cBes = cBesPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG);
        Criteria cLieferant = cBes.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT);
        Criteria cPartner = cLieferant.createCriteria(LieferantFac.FLR_PARTNER);
        Criteria cLandPLZOrt = cPartner.createCriteria(PartnerFac.FLR_PARTNER_FLRLANDPLZORT);
        Criteria cLand = cLandPLZOrt.createCriteria(SystemFac.FLR_LP_FLRLAND);
        // Nur auslaendische
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);
        //und die die eine UID-Nummer haben
        cPartner.add(Restrictions.isNotNull(PartnerFac.FLR_PARTNER_C_UID));

        cLand.add(Restrictions.ne(SystemFac.FLR_LP_LANDLKZ,
                mandantDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz()));
        // Filter nach Mandant
        cBes.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter: Nur Ident-Positionen
        cBesPos.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR,
                BestellpositionFac.BESTELLPOSITIONART_IDENT));
        // Wareneingangsdatum von - bis
        cWE.add(Restrictions.ge(WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, dVon)); // von
        // 00
        // :
        // 00
        // :
        // 00
        cWE.add(Restrictions.lt(WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, dBis)); // bis
        // 23
        // :
        // 59
        // :
        // 59

        List<?> list = c.list();
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRWareneingangspositionen wePos = (FLRWareneingangspositionen) iter.next();
            IntrastatDto iDto = new IntrastatDto();
            iDto.setArtikelDto(getArtikelFac().artikelFindByPrimaryKey(
                    wePos.getFlrbestellposition().getFlrartikel().getI_id(), theClientDto));
            iDto.setBelegart("BS");
            iDto.setBelegnummer(wePos.getFlrbestellposition().getFlrbestellung().getC_nr());
            // Einstandspreis in Mandantenwaehrung
            BigDecimal bdEinstandspreis;
            if (wePos.getN_einstandspreis() != null) {
                bdEinstandspreis = getLocaleFac().rechneUmInMandantenWaehrung(wePos.getN_einstandspreis(),
                        wePos.getFlrwareneingang().getN_wechselkurs());
            } else {
                bdEinstandspreis = new BigDecimal(0);
            }
            iDto.setEinzelpreis(bdEinstandspreis);
            iDto.setMenge(
                    wePos.getN_geliefertemenge() != null ? wePos.getN_geliefertemenge() : new BigDecimal(0));
            // Wert = Menge * Preis
            iDto.setWert(iDto.getMenge().multiply(iDto.getEinzelpreis()));
            // Zur Aufteilung der Transportkosten den Gesamtwert des
            // Wareneingangs berechnen
            BigDecimal bdGesamtwertDesWareneingangs = new BigDecimal(0);
            WareneingangspositionDto[] wePositionen = getWareneingangFac()
                    .wareneingangspositionFindByWareneingangIId(wePos.getWareneingang_i_id());
            for (int i = 0; i < wePositionen.length; i++) {
                if (wePositionen[i].getNGeliefertemenge() != null
                        && wePositionen[i].getNEinstandspreis() != null) {
                    bdGesamtwertDesWareneingangs = bdGesamtwertDesWareneingangs
                            .add(getLocaleFac().rechneUmInMandantenWaehrung(
                                    wePositionen[i].getNGeliefertemenge()
                                            .multiply(wePositionen[i].getNEinstandspreis()),
                                    wePos.getFlrwareneingang().getN_wechselkurs()));
                }
            }
            BigDecimal bdAnteiligeTransportkosten;
            if (bdGesamtwertDesWareneingangs.compareTo(new BigDecimal(0)) > 0) {
                bdAnteiligeTransportkosten = bdGesamtwertDesWareneingangs.divide(
                        bdGesamtwertDesWareneingangs.add(bdTransportkosten),
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN);
                if (bdAnteiligeTransportkosten.compareTo(new BigDecimal(0)) == 0) {
                    bdAnteiligeTransportkosten = new BigDecimal(1);
                }
                iDto.setStatistischerWert(iDto.getWert().divide(bdAnteiligeTransportkosten,
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN));
            } else {
                // kann nicht aufgeteilt werden
                bdAnteiligeTransportkosten = bdTransportkosten;
                iDto.setStatistischerWert(iDto.getWert().add(bdAnteiligeTransportkosten));
            }

            iDto.setPartnerDto(getPartnerFac().partnerFindByPrimaryKey(wePos.getFlrbestellposition()
                    .getFlrbestellung().getFlrlieferant().getFlrpartner().getI_id(), theClientDto));
            WarenverkehrsnummerDto wvk = null;
            if (iDto.getArtikelDto().getCWarenverkehrsnummer() != null) {
                wvk = getFinanzServiceFac().warenverkehrsnummerFindByPrimaryKeyOhneExc(
                        iDto.getArtikelDto().getCWarenverkehrsnummer());
            }
            BigDecimal bdGewicht = null;
            iDto.setWarenverkehrsnummerDto(wvk);
            if (iDto.getArtikelDto().getFGewichtkg() != null) {
                bdGewicht = iDto.getMenge().multiply(new BigDecimal(iDto.getArtikelDto().getFGewichtkg()));
            } else {
                bdGewicht = new BigDecimal(0);
            }
            iDto.setGewichtInKg(bdGewicht);
            daten.add(iDto);
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        closeSession(session);
    }
    return daten;
}

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

License:Open Source License

@TransactionTimeout(20000)
public ArrayList<IntrastatDto> getIntrastatDatenVersand(java.sql.Date dVon, java.sql.Date dBis,
        BigDecimal bdTransportkosten, TheClientDto theClientDto) throws EJBExceptionLP {
    ArrayList<IntrastatDto> daten = new ArrayList<IntrastatDto>();
    Session session = null;/*  ww  w.  ja  v a  2  s.com*/
    try {
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // Lieferscheinpositionen
        Criteria cLSPos = session.createCriteria(FLRLieferscheinposition.class);
        Criteria cLS = cLSPos.createCriteria(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN);
        Criteria cLSKunde = cLS.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDE);
        Criteria cLSPartner = cLSKunde.createCriteria(LieferantFac.FLR_PARTNER);
        Criteria cLSLandPLZOrt = cLSPartner.createCriteria(PartnerFac.FLR_PARTNER_FLRLANDPLZORT);
        Criteria cLSLand = cLSLandPLZOrt.createCriteria(SystemFac.FLR_LP_FLRLAND);
        // Nur auslaendische
        MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(),
                theClientDto);

        //und die die eine UID-Nummer haben
        cLSPartner.add(Restrictions.isNotNull(PartnerFac.FLR_PARTNER_C_UID));

        cLSLand.add(Restrictions.ne(SystemFac.FLR_LP_LANDLKZ,
                mandantDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz()));
        // Filter nach Mandant
        cLS.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter: Nur Ident-Positionen
        cLSPos.add(
                Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR,
                        LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT));
        // Belegdatum von - bis
        cLS.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, dVon)); // von
        // 00
        // :
        // 00
        // :
        // 00
        cLS.add(Restrictions.lt(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, dBis)); // bis
        // 23
        // :
        // 59
        // :
        // 59

        List<?> listLSPos = cLS.list();
        for (Iterator<?> iter = listLSPos.iterator(); iter.hasNext();) {
            FLRLieferscheinposition lsPos = (FLRLieferscheinposition) iter.next();
            IntrastatDto iDto = new IntrastatDto();
            iDto.setArtikelDto(
                    getArtikelFac().artikelFindByPrimaryKey(lsPos.getFlrartikel().getI_id(), theClientDto));
            iDto.setBelegart("LS");
            iDto.setBelegnummer(lsPos.getFlrlieferschein().getC_nr());
            /**
             * @todo MB ist das der richtige Preis?
             * @todo MB Wechselkurs beruecksichtigen
             */
            iDto.setEinzelpreis(lsPos.getN_nettogesamtpreisplusversteckteraufschlagminusrabatt() != null
                    ? lsPos.getN_nettogesamtpreisplusversteckteraufschlagminusrabatt()
                    : new BigDecimal(0));
            iDto.setMenge(lsPos.getN_menge() != null ? lsPos.getN_menge() : new BigDecimal(0));
            iDto.setPartnerDto(getPartnerFac().partnerFindByPrimaryKey(
                    lsPos.getFlrlieferschein().getFlrkunde().getFlrpartner().getI_id(), theClientDto));
            /**
             * @todo das mit den Transportkosten noch besser loesen
             */
            BigDecimal bdGesamtwertDesWareneingangs = new BigDecimal(0);
            LieferscheinpositionDto[] lsPositionen = getLieferscheinpositionFac()
                    .lieferscheinpositionFindByLieferscheinIId(lsPos.getFlrlieferschein().getI_id());
            for (int i = 0; i < lsPositionen.length; i++) {
                if (lsPositionen[i].getNMenge() != null
                        && lsPositionen[i].getNEinzelpreisplusversteckteraufschlag() != null) {
                    bdGesamtwertDesWareneingangs = bdGesamtwertDesWareneingangs
                            .add(getLocaleFac().rechneUmInMandantenWaehrung(
                                    lsPositionen[i].getNMenge().multiply(
                                            lsPositionen[i].getNEinzelpreisplusversteckteraufschlag()),
                                    new BigDecimal(lsPos.getFlrlieferschein()
                                            .getF_wechselkursmandantwaehrungzulieferscheinwaehrung())));
                }
            }

            iDto.setWert(iDto.getMenge().multiply(iDto.getEinzelpreis()));
            /*
             * iDto .setStatistischerWert(iDto.getWert().add(
             * bdTransportkosten));
             */
            BigDecimal bdAnteiligeTransportkosten;
            if (bdGesamtwertDesWareneingangs.compareTo(new BigDecimal(0)) > 0) {
                bdAnteiligeTransportkosten = bdGesamtwertDesWareneingangs.divide(
                        bdGesamtwertDesWareneingangs.add(bdTransportkosten),
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN);
                if (bdAnteiligeTransportkosten.compareTo(new BigDecimal(0)) == 0) {
                    bdAnteiligeTransportkosten = new BigDecimal(1);
                }
                iDto.setStatistischerWert(iDto.getWert().divide(bdAnteiligeTransportkosten,
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN));
            } else {
                // kann nicht aufgeteilt werden
                bdAnteiligeTransportkosten = bdTransportkosten;
                iDto.setStatistischerWert(iDto.getWert().add(bdAnteiligeTransportkosten));
            }
            WarenverkehrsnummerDto wvk = null;
            if (iDto.getArtikelDto().getCWarenverkehrsnummer() != null) {
                wvk = getFinanzServiceFac().warenverkehrsnummerFindByPrimaryKeyOhneExc(
                        iDto.getArtikelDto().getCWarenverkehrsnummer());
            }
            iDto.setWarenverkehrsnummerDto(wvk);
            BigDecimal bdGewicht = null;
            iDto.setWarenverkehrsnummerDto(wvk);
            if (iDto.getArtikelDto().getFGewichtkg() != null) {
                bdGewicht = iDto.getMenge().multiply(new BigDecimal(iDto.getArtikelDto().getFGewichtkg()));
            } else {
                bdGewicht = new BigDecimal(0);
            }
            iDto.setGewichtInKg(bdGewicht);
            daten.add(iDto);
        }

        // Rechnungspositionen
        Criteria cREPos = session.createCriteria(FLRRechnungPosition.class);
        Criteria cRE = cREPos.createCriteria(RechnungFac.FLR_RECHNUNGPOSITION_FLRRECHNUNG);
        Criteria cREArt = cRE.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART);
        Criteria cREKunde = cRE.createCriteria(RechnungFac.FLR_RECHNUNG_FLRKUNDE);
        Criteria cREPartner = cREKunde.createCriteria(LieferantFac.FLR_PARTNER);
        Criteria cRELandPLZOrt = cREPartner.createCriteria(PartnerFac.FLR_PARTNER_FLRLANDPLZORT);
        Criteria cRELand = cRELandPLZOrt.createCriteria(SystemFac.FLR_LP_FLRLAND);
        // Nur auslaendische
        cRELand.add(Restrictions.ne(SystemFac.FLR_LP_LANDLKZ,
                mandantDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz()));
        // Filter nach Mandant
        cRE.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter: Nur Ident-Positionen
        cREPos.add(Restrictions.eq(RechnungFac.FLR_RECHNUNGPOSITION_POSITIONSART_C_NR,
                RechnungFac.POSITIONSART_RECHNUNG_IDENT));
        // keine stornierten
        cRE.add(Restrictions.ne(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, RechnungFac.STATUS_STORNIERT));
        // Belegdatum von - bis
        cRE.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dVon)); // von
        // 00:
        // 00:00
        cRE.add(Restrictions.lt(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dBis)); // bis
        // 23:
        // 59:59
        // nur Rechnungen
        cREArt.add(Restrictions.eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR,
                RechnungFac.RECHNUNGTYP_RECHNUNG));
        // Query
        List<?> listREPos = cREPos.list();
        for (Iterator<?> iter = listREPos.iterator(); iter.hasNext();) {
            FLRRechnungPosition rePos = (FLRRechnungPosition) iter.next();
            // Die Rechnung muss aktiviert sein
            if (rePos.getFlrrechnung().getStatus_c_nr().equals(RechnungFac.STATUS_ANGELEGT)) {
                throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_EXPORT_BELEG_IST_NOCH_NICHT_AKTIVIERT,
                        new Exception("Rechnung " + rePos.getFlrrechnung().getC_nr()));
            }
            IntrastatDto iDto = new IntrastatDto();
            iDto.setArtikelDto(
                    getArtikelFac().artikelFindByPrimaryKey(rePos.getFlrartikel().getI_id(), theClientDto));
            iDto.setBelegart("RE");
            iDto.setBelegnummer(rePos.getFlrrechnung().getC_nr());
            /**
             * @todo MB ist das der richtige Preis?
             * @todo MB Wechselkurs beruecksichtigen
             */
            iDto.setEinzelpreis(rePos.getN_nettoeinzelpreis_plus_aufschlag_minus_rabatt() != null
                    ? rePos.getN_nettoeinzelpreis_plus_aufschlag_minus_rabatt()
                    : new BigDecimal(0));
            iDto.setMenge(rePos.getN_menge() != null ? rePos.getN_menge() : new BigDecimal(0));
            iDto.setPartnerDto(getPartnerFac().partnerFindByPrimaryKey(
                    rePos.getFlrrechnung().getFlrkunde().getFlrpartner().getI_id(), theClientDto));
            /**
             * @todo das mit den Transportkosten noch besser loesen
             */
            BigDecimal bdGesamtwertDesWareneingangs = new BigDecimal(0);
            RechnungPositionDto[] rsPositionen = getRechnungFac()
                    .rechnungPositionFindByRechnungIId(rePos.getFlrrechnung().getI_id());
            try {
                for (int i = 0; i < rsPositionen.length; i++) {
                    if (rsPositionen[i].getNMenge() != null
                            && rsPositionen[i].getNEinzelpreisplusversteckteraufschlag() != null) {
                        bdGesamtwertDesWareneingangs = bdGesamtwertDesWareneingangs
                                .add(getLocaleFac()
                                        .rechneUmInMandantenWaehrung(
                                                rsPositionen[i].getNMenge()
                                                        .multiply(rsPositionen[i]
                                                                .getNEinzelpreisplusversteckteraufschlag()),

                                                rePos.getFlrrechnung().getN_kurs()));
                    }
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            iDto.setWert(iDto.getMenge().multiply(iDto.getEinzelpreis()));
            /*
             * iDto .setStatistischerWert(iDto.getWert().add(
             * bdTransportkosten));
             */
            BigDecimal bdAnteiligeTransportkosten;
            if (bdGesamtwertDesWareneingangs.compareTo(new BigDecimal(0)) > 0) {
                bdAnteiligeTransportkosten = bdGesamtwertDesWareneingangs.divide(
                        bdGesamtwertDesWareneingangs.add(bdTransportkosten),
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN);
                if (bdAnteiligeTransportkosten.compareTo(new BigDecimal(0)) == 0) {
                    bdAnteiligeTransportkosten = new BigDecimal(1);
                }
                iDto.setStatistischerWert(iDto.getWert().divide(bdAnteiligeTransportkosten,
                        FinanzReportFac.INTRASTAT_NACHKOMMASTELLEN_PREISE, BigDecimal.ROUND_HALF_EVEN));
            } else {
                // kann nicht aufgeteilt werden
                bdAnteiligeTransportkosten = bdTransportkosten;
                iDto.setStatistischerWert(iDto.getWert().add(bdAnteiligeTransportkosten));
            }
            WarenverkehrsnummerDto wvk = null;
            if (iDto.getArtikelDto().getCWarenverkehrsnummer() != null) {
                wvk = getFinanzServiceFac().warenverkehrsnummerFindByPrimaryKeyOhneExc(
                        iDto.getArtikelDto().getCWarenverkehrsnummer());
            }
            iDto.setWarenverkehrsnummerDto(wvk);
            BigDecimal bdGewicht = null;
            iDto.setWarenverkehrsnummerDto(wvk);
            if (iDto.getArtikelDto().getFGewichtkg() != null) {
                bdGewicht = iDto.getMenge().multiply(new BigDecimal(iDto.getArtikelDto().getFGewichtkg()));
            } else {
                bdGewicht = new BigDecimal(0);
            }
            iDto.setGewichtInKg(bdGewicht);
            daten.add(iDto);
        }
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
    } finally {
        closeSession(session);
    }
    return daten;
}

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

License:Open Source License

/**
 * Buchungsjournal drucken.//from ww w  .  j a  va 2 s  .  c  o m
 * 
 * @param theClientDto
 *            String
 * @param buchungsjournalIId
 *            Integer
 * @return JasperPrint
 * @throws EJBExceptionLP
 */
public JasperPrintLP printBuchungsjournal(TheClientDto theClientDto, Integer buchungsjournalIId, Date dVon,
        Date dBis, boolean storniert, boolean bDatumsfilterIstBuchungsdatum, String text, String belegnummer,
        BigDecimal betrag) throws EJBExceptionLP {
    Session session = null;
    try {
        this.useCase = UC_BUCHUNGSJOURNAL;
        this.index = -1;

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

        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRFinanzBuchungDetail.class);

        Timestamp help = new Timestamp(dVon.getTime());

        c.createAlias("flrbuchung", "s");

        String datumsfilter = "s.d_buchungsdatum";
        if (!bDatumsfilterIstBuchungsdatum) {
            datumsfilter = "t_anlegen";
        }
        c.add(Restrictions.ge(datumsfilter, Helper.cutTimestamp(help)));

        if (text != null) {
            c.add(Restrictions.ilike("s." + FinanzFac.FLR_BUCHUNG_C_TEXT, "%" + text + "%"));
            mapParameter.put("P_TEXT", text);

        }

        if (belegnummer != null) {

            String trennzeichen = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                    ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_TRENNZEICHEN)
                    .getCWert();
            Integer stellenBelegnummer = new Integer(getParameterFac()
                    .getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN,
                            ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_STELLEN_BELEGNUMMER)
                    .getCWert());

            String sValue = belegnummer;
            sValue = sValue.replaceAll("%", "");

            sValue = Helper.fitString2LengthAlignRight(sValue, stellenBelegnummer, '0');

            sValue = "%" + trennzeichen + sValue;

            c.add(Restrictions.like("s." + FinanzFac.FLR_BUCHUNG_C_BELEGNUMMER, sValue));
        }

        if (betrag != null) {

            Integer toleranzBetragsuche = new Integer(getParameterFac()
                    .getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FINANZ,
                            ParameterFac.PARAMETER_TOLERANZ_BETRAGSUCHE)
                    .getCWert());

            BigDecimal value1 = betrag.subtract(
                    new BigDecimal(betrag.doubleValue() * ((double) toleranzBetragsuche / (double) 100))).abs();
            BigDecimal value2 = betrag
                    .add(new BigDecimal(betrag.doubleValue() * ((double) toleranzBetragsuche / (double) 100)))
                    .abs();

            c.add(Restrictions.or(Restrictions.between(FinanzFac.FLR_BUCHUNGDETAIL_N_BETRAG, value1, value2),
                    Restrictions.between(FinanzFac.FLR_BUCHUNGDETAIL_N_BETRAG, value2.negate(),
                            value1.negate())));

            mapParameter.put("P_TOLERANZ_BETRAGSSUCHE", toleranzBetragsuche);
            mapParameter.put("P_BETRAG", betrag);

        }

        help = new Timestamp(dBis.getTime() + 24 * 3600000);

        c.add(Restrictions.lt(datumsfilter, Helper.cutTimestamp(help)));

        if (storniert != true) {
            c.add(Restrictions.isNull("s.t_storniert"));
        } else {
            // Skip
        }

        c.createAlias("s.flrkostenstelle", "k");
        c.add(Restrictions.eq("k.mandant_c_nr", theClientDto.getMandant()));

        List<?> list = c.list();
        data = new Object[list.size()][REPORT_BUCHUNGSJOURNAL_ANZAHL_SPALTEN];
        int i = 0;

        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRFinanzBuchungDetail b = (FLRFinanzBuchungDetail) iter.next();
            data[i][REPORT_BUCHUNGSJOURNAL_AUSZUG] = b.getI_auszug();
            data[i][REPORT_BUCHUNGSJOURNAL_BELEGNUMMER] = b.getFlrbuchung().getC_belegnummer();
            data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSART] = b.getFlrbuchung().getBuchungsart_c_nr();
            data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSDATUM] = b.getFlrbuchung().getD_buchungsdatum();
            if (b.getFlrgegenkonto() != null) {
                data[i][REPORT_BUCHUNGSJOURNAL_GEGENKONTONUMMER] = b.getFlrgegenkonto().getC_nr();
            }
            data[i][REPORT_BUCHUNGSJOURNAL_BETRAG] = b.getN_betrag();
            data[i][REPORT_BUCHUNGSJOURNAL_KONTONUMMER] = b.getFlrkonto().getC_nr();
            data[i][REPORT_BUCHUNGSJOURNAL_KOSTENSTELLENUMMER] = b.getFlrbuchung().getFlrkostenstelle()
                    .getC_nr();
            data[i][REPORT_BUCHUNGSJOURNAL_TEXT] = b.getFlrbuchung().getC_text();
            data[i][REPORT_BUCHUNGSJOURNAL_UST] = b.getN_ust();

            if (b.getFlrbuchung().getT_storniert() == null) {
                data[i][REPORT_BUCHUNGSJOURNAL_STORNIERT] = new Boolean(false);
            } else {
                data[i][REPORT_BUCHUNGSJOURNAL_STORNIERT] = new Boolean(true);
            }

            if (b.getBuchungdetailart_c_nr().equals("SOLL           ")) {
                data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = b.getN_betrag();
                data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = null;
            } else if (b.getBuchungdetailart_c_nr().equals("HABEN          ")) {
                data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = b.getN_betrag();
                data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = null;
            } else {
                data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = null;
                data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = null;
            }

            data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSJOURNALDATUM] = b.getT_anlegen();

            data[i][REPORT_BUCHUNGSJOURNAL_WER] = getPersonalFac()
                    .personalFindByPrimaryKeySmall(b.getFlrbuchung().getPersonal_i_id_anlegen())
                    .getCKurzzeichen();

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

        mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr());
        mapParameter.put("P_VON", dVon);
        mapParameter.put("P_MITSTORNIERTEN", new Boolean(storniert));
        mapParameter.put("P_DATUMSFILTER_IST_BUCHUNGSDATUM", new Boolean(bDatumsfilterIstBuchungsdatum));
        mapParameter.put("P_BIS", dBis);
        initJRDS(mapParameter, FinanzReportFac.REPORT_MODUL, FinanzReportFac.REPORT_BUCHUNGSJOURNAL,
                theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
        return getReportPrint();
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    } finally {
        closeSession(session);
    }
}

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

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public MahnlaufDto createMahnlaufMitMahnvorschlag(TheClientDto theClientDto) throws EJBExceptionLP {
    Session session = null;// ww w . j  av a2s. c  om
    try {
        MahnlaufDto mahnlaufDto = null;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        Criteria c = session.createCriteria(FLRRechnungReport.class);
        // Filter nach Mandant.
        c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant()));
        // Filter nach Stati
        String[] sStati = new String[] { RechnungFac.STATUS_OFFEN, RechnungFac.STATUS_TEILBEZAHLT,
                RechnungFac.STATUS_VERBUCHT };
        c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, sStati));

        // PJ 17236
        ParametermandantDto p = getParameterFac().getMandantparameter(theClientDto.getMandant(),
                ParameterFac.KATEGORIE_RECHNUNG, ParameterFac.PARAMETER_MAHNUNGEN_AB_GF_JAHR);
        Integer iGFJahrAB = (Integer) p.getCWertAsObject();
        c.add(Restrictions.ge(RechnungFac.FLR_RECHNUNG_I_GESCHAEFTSJAHR, iGFJahrAB));

        c.createAlias(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART, "ra").add(Restrictions
                .not(Restrictions.eq("ra.rechnungtyp_c_nr", RechnungFac.RECHNUNGTYP_PROFORMARECHNUNG)));

        // Query ausfuehren.
        List<?> listRechnungen = c.list();
        // nur, wenn Rechnungen eingetragen sind.
        if (listRechnungen.size() > 0) {
            mahnlaufDto = context.getBusinessObject(MahnwesenFac.class).createMahnlauf(theClientDto);
            for (Iterator<?> iter = listRechnungen.iterator(); iter.hasNext();) {

                FLRRechnungReport flrRechnung = (FLRRechnungReport) iter.next();

                RechnungDto rechnungDto = getRechnungFac().rechnungFindByPrimaryKey(flrRechnung.getI_id());
                boolean mahnbar = false;
                // kann die Rechnung gemahnt werden?
                mahnbar = istRechnungMahnbar(flrRechnung.getI_id(), theClientDto);

                myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr() + " mahnbar: "
                        + mahnbar);
                // mahnung anlegen
                if (mahnbar) {
                    Integer mahnstufe = berechneMahnstufeFuerRechnung(rechnungDto, theClientDto);
                    if (mahnstufe != null) {
                        // pruefen, ob diese Mahnstufe schon gemahnt wurde
                        try {
                            Query query = em.createNamedQuery("MahnungfindByRechnungMahnstufe");
                            query.setParameter(1, flrRechnung.getI_id());
                            query.setParameter(2, mahnstufe);
                            // @todo getSingleResult oder getResultList ?
                            Mahnung mahnung = (Mahnung) query.getSingleResult();
                            myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                    + ", Stufe " + mahnstufe + " ist bereits in einem Mahnvorschlag");
                        } catch (NoResultException ex1) {

                            Integer letzteMahnstufe = getAktuelleMahnstufeEinerRechnung(flrRechnung.getI_id(),
                                    theClientDto);

                            if (letzteMahnstufe == null || !letzteMahnstufe.equals(mahnstufe)
                                    || (letzteMahnstufe != null
                                            && letzteMahnstufe == FinanzServiceFac.MAHNSTUFE_99)) {
                                myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                        + " wird gemahnt");
                                MahnungDto mahnungDto = new MahnungDto();
                                mahnungDto.setTMahndatum(super.getDate());
                                mahnungDto.setMahnlaufIId(mahnlaufDto.getIId());
                                mahnungDto.setMahnstufeIId(mahnstufe);
                                mahnungDto.setRechnungIId(flrRechnung.getI_id());

                                mahnungDto.setTGedruckt(null);
                                // Mahnsperre
                                if (rechnungDto.getTMahnsperrebis() != null) {
                                    if (super.getDate().before(rechnungDto.getTMahnsperrebis())) {
                                        continue;
                                    }
                                }

                                Integer mahnstufeIId = getAktuelleMahnstufeEinerRechnung(rechnungDto.getIId(),
                                        theClientDto);

                                if (mahnstufeIId != null
                                        && mahnstufeIId.intValue() == FinanzServiceFac.MAHNSTUFE_99) {
                                    mahnungDto.setTGedruckt(new java.sql.Timestamp(System.currentTimeMillis()));
                                    mahnungDto.setPersonalIIdGedruckt(theClientDto.getIDPersonal());
                                }

                                mahnungDto.setTLetztesmahndatum(getAktuellesMahndatumEinerRechnung(
                                        flrRechnung.getI_id(), theClientDto));
                                mahnungDto.setMahnstufeIIdLetztemahnstufe(mahnstufeIId);

                                context.getBusinessObject(MahnwesenFac.class).createMahnung(mahnungDto,
                                        theClientDto);
                            } else {
                                myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                        + " hat bereits Mahnstufe " + mahnstufe);
                            }
                        }
                    } else {
                        myLogger.logData(rechnungDto.getRechnungartCNr() + ": " + flrRechnung.getC_nr()
                                + " muss nicht gemahnt werden");
                    }
                }
            }
        }
        return mahnlaufDto;
    } catch (RemoteException ex) {
        throwEJBExceptionLPRespectOld(ex);
        return null;
    }
}

From source file:com.lp.server.lieferschein.ejbfac.LieferscheinReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printLieferscheinAlle(ReportLieferscheinJournalKriterienDto krit,
        TheClientDto theClientDto) {//from   ww  w  . j a va 2  s  .  c o  m
    Session session = null;
    try {
        cAktuellerReport = LieferscheinReportFac.REPORT_LIEFERSCHEIN_ALLE;
        SessionFactory factory = FLRSessionFactory.getFactory();
        session = factory.openSession();
        // Kunde oder Statistikadresse verwenden
        final String critKundeIId;
        final String critFLRKunde;
        if (krit.getBVerwendeRechnungsAdresse()) {
            critKundeIId = LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_RECHNUNGSADRESSE;
            critFLRKunde = LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDERECHNUNGSADRESSE;
        } else {
            critKundeIId = LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_LIEFERADRESSE;
            critFLRKunde = LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDE;
        }

        Criteria c = session.createCriteria(FLRLieferschein.class);
        // Filter nach Mandant
        c.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_MANDANT_C_NR, theClientDto.getMandant()));

        // Filter nach Kostenstelle
        if (krit.kostenstelleIId != null) {
            c.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KOSTENSTELLE_I_ID, krit.kostenstelleIId));
        }
        // Filter nach einem Kunden
        if (krit.kundeIId != null) {
            c.add(Restrictions.eq(critKundeIId, krit.kundeIId));
        }
        // Filter nach einem Vertrter
        if (krit.vertreterIId != null) {
            c.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_FLRVERTRETER + ".i_id", krit.vertreterIId));
        }
        // Filter nach Status (keine stornierten)
        c.add(Restrictions.not(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR,
                LieferscheinFac.LSSTATUS_STORNIERT)));
        // Nur offene anzeigen?
        if (krit.getBNurOffene()) {
            Collection<String> cStati = new LinkedList<String>();
            cStati.add(LieferscheinFac.LSSTATUS_ANGELEGT);
            cStati.add(LieferscheinFac.LSSTATUS_OFFEN);
            c.add(Restrictions.in(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR, cStati));
        }
        // Datum von/bis
        String sVon = null;
        String sBis = null;
        if (krit.dVon != null) {
            c.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, krit.dVon));
            sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi());
        }
        if (krit.dBis != null) {
            c.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_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(LieferscheinFac.FLR_LIEFERSCHEIN_C_NR, sVon));
        }
        if (krit.sBelegnummerBis != null) {
            sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    krit.sBelegnummerBis);
            c.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_C_NR, sBis));
        }
        // Sortierung nach Kostenstelle ist optional
        if (krit.bSortiereNachKostenstelle) {
            c.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_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(LieferscheinFac.FLR_LIEFERSCHEIN_C_NR));
        }
        if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_VERTRETER) {
            c.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRVERTRETER)
                    .addOrder(Order.asc(PersonalFac.FLR_PERSONAL_C_KURZZEICHEN));
        }
        List<?> list = c.list();
        data = new Object[list.size()][REPORT_ALLE_ANZAHL_SPALTEN];

        int i = 0;
        for (Iterator<?> iter = list.iterator(); iter.hasNext();) {
            FLRLieferschein r = (FLRLieferschein) iter.next();
            data[i][FELD_ALLE_BELEGDATUM] = r.getD_belegdatum();
            data[i][FELD_ALLE_PROJEKT] = r.getC_bez_projektbezeichnung();
            data[i][FELD_ALLE_STATUS] = r.getLieferscheinstatus_status_c_nr();
            data[i][FELD_ALLE_BELEGDATUM] = r.getD_belegdatum();
            data[i][FELD_ALLE_LIEFERSCHEINNUMMER] = r.getC_nr();
            // Bezahlte Betraege

            BigDecimal bdWertmw = r.getN_gesamtwertinlieferscheinwaehrung();

            data[i][FELD_ALLE_BETRAG] = bdWertmw;
            // 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.getBVerwendeRechnungsAdresse()) {
                flrKunde = r.getFlrkunderechnungsadresse();
            } else {
                flrKunde = r.getFlrkunde();

                // Statistikdaten wenn nicht Kriterium Rechnungsadresse
                flrKundeStatistik = r.getFlrkunderechnungsadresse();
                data[i][FELD_ALLE_KUNDE_RECHNUNG] = flrKundeStatistik.getFlrpartner()
                        .getC_name1nachnamefirmazeile1();
                if (flrKundeStatistik.getFlrpartner().getC_name2vornamefirmazeile2() != null) {
                    data[i][FELD_ALLE_KUNDE2_RECHNUNG] = flrKundeStatistik.getFlrpartner()
                            .getC_name2vornamefirmazeile2();
                } else {
                    data[i][FELD_ALLE_KUNDE2_RECHNUNG] = "";
                }
                PartnerDto partnerDtoStatistik = getPartnerFac()
                        .partnerFindByPrimaryKey(flrKundeStatistik.getFlrpartner().getI_id(), theClientDto);
                data[i][FELD_ALLE_ADRESSE_RECHNUNG] = partnerDtoStatistik.formatAdresse();

            }
            data[i][FELD_ALLE_KUNDE] = flrKunde.getFlrpartner().getC_name1nachnamefirmazeile1();
            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();
            data[i][FELD_ALLE_ORT] = partnerDto.formatAdresse();
            if (r.getFlrrechnung() != null) {
                data[i][FELD_ALLE_RECHNUNGSNUMMER] = r.getFlrrechnung().getC_nr();
            }

            // 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_lieferscheinwaehrung();
            data[i][FELD_ALLE_KURS] = new BigDecimal(r.getF_wechselkursmandantwaehrungzulieferscheinwaehrung());

            // 14217
            String sLaenderart = getFinanzServiceFac().getLaenderartZuPartner(partnerDto.getIId(),
                    theClientDto);
            data[i][FELD_ALLE_LAENDERART] = sLaenderart;
            i++;
        }
        Map<String, Object> mapParameter = new TreeMap<String, Object>();
        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.getBVerwendeRechnungsAdresse()) {
                sSortierung.append(getTextRespectUISpr("lp.rechnungsadresse", 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.getBVerwendeRechnungsAdresse()) {
            if (sFilter.length() > 0) {
                sFilter.append(", ");
            }
            sFilter.append(getTextRespectUISpr("lp.rechnungsadresse", 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, LieferscheinReportFac.REPORT_MODUL, cAktuellerReport, 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.lieferschein.ejbfac.LieferscheinReportFacBean.java

License:Open Source License

/**
 * Alle offenen Lieferscheine fuer einen bestimmten Mandanten drucken.
 * /*from w  w  w.j av a2  s  .c om*/
 * @param reportJournalKriterienDtoI
 *            die Filter- und Sortierkriterien
 * @param theClientDto
 *            der aktuelle Benutzer
 * @throws EJBExceptionLP
 *             Ausnahme
 * @return JasperPrint der Druck
 */

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printLieferscheinOffene(ReportJournalKriterienDto reportJournalKriterienDtoI, Integer iArt,
        boolean bMitDetails, TheClientDto theClientDto) throws EJBExceptionLP {
    if (reportJournalKriterienDtoI == null) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PARAMETER_IS_NULL,
                new Exception("reportJournalKriterienDtoI == null"));
    }
    JasperPrintLP oPrintO = null;
    cAktuellerReport = LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE;
    int iIndex = 0;
    ArrayList<FLRLieferschein> oZeilen = new ArrayList();
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = null;
    try {
        session = factory.openSession();
        // Hiberante Criteria fuer alle Tabellen ausgehend von meiner
        // Haupttabelle anlegen,
        // nach denen ich filtern und sortieren kann
        Criteria crit = session.createCriteria(FLRLieferschein.class);
        // Einschraenkung auf den aktuellen Mandanten
        crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant()));
        // Einschraenkung nach Status Offen
        crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR,
                LieferscheinFac.LSSTATUS_GELIEFERT));
        if (iArt != null) {
            if (iArt == 1) {
                crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR,
                        Helper.boolean2Short(true)));
            } else if (iArt == 2) {
                crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR,
                        Helper.boolean2Short(false)));
            }
        }
        // Einschraenkung nach einer bestimmten Kostenstelle
        if (reportJournalKriterienDtoI.kostenstelleIId != null) {
            crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KOSTENSTELLE_I_ID,
                    reportJournalKriterienDtoI.kostenstelleIId));
        }

        // Einschraenkung nach einem bestimmten Kunden
        if (reportJournalKriterienDtoI.kundeIId != null) {
            crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_LIEFERADRESSE,
                    reportJournalKriterienDtoI.kundeIId));
        }

        // Einschraenkung nach Belegdatum von - bis
        String sVon = null;
        String sBis = null;

        if (reportJournalKriterienDtoI.dVon != null) {
            crit.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM,
                    reportJournalKriterienDtoI.dVon));
            sVon = Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi());
        }

        if (reportJournalKriterienDtoI.dBis != null) {
            crit.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM,
                    reportJournalKriterienDtoI.dBis));
            sBis = Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi());
        }

        // Einschraenkung nach 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 (reportJournalKriterienDtoI.sBelegnummerVon != null) {
            sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    reportJournalKriterienDtoI.sBelegnummerVon);
            crit.add(Restrictions.ge("c_nr", sVon));
        }

        if (reportJournalKriterienDtoI.sBelegnummerBis != null) {
            sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel,
                    reportJournalKriterienDtoI.sBelegnummerBis);
            crit.add(Restrictions.le("c_nr", sBis));
        }

        // Sortierung nach Kostenstelle ist immer die erste Sortierung
        if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) {
            crit.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr"));
        }

        // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle
        if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            crit.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDE).createCriteria(KundeFac.FLR_PARTNER)
                    .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1));
        }

        // es wird in jedem Fall nach der Belegnummer sortiert
        crit.addOrder(Order.asc("c_nr"));
        List<?> list = crit.list();
        Iterator<?> it = list.iterator();
        while (it.hasNext()) {
            FLRLieferschein flrlieferschein = (FLRLieferschein) it.next();
            oZeilen.add(flrlieferschein);
            session = factory.openSession();
            Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class);
            critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN,
                    flrlieferschein));
            critPosition.add(Restrictions.or(
                    Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE),
                    Restrictions.eq(
                            LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR,
                            LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE)));
            // critPosition
            // .add(Restrictions
            // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE));
            List<?> posList = critPosition.list();
            for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) {
                FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next();
                iIndex++;
            }
            iIndex++;
        }
        data = new Object[iIndex][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANZAHL_ZEILEN]; // Anzahl
        // der
        // Spalten
        // in
        // der
        // Gruppe
        Iterator<?> itZeilen = oZeilen.iterator();
        int i = 0;
        while (itZeilen.hasNext()) {
            FLRLieferschein flrlieferschein = (FLRLieferschein) itZeilen.next();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                    .getC_nr();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein
                    .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein
                    .getFlrkostenstelle().getC_nr();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANLAGEDATUM] = flrlieferschein
                    .getD_belegdatum(); // todo
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERTERMIN] = flrlieferschein
                    .getT_liefertermin();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZAHLUNGSZIEL] = getMandantFac()
                    .zahlungszielFindByIIdLocaleOhneExc(flrlieferschein.getZahlungsziel_i_id(),
                            theClientDto.getLocMandant(), theClientDto);
            if (flrlieferschein.getFlrauftrag() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = flrlieferschein
                        .getFlrauftrag().getC_nr();
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = flrlieferschein
                        .getFlrauftrag().getC_bez();
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = flrlieferschein
                        .getFlrauftrag().getC_bestellnummer();
            } else {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = null;
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = null;
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = null;
            }
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERART] = getLocaleFac()
                    .lieferartFindByIIdLocaleOhneExc(flrlieferschein.getLieferart_i_id(),
                            theClientDto.getLocMandant(), theClientDto);

            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERARTORT] = flrlieferschein
                    .getC_lieferartort();
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper
                    .short2Boolean(flrlieferschein.getB_verrechenbar());
            if (flrlieferschein.getFlrziellager() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZIELLAGER] = flrlieferschein
                        .getFlrziellager().getC_nr();
            }
            if (flrlieferschein.getFlrlager() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ABLAGER] = flrlieferschein
                        .getFlrlager().getC_nr();
            }

            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_RECHNUNGSADRESSE] = flrlieferschein
                    .getFlrkunderechnungsadresse().getFlrpartner().getC_name1nachnamefirmazeile1();

            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper
                    .short2Boolean(flrlieferschein.getB_verrechenbar());

            if (flrlieferschein.getSpediteur_i_id() != null) {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = getMandantFac()
                        .spediteurFindByPrimaryKey(flrlieferschein.getSpediteur_i_id()).getCNamedesspediteurs();
            } else {
                data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = null;
            }
            data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_PROJEKTBEZEICHNUNG] = flrlieferschein
                    .getC_bez_projektbezeichnung();
            session = factory.openSession();
            Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class);
            critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN,
                    flrlieferschein));

            critPosition.add(Restrictions.or(
                    Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE),
                    Restrictions.eq(
                            LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR,
                            LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE)));

            // critPosition
            // .add(Restrictions
            // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE));
            List<?> posList = critPosition.list();
            boolean darfVerkaufspreisSehen = getTheJudgeFac()
                    .hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_VERKAUF, theClientDto);

            for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) {
                FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next();
                i++;// in die naechste Zeile vorruecken
                // nur mengenbehaftete Positionen beruecksichtigen
                if (item.getN_menge() != null) {
                    String artikelCNr = null;
                    // TODO boeser Workaround ... PJ 4400
                    if (item.getFlrartikel().getC_nr().startsWith("~")) {
                        artikelCNr = AngebotReportFac.REPORT_VORKALKULATION_ZEICHEN_FUER_HANDEINGABE;
                    } else {
                        artikelCNr = item.getFlrartikel().getC_nr();
                    }
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELCNR] = artikelCNr;
                    String cArtikelBezeichnung = "";

                    if (item.getPositionsart_c_nr()
                            .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT)
                            || item.getPositionsart_c_nr()
                                    .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_HANDEINGABE)) {
                        cArtikelBezeichnung = getArtikelFac().baueArtikelBezeichnungMehrzeiligOhneExc(
                                item.getFlrartikel().getI_id(), item.getPositionsart_c_nr(), item.getC_bez(),
                                item.getC_zbez(), false, null, theClientDto);
                    }

                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELBEZEICHNUNG] = cArtikelBezeichnung;
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELMENGE] = item.getN_menge();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELEINHEIT] = item
                            .getEinheit_c_nr() == null ? null : item.getEinheit_c_nr().trim();

                    if (darfVerkaufspreisSehen) {
                        // Positionspreise sind in Belegwaehrung abgelegt
                        BigDecimal nPreisInBelegwaehrung = item
                                .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt();

                        nPreisInBelegwaehrung = getBetragMalWechselkurs(nPreisInBelegwaehrung,
                                Helper.getKehrwert(new BigDecimal(
                                        flrlieferschein.getF_wechselkursmandantwaehrungzulieferscheinwaehrung()
                                                .doubleValue())));

                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = nPreisInBelegwaehrung;
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = item
                                .getN_menge().multiply(nPreisInBelegwaehrung);
                    } else {
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = null;
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = null;
                    }

                    // Grundlage ist der positionsbezogene Gestehungspreis
                    // des Artikels.
                    BigDecimal bdGestehungspreis = Helper.getBigDecimalNull();

                    if (item.getPositionsart_c_nr()
                            .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT)) {
                        try {
                            BigDecimal bdGestehungswert = getLieferscheinFac()
                                    .berechneGestehungswertEinerLieferscheinposition(item.getI_id(),
                                            theClientDto);

                            // Gestehungspreis bezogen auf 1 Stueck wird
                            // gemittelt
                            bdGestehungspreis = bdGestehungswert.divide(item.getN_menge(), 4,
                                    BigDecimal.ROUND_HALF_EVEN);
                            bdGestehungspreis = Helper.rundeKaufmaennisch(bdGestehungspreis, 4);
                        } catch (Throwable t) {
                            // dieser Fall sollte nicht auftreten, bitte als
                            // moeglichen Fehler pruefen!
                        }
                    }

                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELGESTEHUNGSPREIS] = bdGestehungspreis;
                    if (darfVerkaufspreisSehen) {
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = item
                                .getN_menge().multiply(bdGestehungspreis);
                    } else {
                        data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = null;
                    }
                    // die Positionen brauchen alle Attribute, nach denen im
                    // Report gruppiert wird
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein
                            .getFlrkostenstelle().getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein
                            .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr(); // fuer die Gruppierung
                } else if (item.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_TEXTEINGABE)) {
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_TEXTEINGABE] = item
                            .getC_textinhalt();
                    // die Positionen brauchen alle Attribute, nach denen im
                    // Report gruppiert wird
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein
                            .getFlrkostenstelle().getC_nr();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein
                            .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1();
                    data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein
                            .getC_nr(); // fuer die Gruppierung
                }
            }
            i++; // in die naechste Zeile vorruecken
        }
        // Erstellung des Report
        HashMap parameter = new HashMap<Object, Object>();
        // die Parameter dem Report uebergeben
        parameter.put(LPReport.P_SORTIERUNG,
                buildSortierungLieferscheinOffene(reportJournalKriterienDtoI, theClientDto));
        parameter.put(LPReport.P_FILTER,
                buildFilterLieferscheinOffene(reportJournalKriterienDtoI, theClientDto));
        // die Parameter zur Bildung von Zwischensummen uebergeben
        if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) {
            parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(true));
        } else {
            parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(false));
        }
        if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) {
            parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(true));
        } else {
            parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(false));
        }
        parameter.put("P_LIEFERSCHEINWAEHRUNG", theClientDto.getSMandantenwaehrung());
        parameter.put("P_DETAILS", new Boolean(bMitDetails));

        initJRDS(parameter, LieferscheinReportFac.REPORT_MODUL,
                LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE, theClientDto.getMandant(),
                theClientDto.getLocUi(), theClientDto);

        oPrintO = getReportPrint();
    } catch (RemoteException re) {
        throwEJBExceptionLPRespectOld(re);
    } finally {
        closeSession(session);
    }
    return oPrintO;
}