List of usage examples for org.hibernate.criterion Restrictions lt
public static SimpleExpression lt(String propertyName, Object value)
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 (ä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; }