Example usage for org.hibernate.criterion Restrictions lt

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

Introduction

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

Prototype

public static SimpleExpression lt(String propertyName, Object value) 

Source Link

Document

Apply a "less than" 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;/*  w  w w.j a v a2  s  .co  m*/
    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 ww. ja  v a  2  s  .  co  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.BuchenFacBean.java

License:Open Source License

/**
 * Ermittelt die BuchungDetail-Ids jener BuchungDetail die als offene Posten
 * betrachtet werden/*w  w w.  j  av a2s.  co m*/
 * 
 * @param kontoIId
 *            die optional gesetzte (sonst null) KontoIId
 * @param kontotypCNr
 *            der betreffende Kontotyp (Debitor, Kreditor oder auch
 *            Sachkonten (&auml;hm))
 * @param geschaeftsjahr
 * @param theClientDto
 * @return eine (leere) Liste der noch offenen BuchungsDetails-IIds
 */
public List<Integer> getOffenePosten(Integer kontoIId, String kontotypCNr, int geschaeftsjahr,
        TheClientDto theClientDto) {
    Timestamp[] tVonbis = getDatumbereichPeriodeGJ(geschaeftsjahr, -1, theClientDto);

    List<Integer> opDetails = new ArrayList<Integer>();
    Session session = null;
    try {
        session = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria crit = session.createCriteria(FLRFinanzBuchungDetail.class);
        crit.createAlias("flrkonto", "k");
        crit.createAlias("flrbuchung", "b");
        crit.add(Restrictions.isNull("b.t_storniert"));
        crit.add(Restrictions.lt("b.d_buchungsdatum", tVonbis[1]));
        crit.add(Restrictions.eq("b.geschaeftsjahr_i_geschaeftsjahr", geschaeftsjahr));
        if (kontoIId != null)
            crit.add(Restrictions.eq("k.i_id", kontoIId));
        else
            crit.add(Restrictions.eq("k.kontotyp_c_nr", kontotypCNr));
        crit.addOrder(Order.asc("k.c_nr"));
        crit.addOrder(Order.asc("i_ausziffern"));
        crit.addOrder(Order.asc("b.c_belegnummer"));

        List<FLRFinanzBuchungDetail> results = crit.list();

        String belegnummer = "";
        String azk = "";

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

        BigDecimal saldo = BigDecimal.ZERO;
        for (FLRFinanzBuchungDetail buchungDetail : results) {
            String t = "";
            if (buchungDetail.getI_ausziffern() != null) {
                // ausziffern hat Vorrang vor Belegnummer
                t = buchungDetail.getI_ausziffern().toString();
            } else {
                if (buchungDetail.getFlrbuchung().getFlrfbbelegart() != null)
                    t += buchungDetail.getFlrbuchung().getFlrfbbelegart().getC_kbez();
                t += buchungDetail.getFlrbuchung().getC_belegnummer();
            }

            if (buchungDetail.getI_ausziffern() == null ? !belegnummer.equals(t) : !azk.equals(t)) {
                if (groupedOpDetails.size() > 0 && saldo.signum() != 0) {
                    opDetails.addAll(groupedOpDetails);
                }
                groupedOpDetails = new ArrayList<Integer>();
                saldo = BigDecimal.ZERO;
                if (buchungDetail.getI_ausziffern() == null)
                    belegnummer = t;
                else
                    azk = t;
            }

            if (BuchenFac.HabenBuchung.equals(buchungDetail.getBuchungdetailart_c_nr())) {
                saldo = saldo.add(buchungDetail.getN_betrag());
            } else {
                saldo = saldo.subtract(buchungDetail.getN_betrag());
            }

            groupedOpDetails.add(buchungDetail.getI_id());
        }

        if (groupedOpDetails.size() > 0 && saldo.signum() != 0) {
            opDetails.addAll(groupedOpDetails);
        }
    } finally {
        if (session != null)
            session.close();
    }

    return opDetails;
}

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

License:Open Source License

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

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

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

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

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

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

        //         zuBuchen = getBuchungenKorrekteUst(zuBuchen, mwstKonten);

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

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

    return buchungen;
}

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

License:Open Source License

@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;/*ww w  .j av  a 2s . com*/
    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;//from  www.  ja  v  a2s. 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./* w  w  w .  j a v a2s .c  om*/
 * 
 * @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.personal.ejbfac.ZeiterfassungReportFacBean.java

