List of usage examples for org.hibernate.criterion Restrictions isNotNull
public static Criterion isNotNull(String propertyName)
From source file:com.lp.server.artikel.ejbfac.LagerReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printKundeumsatzstatistik(Timestamp tVon, Timestamp tBis, Integer iOptionKundengruppierung, boolean bUmsatz, Integer iOptionGruppierung, Integer iOptionSortierung, Integer iSortierbasisJahre, boolean bVerwendeStatistikadresse, boolean bMitNichtLagerbewertetenArtikeln, boolean ohneDBBetrachtung, TheClientDto theClientDto) throws EJBExceptionLP, RemoteException { List<String> gruppierung = new ArrayList<String>(); tVon = Helper.cutTimestamp(tVon);// w w w. java 2 s .co m tBis = Helper.cutTimestamp(tBis); String[] monate = new DateFormatSymbols(theClientDto.getLocUi()).getMonths(); try { if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) { ArtklaDto[] artklDtos = getArtikelFac().artklaFindByMandantCNr(theClientDto); for (int i = 0; i < artklDtos.length; i++) { gruppierung.add(artklDtos[i].getCNr()); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) { ArtgruDto[] artgruDtos = getArtikelFac().artgruFindByMandantCNr(theClientDto); for (int i = 0; i < artgruDtos.length; i++) { gruppierung.add(artgruDtos[i].getCNr()); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) { FertigungsgruppeDto[] ftgruDtos = getStuecklisteFac() .fertigungsgruppeFindByMandantCNr(theClientDto.getMandant(), theClientDto); for (int i = 0; i < ftgruDtos.length; i++) { gruppierung.add(ftgruDtos[i].getCBez()); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { Calendar c = Calendar.getInstance(); c.setTimeInMillis(tVon.getTime()); c.set(Calendar.DAY_OF_YEAR, 1); while (c.getTime().before(tBis)) { gruppierung.add(c.get(Calendar.YEAR) + ""); c.set(Calendar.YEAR, c.get(Calendar.YEAR) + 1); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { Calendar c = Calendar.getInstance(); c.setTimeInMillis(tVon.getTime()); c.set(Calendar.MONTH, 1); while (c.getTime().before(tBis)) { gruppierung.add(monate[c.get(Calendar.MONTH)] + " " + c.get(Calendar.YEAR)); c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1); } } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } BigDecimal gesamtUmsatz = new BigDecimal(0); BigDecimal gesamtDeckungsbeitrag = new BigDecimal(0); Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRKunde.class); crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); List<?> results = crit.list(); Iterator<?> resultListIterator = results.iterator(); ArrayList<Object> gesamtListe = new ArrayList<Object>(); // Leere Spalten entfernen boolean[] bSpalteAndrucken = new boolean[gruppierung.size()]; int iKunde = 0; while (resultListIterator.hasNext()) { FLRKunde kunde = (FLRKunde) resultListIterator.next(); iKunde++; System.out.println(iKunde + " von " + results.size()); KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kunde.getI_id(), theClientDto); KundeUmsatzstatistikDto kdums = new KundeUmsatzstatistikDto(gruppierung.size() + 1); kdums.setSKunde(kunde.getFlrpartner().getC_name1nachnamefirmazeile1()); kdums.setIZahlungsziel(kundeDto.getZahlungszielIId()); kdums.setILieferart(kundeDto.getLieferartIId()); kdums.setISpediteur(kundeDto.getSpediteurIId()); kdums.setIKundennummer(kundeDto.getIKundennummer()); if (kundeDto.getPartnerDto().getLandplzortDto() != null) { kdums.setSLkz(kundeDto.getPartnerDto().getLandplzortDto().getLandDto().getCLkz()); kdums.setSPlz(kundeDto.getPartnerDto().getLandplzortDto().getCPlz()); } kdums.setSKundengruppierung(""); // Branche/Partnerklasse hinzufuegen if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE && kunde.getFlrpartner().getBranche_i_id() != null) { kdums.setSKundengruppierung(getPartnerServicesFac() .brancheFindByPrimaryKey(kunde.getFlrpartner().getBranche_i_id(), theClientDto) .getBezeichnung()); } else if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE && kunde.getFlrpartner().getPartnerklasse_i_id() != null) { kdums.setSKundengruppierung(getPartnerFac() .partnerklasseFindByPrimaryKey(kunde.getFlrpartner().getPartnerklasse_i_id(), theClientDto) .getBezeichnung()); } Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit2 = session2.createCriteria(FLRRechnungPosition.class) .createAlias("flrrechnung", "r"); if (bVerwendeStatistikadresse) { crit2.createAlias("r.flrstatistikadresse", "k"); } else { crit2.createAlias("r.flrkunde", "k"); } crit2.add(Restrictions.eq("k.i_id", kunde.getI_id())).createAlias("k.flrpartner", "p") .createAlias("r." + RechnungFac.FLR_RECHNUNG_FLRRECHNUNGART, "ra"); // PJ 14808 crit2.add(Restrictions.or( Restrictions.isNotNull( RechnungFac.FLR_RECHNUNGPOSITION_N_NETTOEINZELPREIS_PLUS_AUFSCHLAG_MINUS_RABATT), Restrictions.eq(RechnungFac.FLR_RECHNUNGPOSITIONSART_POSITIONSART_C_NR, RechnungFac.POSITIONSART_RECHNUNG_LIEFERSCHEIN))); // projekt 3568 String[] arten = new String[2]; arten[0] = RechnungFac.RECHNUNGART_ANZAHLUNG; arten[1] = RechnungFac.RECHNUNGART_PROFORMARECHNUNG; crit2.add(Restrictions.not(Restrictions.in("ra.c_nr", arten))); String[] stati = new String[2]; stati[0] = RechnungFac.STATUS_ANGELEGT; stati[1] = RechnungFac.STATUS_STORNIERT; crit2.add(Restrictions.not(Restrictions.in("r." + RechnungFac.FLR_RECHNUNG_STATUS_C_NR, stati))); Calendar c = Calendar.getInstance(); c.setTime(tVon); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); crit2.add(Restrictions.ge("r." + RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, c.getTime())); c.setTime(tBis); c.set(Calendar.HOUR_OF_DAY, 23); c.set(Calendar.MINUTE, 59); c.set(Calendar.SECOND, 59); c.set(Calendar.MILLISECOND, 999); crit2.add(Restrictions.le("r." + RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, c.getTime())); // SP903 crit2.add(Restrictions.isNull("position_i_id_artikelset")); crit2.addOrder(Order.asc("p.c_name1nachnamefirmazeile1")); List<?> results2 = crit2.list(); Iterator<?> resultListIterator2 = results2.iterator(); int iPos = 0; while (resultListIterator2.hasNext()) { FLRRechnungPosition rechpos = (FLRRechnungPosition) resultListIterator2.next(); iPos++; // 16882 Ohne Lagerbewertete Artikel if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT) && rechpos.getFlrartikel() != null && !Helper.short2boolean(rechpos.getFlrartikel().getB_lagerbewertet())) { if (bMitNichtLagerbewertetenArtikeln == false) { continue; } } if (iPos % 100 == 0) { System.out.println(iPos + " von " + results2.size()); } // Erstumsatz? Session sessionEU = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria critEU = session2.createCriteria(FLRRechnung.class) .createAlias("flrkunde", "k").add(Restrictions.eq("k.i_id", kunde.getI_id())); critEU.add(Restrictions.lt(RechnungFac.FLR_RECHNUNG_D_BELEGDATUM, tVon)); String[] statiErstumsatz = new String[1]; statiErstumsatz[0] = RechnungFac.STATUS_STORNIERT; critEU.add( Restrictions.not(Restrictions.in(RechnungFac.FLR_RECHNUNG_STATUS_C_NR, statiErstumsatz))); critEU.setFetchSize(1); List<?> resultsEU = critEU.list(); if (resultsEU.size() < 1) { kdums.setBErstumsatz(true); } sessionEU.close(); // ENDE Erstumsatz boolean bGutschrift = false; BigDecimal umsatz = rechpos.getN_nettoeinzelpreis_plus_aufschlag_minus_rabatt(); // Gutschrift oder Wertgutschrift if (rechpos.getFlrrechnung().getFlrrechnungart().getC_nr() .equals(RechnungFac.RECHNUNGART_GUTSCHRIFT) || rechpos.getFlrrechnung().getFlrrechnungart().getC_nr() .equals(RechnungFac.RECHNUNGART_WERTGUTSCHRIFT)) { bGutschrift = true; umsatz = new BigDecimal(0).subtract(umsatz); } // Mit Welchselkurs zu Mandantenwaehrung dividieren if (rechpos.getFlrrechnung().getN_kurs() != null && rechpos.getFlrrechnung().getN_kurs().doubleValue() != 0 && !rechpos.getPositionsart_c_nr().equals(RechnungFac.POSITIONSART_RECHNUNG_LIEFERSCHEIN)) { umsatz = umsatz.divide(rechpos.getFlrrechnung().getN_kurs(), 4, BigDecimal.ROUND_HALF_EVEN); } // Bei Handeingabe ist Umsatz gleich Deckungsbeitrag und kommt // in die Kategorie Unbekannt if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE) && iOptionGruppierung .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR && iOptionGruppierung .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { umsatz = umsatz.multiply(rechpos.getN_menge()); kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz); kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0].add(umsatz); // GESAMTSUMME kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz)); kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(umsatz)); } else if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT) || (rechpos .getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE) && iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) || (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE) && iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT)) { if (rechpos.getPosition_i_id_artikelset() == null) { umsatz = umsatz.multiply(rechpos.getN_menge()); BigDecimal gestwert = new BigDecimal(0); BigDecimal deckungsbeitrag = new BigDecimal(0); if (ohneDBBetrachtung == false) { if (!rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)) { if (rechpos.getSetartikel_set().size() == 0) { gestwert = getGestpreisFuerUmsatzStatistik(rechpos, bGutschrift); } else { Iterator it = rechpos.getSetartikel_set().iterator(); while (it.hasNext()) { gestwert = gestwert.add(getGestpreisFuerUmsatzStatistik( (FLRRechnungPosition) it.next(), bGutschrift)); } } } // Mit Welchselkurs zu Mandantenwaehrung dividieren if (rechpos.getFlrrechnung().getN_kurs() != null && rechpos.getFlrrechnung().getN_kurs().doubleValue() != 0) { gestwert = gestwert.divide(rechpos.getFlrrechnung().getN_kurs(), 4, BigDecimal.ROUND_HALF_EVEN); } deckungsbeitrag = umsatz.subtract(gestwert); } // GESAMTSUMME if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)) { deckungsbeitrag = umsatz; } kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(deckungsbeitrag)); kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz)); // Aufteilen auf Gruppe if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) { if (rechpos.getFlrartikel().getFlrartikelklasse() != null) { // Bei richtiger Artikelklasse einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j) .equals(rechpos.getFlrartikel().getFlrartikelklasse().getC_nr())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatz); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz); kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0] .add(deckungsbeitrag); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) { if (rechpos.getFlrartikel().getFlrartikelgruppe() != null) { // Bei richtiger Gruppe einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j) .equals(rechpos.getFlrartikel().getFlrartikelgruppe().getC_nr())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatz); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz); kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0] .add(deckungsbeitrag); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) { Session sessionFTGruppe = FLRSessionFactory.getFactory().openSession(); String queryString = "SELECT stkl.flrfertigungsgruppe FROM FLRStueckliste AS stkl" + " WHERE stkl.artikel_i_id= " + rechpos.getFlrartikel().getI_id(); Query query = sessionFTGruppe.createQuery(queryString); List<?> resultList = query.list(); Iterator<?> resultListIteratorFTGruppe = resultList.iterator(); if (resultListIteratorFTGruppe.hasNext()) { FLRFertigungsgruppe gru = (FLRFertigungsgruppe) resultListIteratorFTGruppe.next(); if (gru != null) { // Bei richtiger Gruppe einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(gru.getC_bez())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatz); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz); kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0] .add(deckungsbeitrag); } sessionFTGruppe.close(); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime()); String jahr = cZeile.get(Calendar.YEAR) + ""; // Bei richtiger Gruppe einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(jahr)) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1].add(umsatz); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1].add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime()); String jahrMonat = monate[cZeile.get(Calendar.MONTH)] + " " + cZeile.get(Calendar.YEAR); // Bei richtiger Gruppe einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(jahrMonat)) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1].add(umsatz); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1].add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } } } // Wenn Rechnungsposition ein LS ist, dann dessen Positionen // verwenden else if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_LIEFERSCHEIN)) { Integer lieferscheinIId = rechpos.getFlrlieferschein().getI_id(); Session session3 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit3 = session3.createCriteria(FLRLieferscheinposition.class); crit3.createAlias("flrlieferschein", "l"); crit3.add(Restrictions.eq("l.i_id", lieferscheinIId)); // SP903 crit3.add(Restrictions.isNull("position_i_id_artikelset")); crit3.add(Restrictions .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_NETTOGESAMTPREIS)); crit3.add(Restrictions.not(Restrictions .eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE, new BigDecimal(0)))); List<?> results3 = crit3.list(); Iterator<?> resultListIterator3 = results3.iterator(); while (resultListIterator3.hasNext()) { FLRLieferscheinposition lieferscheinpos = (FLRLieferscheinposition) resultListIterator3 .next(); // 16882 Ohne Lagerbewertete Artikel if (lieferscheinpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT) && lieferscheinpos.getFlrartikel() != null && !Helper.short2boolean(lieferscheinpos.getFlrartikel().getB_lagerbewertet())) { if (bMitNichtLagerbewertetenArtikeln == false) { continue; } } // PJ 14525 BigDecimal umsatzLs = lieferscheinpos .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt() .divide(rechpos.getFlrrechnung().getN_kurs(), 4, BigDecimal.ROUND_HALF_EVEN); umsatzLs = umsatzLs.multiply(lieferscheinpos.getN_menge()); if (lieferscheinpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE) && iOptionGruppierung .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR && iOptionGruppierung .intValue() != LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0] .add(umsatzLs); // GESAMTSUMME kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatzLs)); kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(umsatzLs)); } else if (lieferscheinpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_IDENT) || (lieferscheinpos.getPositionsart_c_nr() .equals(LocaleFac.POSITIONSART_HANDEINGABE) && iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) || (lieferscheinpos.getPositionsart_c_nr() .equals(LocaleFac.POSITIONSART_HANDEINGABE) && iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT)) { BigDecimal gestpreis = new BigDecimal(0); BigDecimal deckungsbeitrag = new BigDecimal(0); if (ohneDBBetrachtung == false) { try { /** * @todo Berechnung fuer negative * Lieferscheinpositionen einbauen */ if (lieferscheinpos.getN_menge().doubleValue() < 0) { if (umsatz != null) { gestpreis = umsatz; } } else { if (!rechpos.getPositionsart_c_nr() .equals(LocaleFac.POSITIONSART_HANDEINGABE)) { // PJ 16882 if (lieferscheinpos.getFlrartikel() != null && Helper.short2boolean(lieferscheinpos.getFlrartikel() .getB_lagerbewirtschaftet()) == false && !lieferscheinpos.getFlrartikel().getArtikelart_c_nr() .equals(ArtikelFac.ARTIKELART_ARBEITSZEIT)) { gestpreis = new BigDecimal(0); } else { gestpreis = getLagerFac() .getGemittelterGestehungspreisEinerAbgangsposition( LocaleFac.BELEGART_LIEFERSCHEIN, lieferscheinpos.getI_id()); gestpreis = gestpreis.multiply(lieferscheinpos.getN_menge()); } } } } catch (RemoteException ex2) { if (ex2.getCause() instanceof EJBExceptionLP) { if (((EJBExceptionLP) ex2.getCause()) .getCode() == EJBExceptionLP.ARTIKEL_KEINE_LAGERBUCHUNG_VORHANDEN) { // DANN ALLES OK } else { throwEJBExceptionLPRespectOld(ex2); } } else { throwEJBExceptionLPRespectOld(ex2); } } deckungsbeitrag = umsatzLs.subtract(gestpreis); } // GESAMTSUMME if (rechpos.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_HANDEINGABE)) { deckungsbeitrag = umsatzLs; } kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatzLs)); kdums.setBdDeckungsbeitrag(kdums.getBdDeckungsbeitrag().add(deckungsbeitrag)); if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) { if (lieferscheinpos.getFlrartikel().getFlrartikelklasse() != null) { // Bei richtiger Artikelklasse einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals( lieferscheinpos.getFlrartikel().getFlrartikelklasse().getC_nr())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0] .add(deckungsbeitrag); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) { if (lieferscheinpos.getFlrartikel().getFlrartikelgruppe() != null) { // Bei richtiger Gruppe einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals( lieferscheinpos.getFlrartikel().getFlrartikelgruppe().getC_nr())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[0] = kdums.getSubSummeDeckungsbeitrag()[0] .add(deckungsbeitrag); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) { Session sessionFTGruppe = FLRSessionFactory.getFactory().openSession(); String queryString = "SELECT stkl.flrfertigungsgruppe FROM FLRStueckliste AS stkl" + " WHERE stkl.artikel_i_id= " + lieferscheinpos.getFlrartikel().getI_id(); Query query = sessionFTGruppe.createQuery(queryString); List<?> resultList = query.list(); Iterator<?> resultListIteratorFTGruppe = resultList.iterator(); if (resultListIteratorFTGruppe.hasNext()) { FLRFertigungsgruppe gru = (FLRFertigungsgruppe) resultListIteratorFTGruppe .next(); if (gru != null) { // Bei richtiger Gruppe einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(gru.getC_bez())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[0] = kdums .getSubSummeDeckungsbeitrag()[0].add(deckungsbeitrag); } sessionFTGruppe.close(); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime()); String jahr = cZeile.get(Calendar.YEAR) + ""; for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(jahr)) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(rechpos.getFlrrechnung().getD_belegdatum().getTime()); String jahrMonat = monate[cZeile.get(Calendar.MONTH)] + " " + cZeile.get(Calendar.YEAR); for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(jahrMonat)) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatzLs); kdums.getSubSummeDeckungsbeitrag()[j + 1] = kdums.getSubSummeDeckungsbeitrag()[j + 1] .add(deckungsbeitrag); bSpalteAndrucken[j] = true; } } } } } session3.close(); } } session2.close(); if (results2.size() > 0) { gesamtListe.add(kdums); gesamtUmsatz = gesamtUmsatz.add(kdums.getBdUmsatz()); gesamtDeckungsbeitrag = gesamtDeckungsbeitrag.add(kdums.getBdDeckungsbeitrag()); } } session.close(); JasperPrintLP print = null; // NACH UMSATZ SORTIEREN int n = gesamtListe.size(); Object temp; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (bUmsatz == true) { double a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getBdUmsatz().doubleValue(); double b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getBdUmsatz().doubleValue(); if (iOptionGruppierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR && iOptionSortierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) { if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_AKTUELLESJAHR) { a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeUmsatz().length - 1].doubleValue(); b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)) .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeUmsatz().length - 1].doubleValue(); } else if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_VORJAHR && ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSubSummeUmsatz().length > 1) { a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeUmsatz().length - 2].doubleValue(); b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)) .getSubSummeUmsatz()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeUmsatz().length - 2].doubleValue(); } } if (a < b) { temp = gesamtListe.get(j); gesamtListe.set(j, gesamtListe.get(j + 1)); gesamtListe.set(j + 1, temp); } } else { double a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getBdDeckungsbeitrag().doubleValue(); double b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getBdDeckungsbeitrag() .doubleValue(); if (iOptionGruppierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR && iOptionSortierung == REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) { if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_AKTUELLESJAHR) { a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeDeckungsbeitrag().length - 1].doubleValue(); b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)) .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeDeckungsbeitrag().length - 1].doubleValue(); } else if (iSortierbasisJahre == REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHRE_SORTIERBASIS_UMSATZ_VORJAHR && ((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeDeckungsbeitrag().length > 1) { a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeDeckungsbeitrag().length - 2].doubleValue(); b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)) .getSubSummeDeckungsbeitrag()[((KundeUmsatzstatistikDto) gesamtListe.get(j)) .getSubSummeDeckungsbeitrag().length - 2].doubleValue(); } } if (a < b) { temp = gesamtListe.get(j); gesamtListe.set(j, gesamtListe.get(j + 1)); gesamtListe.set(j + 1, temp); } } } } // ABC-Klassifizierung // A=80% // B=15% // C=5% double dTempUmsatz = gesamtUmsatz.doubleValue(); double dTempDeckungsbeitrag = gesamtDeckungsbeitrag.doubleValue(); ParametermandantDto mandantparameterA = null; ParametermandantDto mandantparameterB = null; try { mandantparameterA = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_KUNDENBEWERTUNG_WERT_A); mandantparameterB = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_KUNDEN, ParameterFac.PARAMETER_KUNDENBEWERTUNG_WERT_B); } catch (RemoteException ex3) { throwEJBExceptionLPRespectOld(ex3); } BigDecimal paramBUmsatz = gesamtUmsatz.multiply((new BigDecimal(mandantparameterB.getCWert()) .divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN))); BigDecimal paramAUmsatz = gesamtUmsatz.multiply((new BigDecimal(mandantparameterA.getCWert()) .divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN))); BigDecimal paramBDeckungsbeitrag = gesamtDeckungsbeitrag .multiply((new BigDecimal(mandantparameterB.getCWert()).divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN))); BigDecimal paramADeckungsbeitrag = gesamtDeckungsbeitrag .multiply((new BigDecimal(mandantparameterA.getCWert()).divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_EVEN))); for (int i = 0; i < gesamtListe.size(); i++) { KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(i); if (bUmsatz == true) { if (dTempUmsatz < gesamtUmsatz.doubleValue() - (paramAUmsatz.doubleValue() + paramBUmsatz.doubleValue())) { dto.setAbcKlassifizierung("C"); } else if (dTempUmsatz < paramBUmsatz.doubleValue()) { dto.setAbcKlassifizierung("B"); } else { dto.setAbcKlassifizierung("A"); } dTempUmsatz = dTempUmsatz - dto.getBdUmsatz().doubleValue(); } else { if (dTempDeckungsbeitrag < gesamtDeckungsbeitrag.doubleValue() - (paramADeckungsbeitrag.doubleValue() + paramBDeckungsbeitrag.doubleValue())) { dto.setAbcKlassifizierung("C"); } else if (dTempDeckungsbeitrag < paramBDeckungsbeitrag.doubleValue()) { dto.setAbcKlassifizierung("B"); } else { dto.setAbcKlassifizierung("A"); } dTempDeckungsbeitrag = dTempDeckungsbeitrag - dto.getBdDeckungsbeitrag().doubleValue(); } gesamtListe.set(i, dto); } // Nach Name sortieren // NACH NAME SORTIEREN, Wenn angegeben if (iOptionSortierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_FIRMANNAME) { n = gesamtListe.size(); for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSKunde(); String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSKunde(); if (a.compareTo(b) > 0) { temp = gesamtListe.get(j); gesamtListe.set(j, gesamtListe.get(j + 1)); gesamtListe.set(j + 1, temp); } } } } else if (iOptionSortierung.intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_LKZ) { n = gesamtListe.size(); for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSLkz(); String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSLkz(); if (a.compareTo(b) > 0) { temp = gesamtListe.get(j); gesamtListe.set(j, gesamtListe.get(j + 1)); gesamtListe.set(j + 1, temp); } else if (a.compareTo(b) == 0) { String plz1 = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSPlz(); String plz2 = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSPlz(); if (plz1.compareTo(plz2) > 0) { temp = gesamtListe.get(j); gesamtListe.set(j, gesamtListe.get(j + 1)); gesamtListe.set(j + 1, temp); } } } } } // Nach Branche/Partnerklasse Gruppieren if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE || iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE) { n = gesamtListe.size(); for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { String a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getSKundengruppierung(); String b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getSKundengruppierung(); if (a.compareTo(b) > 0) { temp = gesamtListe.get(j); gesamtListe.set(j, gesamtListe.get(j + 1)); gesamtListe.set(j + 1, temp); } } } } // SPALTENHEADER entfernen, wenn Spalte leer for (int i = bSpalteAndrucken.length; i > 0; i--) { if (bSpalteAndrucken[i - 1] == false) { gruppierung.remove(i - 1); } } int[] spaltenDrucken = new int[gruppierung.size() + 1]; spaltenDrucken[0] = 0; int x = 1; for (int i = 1; i < bSpalteAndrucken.length + 1; i++) { if (bSpalteAndrucken[i - 1] == true) { spaltenDrucken[x] = i; x++; } } int seiten_breite = (gruppierung.size() / 8) + 1; for (int i = 0; i < seiten_breite; i++) { index = -1; if (bUmsatz == true) { sAktuellerReport = LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK; } else { sAktuellerReport = LagerReportFac.REPORT_KUNDEDBSTATISTIK; } data = new Object[gesamtListe.size()][28]; for (int j = 0; j < gesamtListe.size(); j++) { KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(j); data[j][REPORT_KUNDEUMSATZSTATISTIK_KUNDENGRUPPIERUNG] = dto.getSKundengruppierung(); data[j][REPORT_KUNDEUMSATZSTATISTIK_KUNDE] = dto.getSKunde(); data[j][REPORT_KUNDEUMSATZSTATISTIK_UMSATZ] = dto.getBdUmsatz(); data[j][REPORT_KUNDEUMSATZSTATISTIK_PLZ] = dto.getSPlz(); data[j][REPORT_KUNDEUMSATZSTATISTIK_LKZ] = dto.getSLkz(); data[j][REPORT_KUNDEUMSATZSTATISTIK_KUNDENNUMMER] = dto.getIKundennummer(); data[j][REPORT_KUNDEUMSATZSTATISTIK_DECKUNGSBEITRAG] = dto.getBdDeckungsbeitrag(); data[j][REPORT_KUNDEUMSATZSTATISTIK_ERSTUMSATZ] = new Boolean(dto.isBErstumsatz()); data[j][REPORT_KUNDEUMSATZSTATISTIK_ABCKLASSE] = dto.getAbcKlassifizierung(); data[j][REPORT_KUNDEUMSATZSTATISTIK_ZAHLUNGSZIEL] = getMandantFac() .zahlungszielFindByIIdLocaleOhneExc(dto.getIZahlungsziel(), theClientDto.getLocMandant(), theClientDto); data[j][REPORT_KUNDEUMSATZSTATISTIK_LIEFERART] = getLocaleFac().lieferartFindByIIdLocaleOhneExc( dto.getILieferart(), theClientDto.getLocMandant(), theClientDto); data[j][REPORT_KUNDEUMSATZSTATISTIK_SPEDITEUR] = getMandantFac() .spediteurFindByPrimaryKey(dto.getISpediteur()).getCNamedesspediteurs(); try { if (i == 0) { data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1] = dto.getSubSummeUmsatz()[0]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1DB] = dto.getSubSummeDeckungsbeitrag()[0]; } else { data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1] = dto .getSubSummeUmsatz()[spaltenDrucken[0 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE1DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[0 + (i * 8)]]; } data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE2] = dto .getSubSummeUmsatz()[spaltenDrucken[1 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE2DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[1 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE3] = dto .getSubSummeUmsatz()[spaltenDrucken[2 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE3DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[2 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE4] = dto .getSubSummeUmsatz()[spaltenDrucken[3 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE4DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[3 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE5] = dto .getSubSummeUmsatz()[spaltenDrucken[4 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE5DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[4 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE6] = dto .getSubSummeUmsatz()[spaltenDrucken[5 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE6DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[5 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE7] = dto .getSubSummeUmsatz()[spaltenDrucken[6 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE7DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[6 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE8] = dto .getSubSummeUmsatz()[spaltenDrucken[7 + (i * 8)]]; data[j][REPORT_KUNDEUMSATZSTATISTIK_SPALTE8DB] = dto .getSubSummeDeckungsbeitrag()[spaltenDrucken[7 + (i * 8)]]; } catch (ArrayIndexOutOfBoundsException ex1) { // nothing } } HashMap<String, Object> parameter = new HashMap<String, Object>(); parameter.put("P_VON", tVon); parameter.put("P_BIS", tBis); if (bUmsatz == true) { parameter.put("P_UMSATZ", new Boolean(true)); } else { parameter.put("P_UMSATZ", new Boolean(false)); } if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE) { parameter.put("P_GRUPPIERUNGKUNDE", getTextRespectUISpr("lp.branche", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE) { parameter.put("P_GRUPPIERUNGKUNDE", "Partnerklasse"); } if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelklasse", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelgruppe", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_FERTIGUNGSGRUPPE) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.fertigungsgruppe", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.jahr", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.monat", theClientDto.getMandant(), theClientDto.getLocUi())); } if (iOptionSortierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_FIRMANNAME) { parameter.put("P_SORTIERUNG", "Firmenname"); } else if (iOptionSortierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) { parameter.put("P_SORTIERUNG", getTextRespectUISpr("er.umsatz", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionSortierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_SORTIERUNG_LKZ) { parameter.put("P_SORTIERUNG", getTextRespectUISpr("lp.lkzplz", theClientDto.getMandant(), theClientDto.getLocUi())); } parameter.put("P_STATISTIKADRESSE", new Boolean(bVerwendeStatistikadresse)); parameter.put("P_MITNICHTLAGERBEWERTETENARTIKELN", new Boolean(bMitNichtLagerbewertetenArtikeln)); parameter.put("P_OHNE_DBBETRACHTUNG", new Boolean(ohneDBBetrachtung)); try { parameter.put("P_GRUPPEA", mandantparameterA.getCWertAsObject()); parameter.put("P_GRUPPEB", mandantparameterB.getCWertAsObject()); if (i == 0) { parameter.put("Spalte1", "Unbekannt"); parameter.put("Spalte2", gruppierung.get(0 + (i * 8))); parameter.put("Spalte3", gruppierung.get(1 + (i * 8))); parameter.put("Spalte4", gruppierung.get(2 + (i * 8))); parameter.put("Spalte5", gruppierung.get(3 + (i * 8))); parameter.put("Spalte6", gruppierung.get(4 + (i * 8))); parameter.put("Spalte7", gruppierung.get(5 + (i * 8))); parameter.put("Spalte8", gruppierung.get(6 + (i * 8))); } else { parameter.put("Spalte1", gruppierung.get(7 + (i * 8) - 8)); parameter.put("Spalte2", gruppierung.get(8 + (i * 8) - 8)); parameter.put("Spalte3", gruppierung.get(1 + (i * 8))); parameter.put("Spalte4", gruppierung.get(2 + (i * 8))); parameter.put("Spalte5", gruppierung.get(3 + (i * 8))); parameter.put("Spalte6", gruppierung.get(4 + (i * 8))); parameter.put("Spalte7", gruppierung.get(5 + (i * 8))); parameter.put("Spalte8", gruppierung.get(6 + (i * 80))); } } catch (IndexOutOfBoundsException ex1) { // nothing } initJRDS(parameter, LagerReportFac.REPORT_MODUL, sAktuellerReport, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); if (print == null) { print = getReportPrint(); } else { print = Helper.addReport2Report(print, getReportPrint().getPrint()); } } return print; }
From source file:com.lp.server.artikel.ejbfac.ReservierungFacBean.java
License:Open Source License
/** * Reservierungen pruefen. 1. Bestehende Reservierungseintraege aus * Auftrag/Los 2. Lose pruefen, ob die Reservierungen richtig eingetragen * sind. 3. Auftraege pruefen, ob die Reservierungen richtig eingetragen * sind./*w w w . j av a 2s. c o m*/ * * @param theClientDto * String * @throws EJBExceptionLP */ public void pruefeReservierungen(TheClientDto theClientDto) throws EJBExceptionLP { Session session = FLRSessionFactory.getFactory().openSession(); String hqlDelete = "delete FROM FLRArtikelreservierung"; session.createQuery(hqlDelete).executeUpdate(); session.close(); // Lose session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria lossollmaterial = session.createCriteria(FLRLossollmaterial.class); lossollmaterial.createCriteria(FertigungFac.FLR_LOSSOLLMATERIAL_FLRLOS) .add(Restrictions.eq(FertigungFac.FLR_LOS_STATUS_C_NR, FertigungFac.STATUS_ANGELEGT)); // Query ausfuehren List<?> lossollList = lossollmaterial.list(); Iterator<?> lossollListIterator = lossollList.iterator(); while (lossollListIterator.hasNext()) { FLRLossollmaterial lossollmat = (FLRLossollmaterial) lossollListIterator.next(); // Fuer angelegte Lose MUSS es einen Reservierungseintrag geben. // nur fuer Artikel if (lossollmat.getFlrartikel() != null) { ArtikelreservierungDto resDto = new ArtikelreservierungDto(); resDto.setArtikelIId(lossollmat.getFlrartikel().getI_id()); resDto.setCBelegartnr(LocaleFac.BELEGART_LOS); resDto.setIBelegartpositionid(lossollmat.getI_id()); resDto.setNMenge(lossollmat.getN_menge()); // PJ17994 resDto.setTLiefertermin(Helper.addiereTageZuTimestamp( new java.sql.Timestamp(lossollmat.getFlrlos().getT_produktionsbeginn().getTime()), lossollmat.getI_beginnterminoffset())); // anlegen createArtikelreservierung(resDto); myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto); } } session.close(); // Auftraege session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria abPosCrit = session.createCriteria(FLRAuftragposition.class); // nur Artikel-Positionen abPosCrit.add(Restrictions.isNotNull(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRARTIKEL)); org.hibernate.Criteria abCrit = abPosCrit.createCriteria(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRAUFTRAG); // Rahmenauftraege werden ignoriert, da diese keine Reservierungen // ausloesen. abCrit.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGART_C_NR, AuftragServiceFac.AUFTRAGART_RAHMEN)); // Nur Sataus Offen und Teilerledigt String[] stati = new String[3]; stati[0] = AuftragServiceFac.AUFTRAGSTATUS_OFFEN; stati[1] = AuftragServiceFac.AUFTRAGSTATUS_TEILERLEDIGT; stati[2] = AuftragServiceFac.AUFTRAGSTATUS_ANGELEGT; abCrit.add(Restrictions.in(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR, stati)); // Query ausfuehren List<?> abposList = abPosCrit.list(); Iterator<?> abPosListIterator = abposList.iterator(); while (abPosListIterator.hasNext()) { FLRAuftragposition abPos = (FLRAuftragposition) abPosListIterator.next(); // Fuer offene Auftraege MUSS es einen Reservierungseintrag geben. // (ausser positionsstatus = erledigt) // nur fuer noch nicht erledigte Auftragspositionen mit offener // Menge != 0 if (abPos.getN_offenemenge().compareTo(new BigDecimal(0)) != 0 && !abPos.getAuftragpositionstatus_c_nr() .equals(AuftragServiceFac.AUFTRAGPOSITIONSTATUS_ERLEDIGT)) { ArtikelreservierungDto resDto = new ArtikelreservierungDto(); resDto.setArtikelIId(abPos.getFlrartikel().getI_id()); resDto.setCBelegartnr(LocaleFac.BELEGART_AUFTRAG); resDto.setIBelegartpositionid(abPos.getI_id()); resDto.setNMenge(abPos.getN_offenemenge()); java.sql.Timestamp tLiefertermin; if (abPos.getN_offenemenge().compareTo(new BigDecimal(0)) < 0) { // Negative Menge -> Finaltermin tLiefertermin = new java.sql.Timestamp(abPos.getFlrauftrag().getT_finaltermin().getTime()); } else { // Positive Menge -> Liefertermin AuftragpositionDto abPosDto = null; try { abPosDto = getAuftragpositionFac().auftragpositionFindByPrimaryKey(abPos.getI_id()); } catch (RemoteException ex2) { throwEJBExceptionLPRespectOld(ex2); } tLiefertermin = abPosDto.getTUebersteuerbarerLiefertermin(); } resDto.setTLiefertermin(tLiefertermin); // anlegen createArtikelreservierung(resDto); myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto); } } session.close(); // Auftraege session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria speiseplan = session.createCriteria(FLRSpeiseplanposition.class); speiseplan.createCriteria("flrspeiseplan") .add(Restrictions.ge("t_datum", Helper.cutTimestamp(new Timestamp(System.currentTimeMillis())))); // Query ausfuehren List<?> speiseplanList = speiseplan.list(); Iterator<?> speiseplanListIterator = speiseplanList.iterator(); while (speiseplanListIterator.hasNext()) { FLRSpeiseplanposition flrSpeiseplanposition = (FLRSpeiseplanposition) speiseplanListIterator.next(); if (flrSpeiseplanposition.getN_menge().doubleValue() > 0) { ArtikelreservierungDto resDto = new ArtikelreservierungDto(); resDto.setArtikelIId(flrSpeiseplanposition.getArtikel_i_id()); resDto.setCBelegartnr(LocaleFac.BELEGART_KUECHE); resDto.setIBelegartpositionid(flrSpeiseplanposition.getI_id()); resDto.setNMenge(flrSpeiseplanposition.getN_menge()); resDto.setTLiefertermin( new Timestamp(flrSpeiseplanposition.getFlrspeiseplan().getT_datum().getTime())); createArtikelreservierung(resDto); myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto); } } session.close(); myLogger.exit("Reservierungspr\u00FCfung abgeschlossen"); }
From source file:com.lp.server.auftrag.ejbfac.AuftragFacBean.java
License:Open Source License
/** * Hier wird der Auftragsnettowert fuer eine Hibernate Liste von offenen * Auftraegen bestimmt (Status Offen oder Teilerledigt). <br> * Dabei werden alle Auftragswerte in Mandantenwaehrung beruecksichtigt. * //from w ww .j ava2 s .c o m * @param listFLRAuftragFuerUebersichtI * Liste von FLRAuftragFuerUebersicht Objekten * @param sessionI * die aktive Hibernate Session * @param theClientDto * der aktuelle Benutzer * @return BigDecimal der offene Auftragsnettowert * @throws Throwable * Ausnahme */ private BigDecimal berechneAuftragsnettowertOffen(List<?> listFLRAuftragFuerUebersichtI, Session sessionI, TheClientDto theClientDto) throws Throwable { BigDecimal nSummeAuftragsnettowert = new BigDecimal(0); if (listFLRAuftragFuerUebersichtI != null) { Iterator<?> it = listFLRAuftragFuerUebersichtI.iterator(); while (it.hasNext()) { BigDecimal nBeitragDiesesAuftrags = new BigDecimal(0); FLRAuftragFuerUebersicht flrauftrag = (FLRAuftragFuerUebersicht) it.next(); // wir befinden uns innerhalb einer Hibernate Session Criteria critAuftragposition = sessionI.createCriteria(FLRAuftragpositionFuerUebersicht.class); critAuftragposition.add( Restrictions.eq(AuftragpositionFac.FLR_AUFTRAGPOSITION_AUFTRAG_I_ID, flrauftrag.getI_id())); critAuftragposition .add(Restrictions.isNotNull(AuftragpositionFac.FLR_AUFTRAGPOSITION_N_OFFENEMENGE)); critAuftragposition.add( Restrictions.gt(AuftragpositionFac.FLR_AUFTRAGPOSITION_N_OFFENEMENGE, new BigDecimal(0))); List<?> listPositionen = critAuftragposition.list(); Iterator<?> it2 = listPositionen.iterator(); while (it2.hasNext()) { FLRAuftragpositionFuerUebersicht flrauftragposition = (FLRAuftragpositionFuerUebersicht) it2 .next(); BigDecimal bdBeitragDieserPosition = flrauftragposition .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte() .multiply(flrauftragposition.getN_offenemenge()); nBeitragDiesesAuftrags = nBeitragDiesesAuftrags.add(bdBeitragDieserPosition); } // Umrechnen des Beitrags in Mandantenwaehrung Double ddWechselkursReziprok = flrauftrag.getF_wechselkursmandantwaehrungzuauftragswaehrung(); if (ddWechselkursReziprok != null && ddWechselkursReziprok.doubleValue() != 1) { ddWechselkursReziprok = new Double(1 / ddWechselkursReziprok.doubleValue()); nBeitragDiesesAuftrags = nBeitragDiesesAuftrags .multiply(new BigDecimal(ddWechselkursReziprok.doubleValue())); } nBeitragDiesesAuftrags = Helper.rundeKaufmaennisch(nBeitragDiesesAuftrags, 4); checkNumberFormat(nBeitragDiesesAuftrags); nSummeAuftragsnettowert = nSummeAuftragsnettowert.add(nBeitragDiesesAuftrags); } } return nSummeAuftragsnettowert; }
From source file:com.lp.server.auftrag.ejbfac.AuftragpositionFacBean.java
License:Open Source License
public void pruefeAuftragseriennumern(TheClientDto theClientDto) { Session session = FLRSessionFactory.getFactory().openSession(); String[] srnnrn = null;/* w w w .j a v a 2 s . co m*/ AuftragseriennrnDto auftragseriennrnDto = null; try { org.hibernate.Criteria crit = session.createCriteria(FLRAuftragpositionReport.class); org.hibernate.Criteria critAuftrag = crit .createCriteria(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRAUFTRAG); critAuftrag.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR, AuftragServiceFac.AUFTRAGSTATUS_STORNIERT)); crit.add(Restrictions.isNotNull("c_seriennrchargennr")); List<?> aposList = crit.list(); Iterator<?> aposIterator = aposList.iterator(); while (aposIterator.hasNext()) { FLRAuftragpositionReport item = (FLRAuftragpositionReport) aposIterator.next(); srnnrn = Helper.erzeugeStringArrayAusString(item.getC_seriennrchargennr()); for (int i = 0; i < srnnrn.length; i++) { auftragseriennrnDto = new AuftragseriennrnDto(); auftragseriennrnDto.setAuftragpositionIId(item.getI_id()); auftragseriennrnDto.setArtikelIId(item.getArtikel_i_id()); auftragseriennrnDto.setCSeriennr(srnnrn[i]); try { createAuftragseriennrn(auftragseriennrnDto, theClientDto); if (i == srnnrn.length - 1) { Auftragposition oPos = null; oPos = em.find(Auftragposition.class, item.getI_id()); if (oPos == null) { } oPos.setCSeriennrchargennr(null); } } catch (EJBExceptionLP ex) { System.out.println( "auftragposition " + item.getI_id() + " auftrag " + item.getFlrauftrag().getC_nr()); } } } } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.bestellung.ejbfac.BestellungReportFacBean.java
License:Open Source License
/** * Alle offenen Bestellungen fuer einen bestimmten Mandanten drucken. * /* www. j a v a 2s. c o m*/ * @param krit * die Filter- und Sortierkriterien * @param dStichtag * Date * @param bSortierungNachLiefertermin * Boolean * @param artikelklasseIId * Integer * @param artikelgruppeIId * Integer * @param artikelCNrVon * String * @param artikelCNrBis * String * @param projektCBezeichnung * String * @param auftragIId * Integer * @param theClientDto * der aktuelle Benutzer * @throws EJBExceptionLP * Ausnahme * @return JasperPrint der Druck */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printBestellungOffene(ReportJournalKriterienDto krit, Date dStichtag, Boolean bSortierungNachLiefertermin, Integer artikelklasseIId, Integer artikelgruppeIId, String artikelCNrVon, String artikelCNrBis, String projektCBezeichnung, Integer auftragIId, Integer iArt, boolean bNurAngelegte, boolean bNurOffeneMengenAnfuehren, Integer[] projekte, TheClientDto theClientDto) throws EJBExceptionLP { useCase = UC_OFFENE; int iAnzahlZeilen = 0; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; // vom Stichtag die Uhrzeit abschneiden dStichtag = Helper.cutDate(dStichtag); // die dem Report uebergeben HashMap<String, Object> parameter = new HashMap<String, Object>(); parameter.put("P_STICHTAG", Helper.formatDatum(dStichtag, theClientDto.getLocUi())); dStichtag = Helper.addiereTageZuDatum(dStichtag, 1); session = factory.openSession(); boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF, theClientDto); boolean bProjektklammer = getMandantFac().darfAnwenderAufZusatzfunktionZugreifen( MandantFac.ZUSATZFUNKTION_PROJEKTKLAMMER, theClientDto.getMandant()); // Hiberante Criteria fuer alle Tabellen ausgehend von meiner // Haupttabelle anlegen, // nach denen ich filtern und sortieren kann Criteria crit = session.createCriteria(FLRBestellung.class); // Einschraenkung auf den aktuellen Mandanten crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // Einschraenkung nach Status Offen, Erledigt Collection<String> cStati = new LinkedList<String>(); cStati.add(BestellungFac.BESTELLSTATUS_ANGELEGT); if (bNurAngelegte == false) { cStati.add(BestellungFac.BESTELLSTATUS_OFFEN); cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT); cStati.add(BestellungFac.BESTELLSTATUS_ERLEDIGT); } crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)); // Das Belegdatum muss vor dem Stichtag liegen crit.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, dStichtag)); /** * @todo MB->MB hier sollte auch das erledigt-datum ziehen, das gibts * aber in der BS nicht :-( */ crit.add(Restrictions.or(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_MANUELLGELIEFERT, dStichtag), Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MANUELLGELIEFERT))); // Das Belegdatum muss vor dem Stichtag liegen crit.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, dStichtag)); // Filter nach Projektbezeichnung if (projektCBezeichnung != null) { crit.add(Restrictions.ilike(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG, "%" + projektCBezeichnung + "%")); } // Projektklammer if (projekte != null && projekte.length > 0) { crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_PROJEKT_I_ID, projekte)); String text = ""; for (int i = 0; i < projekte.length; i++) { try { ProjektDto pDto = getProjektFac().projektFindByPrimaryKey(projekte[i]); text += pDto.getCNr() + ", "; } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } parameter.put("P_PROJEKTE", text); } // Filter nach Auftrag if (auftragIId != null) { crit.add(Restrictions.like(BestellungFac.FLR_BESTELLUNG_AUFTRAG_I_ID, auftragIId)); } // Einschraenkung nach einer bestimmten Kostenstelle if (krit.kostenstelleIId != null) { crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId)); } // Einschraenkung nach einem bestimmten Lieferanten if (krit.lieferantIId != null) { crit.add( Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, krit.lieferantIId)); } // Filter nach Bestellungsart Collection<String> cArt = null; if (iArt != null) { if (iArt == 1) { // Ohne Rahmenbestellungen cArt = new LinkedList<String>(); cArt.add(BestellungFac.BESTELLUNGART_FREIE_BESTELLUNG_C_NR); cArt.add(BestellungFac.BESTELLUNGART_ABRUFBESTELLUNG_C_NR); cArt.add(BestellungFac.BESTELLUNGART_LEIHBESTELLUNG_C_NR); crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, cArt)); } else if (iArt == 2) { // Nur Rahmenbestellungen cArt = new LinkedList<String>(); cArt.add(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR); crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, cArt)); } } // Sortierung nach Kostenstelle ist immer die erste Sortierung if (krit.bSortiereNachKostenstelle) { crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT).createCriteria(LieferantFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); } // Sortierung nach Projekt, eventuell innerhalb der Kostenstelle else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PROJEKT) { if (bProjektklammer == true) { crit.createAlias(BestellungFac.FLR_BESTELLUNG_FLRPROJEKT, "p"); crit.addOrder(Order.asc("p.c_nr")); } else { crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG)); } } // Sortierung nach Bestellungart, eventuell innerhalb der // Kostenstelle // else if (krit.iSortierung == // ReportJournalKriterienDto.KRIT_SORT_NACH_ART) { // crit.addOrder(Order // .asc(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR)); // } // Sortierung nach Liefertermin (optional) if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) { crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN)); } // es wird in jedem Fall nach der Belegnummer sortiert crit.addOrder(Order.asc("c_nr")); List<?> list = crit.list(); Iterator<?> it = list.iterator(); ArrayList<FLRBestellung> bestellung = new ArrayList<FLRBestellung>(); while (it.hasNext()) { FLRBestellung flrbestellung = (FLRBestellung) it.next(); session = factory.openSession(); Criteria crit1 = session.createCriteria(FLRBestellposition.class); Criteria crit1Bestellung = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); // nur Positionen der aktuellen Bestellung. crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id())); // keine erledigten Positionen. crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)); // keine geliferten Positionen. crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_GELIEFERT)); // Der Liefertermin muss vor dem Stichtag liegen crit1.add(Restrictions.or(Restrictions.and( // Wenn der AB-Termin // eingegeben ist, zieht // der Restrictions.isNotNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions .le(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN, dStichtag)), Restrictions.and( // sonst der // uebersteuerte // Liefertermin Restrictions .isNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions.le(BestellpositionFac.FLR_BESTELLPOSITION_T_UEBERSTEUERTERLIEFERTERMIN, dStichtag)))); if (artikelklasseIId != null || artikelgruppeIId != null || artikelCNrVon != null || artikelCNrBis != null) { // Wenn nach Artikelklassen/Gruppen gefiltert wird, dann // kommen nur Ident-Positionen crit1.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, BestellpositionFac.BESTELLPOSITIONART_IDENT)); Criteria critArtikel = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL); if (artikelklasseIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE) .add(Restrictions.eq("i_id", artikelklasseIId)); } if (artikelgruppeIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE) .add(Restrictions.eq("i_id", artikelgruppeIId)); } if (artikelCNrVon != null) { critArtikel.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon)); } if (artikelCNrBis != null) { critArtikel.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis)); } } List<?> resultList = crit1.list(); // Wenn die Bestellung anzuzeigende Positionen enthaelt, dann in // die Liste aufnehmen. if (resultList.size() > 0) { bestellung.add(flrbestellung); iAnzahlZeilen++; } for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) { FLRBestellposition item = (FLRBestellposition) iter.next(); if (item.getN_menge() != null) { bestellung.add(null); iAnzahlZeilen++; } } } data = new Object[iAnzahlZeilen][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ANZAHL_SPALTEN]; int i = 0; while (i < iAnzahlZeilen) { FLRBestellung flrbestellung = null; if (bestellung.get(i) != null) { flrbestellung = (FLRBestellung) bestellung.get(i); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGCNR] = flrbestellung.getC_nr(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGARTCNR] = flrbestellung .getBestellungart_c_nr(); if (bProjektklammer && flrbestellung.getProjekt_i_id() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung.getFlrprojekt() .getC_nr(); } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung .getC_bezprojektbezeichnung(); } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERANT] = flrbestellung .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); // PJ 14752 String sortierstring = ""; if (krit.bSortiereNachKostenstelle == true) { sortierstring = Helper.fitString2Length(flrbestellung.getFlrkostenstelle().getC_nr(), 80, ' '); } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { sortierstring += Helper.fitString2Length( flrbestellung.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(), 80, ' ') + Helper.fitString2Length("", 80, ' '); } if (bSortierungNachLiefertermin == true) { sortierstring += Helper.fitString2Length(flrbestellung.getT_liefertermin() + "", 15, ' '); } data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring; data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGDATUM] = Helper .formatDatum(flrbestellung.getT_belegdatum(), theClientDto.getLocUi()); if (flrbestellung.getFlrkostenstelle() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_KOSTENSTELLECNR] = flrbestellung .getFlrkostenstelle().getC_nr(); } i++; } session = factory.openSession(); Criteria crit1 = session.createCriteria(FLRBestellpositionReport.class); // Keine erledigten Positionen. crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)); crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_GELIEFERT)); // Der Liefertermin muss vor dem Stichtag liegen crit1.add(Restrictions.or(Restrictions.and( // Wenn der AB-Termin // eingegeben ist, zieht // der Restrictions.isNotNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions .le(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN, dStichtag)), Restrictions.and( // sonst der // uebersteuerte // Liefertermin Restrictions .isNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions.le(BestellpositionFac.FLR_BESTELLPOSITION_T_UEBERSTEUERTERLIEFERTERMIN, dStichtag)))); // Nur Positionen der aktuellen Bestellung. Criteria crit1Bestellung = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id())); if (artikelklasseIId != null || artikelgruppeIId != null || artikelCNrVon != null || artikelCNrBis != null) { // Wenn nach Artikelklassen/Gruppen gefiltert wird, dann // kommen nur Ident-Positionen crit1.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, BestellpositionFac.BESTELLPOSITIONART_IDENT)); Criteria critArtikel = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL); if (artikelklasseIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE) .add(Restrictions.eq("i_id", artikelklasseIId)); } if (artikelgruppeIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE) .add(Restrictions.eq("i_id", artikelgruppeIId)); } if (artikelCNrVon != null) { critArtikel.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon)); } if (artikelCNrBis != null) { critArtikel.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis)); } } List<?> resultList = crit1.list(); for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) { FLRBestellpositionReport item = (FLRBestellpositionReport) iter.next(); if (item.getN_menge() != null) { String artikelCNr = null; /** * @todo das ist nicht sehr sauber ... */ if (item.getFlrartikel().getC_nr().startsWith("~")) { artikelCNr = BestellungReportFac.REPORT_VORKALKULATION_ZEICHEN_FUER_HANDEINGABE; } else { artikelCNr = item.getFlrartikel().getC_nr(); } Criteria critWep = session.createCriteria(FLRWareneingangspositionen.class); critWep.createCriteria("flrbestellposition").add(Restrictions.eq("i_id", item.getI_id())); List<?> wepResultList = critWep.list(); Iterator<?> wepResultListIterator = wepResultList.iterator(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGCNR] = flrbestellung.getC_nr(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGARTCNR] = flrbestellung .getBestellungart_c_nr(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung .getC_bezprojektbezeichnung(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERANT] = flrbestellung .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELCNR] = artikelCNr; // SP903 if (item.getPosition_i_id_artikelset() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_POSITION; } else { Session sessionSet = FLRSessionFactory.getFactory().openSession(); sessionSet = factory.openSession(); Criteria critSet = sessionSet.createCriteria(FLRBestellpositionReport.class); critSet.add(Restrictions.eq("position_i_id_artikelset", item.getI_id())); int iZeilen = critSet.list().size(); if (iZeilen > 0) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_KOPF; } sessionSet.close(); } // PJ 14752 String sortierstring = ""; if (krit.bSortiereNachKostenstelle == true) { sortierstring = Helper.fitString2Length(flrbestellung.getFlrkostenstelle().getC_nr(), 80, ' '); } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { sortierstring += Helper .fitString2Length(flrbestellung.getFlrlieferant().getFlrpartner() .getC_name1nachnamefirmazeile1(), 80, ' ') + Helper.fitString2Length(artikelCNr, 80, ' '); } if (bSortierungNachLiefertermin == true) { sortierstring += Helper.fitString2Length(flrbestellung.getT_liefertermin() + "", 15, ' '); } data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring; data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELMENGE] = item.getN_menge(); BigDecimal bdOffeneLiefermenge = new BigDecimal(0); if (BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbestellung.getBestellungart_c_nr())) { try { BestellpositionDto[] abrufPos = getBestellpositionFac() .bestellpositionFindByBestellpositionIIdRahmenposition(item.getI_id(), theClientDto); for (int y = 0; y < abrufPos.length; y++) { bdOffeneLiefermenge = bdOffeneLiefermenge .add(getBestellpositionFac().berechneOffeneMenge(abrufPos[y])); } } catch (RemoteException e) { } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_OFFENELIEFERUNGEN] = bdOffeneLiefermenge; } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_OFFENELIEFERUNGEN] = null; } StringBuffer sbArtikelInfo = new StringBuffer(); if (item.getC_bezeichnung() != null) { sbArtikelInfo.append(item.getC_bezeichnung()); } else { ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKey(item.getFlrartikel().getI_id(), theClientDto); if (artikelDto.getArtikelsprDto() != null) { if (artikelDto.getArtikelsprDto().getCBez() != null) { sbArtikelInfo.append(artikelDto.getArtikelsprDto().getCBez()); } } } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELBEZ] = sbArtikelInfo.toString(); // der Preis wird in Mandantenwaehrung angezeigt, es // gilt der hinterlegte Wechselkurs BigDecimal bdPreisinmandantenwaehrung = item.getN_nettogesamtpreis(); BigDecimal wechselkursmandantwaehrungzuauftragswaehrung = null; if (!flrbestellung.getWaehrung_c_nr_bestellwaehrung() .equals(theClientDto.getSMandantenwaehrung())) { wechselkursmandantwaehrungzuauftragswaehrung = new BigDecimal( flrbestellung.getF_wechselkursmandantwaehrungbestellungswaehrung().doubleValue()); bdPreisinmandantenwaehrung = getBetragMalWechselkurs(bdPreisinmandantenwaehrung, Helper.getKehrwert(wechselkursmandantwaehrungzuauftragswaehrung)); } if (darfEinkaufspreisSehen) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELPREIS] = bdPreisinmandantenwaehrung; } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELPREIS] = null; } if (item.getEinheit_c_nr() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELEINHEIT] = item .getEinheit_c_nr().trim(); } if (item.getT_auftragsbestaetigungstermin() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABTERMIN] = Helper .formatDatum(item.getT_auftragsbestaetigungstermin(), theClientDto.getLocUi()); } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABNUMMER] = item.getC_abnummer(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABKOMMENTAR] = item.getC_abkommentar(); if (item.getT_uebersteuerterliefertermin() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERTERMIN] = Helper .formatDatum(item.getT_uebersteuerterliefertermin(), theClientDto.getLocUi()); } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERTERMIN] = Helper .formatDatum(item.getFlrbestellung().getT_liefertermin(), theClientDto.getLocUi()); } BigDecimal noffeneMenge = item.getN_menge(); BigDecimal ngeliferteMenge = new BigDecimal(0); if (flrbestellung.getBestellungart_c_nr() .equals(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR)) { noffeneMenge = item.getN_offenemenge(); while (wepResultListIterator.hasNext()) { FLRWareneingangspositionen waren = (FLRWareneingangspositionen) wepResultListIterator .next(); ngeliferteMenge = ngeliferteMenge.add(waren.getN_geliefertemenge()); } } else { while (wepResultListIterator.hasNext()) { FLRWareneingangspositionen waren = (FLRWareneingangspositionen) wepResultListIterator .next(); noffeneMenge = noffeneMenge.subtract(waren.getN_geliefertemenge()); } } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELGELIFERTEMENGE] = ngeliferteMenge; data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEMENGE] = noffeneMenge; if (darfEinkaufspreisSehen) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEWERT] = noffeneMenge .multiply(bdPreisinmandantenwaehrung); } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEWERT] = null; } i++; } } } closeSession(session); // PJ 15254 if (bNurOffeneMengenAnfuehren) { ArrayList alTemp = new ArrayList(); for (int k = 0; k < data.length; k++) { BigDecimal bdOffeneMenge = (BigDecimal) data[k][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEMENGE]; if (bdOffeneMenge != null && bdOffeneMenge.doubleValue() > 0) { alTemp.add(data[k]); } } Object[][] returnArray = new Object[alTemp .size()][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ANZAHL_SPALTEN]; data = (Object[][]) alTemp.toArray(returnArray); } // PJ 14752 Manuell nachsortieren (in Besprechung mit AD+WH besprochen) if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { for (int k = data.length - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Object[] o = data[j]; Object[] o1 = data[j + 1]; String s = (String) o[REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM]; String s1 = (String) o1[REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM]; if (s.toUpperCase().compareTo(s1.toUpperCase()) > 0) { data[j] = o1; data[j + 1] = o; } } } } parameter.put(LPReport.P_SORTIERUNG, buildSortierungBestellungOffene(krit, theClientDto)); parameter.put(LPReport.P_FILTER, buildFilterBestellungOffene(krit, artikelklasseIId, artikelgruppeIId, artikelCNrVon, artikelCNrBis, projektCBezeichnung, theClientDto)); parameter.put(LPReport.P_SORTIERENACHLIEFERANT, new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER)); parameter.put("P_SORTIERENACHBESTELLUNGART", new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_ART)); parameter.put("P_TITLE", getTextRespectUISpr("bes.print.offene", theClientDto.getMandant(), theClientDto.getLocUi())); parameter.put(P_MANDANTWAEHRUNG, theClientDto.getSMandantenwaehrung()); initJRDS(parameter, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNG_JOURNAL_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); }
From source file:com.lp.server.eingangsrechnung.ejbfac.EingangsrechnungFacBean.java
License:Open Source License
public int wiederholendeZusatzkostenAnlegen(TheClientDto theClientDto) { int iAnzahlAngelegt = 0; Session session = FLRSessionFactory.getFactory().openSession(); Criteria crit = session.createCriteria(FLREingangsrechnung.class); crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); crit.add(Restrictions.eq("eingangsrechnungart_c_nr", EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)); crit.add(Restrictions.not(Restrictions.eq("status_c_nr", EingangsrechnungFac.STATUS_STORNIERT))); crit.add(Restrictions.isNull("t_wiederholenderledigt")); crit.add(Restrictions.isNull("eingangsrechnung_i_id_nachfolger")); crit.add(Restrictions.isNotNull("auftragwiederholungsintervall_c_nr")); crit.add(Restrictions.lt("t_belegdatum", Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000))))); List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext()) { FLREingangsrechnung flrEingangsrechnung = (FLREingangsrechnung) resultListIterator.next(); // Naechster faelliger Termin nach Heute Calendar cBeginn = Calendar.getInstance(); cBeginn.setTimeInMillis(flrEingangsrechnung.getT_belegdatum().getTime()); String intervall = flrEingangsrechnung.getAuftragwiederholungsintervall_c_nr(); Timestamp tHeute = Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000))); if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2WOECHENTLICH)) { cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 14); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_WOECHENTLICH)) { cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 7); }//from www. j a v a 2 s. c o m if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 1); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 2); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_3JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 3); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_4JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 4); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_5JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 5); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_MONATLICH)) { cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 1); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_QUARTAL)) { cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 3); } Date tBelegdatumNeu = new Date(cBeginn.getTimeInMillis()); if (cBeginn.getTimeInMillis() < tHeute.getTime()) { Eingangsrechnung er = em.find(Eingangsrechnung.class, flrEingangsrechnung.getI_id()); EingangsrechnungDto erDtoNeu = assembleEingangsrechnungDto(er); erDtoNeu.setIId(null); erDtoNeu.setDBelegdatum(tBelegdatumNeu); erDtoNeu.setStatusCNr(EingangsrechnungFac.STATUS_ANGELEGT); Integer idNeu = createEingangsrechnung(erDtoNeu, theClientDto).getIId(); // Nachfolger setzten er.setEingangsrechnungIIdNachfolger(idNeu); iAnzahlAngelegt++; } } return iAnzahlAngelegt; }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
public JasperPrintLP printFertigungsbegleitschein(Integer losIId, Boolean bStammtVonSchnellanlage, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from w ww.j a v a 2s .c o m try { this.useCase = UC_FERTIGUNGSBEGLEITSCHEIN; this.index = -1; // Los holen LosDto losDto = getFertigungFac().losFindByPrimaryKey(losIId); if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ANGELEGT)) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_NOCH_NICHT_AUSGEGEBEN, ""); } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_STORNIERT)) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_STORNIERT, ""); } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ERLEDIGT)) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_BEREITS_ERLEDIGT, ""); } // Hole Parameter UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT String artikelnrZuUnterdruecken = null; ParametermandantDto parameterNulltaetigkeit = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT); if (parameterNulltaetigkeit.getCWert() != null && !parameterNulltaetigkeit.getCWert().equals("") && !parameterNulltaetigkeit.getCWert().equals(" ")) { artikelnrZuUnterdruecken = parameterNulltaetigkeit.getCWert(); } SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLossollarbeitsplan.class); if (artikelnrZuUnterdruecken != null) { c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL, "a"); c.add(Restrictions.not( Restrictions.and(Restrictions.isNotNull(FertigungFac.FLR_LOSSOLLARBEITSPLAN_MASCHINE_I_ID), Restrictions.eq("a.c_nr", artikelnrZuUnterdruecken)))); } c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, losIId)); // Sortierung nach Arbeitsgang c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_ARBEITSGANGNUMMER)); c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_UNTERARBEITSGANG)); List<?> list = c.list(); int iSizeMaterial = 0; ParametermandantDto parameterMaterial = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNGSBEGLEITSCHEIN_MIT_MATERIAL); short iMaterial = Short.parseShort(parameterMaterial.getCWert()); boolean bMitMaterial = Helper.short2boolean(iMaterial); if (bMitMaterial) { // Hier Material einfuegen Object[][] material = getDataAusgabeListe(new Integer[] { losIId }, Helper.SORTIERUNG_NACH_IDENT, true, false, null, theClientDto); if (material == null) { iSizeMaterial = 0; } else { iSizeMaterial = material.length; } data = new Object[list.size() + material.length][BEGL_SPALTENANZAHL]; for (int i = 0; i < iSizeMaterial; i++) { data[i][BEGL_IST_MATERIAL] = new Boolean(true); data[i][BEGL_MATERIAL_ARTIKELKLASSE] = material[i][AUSG_ARTIKELKLASSE]; data[i][BEGL_MATERIAL_AUSGABE] = material[i][AUSG_AUSGABE]; data[i][BEGL_MATERIAL_BEZEICHNUNG] = material[i][AUSG_BEZEICHNUNG]; data[i][BEGL_MATERIAL_EINHEIT] = material[i][AUSG_EINHEIT]; data[i][BEGL_MATERIAL_FARBCODE] = material[i][AUSG_FARBCODE]; data[i][BEGL_MATERIAL_IDENT] = material[i][AUSG_IDENT]; data[i][BEGL_MATERIAL_LAGER] = material[i][AUSG_LAGER]; data[i][BEGL_MATERIAL_LAGERORT] = material[i][AUSG_LAGERORT]; data[i][BEGL_MATERIAL_MENGE] = material[i][AUSG_MENGE]; data[i][BEGL_MATERIAL_MONTAGEART] = material[i][AUSG_MONTAGEART]; data[i][BEGL_MATERIAL_SCHALE] = material[i][AUSG_SCHALE]; data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG] = material[i][AUSG_ZUSATZBEZEICHNUNG]; data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG2] = material[i][AUSG_ZUSATZBEZEICHNUNG2]; data[i][BEGL_MATERIAL_HOEHE] = material[i][AUSG_HOEHE]; data[i][BEGL_MATERIAL_BREITE] = material[i][AUSG_BREITE]; data[i][BEGL_MATERIAL_TIEFE] = material[i][AUSG_TIEFE]; data[i][BEGL_MATERIAL_MATERIAL] = material[i][AUSG_MATERIAL]; data[i][BEGL_BAUFORM] = material[i][AUSG_BAUFORM]; data[i][BEGL_VERPACKUNGSART] = material[i][AUSG_VERPACKUNGSART]; data[i][BEGL_GEWICHTKG] = material[i][AUSG_GEWICHTKG]; data[i][BEGL_MATERIAL_REVISION] = material[i][AUSG_REVISION]; data[i][BEGL_MATERIAL_INDEX] = material[i][AUSG_INDEX]; data[i][BEGL_NURZURINFORMATION] = material[i][AUSG_NUR_ZUR_INFO]; } } else { data = new Object[list.size()][BEGL_SPALTENANZAHL]; } int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLossollarbeitsplan item = (FLRLossollarbeitsplan) iter.next(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(item.getFlrartikel().getI_id(), theClientDto); data[i + iSizeMaterial][BEGL_IST_MATERIAL] = new Boolean(false); data[i + iSizeMaterial][BEGL_IDENT] = artikelDto.getCNr(); data[i + iSizeMaterial][BEGL_NURZURINFORMATION] = Helper.short2Boolean(artikelDto.getbNurzurinfo()); data[i + iSizeMaterial][BEGL_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG2] = artikelDto.getArtikelsprDto().getCZbez2(); data[i + iSizeMaterial][BEGL_ARBEITSGANG] = item.getI_arbeitsgangsnummer(); data[i + iSizeMaterial][BEGL_UNTERARBEITSGANG] = item.getI_unterarbeitsgang(); data[i + iSizeMaterial][BEGL_AGART] = item.getAgart_c_nr(); data[i + iSizeMaterial][BEGL_AUFSPANNUNG] = item.getI_aufspannung(); data[i + iSizeMaterial][BEGL_MATERIAL_REVISION] = artikelDto.getCRevision(); data[i + iSizeMaterial][BEGL_MATERIAL_INDEX] = artikelDto.getCIndex(); data[i + iSizeMaterial][BEGL_FERTIG] = Helper.short2Boolean(item.getB_fertig()); // Ein Mandantenparameter entscheidet, ob auch die Sollzeiten // gedruckt werden ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.FERTIGUNG_FERTIGUNGSBEGLEITSCHEIN_MIT_SOLLDATEN); short iValue = Short.parseShort(parameter.getCWert()); boolean bDruckeSolldaten = Helper.short2boolean(iValue); if (bDruckeSolldaten) { data[i + iSizeMaterial][BEGL_RUESTZEIT] = item.getL_ruestzeit() .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN); data[i + iSizeMaterial][BEGL_STUECKZEIT] = item.getL_stueckzeit() .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN); data[i + iSizeMaterial][BEGL_GESAMTZEIT] = item.getN_gesamtzeit(); } LossollarbeitsplanDto l = getFertigungFac().lossollarbeitsplanFindByPrimaryKey(item.getI_id()); StringBuffer sKommentar = new StringBuffer(); if (l.getCKomentar() != null) { sKommentar.append(l.getCKomentar() + "\n"); } if (l.getXText() != null) { sKommentar.append(l.getXText()); } data[i + iSizeMaterial][BEGL_KOMMENTAR] = sKommentar.toString(); // Maschinenzeiterfassung if (l.getMaschineIId() != null) { MaschineDto maschineDto = getZeiterfassungFac().maschineFindByPrimaryKey(l.getMaschineIId()); data[i + iSizeMaterial][BEGL_MASCHINE] = maschineDto.getCIdentifikationsnr(); data[i + iSizeMaterial][BEGL_MASCHINE_BEZEICHNUNG] = maschineDto.getCBez(); } if (l.getLossollmaterialIId() != null) { LossollmaterialDto posDto = getFertigungFac() .lossollmaterialFindByPrimaryKey(l.getLossollmaterialIId()); ArtikelDto artikelDtoFremdmaterial = getArtikelFac() .artikelFindByPrimaryKeySmall(posDto.getArtikelIId(), theClientDto); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKEL] = artikelDtoFremdmaterial.getCNr(); if (artikelDtoFremdmaterial.getArtikelsprDto() != null) { data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELBEZEICHNUNG] = artikelDtoFremdmaterial .getArtikelsprDto().getCBez(); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELKURZBEZEICHNUNG] = artikelDtoFremdmaterial .getArtikelsprDto().getCKbez(); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG] = artikelDtoFremdmaterial .getArtikelsprDto().getCZbez(); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG2] = artikelDtoFremdmaterial .getArtikelsprDto().getCZbez2(); } data[i + iSizeMaterial][BEGL_FREMDMATERIAL_SOLLMENGE] = posDto.getNMenge(); LoslagerentnahmeDto[] laeger = getFertigungFac() .loslagerentnahmeFindByLosIId(posDto.getLosIId()); if (laeger.length > 0) { ArtikellagerplaetzeDto artikellagerplaetzeDto = getLagerFac() .artikellagerplaetzeFindByArtikelIIdLagerIId(artikelDtoFremdmaterial.getIId(), laeger[0].getLagerIId()); if (artikellagerplaetzeDto != null && artikellagerplaetzeDto.getLagerplatzDto() != null) { data[i + iSizeMaterial][BEGL_FREMDMATERIAL_LAGERORT] = artikellagerplaetzeDto .getLagerplatzDto().getCLagerplatz(); } } } } Map<String, Object> mapParameter = new TreeMap<String, Object>(); mapParameter.put("P_ANGELEGT", new java.util.Date(losDto.getTAnlegen().getTime())); String sAuftragsnummer; String sInternerKommentar = null; String sKunde; String sKundeLieferadresse; Timestamp dLiefertermin; String sLieferart; String sAbteilung = null; String sSpediteur = null; Boolean bPoenale = Boolean.FALSE; Boolean bRoHs = Boolean.FALSE; if (losDto.getAuftragIId() != null) { // Auftrag holen AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(losDto.getAuftragIId()); sAuftragsnummer = auftragDto.getCNr(); sLieferart = getLocaleFac().lieferartFindByIIdLocaleOhneExc(auftragDto.getLieferartIId(), theClientDto.getLocUi(), theClientDto); if (auftragDto.getSpediteurIId() != null) { sSpediteur = getMandantFac().spediteurFindByPrimaryKey(auftragDto.getSpediteurIId()) .getCNamedesspediteurs(); } bPoenale = Helper.short2Boolean(auftragDto.getBPoenale()); bRoHs = Helper.short2Boolean(auftragDto.getBRoHs()); // Internen Kommentar aus dem Auftrag, abhaengig von einem // Mandantenparameter ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_KOMMENTAR_AM_FERTIGUNGSBEGLEITSCHEIN); short iValue = Short.parseShort(parameter.getCWert()); boolean bDruckeKommentar = Helper.short2boolean(iValue); if (bDruckeKommentar) { sInternerKommentar = auftragDto.getXInternerkommentar(); } // Kunde holen KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1(); KundeDto kundeDtoLieferadresse = getKundeFac() .kundeFindByPrimaryKey(auftragDto.getKundeIIdLieferadresse(), theClientDto); sKundeLieferadresse = kundeDtoLieferadresse.getPartnerDto().getCName1nachnamefirmazeile1(); sAbteilung = kundeDto.getPartnerDto().getCName3vorname2abteilung(); if (losDto.getAuftragpositionIId() != null) { AuftragpositionDto aufposDto = getAuftragpositionFac() .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId()); if (aufposDto.getTUebersteuerbarerLiefertermin() != null) { dLiefertermin = aufposDto.getTUebersteuerbarerLiefertermin(); } else { dLiefertermin = auftragDto.getDLiefertermin(); } } else { dLiefertermin = auftragDto.getDLiefertermin(); } } else { sAuftragsnummer = ""; if (losDto.getKundeIId() != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(losDto.getKundeIId(), theClientDto); sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1(); } else { sKunde = ""; } sKundeLieferadresse = ""; dLiefertermin = null; sLieferart = ""; sSpediteur = ""; } mapParameter.put("P_AUFTRAGNUMMER", sAuftragsnummer); mapParameter.put("P_AUFTRAG_INTERNERKOMMENTAR", sInternerKommentar); mapParameter.put("P_AUFTRAG_KUNDE_ABTEILUNG", sAbteilung); mapParameter.put("P_LIEFERART", sLieferart); mapParameter.put("P_SPEDITEUR", sSpediteur); mapParameter.put("P_POENALE", bPoenale); mapParameter.put("P_ROHS", bRoHs); KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(losDto.getKostenstelleIId()); mapParameter.put("P_KOSTENSTELLENUMMER", kstDto.getCNr()); mapParameter.put("P_KUNDE", sKunde); mapParameter.put("P_KUNDE_LIEFERADRESSE", sKundeLieferadresse); mapParameter.put("P_LOSGROESSE", losDto.getNLosgroesse()); mapParameter.put("P_LOSKLASSEN", getLosLosKlassenAlsString(losDto.getIId())); mapParameter.put("P_LOSNUMMER", losDto.getCNr()); mapParameter.put("P_PRODUKTIONSBEGINN", losDto.getTProduktionsbeginn()); mapParameter.put("P_PRODUKTIONSENDE", losDto.getTProduktionsende()); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(losDto.getTProduktionsende()); mapParameter.put("P_PRODUKTIONSENDE_KW", new Integer(gc.get(Calendar.WEEK_OF_YEAR))); mapParameter.put("P_LIEFERTERMIN", dLiefertermin); // Fertigungsort if (losDto.getPartnerIIdFertigungsort() != null) { PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(losDto.getPartnerIIdFertigungsort(), theClientDto); mapParameter.put("P_FERTIGUNGSORT", partnerDto.formatTitelAnrede()); } // Erstlos mapParameter.put("P_ERSTLOS", new Boolean(istErstlos(losDto, theClientDto))); boolean bDruckeUeberschriftMaterial = false; if (bMitMaterial == true && iSizeMaterial > 0) { bDruckeUeberschriftMaterial = true; } mapParameter.put("P_DRUCKEUEBERSCHRIFTMATERIAL", new Boolean(bDruckeUeberschriftMaterial)); ArrayList<Object> images = new ArrayList<Object>(); String sLosStuecklisteArtikelKommentar = ""; // Bild einfuegen String sMengenEinheit = ""; if (losDto.getStuecklisteIId() != null) { StuecklisteDto stuecklisteDto = getStuecklisteFac() .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto); // Einheit if (stuecklisteDto.getArtikelDto() != null) { if (stuecklisteDto.getArtikelDto().getEinheitCNr() != null) { sMengenEinheit = stuecklisteDto.getArtikelDto().getEinheitCNr(); } } // Sperren String sperren = getArtikelFac().getArtikelsperrenText(stuecklisteDto.getArtikelIId()); mapParameter.put("P_STUECKLISTESPERRSTATUS", sperren); // Abmessungen GeometrieDto geometrieDto = stuecklisteDto.getArtikelDto().getGeometrieDto(); if (geometrieDto != null) { mapParameter.put(P_ARTIKEL_BREITE, geometrieDto.getFBreite()); mapParameter.put(P_ARTIKEL_HOEHE, geometrieDto.getFHoehe()); mapParameter.put(P_ARTIKEL_TIEFE, geometrieDto.getFTiefe()); } // Bauform VerpackungDto verpackungDto = stuecklisteDto.getArtikelDto().getVerpackungDto(); if (verpackungDto != null) { mapParameter.put("P_ARTIKEL_BAUFORM", verpackungDto.getCBauform()); mapParameter.put("P_ARTIKEL_VERPACKUNGSART", verpackungDto.getCVerpackungsart()); } mapParameter.put("P_INDEX", stuecklisteDto.getArtikelDto().getCIndex()); mapParameter.put("P_REVISION", stuecklisteDto.getArtikelDto().getCRevision()); ArtikelkommentarDto[] artikelkommentarDto = getArtikelkommentarFac() .artikelkommentardruckFindByArtikelIIdBelegartCNr(stuecklisteDto.getArtikelIId(), LocaleFac.BELEGART_LOS, theClientDto.getLocUiAsString(), theClientDto); if (artikelkommentarDto != null && artikelkommentarDto.length > 0) { for (int j = 0; j < artikelkommentarDto.length; j++) { if (artikelkommentarDto[j].getArtikelkommentarsprDto() != null) { // Text Kommentar if (artikelkommentarDto[j].getDatenformatCNr().trim() .indexOf(MediaFac.DATENFORMAT_MIMETYPEART_TEXT) != -1) { if (sLosStuecklisteArtikelKommentar == "") { sLosStuecklisteArtikelKommentar += artikelkommentarDto[j] .getArtikelkommentarsprDto().getXKommentar(); } else { sLosStuecklisteArtikelKommentar += "\n" + artikelkommentarDto[j].getArtikelkommentarsprDto().getXKommentar(); } } else if (artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_JPEG) || artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_PNG) || artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_GIF)) { byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia(); if (bild != null) { java.awt.Image myImage = Helper.byteArrayToImage(bild); images.add(myImage); } } else if (artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_TIFF)) { byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia(); java.awt.Image[] tiffs = Helper.tiffToImageArray(bild); if (tiffs != null) { for (int k = 0; k < tiffs.length; k++) { images.add(tiffs[k]); } } } } } } } mapParameter.put("P_MENGENEINHEIT", sMengenEinheit); mapParameter.put("P_PROJEKT", losDto.getCProjekt()); mapParameter.put("P_LOSKOMMENTAR", losDto.getCKommentar()); mapParameter.put("P_LOSLANGTEXT", losDto.getXText()); FertigungsgruppeDto fertGruppeDto = getStuecklisteFac() .fertigungsgruppeFindByPrimaryKey(losDto.getFertigungsgruppeIId()); mapParameter.put("P_FERTIGUNGSGRUPPE", fertGruppeDto.getCBez()); // Materialliste? if (losDto.getStuecklisteIId() != null) { StuecklisteDto stkDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto); if (sLosStuecklisteArtikelKommentar != "") { mapParameter.put("P_STUECKLISTEARTIKELKOMMENTAR", Helper.formatStyledTextForJasper(sLosStuecklisteArtikelKommentar)); } mapParameter.put("P_STUECKLISTEBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCBez()); mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCZbez()); mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG2", stkDto.getArtikelDto().getArtikelsprDto().getCZbez2()); mapParameter.put("P_STUECKLISTEKURZBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCKbez()); mapParameter.put("P_STUECKLISTEREFERENZNUMMER", stkDto.getArtikelDto().getCReferenznr()); mapParameter.put("P_STUECKLISTENUMMER", stkDto.getArtikelDto().getCNr()); mapParameter.put("P_STUECKLISTE_GEWICHTKG", stkDto.getArtikelDto().getFGewichtkg()); if (stkDto.getArtikelDto().getVerpackungDto() != null) { mapParameter.put("P_STUECKLISTE_BAUFORM", stkDto.getArtikelDto().getVerpackungDto().getCBauform()); mapParameter.put("P_STUECKLISTE_VERPACKUNGSART", stkDto.getArtikelDto().getVerpackungDto().getCVerpackungsart()); } if (stkDto.getArtikelDto().getGeometrieDto() != null) { mapParameter.put("P_STUECKLISTE_BREITETEXT", stkDto.getArtikelDto().getGeometrieDto().getCBreitetext()); mapParameter.put("P_STUECKLISTE_BREITE", stkDto.getArtikelDto().getGeometrieDto().getFBreite()); mapParameter.put("P_STUECKLISTE_HOEHE", stkDto.getArtikelDto().getGeometrieDto().getFHoehe()); mapParameter.put("P_STUECKLISTE_TIEFE", stkDto.getArtikelDto().getGeometrieDto().getFTiefe()); } // Stuecklisteneigenschaften StuecklisteeigenschaftDto[] stuecklisteeigenschaftDtos = getStuecklisteFac() .stuecklisteeigenschaftFindByStuecklisteIId(losDto.getStuecklisteIId()); ArrayList<Object[]> al = new ArrayList<Object[]>(); for (int j = 0; j < stuecklisteeigenschaftDtos.length; j++) { StuecklisteeigenschaftDto dto = stuecklisteeigenschaftDtos[j]; Object[] o = new Object[2]; String sStklEigenschaftArt = dto.getStuecklisteeigenschaftartDto().getCBez(); o[0] = sStklEigenschaftArt; o[1] = dto.getCBez(); al.add(o); // Index und Materialplatz auch einzeln an Report uebergeben if (sStklEigenschaftArt.equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_INDEX)) { mapParameter.put(P_STUECKLISTENEIGENSCHAFT_INDEX, dto.getCBez()); } if (sStklEigenschaftArt .equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_MATERIALPLATZ)) { mapParameter.put(P_STUECKLISTENEIGENSCHAFT_MATERIALPLATZ, dto.getCBez()); } } if (stuecklisteeigenschaftDtos.length > 0) { String[] fieldnames = new String[] { "F_EIGENSCHAFTART", "F_BEZEICHNUNG" }; Object[][] dataSub = new Object[al.size()][fieldnames.length]; dataSub = (Object[][]) al.toArray(dataSub); mapParameter.put("DATENSUBREPORT", new LPDatenSubreport(dataSub, fieldnames)); } } else { mapParameter.put("P_STUECKLISTEBEZEICHNUNG", losDto.getCProjekt()); mapParameter.put("P_STUECKLISTENUMMER", getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi())); } mapParameter.put("P_SCHNELLANLAGE", bStammtVonSchnellanlage); // Formularnummer anhaengen, wenn vorhanden String report = FertigungReportFac.REPORT_FERTIGUNGSBEGLEITSCHEIN; if (fertGruppeDto.getIFormularnummer() != null) { report = report.replace(".", fertGruppeDto.getIFormularnummer() + "."); } initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, report, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); JasperPrintLP print = getReportPrint(); Integer cachedReportvariante = theClientDto.getReportvarianteIId(); if (images != null) { for (int k = 0; k < images.size(); k++) { mapParameter = new HashMap<String, Object>(); mapParameter.put("P_BILD", images.get(k)); this.useCase = UC_GANZSEITIGESBILD; this.index = -1; data = new Object[1][1]; data[0][0] = images.get(k); theClientDto.setReportvarianteIId(cachedReportvariante); initJRDS(mapParameter, REPORT_MODUL_ALLGEMEIN, REPORT_GANZSEITIGESBILD, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); print = Helper.addReport2Report(print, getReportPrint().getPrint()); } } return print; } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
@TransactionTimeout(20000) public ArrayList<IntrastatDto> getIntrastatDatenWareneingang(java.sql.Date dVon, java.sql.Date dBis, BigDecimal bdTransportkosten, TheClientDto theClientDto) throws EJBExceptionLP { ArrayList<IntrastatDto> daten = new ArrayList<IntrastatDto>(); Session session = null;/*from www . jav 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;/* w w w. j a v a 2s.c o m*/ 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.lieferschein.ejbfac.LieferscheinReportFacBean.java
License:Open Source License
/** * Alle offenen Lieferscheine fuer einen bestimmten Mandanten drucken. * /*from ww w . ja v a2s . c o m*/ * @param reportJournalKriterienDtoI * die Filter- und Sortierkriterien * @param theClientDto * der aktuelle Benutzer * @throws EJBExceptionLP * Ausnahme * @return JasperPrint der Druck */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printLieferscheinOffene(ReportJournalKriterienDto reportJournalKriterienDtoI, Integer iArt, boolean bMitDetails, TheClientDto theClientDto) throws EJBExceptionLP { if (reportJournalKriterienDtoI == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PARAMETER_IS_NULL, new Exception("reportJournalKriterienDtoI == null")); } JasperPrintLP oPrintO = null; cAktuellerReport = LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE; int iIndex = 0; ArrayList<FLRLieferschein> oZeilen = new ArrayList(); SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; try { session = factory.openSession(); // Hiberante Criteria fuer alle Tabellen ausgehend von meiner // Haupttabelle anlegen, // nach denen ich filtern und sortieren kann Criteria crit = session.createCriteria(FLRLieferschein.class); // Einschraenkung auf den aktuellen Mandanten crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); // Einschraenkung nach Status Offen crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR, LieferscheinFac.LSSTATUS_GELIEFERT)); if (iArt != null) { if (iArt == 1) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR, Helper.boolean2Short(true))); } else if (iArt == 2) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR, Helper.boolean2Short(false))); } } // Einschraenkung nach einer bestimmten Kostenstelle if (reportJournalKriterienDtoI.kostenstelleIId != null) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KOSTENSTELLE_I_ID, reportJournalKriterienDtoI.kostenstelleIId)); } // Einschraenkung nach einem bestimmten Kunden if (reportJournalKriterienDtoI.kundeIId != null) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_LIEFERADRESSE, reportJournalKriterienDtoI.kundeIId)); } // Einschraenkung nach Belegdatum von - bis String sVon = null; String sBis = null; if (reportJournalKriterienDtoI.dVon != null) { crit.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, reportJournalKriterienDtoI.dVon)); sVon = Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi()); } if (reportJournalKriterienDtoI.dBis != null) { crit.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, reportJournalKriterienDtoI.dBis)); sBis = Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi()); } // Einschraenkung nach Belegnummer von - bis LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant()); Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant()); String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert(); if (reportJournalKriterienDtoI.sBelegnummerVon != null) { sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, reportJournalKriterienDtoI.sBelegnummerVon); crit.add(Restrictions.ge("c_nr", sVon)); } if (reportJournalKriterienDtoI.sBelegnummerBis != null) { sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, reportJournalKriterienDtoI.sBelegnummerBis); crit.add(Restrictions.le("c_nr", sBis)); } // Sortierung nach Kostenstelle ist immer die erste Sortierung if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) { crit.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { crit.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDE).createCriteria(KundeFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); } // es wird in jedem Fall nach der Belegnummer sortiert crit.addOrder(Order.asc("c_nr")); List<?> list = crit.list(); Iterator<?> it = list.iterator(); while (it.hasNext()) { FLRLieferschein flrlieferschein = (FLRLieferschein) it.next(); oZeilen.add(flrlieferschein); session = factory.openSession(); Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class); critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN, flrlieferschein)); critPosition.add(Restrictions.or( Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE), Restrictions.eq( LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR, LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE))); // critPosition // .add(Restrictions // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE)); List<?> posList = critPosition.list(); for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) { FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next(); iIndex++; } iIndex++; } data = new Object[iIndex][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANZAHL_ZEILEN]; // Anzahl // der // Spalten // in // der // Gruppe Iterator<?> itZeilen = oZeilen.iterator(); int i = 0; while (itZeilen.hasNext()) { FLRLieferschein flrlieferschein = (FLRLieferschein) itZeilen.next(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein .getFlrkostenstelle().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANLAGEDATUM] = flrlieferschein .getD_belegdatum(); // todo data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERTERMIN] = flrlieferschein .getT_liefertermin(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZAHLUNGSZIEL] = getMandantFac() .zahlungszielFindByIIdLocaleOhneExc(flrlieferschein.getZahlungsziel_i_id(), theClientDto.getLocMandant(), theClientDto); if (flrlieferschein.getFlrauftrag() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = flrlieferschein .getFlrauftrag().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = flrlieferschein .getFlrauftrag().getC_bez(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = flrlieferschein .getFlrauftrag().getC_bestellnummer(); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = null; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = null; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = null; } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERART] = getLocaleFac() .lieferartFindByIIdLocaleOhneExc(flrlieferschein.getLieferart_i_id(), theClientDto.getLocMandant(), theClientDto); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERARTORT] = flrlieferschein .getC_lieferartort(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper .short2Boolean(flrlieferschein.getB_verrechenbar()); if (flrlieferschein.getFlrziellager() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZIELLAGER] = flrlieferschein .getFlrziellager().getC_nr(); } if (flrlieferschein.getFlrlager() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ABLAGER] = flrlieferschein .getFlrlager().getC_nr(); } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_RECHNUNGSADRESSE] = flrlieferschein .getFlrkunderechnungsadresse().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper .short2Boolean(flrlieferschein.getB_verrechenbar()); if (flrlieferschein.getSpediteur_i_id() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = getMandantFac() .spediteurFindByPrimaryKey(flrlieferschein.getSpediteur_i_id()).getCNamedesspediteurs(); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = null; } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_PROJEKTBEZEICHNUNG] = flrlieferschein .getC_bez_projektbezeichnung(); session = factory.openSession(); Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class); critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN, flrlieferschein)); critPosition.add(Restrictions.or( Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE), Restrictions.eq( LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR, LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE))); // critPosition // .add(Restrictions // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE)); List<?> posList = critPosition.list(); boolean darfVerkaufspreisSehen = getTheJudgeFac() .hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_VERKAUF, theClientDto); for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) { FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next(); i++;// in die naechste Zeile vorruecken // nur mengenbehaftete Positionen beruecksichtigen if (item.getN_menge() != null) { String artikelCNr = null; // TODO boeser Workaround ... PJ 4400 if (item.getFlrartikel().getC_nr().startsWith("~")) { artikelCNr = AngebotReportFac.REPORT_VORKALKULATION_ZEICHEN_FUER_HANDEINGABE; } else { artikelCNr = item.getFlrartikel().getC_nr(); } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELCNR] = artikelCNr; String cArtikelBezeichnung = ""; if (item.getPositionsart_c_nr() .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT) || item.getPositionsart_c_nr() .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_HANDEINGABE)) { cArtikelBezeichnung = getArtikelFac().baueArtikelBezeichnungMehrzeiligOhneExc( item.getFlrartikel().getI_id(), item.getPositionsart_c_nr(), item.getC_bez(), item.getC_zbez(), false, null, theClientDto); } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELBEZEICHNUNG] = cArtikelBezeichnung; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELMENGE] = item.getN_menge(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELEINHEIT] = item .getEinheit_c_nr() == null ? null : item.getEinheit_c_nr().trim(); if (darfVerkaufspreisSehen) { // Positionspreise sind in Belegwaehrung abgelegt BigDecimal nPreisInBelegwaehrung = item .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt(); nPreisInBelegwaehrung = getBetragMalWechselkurs(nPreisInBelegwaehrung, Helper.getKehrwert(new BigDecimal( flrlieferschein.getF_wechselkursmandantwaehrungzulieferscheinwaehrung() .doubleValue()))); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = nPreisInBelegwaehrung; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = item .getN_menge().multiply(nPreisInBelegwaehrung); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = null; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = null; } // Grundlage ist der positionsbezogene Gestehungspreis // des Artikels. BigDecimal bdGestehungspreis = Helper.getBigDecimalNull(); if (item.getPositionsart_c_nr() .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT)) { try { BigDecimal bdGestehungswert = getLieferscheinFac() .berechneGestehungswertEinerLieferscheinposition(item.getI_id(), theClientDto); // Gestehungspreis bezogen auf 1 Stueck wird // gemittelt bdGestehungspreis = bdGestehungswert.divide(item.getN_menge(), 4, BigDecimal.ROUND_HALF_EVEN); bdGestehungspreis = Helper.rundeKaufmaennisch(bdGestehungspreis, 4); } catch (Throwable t) { // dieser Fall sollte nicht auftreten, bitte als // moeglichen Fehler pruefen! } } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELGESTEHUNGSPREIS] = bdGestehungspreis; if (darfVerkaufspreisSehen) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = item .getN_menge().multiply(bdGestehungspreis); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = null; } // die Positionen brauchen alle Attribute, nach denen im // Report gruppiert wird data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein .getFlrkostenstelle().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); // fuer die Gruppierung } else if (item.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_TEXTEINGABE)) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_TEXTEINGABE] = item .getC_textinhalt(); // die Positionen brauchen alle Attribute, nach denen im // Report gruppiert wird data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein .getFlrkostenstelle().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); // fuer die Gruppierung } } i++; // in die naechste Zeile vorruecken } // Erstellung des Report HashMap parameter = new HashMap<Object, Object>(); // die Parameter dem Report uebergeben parameter.put(LPReport.P_SORTIERUNG, buildSortierungLieferscheinOffene(reportJournalKriterienDtoI, theClientDto)); parameter.put(LPReport.P_FILTER, buildFilterLieferscheinOffene(reportJournalKriterienDtoI, theClientDto)); // die Parameter zur Bildung von Zwischensummen uebergeben if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) { parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(true)); } else { parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(false)); } if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(true)); } else { parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(false)); } parameter.put("P_LIEFERSCHEINWAEHRUNG", theClientDto.getSMandantenwaehrung()); parameter.put("P_DETAILS", new Boolean(bMitDetails)); initJRDS(parameter, LieferscheinReportFac.REPORT_MODUL, LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); oPrintO = getReportPrint(); } catch (RemoteException re) { throwEJBExceptionLPRespectOld(re); } finally { closeSession(session); } return oPrintO; }