List of usage examples for org.hibernate.criterion Restrictions isNull
public static Criterion isNull(String propertyName)
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public KapazitaetsvorschauDto getKapazitaetsvorschau(TheClientDto theClientDto) throws EJBExceptionLP { KapazitaetsvorschauDto kapDto = null; Session session = null;/* w ww. ja v a 2 s . co m*/ try { // ------------------------------------------------------------------ // ----- // Benoetigte Parameter holen // ------------------------------------------------------------------ // ----- // Default Sicht nach Wochen // final int iSicht = FertigungFac.KAPAZITAETSVORSCHAU_NACH_WOCHEN; // Anzahl der angezeigten Vatergruppen. Alles andere wird nach // "Sonstige" verdichtet final ParametermandantDto parameterAnzahlGruppen = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ANZAHL_GRUPPEN); final int iParamAnzahlGruppen = (Integer) parameterAnzahlGruppen.getCWertAsObject(); // Angezeigter Zeitraum = Anzahl der Spalten final ParametermandantDto parameterZeitraum = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ZEITRAUM); final int iParamZeitraum = (Integer) parameterZeitraum.getCWertAsObject(); // ------------------------------------------------------------------ // ----- // Hibernate-Session erstellen // ------------------------------------------------------------------ // ----- SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); // ------------------------------------------------------------------ // ----- // Artikel- / Maschinen-Vatergruppen holen // ------------------------------------------------------------------ // ----- // Alle Artikel-Vatergruppen Criteria cArtikelVatergruppen = session.createCriteria(FLRArtikelgruppe.class); cArtikelVatergruppen.add(Restrictions.isNull(ArtikelFac.FLR_ARTIKELGRUPPE_FLRARTIKELGRUPPE)); List<?> listArtikelgruppen = cArtikelVatergruppen.list(); // Alle Maschinen-Vatergruppen Criteria cMaschinengruppen = session.createCriteria(FLRMaschinengruppe.class); List<?> listMaschinengruppen = cMaschinengruppen.list(); // ------------------------------------------------------------------ // ----- // Anzahl der sub-Diagramme bestimmen // das ist grundsaetzlich (iParamAnzahlGruppen + 1) x 2 ... // (Anzahl d. anzuzeigenden Vatergruppen + Sonstige) f. AZ und // Maschinen // wenn es weniger Vatergruppen als anzuzeigende gibt, reduziert // sich das aber // Gibt es keine Vatergruppe, wird daher alles nach "Sonstige" // verdichtet // ------------------------------------------------------------------ // ----- final int iAnzuzeigendeArtikelgruppen = Math.min(iParamAnzahlGruppen, listArtikelgruppen.size()); final int iAnzuzeigendeMaschinengruppen = Math.min(iParamAnzahlGruppen, listMaschinengruppen.size()); final int iAnzahlZeilen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen + 1; // ------------------------------------------------------------------ // ----- // Dto initialisieren // ------------------------------------------------------------------ // ----- kapDto = new KapazitaetsvorschauDto(iAnzahlZeilen, iParamZeitraum); // ------------------------------------------------------------------ // ----- // Beschriftung der x-Achse ermitteln. das sind die Kalenderwochen // ------------------------------------------------------------------ // ----- HashMap<Integer, Integer> hmKWIndizes = new HashMap<Integer, Integer>(); String[] kw = new String[iParamZeitraum]; GregorianCalendar gc = new GregorianCalendar(); for (int i = 0; i < kw.length; i++) { int iKw = gc.get(GregorianCalendar.WEEK_OF_YEAR); kw[i] = "" + iKw; kapDto.setISpaltenueberschrift(i, kw[i]); hmKWIndizes.put(gc.get(GregorianCalendar.WEEK_OF_YEAR), i); gc.setTimeInMillis(gc.getTimeInMillis() + 7 * 24 * 60 * 60 * 1000); // 1 Woche dazu } // ------------------------------------------------------------------ // ----- // Beschriftung der y-Achse ermitteln. das sind die Namen der // Vatergruppen bzw. 2 x "Sonstige". // Weiters werden die Indizes im Daten-Array fuer die jeweiligen // Gruppen festgelegt. // ------------------------------------------------------------------ // ----- String sSonstige = getTextRespectUISpr("lp.sonstige", theClientDto.getMandant(), theClientDto.getLocUi()); HashMap<Integer, Integer> hmArtikelGruppenIndizes = new HashMap<Integer, Integer>(); HashMap<Integer, Integer> hmMaschinenGruppenIndizes = new HashMap<Integer, Integer>(); // zuerst die Artikelvatergruppen for (int i = 0; i < iAnzuzeigendeArtikelgruppen; i++) { FLRArtikelgruppe item = (FLRArtikelgruppe) listArtikelgruppen.get(i); kapDto.setIZeilenueberschrift(i, item.getC_nr()); hmArtikelGruppenIndizes.put(item.getI_id(), i); } // Dann Sonstige Artikelgruppen final int indexSonstigeArtikelGruppen = iAnzuzeigendeArtikelgruppen; kapDto.setIZeilenueberschrift(indexSonstigeArtikelGruppen, sSonstige); // Maschinengruppen for (int i = 0; i < iAnzuzeigendeMaschinengruppen; i++) { FLRMaschinengruppe item = (FLRMaschinengruppe) listMaschinengruppen.get(i); int index = iAnzuzeigendeArtikelgruppen + 1 + i; kapDto.setIZeilenueberschrift(index, item.getC_bez()); hmMaschinenGruppenIndizes.put(item.getI_id(), index); } // zuletzt Sonstige Maschinengruppen final int indexSonstigeMaschinenGruppen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen; kapDto.setIZeilenueberschrift(indexSonstigeMaschinenGruppen, sSonstige); // ------------------------------------------------------------------ // ----- // Lose holen // ------------------------------------------------------------------ // ----- Criteria cLose = session.createCriteria(FLRLos.class); // Filter nach Mandant cLose.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // Alle Stati ausser Erledigt, Gestoppt, Storniert Collection<String> cLoseStati = new LinkedList<String>(); cLoseStati.add(FertigungFac.STATUS_ERLEDIGT); cLoseStati.add(FertigungFac.STATUS_GESTOPPT); cLoseStati.add(FertigungFac.STATUS_STORNIERT); cLose.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, cLoseStati))); List<?> listLose = cLose.list(); // ------------------------------------------------------------------ // ----- // Auswertungszeitraum und verfuegbare Kapazitaeten ermitteln // ------------------------------------------------------------------ // ----- // 3 Monate in die zukunft Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 3); java.util.Date dMax = Helper.cutDate(new java.sql.Date(c.getTimeInMillis())); java.sql.Timestamp tVon = Helper.cutTimestamp(new java.sql.Timestamp(System.currentTimeMillis())); java.sql.Timestamp tBis = Helper.cutTimestamp(new java.sql.Timestamp(dMax.getTime())); // Verfuegbare Zeiten holen SollverfuegbarkeitDto[] oVerfuegbar = getZeiterfassungFac().getVerfuegbareSollzeit(tVon, tBis, theClientDto); // diese nun aufteilen for (int i = 0; i < oVerfuegbar.length; i++) { SollverfuegbarkeitDto svDto = oVerfuegbar[i]; // "normale" AZ if (svDto.isBMannarbeitszeit()) { // die sind einer Artikelgruppe zugeordnet if (svDto.getIGruppeid() != null) { Integer iZeile = hmArtikelGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeArtikelGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } // Rest = Sonstige Artikelgruppen else { if (svDto.getTDatum() != null) { // Die KW dieses Datums ermitteln, damit das // zugeordnet werden kann GregorianCalendar gcSV = new GregorianCalendar(); gcSV.setTime(svDto.getTDatum()); int kwSV = gcSV.get(Calendar.WEEK_OF_YEAR); Integer iIndexDerKW = hmKWIndizes.get(kwSV); if (iIndexDerKW != null) { // Hier nicht mit 5 multiplizieren, da es fuer // jeden Tag einen eigenen Eintrag gibt kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iIndexDerKW, svDto.getNSollstunden()); } else { // diese KW wird nicht mehr angezeigt - brauch // ich nicht einrechnen } } } } // Maschinenzeit - die Verfuegbarkeit ist jeden Tag gleich else { Integer iZeile = hmMaschinenGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeMaschinenGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeMaschinenGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } } // ------------------------------------------------------------------ // ----- // Offene Zeiten ermitteln // ------------------------------------------------------------------ // ----- for (Iterator<?> iter = listLose.iterator(); iter.hasNext();) { FLRLos los = (FLRLos) iter.next(); // Offene Menge ermitteln BigDecimal bdOffen = los.getN_losgroesse(); for (Iterator<?> iterAblieferung = los.getAblieferungset().iterator(); iterAblieferung.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iterAblieferung.next(); bdOffen = bdOffen.subtract(item.getN_menge()); } // nur Lose mit tatsaechlich offener Menge>0 if (bdOffen.compareTo(new BigDecimal(0)) > 0) { // Faktor zur Berechnung der offenen Zeiten = offene Menge / // Losgroesse. 2 Nachkommastellen sollten reichen. BigDecimal bdFaktor = bdOffen.divide(los.getN_losgroesse(), 2, BigDecimal.ROUND_HALF_EVEN); // Arbeitsplan holen Criteria cLosAZ = session.createCriteria(FLRLossollarbeitsplan.class); cLosAZ.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, los.getI_id())); List<?> listLosAZ = cLosAZ.list(); // fuer alle Taetigkeiten for (Iterator<?> iterAZ = listLosAZ.iterator(); iterAZ.hasNext();) { FLRLossollarbeitsplan losAZ = (FLRLossollarbeitsplan) iterAZ.next(); BigDecimal bdOffeneStunden = losAZ.getN_gesamtzeit().multiply(bdFaktor); // ------------------------------------------------------ // ----------------- // Index der Gruppe bestimmen, der ich das zuordnen muss // ------------------------------------------------------ // ----------------- int iZeilenIndex; // 1. nach Maschinengruppe // 2. nach Artikelgruppe der Taetigkeit FLRMaschine flrMaschine = losAZ.getFlrmaschine(); Integer iMaschinengruppeIId = null; Integer iArtikelgruppeIId = null; if (flrMaschine != null) { FLRMaschinengruppe flrMaschinengruppe = flrMaschine.getFlrmaschinengruppe(); if (flrMaschinengruppe != null) { // Wenn diese Maschinengruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmMaschinenGruppenIndizes.get(flrMaschinengruppe.getI_id()); iMaschinengruppeIId = flrMaschinengruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } // Maschinen ohne Maschinengruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } else { FLRArtikel flrArtikel = losAZ.getFlrartikel(); FLRArtikelgruppe flrArtikelgruppe = flrArtikel.getFlrartikelgruppe(); if (flrArtikelgruppe != null) { // Wenn diese Artikelgruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmArtikelGruppenIndizes.get(flrArtikelgruppe.getI_id()); iArtikelgruppeIId = flrArtikelgruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // Taetigkeiten ohne Artikelgruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // ------------------------------------------------------ // ----------------- // Jetzt hab ich die Gruppe, der ich das zuordnen muss // nun muss die Zeit aufgeteilt werden // ------------------------------------------------------ // ----------------- java.util.Date tLosStarttermin = los.getT_produktionsbeginn(); java.util.Date tLosEndetermin = los.getT_produktionsende(); // beide Termine duerfen nicht vor heute liegen if (tLosStarttermin.before(getDate())) { tLosStarttermin = getDate(); } if (tLosEndetermin.before(getDate())) { tLosEndetermin = getDate(); } // Anzahl der betroffenen Kalenderwochen bestimmen GregorianCalendar gcStart = new GregorianCalendar(); gcStart.setTime(tLosStarttermin); GregorianCalendar gcEnde = new GregorianCalendar(); gcEnde.setTime(tLosEndetermin); int iStartKW = gcStart.get(Calendar.WEEK_OF_YEAR); int iEndeKW = gcEnde.get(Calendar.WEEK_OF_YEAR); int iAnzahlKW = 1 + iEndeKW - iStartKW; // nun auf die Wochen aufteilen BigDecimal bdOffeneStundenJeWoche = bdOffeneStunden; if (iAnzahlKW > 0) { bdOffeneStundenJeWoche = bdOffeneStunden.divide(new BigDecimal(iAnzahlKW), 2, RoundingMode.HALF_UP); } for (int iAktuelleKW = iStartKW; iAktuelleKW <= iEndeKW; iAktuelleKW++) { Integer indexDerKW = hmKWIndizes.get(iAktuelleKW); // wird diese Woche auch angezeigt? if (indexDerKW != null) { KapazitaetsvorschauDetailDto detailDto = new KapazitaetsvorschauDetailDto(); detailDto.setArtikelgruppeIId(iArtikelgruppeIId); detailDto.setArtikelIIdTaetigkeit(losAZ.getFlrartikel().getI_id()); detailDto.setBdDauer(bdOffeneStundenJeWoche); detailDto.setLosIId(los.getI_id()); detailDto.setLossollarbeitsplanIId(losAZ.getI_id()); detailDto.setMaschinengruppeIId(iMaschinengruppeIId); kapDto.addDetail(iZeilenIndex, indexDerKW, detailDto); } } } } } // ------------------------------------------------------------------ // ----- // Diagramm aus den Daten erstellen // ------------------------------------------------------------------ // ----- SymbolAxis xAchse = new SymbolAxis("KW", kw); CombinedDomainXYPlot plot = new CombinedDomainXYPlot(xAchse); for (int iZeile = 0; iZeile < kapDto.getDetails().length; iZeile++) { XYSeries datenZeile = new XYSeries(kapDto.getIZeilenueberschrift(iZeile)); // Balkenfarben festlegen ( >100% = rot, sonst hellgrau) // fuer jede zeile und jede spalte Paint[][] paints = new Paint[1][kapDto.getDetails()[iZeile].length]; for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { BigDecimal bdVerfuegbar = kapDto.getBdVerfuegbareStunden()[iZeile][iSpalte]; BigDecimal bdBenoetigt = new BigDecimal(0); // Benoetigte Zeit jet Gruppe je Woche ermitteln for (Iterator<?> iter = kapDto.getDetails()[iZeile][iSpalte].iterator(); iter.hasNext();) { KapazitaetsvorschauDetailDto item = (KapazitaetsvorschauDetailDto) iter.next(); bdBenoetigt = bdBenoetigt.add(item.getBdDauer()); } BigDecimal value = new BigDecimal(0); if (bdVerfuegbar.compareTo(new BigDecimal(0)) > 0) { value = (bdBenoetigt.multiply(new BigDecimal(100))).divide(bdVerfuegbar, 4, BigDecimal.ROUND_HALF_EVEN); if (value.doubleValue() > 100.0) { paints[0][iSpalte] = Color.red; } else { paints[0][iSpalte] = Color.lightGray; } } // tage ohne Verfuegbarkeit mach ich 100% und weisz else { value = new BigDecimal(100.0); // Wochen ohne Kapazitaet aber mit geplanter Zeit if (bdBenoetigt.compareTo(new BigDecimal(0)) > 0) { paints[0][iSpalte] = Color.MAGENTA; } // Wenn nichts verfuegbar aber auch nichts benoetigt -> // weiss else { paints[0][iSpalte] = Color.white; } } XYDataItem data = new XYDataItem(iSpalte, value.doubleValue()); datenZeile.add(data); } // Zur Collection XYSeriesCollection xyDataset = new XYSeriesCollection(); xyDataset.addSeries(datenZeile); // subplot erstellen XYItemRenderer renderer1 = new CustomXYBarRenderer(paints); // renderer1.setItemLabelsVisible(true); // Legende nicht anzeigen renderer1.setBaseSeriesVisibleInLegend(false); NumberAxis zeilenAchse = new NumberAxis(kapDto.getIZeilenueberschrift(iZeile)); // Beschriftung der Y-Achse um 90 grad drehen zeilenAchse.setLabelAngle(Math.PI / 2.0); zeilenAchse.setAutoRange(true); XYPlot subplot1 = new XYPlot(xyDataset, null, zeilenAchse, renderer1); subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); // Markierung bei 100% final Marker target = new ValueMarker(100.0); target.setPaint(Color.darkGray); // target.setLabel("100 %"); // Label // target.setLabelAnchor(RectangleAnchor.TOP_RIGHT); // target.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT); subplot1.addRangeMarker(target); plot.add(subplot1); // plot.add(subplot1, 1); } JFreeChart lStackedBarChart = new JFreeChart(plot); kapDto.setJfcKapazitaetsvorschau(lStackedBarChart); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { if (session != null) { session.close(); } } return kapDto; }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printAlle(ReportJournalKriterienDto krit, boolean bNurAngelegte, Integer fertigungsgruppeIId, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from ww w . j a v a 2s . co m try { this.useCase = UC_ALLE; this.index = -1; Map<String, Object> mapParameter = new TreeMap<String, Object>(); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLosReport.class); c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); if (krit.kostenstelleIId != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, krit.kostenstelleIId)); } if (bNurAngelegte) { c.add(Restrictions.eq(FertigungFac.FLR_LOS_STATUS_C_NR, LocaleFac.STATUS_ANGELEGT)); } if (fertigungsgruppeIId != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId)); FertigungsgruppeDto fertigungsgruppeDto = getStuecklisteFac() .fertigungsgruppeFindByPrimaryKey(fertigungsgruppeIId); mapParameter.put("P_FERTIGUNGSGRUPPE", fertigungsgruppeDto.getCBez()); } String sVon = null; String sBis = null; if (krit.dVon != null) { c.add(Restrictions.ge(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dVon)); sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi()); } if (krit.dBis != null) { c.add(Restrictions.le(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dBis)); sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi()); } LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant()); Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant()); String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert(); if (krit.sBelegnummerVon != null) { sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerVon); c.add(Restrictions.ge(FertigungFac.FLR_LOS_C_NR, sVon)); } if (krit.sBelegnummerBis != null) { sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerBis); c.add(Restrictions.le(FertigungFac.FLR_LOS_C_NR, sBis)); } if (krit.bSortiereNachKostenstelle) { c.createCriteria(FertigungFac.FLR_LOSREPORT_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } // if (krit.iSortierung == // ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { // c.createCriteria(FertigungFac.FLR_ER_FLRLIEFERANT).createCriteria( // LieferantFac. // FLR_PARTNER).addOrder(Order.asc(PartnerFac. // FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); // } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { c.createCriteria(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG) .createCriteria(AuftragFac.FLR_AUFTRAG_FLRKUNDE).createCriteria(KundeFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_C_NAME1NACHNAMEFIRMAZEILE1)); } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) { c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR)); } List<Object> list = c.list(); if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { Criteria c2 = session.createCriteria(FLRLosReport.class); c2.add(Restrictions.isNull(FertigungFac.FLR_LOSREPORT_FLRAUFTRAG)); c2.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); if (krit.kostenstelleIId != null) { c2.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_KOSTENSTELLE_I_ID, krit.kostenstelleIId)); } if (bNurAngelegte) { c2.add(Restrictions.eq(FertigungFac.FLR_LOS_STATUS_C_NR, LocaleFac.STATUS_ANGELEGT)); } if (fertigungsgruppeIId != null) { c2.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId)); } if (krit.dVon != null) { c2.add(Restrictions.ge(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dVon)); } if (krit.dBis != null) { c2.add(Restrictions.le(FertigungFac.FLR_LOS_T_PRODUKTIONSBEGINN, krit.dBis)); } List<?> list2 = c2.list(); Iterator<?> iter2 = list2.iterator(); while (iter2.hasNext()) { list.add(iter2.next()); } } data = new Object[list.size()][ALLE_FELDANZAHL]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLosReport los = (FLRLosReport) iter.next(); LossollarbeitsplanDto[] sollaz = getFertigungFac().lossollarbeitsplanFindByLosIId(los.getI_id()); BigDecimal bdArbeitszeitIstmenge = new BigDecimal(0); BigDecimal bdArbeitszeitSollmenge = new BigDecimal(0); BigDecimal bdArbeitszeitIstpreis = new BigDecimal(0); BigDecimal bdArbeitszeitSollpreis = new BigDecimal(0); for (int j = 0; j < sollaz.length; j++) { bdArbeitszeitSollmenge = bdArbeitszeitSollmenge.add(sollaz[j].getNGesamtzeit()); ArtikellieferantDto artikellieferantDto = getArtikelFac().getArtikelEinkaufspreis( sollaz[j].getArtikelIIdTaetigkeit(), new BigDecimal(1), theClientDto.getSMandantenwaehrung(), theClientDto); BigDecimal bdEinzelpreis; if (artikellieferantDto != null) { bdEinzelpreis = artikellieferantDto.getNEinzelpreis(); } else { bdEinzelpreis = new BigDecimal(0); } bdArbeitszeitSollpreis = bdArbeitszeitSollpreis .add(sollaz[j].getNGesamtzeit().multiply(bdEinzelpreis)); } AuftragzeitenDto[] zeiten = getZeiterfassungFac().getAllZeitenEinesBeleges(LocaleFac.BELEGART_LOS, los.getI_id(), null, null, null, null, false, false, theClientDto); for (int j = 0; j < zeiten.length; j++) { bdArbeitszeitIstmenge = bdArbeitszeitIstmenge .add(new BigDecimal(zeiten[j].getDdDauer().doubleValue())); bdArbeitszeitIstpreis = bdArbeitszeitIstpreis.add(zeiten[j].getBdKosten()); } data[i][ALLE_ARBEITSZEITISTMENGE] = bdArbeitszeitIstmenge; data[i][ALLE_ARBEITSZEITISTPREIS] = bdArbeitszeitIstpreis; data[i][ALLE_ARBEITSZEITSOLLMENGE] = bdArbeitszeitSollmenge; data[i][ALLE_ARBEITSZEITSOLLPREIS] = bdArbeitszeitSollpreis; if (los.getFlrstueckliste() != null) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( los.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); data[i][ALLE_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); if (artikelDto.getArtikelsprDto().getCZbez() != null) { data[i][ALLE_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); } else { data[i][ALLE_ZUSATZBEZEICHNUNG] = ""; } data[i][ALLE_IDENT] = los.getFlrstueckliste().getFlrartikel().getC_nr(); data[i][ALLE_OFFENERAHMENRESERVIERUNGEN] = getReservierungFac() .getAnzahlRahmenreservierungen(artikelDto.getIId(), theClientDto); } else { data[i][ALLE_BEZEICHNUNG] = los.getC_projekt(); data[i][ALLE_BEZEICHNUNG] = null; data[i][ALLE_IDENT] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); data[i][ALLE_OFFENERAHMENRESERVIERUNGEN] = new BigDecimal(0); } data[i][ALLE_LOSNUMMER] = los.getC_nr(); LossollmaterialDto[] sollmat = getFertigungFac().lossollmaterialFindByLosIId(los.getI_id()); BigDecimal bdMaterialIstmenge = new BigDecimal(0); BigDecimal bdMaterialSollmenge = new BigDecimal(0); BigDecimal bdMaterialIstpreis = new BigDecimal(0); BigDecimal bdMaterialSollpreis = new BigDecimal(0); for (int j = 0; j < sollmat.length; j++) { BigDecimal bdAusgegebeneMenge = getFertigungFac().getAusgegebeneMenge(sollmat[j].getIId(), null, theClientDto); bdMaterialIstmenge = bdMaterialIstmenge.add(bdAusgegebeneMenge); bdMaterialSollmenge = bdMaterialSollmenge.add(sollmat[j].getNMenge()); bdMaterialIstpreis = bdMaterialIstpreis.add(bdAusgegebeneMenge.multiply( getFertigungFac().getAusgegebeneMengePreis(sollmat[j].getIId(), null, theClientDto))); bdMaterialSollpreis = bdMaterialSollpreis .add(sollmat[j].getNMenge().multiply(sollmat[j].getNSollpreis())); } data[i][ALLE_MATERIALISTMENGE] = bdMaterialIstmenge; data[i][ALLE_MATERIALISTPREIS] = bdMaterialIstpreis; data[i][ALLE_MATERIALSOLLMENGE] = bdMaterialSollmenge; data[i][ALLE_MATERIALSOLLPREIS] = bdMaterialSollpreis; data[i][ALLE_BEGINNTERMIN] = los.getT_produktionsbeginn(); data[i][ALLE_LOSGROESSE] = los.getN_losgroesse(); if (los.getFlrauftrag() != null) { data[i][ALLE_AUFTRAGLIEFERTERMIN] = los.getFlrauftrag().getT_liefertermin(); data[i][ALLE_AUFTRAGSNUMMER] = los.getFlrauftrag().getC_nr(); if (los.getFlrauftrag().getFlrkunde() != null) { if (los.getFlrauftrag().getFlrkunde().getFlrpartner() != null) { data[i][ALLE_KUNDE] = los.getFlrauftrag().getFlrkunde().getFlrpartner() .getC_name1nachnamefirmazeile1(); } else { data[i][ALLE_KUNDE] = ""; } } else { data[i][ALLE_KUNDE] = ""; } } else { data[i][ALLE_AUFTRAGSNUMMER] = ""; data[i][ALLE_AUFTRAGLIEFERTERMIN] = null; } if (los.getFlrfertigungsgruppe() != null) { data[i][ALLE_FERTIGUNGSGRUPPE] = los.getFlrfertigungsgruppe().getC_bez(); } else { data[i][ALLE_FERTIGUNGSGRUPPE] = ""; } } StringBuffer sSortierung = new StringBuffer(); // Sortierung nach Kostenstelle sSortierung.append( getTextRespectUISpr("lp.sortierungnach", theClientDto.getMandant(), theClientDto.getLocUi()) + ": "); mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle)); if (krit.bSortiereNachKostenstelle) { sSortierung.append( getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi())); sSortierung.append(", "); } // Sortieung nach Kunde mapParameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER)); if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { sSortierung.append( getTextRespectUISpr("lp.kunde", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) { sSortierung.append( getTextRespectUISpr("lp.losnr", theClientDto.getMandant(), theClientDto.getLocUi())); } StringBuffer sFilter = new StringBuffer(); sFilter.append( getTextRespectUISpr("lp.filter", theClientDto.getMandant(), theClientDto.getLocUi()) + ": "); if (bNurAngelegte) { sFilter.append(getTextRespectUISpr("lp.nichtausgegebene", theClientDto.getMandant(), theClientDto.getLocUi()) + ", "); } if (sVon != null) { sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" " + sVon + " "); } if (sBis != null) { sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" " + sBis + " "); } if (krit.kostenstelleIId != null) { if (sFilter.length() > 0) { sFilter.append(", "); } KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId); sFilter.append( getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" "); sFilter.append(kstDto.getCNr()); } mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString()); mapParameter.put("P_VON", krit.dVon); mapParameter.put("P_BIS", krit.dBis); mapParameter.put(LPReport.P_FILTER, sFilter.toString()); initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_ALLE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (RemoteException t) { throwEJBExceptionLPRespectOld(t); return null; } finally { closeSession(session); } }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printHalbfertigfabrikatsinventur(java.sql.Timestamp tsStichtag, int iSortierung, boolean bVerdichtet, Integer partnerIIdFertigungsort, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;/*ww w .jav a2 s . c om*/ try { Map<String, Object> mapParameter = new TreeMap<String, Object>(); if (tsStichtag != null) { mapParameter.put("P_STICHTAG", tsStichtag); Calendar c = Calendar.getInstance(); c.setTimeInMillis(tsStichtag.getTime()); c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1); tsStichtag = new java.sql.Timestamp(c.getTimeInMillis()); tsStichtag = Helper.cutTimestamp(tsStichtag); } this.useCase = UC_HALBFERTIGFABRIKATSINVENTUR; this.index = -1; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLosReport.class); c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // c.add(Restrictions.eq("i_id", 99579)); if (partnerIIdFertigungsort != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_PARTNER_I_ID_FERTIGUNGSORT, partnerIIdFertigungsort)); } if (tsStichtag == null) { c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_ERLEDIGT, FertigungFac.STATUS_ANGELEGT, FertigungFac.STATUS_GESTOPPT }))); } else { c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT }))); c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOS_T_ERLEDIGT, tsStichtag), Restrictions.isNull(FertigungFac.FLR_LOS_T_ERLEDIGT))); c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tsStichtag), Restrictions.isNull(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT))); c.add(Restrictions.le(FertigungFac.FLR_LOS_T_AUSGABE, tsStichtag)); } // Sortierung nach Losnummer c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR)); List<?> list = c.list(); ArrayList<Object[]> alDaten = new ArrayList<Object[]>(); int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLosReport item = (FLRLosReport) iter.next(); Object[] zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); zeile[HF_LOSGROESSE] = item.getN_losgroesse(); if (item.getFlrstueckliste() != null) { zeile[HF_ARTIKELNUMMER] = item.getFlrstueckliste().getFlrartikel().getC_nr(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( item.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); zeile[HF_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); ; } else { zeile[HF_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); zeile[HF_BEZEICHNUNG] = item.getC_projekt(); } LosablieferungDto[] losablieferungDtos = getFertigungFac() .losablieferungFindByLosIId(item.getI_id(), true, theClientDto); BigDecimal bdAbgeliefert = new BigDecimal(0.0000); for (int j = 0; j < losablieferungDtos.length; j++) { if (tsStichtag == null) { bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge()); } else { if (tsStichtag.after(losablieferungDtos[j].getTAendern())) { bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge()); } } } zeile[HF_ERLEDIGT] = bdAbgeliefert; // Nun eine Zeile pro Position // Ausgegebenes Material LossollmaterialDto[] sollmat = getFertigungFac().lossollmaterialFindByLosIId(item.getI_id()); for (int j = 0; j < sollmat.length; j++) { BigDecimal bdMenge = getFertigungFac().getAusgegebeneMenge(sollmat[j].getIId(), tsStichtag, theClientDto); zeile[HF_POSITION_AUSGEGEBEN] = bdMenge; // Einkaufspreis des ersten Lieferanten hinzufuegen ArtikellieferantDto dto = getArtikelFac().getArtikelEinkaufspreis(sollmat[j].getArtikelIId(), null, new BigDecimal(1), theClientDto.getSMandantenwaehrung(), new java.sql.Date(sollmat[j].getTAendern().getTime()), theClientDto); if (dto != null) { zeile[HF_POSITION_EKPREIS] = dto.getLief1Preis(); } // CK:2008-12-23 Wegen Beistellteilen ist die Verfaelschung // des Gestehungspreises falsch // es muss immer der Gestehungspreis zum ausgabezeitpunkt // verwendet werden. BigDecimal bdPreis = getFertigungFac().getAusgegebeneMengePreis(sollmat[j].getIId(), tsStichtag, theClientDto); zeile[HF_POSITION_PREIS] = bdPreis; BigDecimal sollsatzmenge = new BigDecimal(0); if (item.getN_losgroesse().doubleValue() != 0) { sollsatzmenge = sollmat[j].getNMenge().divide(item.getN_losgroesse(), BigDecimal.ROUND_HALF_EVEN); } BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); if (theoretischabgeliefert.doubleValue() > bdMenge.doubleValue()) { theoretischabgeliefert = bdMenge; } zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN] = bdMenge.subtract(theoretischabgeliefert); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(sollmat[j].getArtikelIId(), theClientDto); zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr(); zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung(); if (bVerdichtet) { if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_POSITION_ARTIKELNUMMMER] .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) { bGefunden = true; zeileTemp[HF_LOSNUMMER] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) { bGefunden = true; zeileTemp[HF_POSITION_ARTIKELNUMMMER] = ""; zeileTemp[HF_POSITION_BEZEICHNUNG] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } } else { alDaten.add(zeile); } zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); } // Verbrauchte Arbeitszeit LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(item.getI_id()); for (int j = 0; j < lossollarbeitsplanDto.length; j++) { AuftragzeitenDto[] zeiten = getZeiterfassungFac().getAllZeitenEinesBeleges( LocaleFac.BELEGART_LOS, item.getI_id(), null, null, null, tsStichtag, false, false, theClientDto); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey( lossollarbeitsplanDto[j].getArtikelIIdTaetigkeit(), theClientDto); zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr(); zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung(); BigDecimal bdArbeitszeitwert = new BigDecimal(0); BigDecimal bdIstZeit = new BigDecimal(0); for (int k = 0; k < zeiten.length; k++) { if (artikelDto.getIId().equals(zeiten[k].getArtikelIId())) { bdArbeitszeitwert = bdArbeitszeitwert.add(zeiten[k].getBdKosten()); bdIstZeit = bdIstZeit.add(new BigDecimal(zeiten[k].getDdDauer().doubleValue())); } } BigDecimal sollsatzmenge = new BigDecimal(0); if (item.getN_losgroesse().doubleValue() != 0) { sollsatzmenge = lossollarbeitsplanDto[j].getNGesamtzeit().divide(item.getN_losgroesse(), BigDecimal.ROUND_HALF_EVEN); } if (Helper.short2boolean(lossollarbeitsplanDto[j].getBNurmaschinenzeit())) { zeile[HF_POSITION_AUSGEGEBEN] = new BigDecimal(0); } else { zeile[HF_POSITION_AUSGEGEBEN] = lossollarbeitsplanDto[j].getNGesamtzeit(); } BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); BigDecimal restist = bdIstZeit.subtract(theoretischabgeliefert); if (restist.doubleValue() <= 0) { restist = new BigDecimal(0); } if (theoretischabgeliefert.doubleValue() > bdIstZeit.doubleValue()) { theoretischabgeliefert = bdIstZeit; } zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN] = restist; if (bdIstZeit.doubleValue() != 0) { zeile[HF_POSITION_PREIS] = bdArbeitszeitwert.divide(bdIstZeit, BigDecimal.ROUND_HALF_EVEN); } else { zeile[HF_POSITION_PREIS] = new BigDecimal(0); } AuftragzeitenDto[] maschinenzeiten = getZeiterfassungFac().getAllMaschinenzeitenEinesBeleges( item.getI_id(), lossollarbeitsplanDto[j].getIId(), null, tsStichtag, theClientDto); BigDecimal bdArbeitszeitwertMaschine = new BigDecimal(0); BigDecimal bdIstZeitMaschine = new BigDecimal(0); for (int k = 0; k < maschinenzeiten.length; k++) { bdArbeitszeitwertMaschine = bdArbeitszeitwertMaschine.add(maschinenzeiten[k].getBdKosten()); bdIstZeitMaschine = bdIstZeitMaschine .add(new BigDecimal(maschinenzeiten[k].getDdDauer().doubleValue())); } if (lossollarbeitsplanDto[j].getMaschineIId() == null) { zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = new BigDecimal(0); } else { zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = lossollarbeitsplanDto[j].getNGesamtzeit(); } theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); BigDecimal restistMaschine = bdIstZeitMaschine.subtract(theoretischabgeliefert); if (restistMaschine.doubleValue() <= 0) { restistMaschine = new BigDecimal(0); } if (theoretischabgeliefert.doubleValue() > bdIstZeitMaschine.doubleValue()) { theoretischabgeliefert = bdIstZeitMaschine; } zeile[HF_POSITION_ABGELIFERT_MASCHINE] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN_MASCHINE] = restistMaschine; if (bdIstZeitMaschine.doubleValue() != 0) { zeile[HF_POSITION_PREIS_MASCHINE] = bdArbeitszeitwertMaschine.divide(bdIstZeitMaschine, BigDecimal.ROUND_HALF_EVEN); } else { zeile[HF_POSITION_PREIS_MASCHINE] = new BigDecimal(0); } if (bVerdichtet) { if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_POSITION_ARTIKELNUMMMER] .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) { bGefunden = true; zeileTemp[HF_LOSNUMMER] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) { bGefunden = true; zeileTemp[HF_POSITION_ARTIKELNUMMMER] = ""; zeileTemp[HF_POSITION_BEZEICHNUNG] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } } else { alDaten.add(zeile); } zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); } } mapParameter.put(LPReport.P_WAEHRUNG, theClientDto.getSMandantenwaehrung()); mapParameter.put("P_VERDICHTET", new Boolean(bVerdichtet)); if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { // Sortierng nach Losnr data = new Object[alDaten.size()][17]; data = (Object[][]) alDaten.toArray(data); initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_HALBFERTIGFABRIKATSINVENTUR, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { // Sortieren nach Identnr for (int k = alDaten.size() - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Object[] a1 = (Object[]) alDaten.get(j); Object[] a2 = (Object[]) alDaten.get(j + 1); if (((String) a1[HF_POSITION_ARTIKELNUMMMER]) .compareTo((String) a2[HF_POSITION_ARTIKELNUMMMER]) > 0) { alDaten.set(j, a2); alDaten.set(j + 1, a1); } } } data = new Object[alDaten.size()][17]; data = (Object[][]) alDaten.toArray(data); initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_HALBFERTIGFABRIKATSINVENTUR_IDENT, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); } return getReportPrint(); } catch (RemoteException t) { throwEJBExceptionLPRespectOld(t); } finally { closeSession(session); } return getReportPrint(); }
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. ja va2s .c om * * @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
private FLREingangsrechnung[] getVerbuchbareEingangsrechnungen(java.sql.Date dStichtag, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;/*from w w w . ja v a 2s .com*/ try { SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLREingangsrechnung.class); // Filter nach Mandant c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, theClientDto.getMandant())); // Noch nicht verbuchte c.add(Restrictions.isNull(EingangsrechnungFac.FLR_ER_T_FIBUUEBERNAHME)); // Keine stornierten c.add(Restrictions.not( Restrictions.eq(EingangsrechnungFac.FLR_ER_STATUS_C_NR, EingangsrechnungFac.STATUS_STORNIERT))); // PJ 15286 Ohne Eingangsrechnungen mit Betrag = 0 c.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_N_BETRAG, new BigDecimal(0)))); // Stichtag c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dStichtag)); c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR)); List<?> list = c.list(); FLREingangsrechnung[] erArray = new FLREingangsrechnung[list.size()]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLREingangsrechnung er = (FLREingangsrechnung) iter.next(); erArray[i] = er; } return erArray; } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
private FLRRechnung[] getVerbuchbareRechnungen(java.sql.Date dStichtag, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//w ww .ja v a2s . c om try { pruefeAufAngelegte(dStichtag, theClientDto, RechnungFac.RECHNUNGTYP_RECHNUNG); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRRechnung.class); // nur Rechnungen c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(Restrictions .eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_RECHNUNG)); // Filter nach Mandant c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant())); // Noch nicht verbuchte c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME)); // Stichtag c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag)); // Und nach status Collection<String> coll = new LinkedList<String>(); coll.add(RechnungFac.STATUS_BEZAHLT); coll.add(RechnungFac.STATUS_OFFEN); coll.add(RechnungFac.STATUS_TEILBEZAHLT); coll.add(RechnungFac.STATUS_VERBUCHT); c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll)); c.addOrder(Property.forName("c_nr").asc()); // zu exportierende Belege holen List<?> list = c.list(); FLRRechnung[] reArray = new FLRRechnung[list.size()]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRRechnung re = (FLRRechnung) iter.next(); reArray[i] = re; } return reArray; } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
private void pruefeAufAngelegte(Date dStichtag, TheClientDto theClientDto, String sRechnungstyp) throws EJBExceptionLP { Session session = null;/* ww w . j a va 2s .c o m*/ try { SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRRechnung.class); // nur Rechnungen c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART) .add(Restrictions.eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, sRechnungstyp)); // Filter nach Mandant c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant())); // Noch nicht verbuchte c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME)); // Stichtag c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag)); // Und nach status Collection<String> coll = new LinkedList<String>(); // Zuerst schauen, ob es noch angelegte gibt, in diesem fall muss // der export abgebrochen werden coll.add(RechnungFac.STATUS_ANGELEGT); c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll)); List<?> listAngelegte = c.list(); if (!listAngelegte.isEmpty()) { StringBuffer sb = new StringBuffer(); for (Iterator<?> iter = listAngelegte.iterator(); iter.hasNext();) { FLRRechnung re = (FLRRechnung) iter.next(); sb.append(re.getC_nr()); sb.append(" an ").append(re.getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1()); sb.append("\n"); } EJBExceptionLP ex = new EJBExceptionLP( EJBExceptionLP.FEHLER_FINANZ_EXPORT_BELEG_IST_NOCH_NICHT_AKTIVIERT, new Exception("noch nicht aktivierte Belege")); // Kunden holen ArrayList<Object> a = new ArrayList<Object>(); a.add(sb.toString()); ex.setAlInfoForTheClient(a); throw ex; } } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
private FLRRechnung[] getVerbuchbareGutschriften(java.sql.Date dStichtag, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from w ww . j a v a 2 s . co m try { pruefeAufAngelegte(dStichtag, theClientDto, RechnungFac.RECHNUNGTYP_GUTSCHRIFT); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRRechnung.class); // nur Rechnungen c.createCriteria(RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART).add(Restrictions .eq(RechnungFac.FLR_RECHNUNGART_RECHNUNGTYP_C_NR, RechnungFac.RECHNUNGTYP_GUTSCHRIFT)); // Filter nach Mandant c.add(Restrictions.eq(RechnungFac.FLR_RECHNUNG_MANDANT_C_NR, theClientDto.getMandant())); // Noch nicht verbuchte c.add(Restrictions.isNull(RechnungFac.FLR_RECHNUNG_T_FIBUUEBERNAHME)); // Stichtag c.add(Restrictions.le(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, dStichtag)); // Und nach status Collection<String> coll = new LinkedList<String>(); coll.add(RechnungFac.STATUS_BEZAHLT); coll.add(RechnungFac.STATUS_OFFEN); coll.add(RechnungFac.STATUS_TEILBEZAHLT); coll.add(RechnungFac.STATUS_VERBUCHT); c.add(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, coll)); // zu exportierende Belege holen List<?> list = c.list(); FLRRechnung[] reArray = new FLRRechnung[list.size()]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRRechnung re = (FLRRechnung) iter.next(); reArray[i] = re; } return reArray; } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.finanz.ejbfac.FinanzReportFacBean.java
License:Open Source License
/** * Buchungsjournal drucken.// w ww .j av a 2 s. com * * @param theClientDto * String * @param buchungsjournalIId * Integer * @return JasperPrint * @throws EJBExceptionLP */ public JasperPrintLP printBuchungsjournal(TheClientDto theClientDto, Integer buchungsjournalIId, Date dVon, Date dBis, boolean storniert, boolean bDatumsfilterIstBuchungsdatum, String text, String belegnummer, BigDecimal betrag) throws EJBExceptionLP { Session session = null; try { this.useCase = UC_BUCHUNGSJOURNAL; this.index = -1; Map<String, Object> mapParameter = new TreeMap<String, Object>(); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRFinanzBuchungDetail.class); Timestamp help = new Timestamp(dVon.getTime()); c.createAlias("flrbuchung", "s"); String datumsfilter = "s.d_buchungsdatum"; if (!bDatumsfilterIstBuchungsdatum) { datumsfilter = "t_anlegen"; } c.add(Restrictions.ge(datumsfilter, Helper.cutTimestamp(help))); if (text != null) { c.add(Restrictions.ilike("s." + FinanzFac.FLR_BUCHUNG_C_TEXT, "%" + text + "%")); mapParameter.put("P_TEXT", text); } if (belegnummer != null) { String trennzeichen = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_TRENNZEICHEN) .getCWert(); Integer stellenBelegnummer = new Integer(getParameterFac() .getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_STELLEN_BELEGNUMMER) .getCWert()); String sValue = belegnummer; sValue = sValue.replaceAll("%", ""); sValue = Helper.fitString2LengthAlignRight(sValue, stellenBelegnummer, '0'); sValue = "%" + trennzeichen + sValue; c.add(Restrictions.like("s." + FinanzFac.FLR_BUCHUNG_C_BELEGNUMMER, sValue)); } if (betrag != null) { Integer toleranzBetragsuche = new Integer(getParameterFac() .getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_TOLERANZ_BETRAGSUCHE) .getCWert()); BigDecimal value1 = betrag.subtract( new BigDecimal(betrag.doubleValue() * ((double) toleranzBetragsuche / (double) 100))).abs(); BigDecimal value2 = betrag .add(new BigDecimal(betrag.doubleValue() * ((double) toleranzBetragsuche / (double) 100))) .abs(); c.add(Restrictions.or(Restrictions.between(FinanzFac.FLR_BUCHUNGDETAIL_N_BETRAG, value1, value2), Restrictions.between(FinanzFac.FLR_BUCHUNGDETAIL_N_BETRAG, value2.negate(), value1.negate()))); mapParameter.put("P_TOLERANZ_BETRAGSSUCHE", toleranzBetragsuche); mapParameter.put("P_BETRAG", betrag); } help = new Timestamp(dBis.getTime() + 24 * 3600000); c.add(Restrictions.lt(datumsfilter, Helper.cutTimestamp(help))); if (storniert != true) { c.add(Restrictions.isNull("s.t_storniert")); } else { // Skip } c.createAlias("s.flrkostenstelle", "k"); c.add(Restrictions.eq("k.mandant_c_nr", theClientDto.getMandant())); List<?> list = c.list(); data = new Object[list.size()][REPORT_BUCHUNGSJOURNAL_ANZAHL_SPALTEN]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRFinanzBuchungDetail b = (FLRFinanzBuchungDetail) iter.next(); data[i][REPORT_BUCHUNGSJOURNAL_AUSZUG] = b.getI_auszug(); data[i][REPORT_BUCHUNGSJOURNAL_BELEGNUMMER] = b.getFlrbuchung().getC_belegnummer(); data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSART] = b.getFlrbuchung().getBuchungsart_c_nr(); data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSDATUM] = b.getFlrbuchung().getD_buchungsdatum(); if (b.getFlrgegenkonto() != null) { data[i][REPORT_BUCHUNGSJOURNAL_GEGENKONTONUMMER] = b.getFlrgegenkonto().getC_nr(); } data[i][REPORT_BUCHUNGSJOURNAL_BETRAG] = b.getN_betrag(); data[i][REPORT_BUCHUNGSJOURNAL_KONTONUMMER] = b.getFlrkonto().getC_nr(); data[i][REPORT_BUCHUNGSJOURNAL_KOSTENSTELLENUMMER] = b.getFlrbuchung().getFlrkostenstelle() .getC_nr(); data[i][REPORT_BUCHUNGSJOURNAL_TEXT] = b.getFlrbuchung().getC_text(); data[i][REPORT_BUCHUNGSJOURNAL_UST] = b.getN_ust(); if (b.getFlrbuchung().getT_storniert() == null) { data[i][REPORT_BUCHUNGSJOURNAL_STORNIERT] = new Boolean(false); } else { data[i][REPORT_BUCHUNGSJOURNAL_STORNIERT] = new Boolean(true); } if (b.getBuchungdetailart_c_nr().equals("SOLL ")) { data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = b.getN_betrag(); data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = null; } else if (b.getBuchungdetailart_c_nr().equals("HABEN ")) { data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = b.getN_betrag(); data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = null; } else { data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = null; data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = null; } data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSJOURNALDATUM] = b.getT_anlegen(); data[i][REPORT_BUCHUNGSJOURNAL_WER] = getPersonalFac() .personalFindByPrimaryKeySmall(b.getFlrbuchung().getPersonal_i_id_anlegen()) .getCKurzzeichen(); i++; } MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto); mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr()); mapParameter.put("P_VON", dVon); mapParameter.put("P_MITSTORNIERTEN", new Boolean(storniert)); mapParameter.put("P_DATUMSFILTER_IST_BUCHUNGSDATUM", new Boolean(bDatumsfilterIstBuchungsdatum)); mapParameter.put("P_BIS", dBis); initJRDS(mapParameter, FinanzReportFac.REPORT_MODUL, FinanzReportFac.REPORT_BUCHUNGSJOURNAL, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
From source file:com.lp.server.finanz.ejbfac.FinanzReportFacBean.java
License:Open Source License
public JasperPrintLP[] printSammelmahnung(Integer mahnlaufIId, Boolean bMitLogo, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from w w w. ja va2s. com try { SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria crit = session.createCriteria(FLRFinanzMahnung.class); crit.add(Restrictions.eq(FinanzFac.FLR_MAHNUNG_MAHNLAUF_I_ID, mahnlaufIId)); crit.add(Restrictions.isNull(FinanzFac.FLR_MAHNUNG_T_GEDRUCKT)); List<?> list = crit.list(); HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>(); // alle kundenId's in eine hashmap -> quasi distinct for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRFinanzMahnung item = (FLRFinanzMahnung) iter.next(); if (!item.getFlrrechnungreport().getStatus_c_nr().equals(RechnungFac.STATUS_STORNIERT)) { hm.put(item.getFlrrechnungreport().getFlrkunde().getI_id(), item.getFlrrechnungreport().getFlrkunde().getI_id()); } } // Reports generieren Collection<JasperPrintLP> c = new LinkedList<JasperPrintLP>(); for (Iterator<Integer> iter = hm.keySet().iterator(); iter.hasNext();) { Integer kundeIId = (Integer) iter.next(); JasperPrintLP print = printSammelmahnung(mahnlaufIId, kundeIId, bMitLogo, theClientDto); // Kunden-ID fuer den Client setzen. print.putAdditionalInformation(JasperPrintLP.KEY_KUNDE_I_ID, kundeIId); c.add(print); } JasperPrintLP[] prints = new JasperPrintLP[c.size()]; int i = 0; for (Iterator<JasperPrintLP> iter = c.iterator(); iter.hasNext(); i++) { JasperPrintLP item = iter.next(); prints[i] = item; } return prints; } finally { closeSession(session); } }