License:Open Source License

@TransactionAttribute(TransactionAttributeType.NEVER)
public JasperPrintLP printZeitdatenjournal(Integer personalIId, java.sql.Timestamp tVon,
        java.sql.Timestamp tBis, TheClientDto theClientDto) {
    sAktuellerReport = ZeiterfassungReportFac.REPORT_ZEITDATEN;
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    ArrayList<Object[]> daten = new ArrayList<Object[]>();
    try {// w w w.j ava 2 s  .co  m

        PersonalDto[] personalDtos = null;

        Integer tagesartIId_Feiertag = getZeiterfassungFac()
                .tagesartFindByCNr(ZeiterfassungFac.TAGESART_FEIERTAG, theClientDto).getIId();
        Integer tagesartIId_Halbtag = getZeiterfassungFac()
                .tagesartFindByCNr(ZeiterfassungFac.TAGESART_HALBTAG, theClientDto).getIId();
        Integer taetigkeitIId_Kommt = getZeiterfassungFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_KOMMT, theClientDto).getIId();
        Integer taetigkeitIId_Telefon = getZeiterfassungFac()
                .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_TELEFON, theClientDto).getIId();

        tVon = Helper.cutTimestamp(tVon);
        tBis = Helper.cutTimestamp(tBis);
        if (personalIId != null) {
            personalDtos = new PersonalDto[1];
            personalDtos[0] = getPersonalFac().personalFindByPrimaryKey(personalIId, theClientDto);
        } else {
            personalDtos = getPersonalFac().personalFindByMandantCNr(theClientDto.getMandant(), true);
        }

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

            PersonalDto personalDto = personalDtos[i];

            personalDto.setPartnerDto(
                    getPartnerFac().partnerFindByPrimaryKey(personalDto.getPartnerIId(), theClientDto));

            Calendar cVon = Calendar.getInstance();
            cVon.setTime(tVon);

            Calendar cBis = Calendar.getInstance();
            cBis.setTime(tBis);
            cBis.set(Calendar.HOUR, 23);
            cBis.set(Calendar.MINUTE, 59);
            cBis.set(Calendar.SECOND, 59);
            cBis.set(Calendar.MILLISECOND, 999);

            while (cVon.before(cBis)) {
                Calendar cNaechsterTag = Calendar.getInstance();
                cNaechsterTag.setTimeInMillis(cVon.getTimeInMillis());
                cNaechsterTag.set(Calendar.DAY_OF_MONTH, cNaechsterTag.get(Calendar.DAY_OF_MONTH) + 1);

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

                org.hibernate.Criteria crit = session.createCriteria(FLRZeitdaten.class)
                        .createAlias(ZeiterfassungFac.FLR_ZEITDATEN_FLRPERSONAL, "p")
                        .add(Restrictions.eq("p.mandant_c_nr", theClientDto.getMandant()));
                crit.add(Restrictions.eq("p.i_id", personalDto.getIId()));
                crit.add(Restrictions.ge(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT,
                        new Timestamp(cVon.getTimeInMillis())));
                crit.add(Restrictions.lt(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT,
                        new Timestamp(cNaechsterTag.getTimeInMillis())));
                crit.addOrder(Order.asc(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT));
                List<?> resultList = crit.list();

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

                while (resultListIterator.hasNext()) {
                    Object[] zeile = new Object[22];
                    FLRZeitdaten flrzeitdaten = (FLRZeitdaten) resultListIterator.next();

                    zeile[REPORT_ZEITDATEN_PERSONALNR] = flrzeitdaten.getFlrpersonal().getC_personalnummer();
                    zeile[REPORT_ZEITDATEN_ZEIT] = new Timestamp(flrzeitdaten.getT_zeit().getTime());

                    zeile[REPORT_ZEITDATEN_SOLLZEIT] = getZeiterfassungFac()
                            .getSollzeitEinerPersonUndEinesTages(personalDto, tagesartIId_Feiertag,
                                    tagesartIId_Halbtag, new Timestamp(flrzeitdaten.getT_zeit().getTime()),
                                    theClientDto);

                    zeile[REPORT_ZEITDATEN_BEMERKUNG] = flrzeitdaten.getC_bemerkungzubelegart();
                    zeile[REPORT_ZEITDATEN_KOMMENTAR] = flrzeitdaten.getX_kommentar();
                    zeile[REPORT_ZEITDATEN_QUELLE] = flrzeitdaten.getC_wowurdegebucht();

                    String sNurTaetigkeitGeaendert = "";
                    if (Helper.short2boolean(flrzeitdaten.getB_taetigkeitgeaendert()) == true) {
                        sNurTaetigkeitGeaendert = " B";
                    }
                    String sAutomatikbuchung = "";
                    if (Helper.short2boolean(flrzeitdaten.getB_automatikbuchung()) == true) {
                        sAutomatikbuchung = " A";
                    }

                    zeile[REPORT_ZEITDATEN_BUCHUNGSART] = ZeitdatenHandler
                            .istBuchungManipuliert(flrzeitdaten.getT_zeit(), flrzeitdaten.getT_aendern())
                            + sNurTaetigkeitGeaendert + sAutomatikbuchung;

                    String sVorname = flrzeitdaten.getFlrpersonal().getFlrpartner()
                            .getC_name2vornamefirmazeile2();
                    String sNachname = flrzeitdaten.getFlrpersonal().getFlrpartner()
                            .getC_name1nachnamefirmazeile1();
                    if (sVorname != null) {
                        sNachname = sVorname + " " + sNachname;
                    }
                    zeile[REPORT_ZEITDATEN_NAME] = sNachname;

                    try {
                        if (flrzeitdaten.getFlrtaetigkeit() != null) {

                            zeile[REPORT_ZEITDATEN_TAETIGKEIT] = getZeiterfassungFac()
                                    .taetigkeitFindByPrimaryKey(flrzeitdaten.getFlrtaetigkeit().getI_id(),
                                            theClientDto)
                                    .getBezeichnung();

                            // PJ 08/12678
                            if (flrzeitdaten.getFlrtaetigkeit().getI_id().equals(taetigkeitIId_Telefon)) {

                                try {
                                    TelefonzeitenDto tzDto = getZeiterfassungFac()
                                            .telefonzeitenFindByPersonalIIdTVon(personalIId,
                                                    new Timestamp(flrzeitdaten.getT_zeit().getTime()));

                                    if (tzDto.getPartnerIId() != null) {

                                        PartnerDto partnerDto = getPartnerFac()
                                                .partnerFindByPrimaryKey(tzDto.getPartnerIId(), theClientDto);
                                        zeile[REPORT_ZEITDATEN_KUNDE] = partnerDto.formatFixTitelName1Name2();
                                    }

                                    String kommentare = "";

                                    if (tzDto.getXKommentarext() != null) {
                                        kommentare = tzDto.getXKommentarext();
                                    }
                                    if (tzDto.getXKommentarint() != null) {
                                        kommentare += "/ " + tzDto.getXKommentarint();
                                    }

                                    zeile[REPORT_ZEITDATEN_KOMMENTAR] = kommentare;

                                } catch (javax.ejb.EJBException e) {
                                    // Keine Zuordnung zu Telefonzeiten
                                    // gefunden
                                }

                            }

                        } else {
                            ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(
                                    flrzeitdaten.getFlrartikel().getI_id(), theClientDto);

                            zeile[REPORT_ZEITDATEN_TAETIGKEIT] = artikelDto.getCNr();
                            zeile[REPORT_ZEITDATEN_ARTIKELBEZEICHNUNG] = artikelDto.formatBezeichnung();
                        }

                        if (flrzeitdaten.getC_belegartnr() != null) {

                            BelegInfos belegInfos = getLagerFac().getBelegInfos(flrzeitdaten.getC_belegartnr(),
                                    flrzeitdaten.getI_belegartid(), flrzeitdaten.getI_belegartpositionid(),
                                    theClientDto);

                            if (flrzeitdaten.getC_belegartnr().equals(LocaleFac.BELEGART_AUFTRAG)) {
                                zeile[REPORT_ZEITDATEN_AUFTRAG] = "AB" + belegInfos.getBelegnummer();

                            } else if (flrzeitdaten.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)) {
                                zeile[REPORT_ZEITDATEN_AUFTRAG] = "LO" + belegInfos.getBelegnummer();
                            } else if (flrzeitdaten.getC_belegartnr().equals(LocaleFac.BELEGART_ANGEBOT)) {
                                zeile[REPORT_ZEITDATEN_AUFTRAG] = "AG" + belegInfos.getBelegnummer();
                            } else if (flrzeitdaten.getC_belegartnr().equals(LocaleFac.BELEGART_PROJEKT)) {
                                zeile[REPORT_ZEITDATEN_AUFTRAG] = "PJ" + belegInfos.getBelegnummer();
                            } else {
                                zeile[REPORT_ZEITDATEN_AUFTRAG] = belegInfos.getBelegnummer();
                            }

                            zeile[REPORT_ZEITDATEN_PROJEKTBEZEICHNUNG] = belegInfos.getBelegbezeichnung();
                            zeile[REPORT_ZEITDATEN_KUNDE] = belegInfos.getKundeLieferant();

                            if (flrzeitdaten.getI_belegartpositionid() != null) {
                                if (flrzeitdaten.getC_belegartnr().equals(LocaleFac.BELEGART_AUFTRAG)) {
                                    AuftragpositionDto posDto = getAuftragpositionFac()
                                            .auftragpositionFindByPrimaryKeyOhneExc(
                                                    flrzeitdaten.getI_belegartpositionid());
                                    if (posDto != null) {

                                        if (posDto.getArtikelIId() != null) {
                                            zeile[REPORT_ZEITDATEN_POSITION] = getArtikelFac()
                                                    .artikelFindByPrimaryKey(posDto.getArtikelIId(),
                                                            theClientDto)
                                                    .formatArtikelbezeichnung();
                                        } else {
                                            zeile[REPORT_ZEITDATEN_POSITION] = posDto.getCBez();
                                        }
                                    } else {
                                        zeile[REPORT_ZEITDATEN_POSITION] = "Auftragposition nicht mehr vorhanden.";
                                    }
                                } else if (flrzeitdaten.getC_belegartnr().equals(LocaleFac.BELEGART_LOS)) {
                                    try {
                                        LossollarbeitsplanDto posDto = getFertigungFac()
                                                .lossollarbeitsplanFindByPrimaryKey(
                                                        flrzeitdaten.getI_belegartpositionid());
                                        zeile[REPORT_ZEITDATEN_POSITION] = getArtikelFac()
                                                .artikelFindByPrimaryKey(posDto.getArtikelIIdTaetigkeit(),
                                                        theClientDto)
                                                .formatArtikelbezeichnung();
                                    } catch (EJBExceptionLP ex4) {
                                        zeile[REPORT_ZEITDATEN_POSITION] = "Losposition nicht mehr vorhanden.";
                                    }

                                } else if (flrzeitdaten.getC_belegartnr().equals(LocaleFac.BELEGART_ANGEBOT)) {
                                    try {
                                        com.lp.server.angebot.service.AngebotpositionDto posDto = getAngebotpositionFac()
                                                .angebotpositionFindByPrimaryKey(
                                                        flrzeitdaten.getI_belegartpositionid(), theClientDto);
                                        zeile[REPORT_ZEITDATEN_POSITION] = getArtikelFac()
                                                .artikelFindByPrimaryKey(posDto.getArtikelIId(), theClientDto)
                                                .formatArtikelbezeichnung();
                                    } catch (EJBExceptionLP ex4) {
                                        zeile[REPORT_ZEITDATEN_POSITION] = "Angebotsposition nicht mehr vorhanden.";
                                    }

                                }
                            }

                        }

                        // Dauer
                        if (daten.size() > 0) {
                            Object[] letzteZeile = (Object[]) daten.get(daten.size() - 1);
                            if (letzteZeile[REPORT_ZEITDATEN_ZEIT] != null
                                    && !taetigkeitIId_Kommt.equals(flrzeitdaten.getTaetigkeit_i_id())) {
                                long l_zeitdec = flrzeitdaten.getT_zeit().getTime()
                                        - ((Timestamp) letzteZeile[REPORT_ZEITDATEN_ZEIT]).getTime();

                                Double dauer = Helper.time2Double(new java.sql.Time(l_zeitdec - 3600000));
                                if (daten.size() > 0) {
                                    Object[] letzte = (Object[]) daten.get(daten.size() - 1);
                                    letzte[REPORT_ZEITDATEN_DAUER] = dauer;
                                    daten.set(daten.size() - 1, letzte);
                                }
                            }
                        }

                    } catch (RemoteException ex1) {
                        throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1);
                    }
                    daten.add(zeile);
                }
                SonderzeitenDto[] dtos = null;
                try {
                    // Hier nun Sonderzeiten holen
                    dtos = getZeiterfassungFac().sonderzeitenFindByPersonalIIdDDatum(personalDto.getIId(),
                            Helper.cutTimestamp(new Timestamp(cVon.getTimeInMillis())));
                    for (int j = 0; j < dtos.length; j++) {
                        TaetigkeitDto taeitgkeitDto = getZeiterfassungFac()
                                .taetigkeitFindByPrimaryKey(dtos[j].getTaetigkeitIId(), theClientDto);
                        Object[] neueZeile = new Object[22];
                        neueZeile[REPORT_ZEITDATEN_TAETIGKEIT_SONDERZEIT] = taeitgkeitDto.getBezeichnung();
                        neueZeile[REPORT_ZEITDATEN_PERSONALNR] = personalDto.getCPersonalnr();

                        String sVorname = personalDto.getPartnerDto().getCName2vornamefirmazeile2();
                        String sNachname = personalDto.getPartnerDto().getCName1nachnamefirmazeile1();
                        if (sVorname != null) {
                            sNachname = sVorname + " " + sNachname;
                        }
                        neueZeile[REPORT_ZEITDATEN_NAME] = sNachname;
                        neueZeile[REPORT_ZEITDATEN_DATUM_SONDERZEIT] = new Timestamp(cVon.getTimeInMillis());

                        // Dauer
                        double dauer = 0;

                        if (Helper.short2boolean(dtos[j].getBTag()) == true
                                || Helper.short2boolean(dtos[j].getBHalbtag()) == true) {
                            ZeitmodelltagDto dto = getZeiterfassungFac().getZeitmodelltagZuDatum(
                                    personalDto.getIId(), new Timestamp(cVon.getTimeInMillis()),
                                    tagesartIId_Feiertag, tagesartIId_Halbtag, false, theClientDto);
                            if (dto != null && dto.getUSollzeit() != null) {

                                dauer = Helper.time2Double(dto.getUSollzeit());
                                if (Helper.short2boolean(dtos[j].getBHalbtag()) == true) {
                                    dauer = dauer / 2;
                                }

                            }
                        } else {
                            dauer = Helper.time2Double(dtos[j].getUStunden());
                        }
                        neueZeile[REPORT_ZEITDATEN_DAUER_SONDERZEIT] = new Double(dauer);
                        daten.add(neueZeile);
                    }

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

                if (resultList.size() > 0 || dtos.length > 0) {
                    // Letzte Zeile holen und Tagessumme eintragen
                    Object[] letzteZeile = (Object[]) daten.get(daten.size() - 1);
                    try {
                        Double d = getZeiterfassungFac().berechneTagesArbeitszeit(personalDto.getIId(),
                                new java.sql.Date(cVon.getTimeInMillis()), theClientDto);

                        letzteZeile[REPORT_ZEITDATEN_TAGESSUMME] = d;

                    } catch (javax.ejb.EJBException ex3) {
                        letzteZeile[REPORT_ZEITDATEN_TAGESSUMME] = new Double(0);
                        letzteZeile[REPORT_ZEITDATEN_PROJEKTBEZEICHNUNG] = "Fehler in Zeitdaten";
                    } catch (EJBExceptionLP ex4) {
                        letzteZeile[REPORT_ZEITDATEN_TAGESSUMME] = new Double(0);
                        letzteZeile[REPORT_ZEITDATEN_PROJEKTBEZEICHNUNG] = "Fehler in Zeitdaten";
                    } catch (RemoteException e) {
                        throwEJBExceptionLPRespectOld(e);

                    }
                    daten.set(daten.size() - 1, letzteZeile);
                }

                session.close();

                cVon.set(Calendar.DAY_OF_MONTH, cVon.get(Calendar.DAY_OF_MONTH) + 1);

            }

        }
    } catch (RemoteException ex) {
        throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex);
    }
    if (tVon != null) {
        parameter.put("P_VON", tVon);
    }
    if (tBis != null) {
        parameter.put("P_BIS", tBis);
    }

    Object[] x = daten.toArray();
    data = new Object[x.length][22];
    for (int i = 0; i < x.length; i++) {
        data[i] = (Object[]) x[i];
    }

    initJRDS(parameter, ZeiterfassungFac.REPORT_MODUL, ZeiterfassungReportFac.REPORT_ZEITDATEN,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);
    return getReportPrint();

}

From source file:com.lp.server.personal.ejbfac.ZeiterfassungReportFacBean.java

License:Open Source License

private JasperPrintLP erstelleTelefonzeiten(Integer personalIId, Integer partnerIId, java.sql.Timestamp tVon,
        java.sql.Timestamp tBis, boolean bSortiertNachPersonal, TheClientDto theClientDto) {
    SessionFactory factory = FLRSessionFactory.getFactory();
    Session session = factory.openSession();
    HashMap<String, Object> parameter = new HashMap<String, Object>();
    org.hibernate.Criteria crit = session.createCriteria(FLRTelefonzeiten.class)
            .createAlias(ZeiterfassungFac.FLR_TELEFONZEITEN_FLRPERSONAL, "p")
            .add(Restrictions.eq("p.mandant_c_nr", theClientDto.getMandant()));

    if (personalIId != null) {
        crit.add(Restrictions.eq(ZeiterfassungFac.FLR_TELEFONZEITEN_PERSONAL_I_ID, personalIId));
    }//w  ww. j  av  a  2  s. c  om
    if (partnerIId != null) {
        crit.add(Restrictions.eq(ZeiterfassungFac.FLR_TELEFONZEITEN_PARTNER_I_ID, partnerIId));

        com.lp.server.partner.service.PartnerDto partnerDto = getPartnerFac()
                .partnerFindByPrimaryKey(partnerIId, theClientDto);

        parameter.put("P_PARTNER", partnerDto.formatFixTitelName1Name2());

    } else {
        if (bSortiertNachPersonal == false && partnerIId == null) {
            crit.add(Restrictions.isNull(ZeiterfassungFac.FLR_TELEFONZEITEN_PARTNER_I_ID));
        }

    }

    if (bSortiertNachPersonal == true) {
        parameter.put("P_SORTIERUNG",
                getTextRespectUISpr("lp.personal", theClientDto.getMandant(), theClientDto.getLocUi()));
    } else {
        parameter.put("P_SORTIERUNG",
                getTextRespectUISpr("lp.partner", theClientDto.getMandant(), theClientDto.getLocUi()));
    }

    crit.add(Restrictions.ge(ZeiterfassungFac.FLR_TELEFONZEITEN_T_VON, tVon));
    crit.add(Restrictions.lt(ZeiterfassungFac.FLR_TELEFONZEITEN_T_VON, tBis));

    crit.addOrder(Order.asc(ZeiterfassungFac.FLR_TELEFONZEITEN_T_VON));
    List<?> list = crit.list();
    Iterator<?> iterator = list.iterator();
    data = new Object[list.size()][10];
    int row = 0;
    while (iterator.hasNext()) {
        FLRTelefonzeiten flrTelefonzeiten = (FLRTelefonzeiten) iterator.next();

        String sVorname = flrTelefonzeiten.getFlrpersonal().getFlrpartner().getC_name2vornamefirmazeile2();
        String sNachname = flrTelefonzeiten.getFlrpersonal().getFlrpartner().getC_name1nachnamefirmazeile1();
        if (sVorname != null) {
            sNachname = sVorname + " " + sNachname;
        }
        data[row][REPORT_TELEFONLISTE_PERSON] = sNachname;

        if (flrTelefonzeiten.getFlransprechpartner() != null) {
            sVorname = flrTelefonzeiten.getFlransprechpartner().getFlrpartneransprechpartner()
                    .getC_name2vornamefirmazeile2();
            sNachname = flrTelefonzeiten.getFlransprechpartner().getFlrpartneransprechpartner()
                    .getC_name1nachnamefirmazeile1();
            if (sVorname != null) {
                sNachname = sVorname + " " + sNachname;
            }
            data[row][REPORT_TELEFONLISTE_ANSPRECHPARTNER] = sNachname;
        }

        if (flrTelefonzeiten.getT_bis() != null) {
            java.sql.Time tTemp = new java.sql.Time(
                    flrTelefonzeiten.getT_bis().getTime() - flrTelefonzeiten.getT_von().getTime() - 3600000);
            data[row][REPORT_TELEFONLISTE_DAUER] = Helper.time2Double(tTemp);

        }

        if (flrTelefonzeiten.getFlrpartner() != null) {

            com.lp.server.partner.service.PartnerDto partnerDto = getPartnerFac()
                    .partnerFindByPrimaryKey(flrTelefonzeiten.getFlrpartner().getI_id(), theClientDto);
            data[row][REPORT_TELEFONLISTE_PARTNER] = partnerDto.formatFixTitelName1Name2();

            if (flrTelefonzeiten.getFlrpartner().getFlrlandplzort() != null) {
                data[row][REPORT_TELEFONLISTE_LKZ_PARTNER] = flrTelefonzeiten.getFlrpartner().getFlrlandplzort()
                        .getFlrland().getC_lkz();
            }

        }

        if (bSortiertNachPersonal == true) {
            data[row][REPORT_TELEFONLISTE_GRUPPIERUNG] = personalIId;
        } else {
            if (flrTelefonzeiten.getFlrpartner() != null) {
                data[row][REPORT_TELEFONLISTE_GRUPPIERUNG] = flrTelefonzeiten.getFlrpartner().getI_id();
            }
        }

        data[row][REPORT_TELEFONLISTE_VON] = new Timestamp(flrTelefonzeiten.getT_von().getTime());
        if (flrTelefonzeiten.getT_bis() != null) {
            data[row][REPORT_TELEFONLISTE_BIS] = new Timestamp(flrTelefonzeiten.getT_bis().getTime());
        }
        data[row][REPORT_TELEFONLISTE_KOMMENTAREXTERN] = flrTelefonzeiten.getX_kommentarext();
        data[row][REPORT_TELEFONLISTE_KOMMENTARINTERN] = flrTelefonzeiten.getX_kommentarint();

        row++;
    }

    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(tBis.getTime());
    c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) - 1);
    tBis = new Timestamp(c.getTimeInMillis());

    parameter.put("P_VON", tVon);
    parameter.put("P_BIS", tBis);

    sAktuellerReport = ZeiterfassungReportFac.REPORT_TELEFONZEITEN;
    index = -1;
    initJRDS(parameter, ZeiterfassungReportFac.REPORT_MODUL, ZeiterfassungReportFac.REPORT_TELEFONZEITEN,
            theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto);

    return getReportPrint();
}

From source file:com.lp.server.personal.ejbfac.ZeiterfassungReportFacBean.java

License:Open Source License

private ArrayList<Object> erstelleEinzelneReiseeintraege(java.sql.Timestamp tVon, java.sql.Timestamp tBis,
        TheClientDto theClientDto, Integer landIIdHeimat, Integer personalIId) {
    ArrayList<Object> alReiseeintraege = new ArrayList<Object>();
    // Hole Alle Eintraege des gewuenschten Zeitraums
    Session session = FLRSessionFactory.getFactory().openSession();

    org.hibernate.Criteria crit = session.createCriteria(FLRReise.class);

    crit.add(Restrictions.eq(ZeiterfassungFac.FLR_REISE_PERSONAL_I_ID, personalIId));

    crit.add(Restrictions.ge(ZeiterfassungFac.FLR_REISE_T_ZEIT, tVon));
    crit.add(Restrictions.lt(ZeiterfassungFac.FLR_REISE_T_ZEIT, tBis));
    crit.addOrder(Order.asc(ZeiterfassungFac.FLR_REISE_T_ZEIT));
    List<?> resultList = crit.list();
    Iterator<?> resultListIterator = resultList.iterator();

    if (resultListIterator.hasNext()) {
        FLRReise letzterEintrag = (FLRReise) resultListIterator.next();

        // ERSTER EINTRAG
        // Hole den Reiseeintrag vor dem ersten im Zeitraum
        Session sessReiseLetztesBeginn = FLRSessionFactory.getFactory().openSession();
        org.hibernate.Criteria criteriaLetztesBeginn = sessReiseLetztesBeginn.createCriteria(FLRReise.class);
        criteriaLetztesBeginn.add(Expression.eq(ZeiterfassungFac.FLR_REISE_PERSONAL_I_ID,
                letzterEintrag.getFlrpersonal().getI_id()));
        criteriaLetztesBeginn.add(Expression.le(ZeiterfassungFac.FLR_REISE_T_ZEIT, letzterEintrag.getT_zeit()));
        criteriaLetztesBeginn.addOrder(Order.desc(ZeiterfassungFac.FLR_REISE_T_ZEIT));
        criteriaLetztesBeginn.setMaxResults(2);
        List<?> listLetzttesBeginn = criteriaLetztesBeginn.list();
        Iterator<?> letzterEintragIterator = listLetzttesBeginn.iterator();

        if (letzterEintragIterator.hasNext()) {
            FLRReise flrAnfang = (FLRReise) letzterEintragIterator.next();
            if (letzterEintragIterator.hasNext()) {
                FLRReise flrLetzterEintrag = (FLRReise) letzterEintragIterator.next();
                // Wenn dieser ein Beginn-Eintrag ist
                if (Helper.short2boolean(flrLetzterEintrag.getB_beginn()) == true) {
                    alReiseeintraege.add(befuelleReiseeintragFuerReport(flrLetzterEintrag, tVon, flrAnfang,
                            flrAnfang.getT_zeit(), landIIdHeimat, false, theClientDto));
                }//from   w  w w .ja  v a2s  .  c  o  m
                // Wenn dieser ein Ende-Eintrag ist, dann ignorieren

            }
        }

        // ENDE-ERSTER EINTRAG

        while (resultListIterator.hasNext()) {
            FLRReise flrReise = (FLRReise) resultListIterator.next();
            // Wenn ENDE, dann neue Zeile hinzufuegen
            if (Helper.short2boolean(flrReise.getB_beginn()) == false) {
                alReiseeintraege.add(befuelleReiseeintragFuerReport(letzterEintrag, letzterEintrag.getT_zeit(),
                        flrReise, flrReise.getT_zeit(), landIIdHeimat, true, theClientDto));
            } else if (Helper.short2boolean(flrReise.getB_beginn()) == true
                    && Helper.short2boolean(letzterEintrag.getB_beginn()) == true) {
                // Wenn beginn und vorheriger eintrag beginn, dann
                // ebenfalss neue Zeile hinzufuegen
                alReiseeintraege.add(befuelleReiseeintragFuerReport(letzterEintrag, letzterEintrag.getT_zeit(),
                        flrReise, flrReise.getT_zeit(), landIIdHeimat, false, theClientDto));
            }
            letzterEintrag = flrReise;
        }

        if (Helper.short2boolean(letzterEintrag.getB_beginn()) == true) {
            // LETZTER EINTRAG
            // Hole den Reiseeintrag vor dem ersten im Zeitraum
            Session sessReiseLetztesEnde = FLRSessionFactory.getFactory().openSession();
            org.hibernate.Criteria criteriaLetztesEnde = sessReiseLetztesEnde.createCriteria(FLRReise.class);
            criteriaLetztesEnde.add(
                    Expression.eq(ZeiterfassungFac.FLR_REISE_PERSONAL_I_ID, letzterEintrag.getPersonal_i_id()));
            criteriaLetztesEnde
                    .add(Expression.gt(ZeiterfassungFac.FLR_REISE_T_ZEIT, letzterEintrag.getT_zeit()));
            criteriaLetztesEnde.addOrder(Order.desc(ZeiterfassungFac.FLR_REISE_T_ZEIT));
            criteriaLetztesEnde.setMaxResults(2);
            List<?> listLetzttesEnde = criteriaLetztesEnde.list();
            Iterator<?> letztesEndeIterator = listLetzttesEnde.iterator();

            if (letztesEndeIterator.hasNext()) {
                FLRReise flrNachLetztemEintrag = (FLRReise) letztesEndeIterator.next();

                FLRReise ende = new FLRReise();
                ende.setB_beginn(flrNachLetztemEintrag.getB_beginn());
                ende.setC_kommentar(flrNachLetztemEintrag.getC_kommentar());
                ende.setFlrdiaeten(flrNachLetztemEintrag.getFlrdiaeten());
                ende.setFlrpartner(flrNachLetztemEintrag.getFlrpartner());
                ende.setFlrpersonal(flrNachLetztemEintrag.getFlrpersonal());
                ende.setI_id(flrNachLetztemEintrag.getI_id());
                ende.setPersonal_i_id(flrNachLetztemEintrag.getPersonal_i_id());
                ende.setT_zeit(flrNachLetztemEintrag.getT_zeit());

                Calendar c = Calendar.getInstance();
                c.setTimeInMillis(tBis.getTime());
                c.set(Calendar.SECOND, c.get(Calendar.SECOND) - 1);

                alReiseeintraege.add(befuelleReiseeintragFuerReport(letzterEintrag, letzterEintrag.getT_zeit(),
                        ende, new java.sql.Date(c.getTimeInMillis()), landIIdHeimat, false, theClientDto));
            }
            sessReiseLetztesEnde.close();

        }
        // ENDE-ERSTER EINTRAG

        sessReiseLetztesBeginn.close();

    }
    session.close();
    return alReiseeintraege;
}