List of usage examples for org.hibernate.criterion Restrictions isNull
public static Criterion isNull(String propertyName)
From source file:com.lp.server.artikel.ejbfac.LagerReportFacBean.java
License:Open Source License
public JasperPrintLP printLieferantumsatzstatistik(Timestamp tVon, Timestamp tBis, boolean bWareneingangspositionen, Integer iOptionKundengruppierung, Integer iOptionGruppierung, Integer iOptionSortierung, TheClientDto theClientDto) throws EJBExceptionLP, RemoteException { List<String> gruppierung = new ArrayList<String>(); String[] monate = new DateFormatSymbols(theClientDto.getLocUi()).getMonths(); if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) { ArtklaDto[] artklDtos = getArtikelFac().artklaFindByMandantCNr(theClientDto); for (int i = 0; i < artklDtos.length; i++) { gruppierung.add(artklDtos[i].getCNr()); }/*from w w w .j ava2 s . c om*/ } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_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_LIEFERANTUMSATZSTATISTIK_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_LIEFERANTUMSATZSTATISTIK_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); } } tVon = Helper.cutTimestamp(tVon); tBis = Helper.cutTimestamp(tBis); BigDecimal gesamtUmsatz = new BigDecimal(0); Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRLieferant.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()]; while (resultListIterator.hasNext()) { FLRLieferant lieferant = (FLRLieferant) resultListIterator.next(); LieferantDto lieferantDto = getLieferantFac().lieferantFindByPrimaryKey(lieferant.getI_id(), theClientDto); KundeUmsatzstatistikDto kdums = new KundeUmsatzstatistikDto(gruppierung.size() + 1); kdums.setSKunde(lieferant.getFlrpartner().getC_name1nachnamefirmazeile1()); kdums.setIZahlungsziel(lieferantDto.getZahlungszielIId()); kdums.setILieferart(lieferantDto.getLieferartIId()); kdums.setISpediteur(lieferantDto.getIdSpediteur()); kdums.setSKundengruppierung(""); // Branche/Partnerklasse hinzufuegen if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE && lieferant.getFlrpartner().getBranche_i_id() != null) { kdums.setSKundengruppierung(getPartnerServicesFac() .brancheFindByPrimaryKey(lieferant.getFlrpartner().getBranche_i_id(), theClientDto) .getBezeichnung()); } else if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_KUNDEUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE && lieferant.getFlrpartner().getPartnerklasse_i_id() != null) { kdums.setSKundengruppierung(getPartnerFac().partnerklasseFindByPrimaryKey( lieferant.getFlrpartner().getPartnerklasse_i_id(), theClientDto).getBezeichnung()); } if (bWareneingangspositionen) { Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit2 = session2.createCriteria(FLRWareneingangspositionen.class) .createAlias("flrwareneingang", "w").createAlias("w.flrbestellung", "b") .createAlias("b.flrlieferant", "l").add(Restrictions.eq("l.i_id", lieferant.getI_id())) .createAlias("l.flrpartner", "p"); crit2.add(Restrictions.isNotNull(WareneingangFac.FLR_WEPOS_N_EINSTANDSPREIS)); // SP1115 crit2.createAlias("flrbestellposition", "bp") .add(Restrictions.isNull("bp.position_i_id_artikelset")); String[] stati = new String[2]; stati[0] = BestellungFac.BESTELLSTATUS_ANGELEGT; stati[1] = BestellungFac.BESTELLSTATUS_STORNIERT; crit2.add(Restrictions .not(Restrictions.in("b." + BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_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("w." + WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, 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("w." + WareneingangFac.FLR_WE_T_WARENEINGANGSDATUM, c.getTime())); crit2.addOrder(Order.asc("p.c_name1nachnamefirmazeile1")); List<?> results2 = crit2.list(); Iterator<?> resultListIterator2 = results2.iterator(); while (resultListIterator2.hasNext()) { FLRWareneingangspositionen wepos = (FLRWareneingangspositionen) resultListIterator2.next(); BigDecimal umsatz = wepos.getN_einstandspreis(); // Mit Welchselkurs zu Mandantenwaehrung multiplizieren if (wepos.getFlrwareneingang().getN_wechselkurs() != null && wepos.getFlrwareneingang().getN_wechselkurs().doubleValue() != 0) { umsatz = umsatz.divide(wepos.getFlrwareneingang().getN_wechselkurs(), 4, BigDecimal.ROUND_HALF_EVEN); } // Bei Handeingabe ist Umsatz gleich Deckungsbeitrag und // kommt in die Kategorie Unbekannt if (wepos.getFlrbestellposition().getBestellpositionart_c_nr() .equals(LocaleFac.POSITIONSART_HANDEINGABE) && iOptionGruppierung .intValue() != LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR && iOptionGruppierung .intValue() != LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { umsatz = umsatz.multiply(wepos.getN_geliefertemenge()); kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz); // GESAMTSUMME kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz)); } else if (wepos.getFlrbestellposition().getBestellpositionart_c_nr() .equals(LocaleFac.POSITIONSART_IDENT) || (wepos.getFlrbestellposition().getBestellpositionart_c_nr() .equals(LocaleFac.POSITIONSART_HANDEINGABE) && ((iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) || iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT))) { umsatz = umsatz.multiply(wepos.getN_geliefertemenge()); // GESAMTSUMME kdums.setBdUmsatz(kdums.getBdUmsatz().add(umsatz)); // Aufteilen auf Gruppe if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) { if (wepos.getFlrbestellposition().getFlrartikel().getFlrartikelklasse() != null) { // Bei richtiger Artikelklasse einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(wepos.getFlrbestellposition().getFlrartikel() .getFlrartikelklasse().getC_nr())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatz); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) { if (wepos.getFlrbestellposition().getFlrartikel().getFlrartikelgruppe() != null) { // Bei richtiger Gruppe einfuegen for (int j = 0; j < gruppierung.size(); j++) { if (gruppierung.get(j).equals(wepos.getFlrbestellposition().getFlrartikel() .getFlrartikelgruppe().getC_nr())) { kdums.getSubSummeUmsatz()[j + 1] = kdums.getSubSummeUmsatz()[j + 1] .add(umsatz); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0].add(umsatz); } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(wepos.getFlrwareneingang().getT_wareneingansdatum().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(umsatz); bSpalteAndrucken[j] = true; } } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(wepos.getFlrwareneingang().getT_wareneingansdatum().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(umsatz); bSpalteAndrucken[j] = true; } } } } } session2.close(); if (results2.size() > 0) { gesamtListe.add(kdums); gesamtUmsatz = gesamtUmsatz.add(kdums.getBdUmsatz()); } } else { // Eingangsrechnung Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit2 = session2.createCriteria(FLREingangsrechnungReport.class) .createAlias("flrlieferant", "l"); crit2.add(Restrictions.eq("l.i_id", lieferant.getI_id())); crit2.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, Helper.cutTimestamp(tVon))); Calendar c = Calendar.getInstance(); 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(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, c.getTime())); List<?> results2 = crit2.list(); Iterator<?> resultListIterator2 = results2.iterator(); while (resultListIterator2.hasNext()) { FLREingangsrechnungReport er = (FLREingangsrechnungReport) resultListIterator2.next(); if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(er.getT_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(er.getN_betrag().subtract(er.getN_ustbetrag())); kdums.setBdUmsatz( kdums.getBdUmsatz().add(er.getN_betrag().subtract(er.getN_ustbetrag()))); bSpalteAndrucken[j] = true; } } } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { Calendar cZeile = Calendar.getInstance(); cZeile.setTimeInMillis(er.getT_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(er.getN_betrag().subtract(er.getN_ustbetrag())); kdums.setBdUmsatz( kdums.getBdUmsatz().add(er.getN_betrag().subtract(er.getN_ustbetrag()))); bSpalteAndrucken[j] = true; } } } else { kdums.getSubSummeUmsatz()[0] = kdums.getSubSummeUmsatz()[0] .add(er.getN_betrag().subtract(er.getN_ustbetrag())); kdums.setBdUmsatz(kdums.getBdUmsatz().add(er.getN_betrag().subtract(er.getN_ustbetrag()))); } } if (results2.size() > 0) { gesamtListe.add(kdums); gesamtUmsatz = gesamtUmsatz.add(kdums.getBdUmsatz()); } } } 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++) { double a = ((KundeUmsatzstatistikDto) gesamtListe.get(j)).getBdUmsatz().doubleValue(); double b = ((KundeUmsatzstatistikDto) gesamtListe.get(j + 1)).getBdUmsatz().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(); 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))); for (int i = 0; i < gesamtListe.size(); i++) { KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(i); 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(); 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); } } } } // 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; sAktuellerReport = LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK; data = new Object[gesamtListe.size()][15]; for (int j = 0; j < gesamtListe.size(); j++) { KundeUmsatzstatistikDto dto = (KundeUmsatzstatistikDto) gesamtListe.get(j); data[j][REPORT_LIEFERANTUMSATZSTATISTIK_LIEFERANTGRUPPIERUNG] = dto.getSKundengruppierung(); data[j][REPORT_LIEFERANTUMSATZSTATISTIK_LIEFERANT] = dto.getSKunde(); data[j][REPORT_LIEFERANTUMSATZSTATISTIK_UMSATZ] = dto.getBdUmsatz(); data[j][REPORT_LIEFERANTUMSATZSTATISTIK_ABCKLASSE] = dto.getAbcKlassifizierung(); data[j][REPORT_LIEFERANTUMSATZSTATISTIK_ZAHLUNGSZIEL] = getMandantFac() .zahlungszielFindByIIdLocaleOhneExc(dto.getIZahlungsziel(), theClientDto.getLocMandant(), theClientDto); data[j][REPORT_LIEFERANTUMSATZSTATISTIK_LIEFERART] = getLocaleFac().lieferartFindByIIdLocaleOhneExc( dto.getILieferart(), theClientDto.getLocMandant(), theClientDto); data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPEDITEUR] = getMandantFac() .spediteurFindByPrimaryKey(dto.getISpediteur()).getCNamedesspediteurs(); try { if (i == 0) { data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE1] = dto.getSubSummeUmsatz()[0]; } else { data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE1] = dto .getSubSummeUmsatz()[spaltenDrucken[0 + (i * 8)]]; } data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE2] = dto .getSubSummeUmsatz()[spaltenDrucken[1 + (i * 8)]]; data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE3] = dto .getSubSummeUmsatz()[spaltenDrucken[2 + (i * 8)]]; data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE4] = dto .getSubSummeUmsatz()[spaltenDrucken[3 + (i * 8)]]; data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE5] = dto .getSubSummeUmsatz()[spaltenDrucken[4 + (i * 8)]]; data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE6] = dto .getSubSummeUmsatz()[spaltenDrucken[5 + (i * 8)]]; data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE7] = dto .getSubSummeUmsatz()[spaltenDrucken[6 + (i * 8)]]; data[j][REPORT_LIEFERANTUMSATZSTATISTIK_SPALTE8] = dto .getSubSummeUmsatz()[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 (bWareneingangspositionen) { parameter.put("P_BASIS", getTextRespectUISpr("bes.wareneingangsposition", theClientDto.getMandant(), theClientDto.getLocUi())); } else { parameter.put("P_BASIS", getTextRespectUISpr("er.eingangsrechnung", theClientDto.getMandant(), theClientDto.getLocUi())); } if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_BRANCHE) { parameter.put("P_GRUPPIERUNGLIEFERANT", getTextRespectUISpr("lp.branche", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionKundengruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_KUNDENGRUPPIERUNG_PARTNERKLASSE) { parameter.put("P_GRUPPIERUNGLIEFERANT", "Partnerklasse"); } if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELKLASSE) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelklasse", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_ARTIKELGRUPPE) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.artikelgruppe", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_JAHR) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.jahr", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iOptionGruppierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_GRUPPIERUNG_MONAT) { parameter.put("P_GRUPPIERUNG", getTextRespectUISpr("lp.monat", theClientDto.getMandant(), theClientDto.getLocUi())); } if (iOptionSortierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_SORTIERUNG_FIRMANNAME) { parameter.put("P_SORTIERUNG", "Firmenname"); } else if (iOptionSortierung .intValue() == LagerReportFac.REPORT_LIEFERANTUMSATZSTATISTIK_OPTION_SORTIERUNG_UMSATZ) { parameter.put("P_SORTIERUNG", getTextRespectUISpr("er.umsatz", theClientDto.getMandant(), theClientDto.getLocUi())); } 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.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);//from ww w . j a va 2s. c o 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.VkPreisfindungFacBean.java
License:Open Source License
public void pruefeVkpfStaffelmenge(TheClientDto theClientDto) { Session session = FLRSessionFactory.getFactory().openSession(); ArrayList<Integer> rids = new ArrayList<Integer>(); try {/* ww w. j av a2s. co m*/ org.hibernate.Criteria crit = session.createCriteria(FLRVkpfStaffelmenge.class); crit.add(Restrictions.isNull("t_preisgueltigbis")); crit.addOrder(Order.asc("artikel_i_id")); Integer artikel_i_id = null; Integer tmp_i_id = new Integer(0); List<?> vkpfsmList = crit.list(); Iterator<?> it = vkpfsmList.iterator(); while (it.hasNext()) { FLRVkpfStaffelmenge item = (FLRVkpfStaffelmenge) it.next(); artikel_i_id = item.getArtikel_i_id(); if (!artikel_i_id.equals(tmp_i_id)) { rids.add(artikel_i_id); tmp_i_id = artikel_i_id; } } BigDecimal tmpmenge = null; for (int i = 0; i < rids.size(); i++) { String queryString = "from FLRVkpfStaffelmenge flrvkpfstaffelmenge WHERE flrvkpfstaffelmenge.artikel_i_id = " + rids.get(i) + " ORDER BY flrvkpfstaffelmenge.n_menge,flrvkpfstaffelmenge.t_preisgueltigab"; org.hibernate.Query query = session.createQuery(queryString); List<?> rList = query.list(); Iterator<?> rlIterator = rList.iterator(); ArrayList<FLRVkpfStaffelmenge> items = null; tmpmenge = new BigDecimal(0); tmpmenge = tmpmenge.setScale(4); BigDecimal menge = null; while (rlIterator.hasNext()) { FLRVkpfStaffelmenge item = (FLRVkpfStaffelmenge) rlIterator.next(); menge = item.getN_menge(); System.out.println(rids.get(i) + " " + item.getN_menge() + " " + item.getT_preisgueltigab() + " " + item.getT_preisgueltigbis()); if ((menge.compareTo(tmpmenge) != 0)) { if (items != null) { int s = items.size(); if (s >= 2) { if (items.get(s - 2).getT_preisgueltigbis() == null) { Vkpfmengenstaffel vkpfMengenstaffel = null; // try { vkpfMengenstaffel = em.find(Vkpfmengenstaffel.class, items.get(s - 2).getI_id()); if (vkpfMengenstaffel == null) { } // } // catch (FinderException ex) { // } java.sql.Date d = new Date(items.get(s - 1).getT_preisgueltigab().getTime()); vkpfMengenstaffel.setTPreisgueltigbis(d); } } } items = new ArrayList<FLRVkpfStaffelmenge>(); tmpmenge = menge; } items.add(item); } } } 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. * //ww w . j av a 2 s . 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.bestellung.ejbfac.BestellungReportFacBean.java
License:Open Source License
/** * Alle offenen Bestellungen fuer einen bestimmten Mandanten drucken. * // w w w.j av a 2 s . c o m * @param krit * die Filter- und Sortierkriterien * @param bSortierungNachLiefertermin * Boolean * @param bAnfragevorschlag * @param theClientDto * der aktuelle Benutzer * @throws EJBExceptionLP * Ausnahme * @return JasperPrint der Druck */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printBestellVorschlag(ReportJournalKriterienDto krit, Boolean bSortierungNachLiefertermin, boolean bAnfragevorschlag, TheClientDto theClientDto) throws EJBExceptionLP { JasperPrintLP oPrintO = null; useCase = UC_BESTELLVORSCHLAG; int iAnzahlZeilen = 0; Locale locDruck = theClientDto.getLocUi(); ArrayList<FLRBestellvorschlag> bestellung = new ArrayList(); SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; try { LagerDto[] lagerDto = getLagerFac().lagerFindByMandantCNr(theClientDto.getMandant()); session = factory.openSession(); // Hiberante Criteria fuer alle Tabellen ausgehend von meiner // Haupttabelle anlegen, // nach denen ich filtern und sortieren kann Criteria crit = session.createCriteria(FLRBestellvorschlag.class); // Einschraenkung auf den aktuellen Mandanten crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); // Einschraenkung nach einem bestimmten Kunden if (krit.lieferantIId != null) { crit.add(Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_LIEFERANT_I_ID, krit.lieferantIId)); } // 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)); } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { crit.createCriteria(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_FLRARTIKEL) .addOrder(Order.asc("c_nr")); } // Sortierung nach Liefertermin (optional) if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) { crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN)); } crit.addOrder(Order.asc(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_BELEGART_C_NR)); List<?> list = crit.list(); Iterator<?> it = list.iterator(); while (it.hasNext()) { FLRBestellvorschlag flrbestellvorschlag = (FLRBestellvorschlag) it.next(); bestellung.add(flrbestellvorschlag); iAnzahlZeilen++; } // Danach wenn nach Lieferant sortiert auch noch die null // Lieferanten anfuegen if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { Criteria crit2 = session.createCriteria(FLRBestellvorschlag.class); crit2.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); crit2.add(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT)); if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) { crit2.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN)); } crit2.addOrder(Order.asc(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_BELEGART_C_NR)); if (krit.kundeIId != null) { crit2.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, krit.lieferantIId)); } list = crit2.list(); it = list.iterator(); while (it.hasNext()) { FLRBestellvorschlag flrbestellvorschlag = (FLRBestellvorschlag) it.next(); bestellung.add(flrbestellvorschlag); iAnzahlZeilen++; } } data = new Object[iAnzahlZeilen][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ANZAHL_SPALTEN]; int i = 0; FLRBestellvorschlag flrbestellung = null; while (i < iAnzahlZeilen) { flrbestellung = (FLRBestellvorschlag) bestellung.get(i); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BELEGART] = flrbestellung.getBelegart_c_nr(); String belegCNr = ""; if (flrbestellung.getBelegart_c_nr() != null) { // Es gibt auch // Eintraege // ohne // Belegart, zb // fuer den // mindestlagerstand if (flrbestellung.getBelegart_c_nr().equals(LocaleFac.BELEGART_AUFTRAG)) { AuftragDto aDto = getAuftragFac().auftragFindByPrimaryKey(flrbestellung.getI_belegartid()); belegCNr = aDto.getCNr(); } else if (flrbestellung.getBelegart_c_nr().equals(LocaleFac.BELEGART_LOS)) { LosDto aDto = getFertigungFac().losFindByPrimaryKey(flrbestellung.getI_belegartid()); belegCNr = aDto.getCNr(); } } data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BELEGCNR] = belegCNr; if (flrbestellung.getLieferant_i_id() != null) { data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BESTELLUNGLIEFERANT] = flrbestellung .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); } if (flrbestellung.getProjekt_i_id() != null) { data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_PROJEKT] = flrbestellung.getFlrprojekt() .getC_nr(); } /* * locDruck = * Helper.string2Locale(flrbestellung.getFlrlieferant( * ).getFlrpartner(). getLocale_c_nr_kommunikation()); */ data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_BESTELLTERMIN] = Helper .formatDatum(flrbestellung.getT_liefertermin(), locDruck); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELCNR] = flrbestellung.getFlrartikel() .getC_nr(); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_LAGERBEWIRTSCHAFTET] = Helper .short2Boolean(flrbestellung.getFlrartikel().getB_lagerbewirtschaftet()); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELMENGE] = flrbestellung .getN_zubestellendemenge(); ArtikelDto oArtikelDto = getArtikelFac().artikelFindByPrimaryKey(flrbestellung.getArtikel_i_id(), theClientDto); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELBEZ] = oArtikelDto.getArtikelsprDto() .getCBez(); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELKBEZ] = oArtikelDto.getArtikelsprDto() .getCKbez(); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELZBEZ] = oArtikelDto.getArtikelsprDto() .getCZbez(); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELZBEZ2] = oArtikelDto.getArtikelsprDto() .getCZbez2(); // Sperren data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_SPERREN] = getArtikelFac() .getArtikelsperrenText(flrbestellung.getArtikel_i_id()); // offene Bestellmenge data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_MENGE_OFFEN] = getArtikelbestelltFac() .getAnzahlBestellt(flrbestellung.getArtikel_i_id()); // offene Rahmenbestellmenge Hashtable<?, ?> htRahmenbestellt = getArtikelbestelltFac() .getAnzahlRahmenbestellt(flrbestellung.getArtikel_i_id(), theClientDto); if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL)) { data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_RAHMENMENGE_OFFEN] = htRahmenbestellt .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_ANZAHL); } // alle offenen Rahmenbestellnr if (htRahmenbestellt.containsKey(ArtikelbestelltFac.KEY_RAHMENBESTELLT_BELEGCNR)) { Collection<?> aRahmenbestellnr = (Collection<?>) htRahmenbestellt .get(ArtikelbestelltFac.KEY_RAHMENBESTELLT_BELEGCNR); if (aRahmenbestellnr != null && aRahmenbestellnr.size() > 0) { String[] aRahmenbestellnrStringArray = (String[]) aRahmenbestellnr.toArray(new String[0]); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_RAHMENBESTELLNR] = Helper .erzeugeStringAusStringArray(aRahmenbestellnrStringArray); } } // alle offenenen Bestellungen CNr ArrayList<String> alBestellungnr = new ArrayList<String>(); Collection<?> lFLRArtikelbestellt = getArtikelbestelltFac() .getArtikelbestellt(flrbestellung.getArtikel_i_id(), null, null); Iterator<?> iteratorFLRArtikelbestellt = lFLRArtikelbestellt.iterator(); while (iteratorFLRArtikelbestellt.hasNext()) { FLRArtikelbestellt fLRArtikelbestellt = (FLRArtikelbestellt) iteratorFLRArtikelbestellt.next(); BestellpositionDto bestellpositionDto = null; BestellungDto bestellungDto = null; if (fLRArtikelbestellt.getC_belegartnr().equals(LocaleFac.BELEGART_BESTELLUNG)) { bestellpositionDto = getBestellpositionFac() .bestellpositionFindByPrimaryKey(fLRArtikelbestellt.getI_belegartpositionid()); if (!bestellpositionDto.getBestellpositionstatusCNr() .equals(BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)) { bestellungDto = getBestellungFac() .bestellungFindByPrimaryKey(bestellpositionDto.getBestellungIId()); alBestellungnr.add(bestellungDto.getCNr()); } } } // offene Bestellungen CNr als String uebergeben if (alBestellungnr.size() > 0) { String[] aArtikelbestellNr = (String[]) alBestellungnr.toArray(new String[0]); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_OFFENE_BESTELLNR] = Helper .erzeugeStringAusStringArray(aArtikelbestellNr); } // ---------------- // Artikellieferant, wenn vorhanden ArtikellieferantDto artikellieferantDto = getArtikelFac() .artikellieferantFindByArtikellIIdLieferantIIdOhneExc(flrbestellung.getArtikel_i_id(), flrbestellung.getLieferant_i_id(), theClientDto); if (artikellieferantDto != null) { data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_ARTIKEL_IDENTNUMMER] = artikellieferantDto .getCArtikelnrlieferant(); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_ARTIKEL_BEZEICHNUNG] = artikellieferantDto .getCBezbeilieferant(); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_STANDARDMENGE] = artikellieferantDto .getFStandardmenge(); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_LIEFERANT_MATERIALZUSCHLAG] = artikellieferantDto .getNMaterialzuschlag(); } BigDecimal rahmenbedarf = this.getRahmenbedarfeFac() .getSummeAllerRahmenbedarfeEinesArtikels(flrbestellung.getArtikel_i_id()); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKEL_RAHMENDETAILBEDARF] = rahmenbedarf; BigDecimal nLagersoll = new BigDecimal(0); BigDecimal nLagermindest = new BigDecimal(0); BigDecimal nArtikelPreis = new BigDecimal(0); BigDecimal nAnzahlArtikelRes = new BigDecimal(0); BigDecimal nFehlMenge = new BigDecimal(0); if (oArtikelDto.getFLagermindest() != null) { nLagermindest = new BigDecimal(oArtikelDto.getFLagermindest()); } data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELLAGERMINDESTSTAND] = nLagermindest; if (oArtikelDto.getFLagersoll() != null) { nLagersoll = new BigDecimal(oArtikelDto.getFLagersoll()); } data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELLAGERSOLL] = nLagersoll; // PJ 14828 BigDecimal bdLagerstand = new BigDecimal(0); if (Helper.short2Boolean(flrbestellung.getFlrartikel().getB_lagerbewirtschaftet())) { for (int j = 0; j < lagerDto.length; j++) { if (Helper.short2boolean(lagerDto[j].getBBestellvorschlag())) { bdLagerstand = bdLagerstand.add(getLagerFac().getLagerstand(oArtikelDto.getIId(), lagerDto[j].getIId(), theClientDto)); } } } data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELLAGERSTAND] = bdLagerstand; data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELEINHEIT] = flrbestellung.getFlrartikel() .getEinheit_c_nr(); if (flrbestellung.getN_nettoeinzelpreis() != null) { nArtikelPreis = flrbestellung.getN_nettoeinzelpreis(); } data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELPREIS] = nArtikelPreis; nAnzahlArtikelRes = getReservierungFac().getAnzahlReservierungen(flrbestellung.getArtikel_i_id(), theClientDto); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELRESERVIERUNG] = nAnzahlArtikelRes; nFehlMenge = getFehlmengeFac().getAnzahlFehlmengeEinesArtikels(flrbestellung.getArtikel_i_id(), theClientDto); data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_ARTIKELFEHLMENGE] = nFehlMenge; // Verwendungsnachweis Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria critVW = session2.createCriteria(FLRStuecklisteposition.class) .createAlias( com.lp.server.stueckliste.service.StuecklisteFac.FLR_STUECKLISTEPOSITION_FLRARTIKEL, "a") .add(Restrictions.eq("a.i_id", flrbestellung.getArtikel_i_id())) .addOrder(Order.asc("a.c_nr")); List<?> results = critVW.list(); Iterator itVW = results.iterator(); Object[][] dataSub = new Object[results.size()][3]; String[] fieldnames = new String[] { "F_ARTIKEL", "F_BEZEICHNUNG", "F_MENGE" }; int iZeileSub = 0; while (itVW.hasNext()) { FLRStuecklisteposition stkpos = (FLRStuecklisteposition) itVW.next(); dataSub[iZeileSub][0] = stkpos.getFlrstueckliste().getFlrartikel().getC_nr(); ArtikelDto aDto = getArtikelFac().artikelFindByPrimaryKeySmall( stkpos.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); dataSub[iZeileSub][1] = aDto.formatBezeichnung(); dataSub[iZeileSub][2] = stkpos.getN_menge(); iZeileSub++; } data[i][BestellungReportFac.REPORT_BESTELLVORSCHLAG_SUBREPORT_VERWENDUNGSNACHWEIS] = new LPDatenSubreport( dataSub, fieldnames); session2.close(); i++; } // die Parameter dem Report uebergeben HashMap<String, Object> mapParameter = new HashMap<String, Object>(); mapParameter.put(LPReport.P_SORTIERUNG, buildSortierungBestellvorschlag(krit, theClientDto)); mapParameter.put(LPReport.P_FILTER, buildFilterBestellungOffene(krit, theClientDto)); mapParameter.put("P_SORTIERENACHBELEGART", new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER)); mapParameter.put("P_SORTIERENACHIDENT", new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT)); mapParameter.put(LPReport.P_SORTIERENACHLIEFERANT, new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER)); mapParameter.put(P_MANDANTWAEHRUNG, theClientDto.getSMandantenwaehrung()); mapParameter.put("P_ANFRAGEVORSCHLAG", new Boolean(bAnfragevorschlag)); initJRDS(mapParameter, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNG_JOURNAL_BESTELLVORSCHLAG, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); oPrintO = getReportPrint(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { closeSession(session); } return oPrintO; }
From source file:com.lp.server.bestellung.ejbfac.BestellvorschlagFacBean.java
License:Open Source License
private void verdichteBestellvorschlagNachMindesbestellmengen(boolean bBeruecksichtigeProjektklammer, TheClientDto theClientDto) throws EJBExceptionLP { SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null;//from w ww .j ava 2s . c o m try { session = factory.openSession(); // Zuerst die ID's aller vorkommender Artikel holen. String queryString = "select distinct bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_ARTIKEL_I_ID + " from FLRBestellvorschlag bestellvorschlag where bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_MANDANT_C_NR + "='" + theClientDto.getMandant() + "'"; org.hibernate.Query query = session.createQuery(queryString); List<?> rowCountResult = query.list(); // nun die Eintraege fuer jeden Artikel verdichten. for (Iterator<?> itArtikel = rowCountResult.iterator(); itArtikel.hasNext();) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall((Integer) itArtikel.next(), theClientDto); ArrayList<Integer> alProjekte = new ArrayList<Integer>(); if (bBeruecksichtigeProjektklammer == true) { String queryStringProjekte = "select distinct bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_PROJEKT_I_ID + " from FLRBestellvorschlag bestellvorschlag where bestellvorschlag.artikel_i_id=" + artikelDto.getIId() + " AND bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_MANDANT_C_NR + "='" + theClientDto.getMandant() + "'"; org.hibernate.Query queryProjekte = session.createQuery(queryStringProjekte); List<?> resultProjekte = queryProjekte.list(); Iterator itProjekte = resultProjekte.iterator(); while (itProjekte.hasNext()) { Integer projektIId = (Integer) itProjekte.next(); alProjekte.add(projektIId); } } else { alProjekte.add(null); } for (int j = 0; j < alProjekte.size(); j++) { Integer projektIId = alProjekte.get(j); // Alle BV-Eintraege des Mandanten auflisten. Criteria crit = session.createCriteria(FLRBestellvorschlag.class); // Filter nach Mandant crit.add(Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_MANDANT_C_NR, theClientDto.getMandant())); // Filter nach Artikel crit.add(Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_ARTIKEL_I_ID, artikelDto.getIId())); if (bBeruecksichtigeProjektklammer == true) { if (projektIId == null) { crit.add(Restrictions.isNull(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_PROJEKT_I_ID)); } else { crit.add(Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_PROJEKT_I_ID, projektIId)); } } // Sortierung nach Liefertermin. crit.addOrder(Order.asc(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_T_LIEFERTERMIN)); List<?> resultList = crit.list(); // Da die Eintraege zwischendurch auf Mindest- bzw. // Verpackungsmengen // aufgerundet werden muessen, entwickelt sich zwischendurch // ein // Guthaben BigDecimal bdGuthaben = new BigDecimal(0); ArtikellieferantDto artLief = null; // nun alle Eintraege durchiterieren. for (Iterator<?> itBV = resultList.iterator(); itBV.hasNext();) { FLRBestellvorschlag bv = (FLRBestellvorschlag) itBV.next(); Bestellvorschlag bvEntity = em.find(Bestellvorschlag.class, bv.getI_id()); if (bvEntity == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FIND, ""); } if (bv.getArtikel_i_id() != null && bv.getLieferant_i_id() != null) { if (artLief == null) { // lazy loading fuer jeden // Artikel. artLief = getArtikelFac().artikellieferantFindByArtikellIIdLieferantIIdOhneExc( bv.getArtikel_i_id(), bv.getLieferant_i_id(), theClientDto); } // Wenn der Artikellieferant definiert ist (von dort // kommen VPE und Mindestbestellmenge) if (artLief != null) { if (bdGuthaben.compareTo(bv.getN_zubestellendemenge()) >= 0) { // Wenn durch Mengenerhoehungen vorheriger // Eintraege genug Guthaben // "erzielt" wurde, um auf diese Position // verzichten zu koennen -> loeschen. bdGuthaben = bdGuthaben.subtract(bv.getN_zubestellendemenge()); removeBestellvorschlag(bv.getI_id()); } else { BigDecimal bdMindestbestellmenge = new BigDecimal(0); if (artLief.getFMindestbestelmenge() != null) { // Ist keine Mindestbestellmenge // definiert, // kann ich deren Behandlung als // abgeschlossen betrachten. bdMindestbestellmenge = new BigDecimal(artLief.getFMindestbestelmenge()); } // Wenn die zu bestellende Menge // geringer // als die Mindestbestellmenge ist, // dann muss ich auf die // Mindestbestellmenge // erhoehen. if (bv.getN_zubestellendemenge().compareTo(bdMindestbestellmenge) < 0) { BigDecimal bdDifferenz = bdMindestbestellmenge .subtract(bv.getN_zubestellendemenge()); bv.setN_zubestellendemenge(bdMindestbestellmenge); bdGuthaben = bdGuthaben.add(bdDifferenz); // speichern bvEntity.setNZubestellendemenge(bdMindestbestellmenge); } // Zuletzt muss noch auf die // Verpackungseinheit // geprueft werden. (sofern diese definiert // ist) if (artLief.getNVerpackungseinheit() != null) { if (artLief.getNVerpackungseinheit().doubleValue() != 0) { // Die zu bestellende Menge muss // immer // ein Vielfaches der VPE sein. int iNachkommastellenMandant = getMandantFac() .getNachkommastellenMenge(theClientDto.getMandant()); BigDecimal bdVPE = artLief.getNVerpackungseinheit(); bdVPE = bdVPE.setScale(iNachkommastellenMandant, RoundingMode.HALF_UP); BigDecimal bdMenge = bv.getN_zubestellendemenge() .setScale(iNachkommastellenMandant, RoundingMode.HALF_UP); BigDecimal bdDivRest = bdMenge.divideAndRemainder(bdVPE, new MathContext(4, RoundingMode.HALF_UP))[1].setScale( iNachkommastellenMandant, RoundingMode.HALF_UP); if (bdDivRest.compareTo( new BigDecimal(0).setScale(iNachkommastellenMandant)) != 0) { BigDecimal bdDifferenz = bdVPE.subtract(bdDivRest); bdGuthaben = bdGuthaben.add(bdDifferenz); // speichern bvEntity.setNZubestellendemenge( bvEntity.getNZubestellendemenge().add(bdDifferenz)); } } } } } } } } } } // catch (FinderException ex) { // throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex); // } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { closeSession(session); } }
From source file:com.lp.server.bestellung.ejbfac.BestellvorschlagFacBean.java
License:Open Source License
private void verdichteBestellvorschlagNachDatum(Long lVerdichtungszeitraumparam, boolean bBeruecksichtigeProjektklammer, TheClientDto theClientDto) { SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null;// w ww .j ava 2 s . c o m session = factory.openSession(); // Zuerst die ID's aller vorkommender Artikel holen. String queryString = "select distinct bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_ARTIKEL_I_ID + " from FLRBestellvorschlag bestellvorschlag where bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_MANDANT_C_NR + "='" + theClientDto.getMandant() + "'"; org.hibernate.Query query = session.createQuery(queryString); List<?> rowCountResult = query.list(); // nun die Eintraege fuer jeden Artikel verdichten. for (Iterator<?> itArtikel = rowCountResult.iterator(); itArtikel.hasNext();) { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall((Integer) itArtikel.next(), theClientDto); ArrayList<Integer> alProjekte = new ArrayList<Integer>(); if (bBeruecksichtigeProjektklammer == true) { String queryStringProjekte = "select distinct bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_PROJEKT_I_ID + " from FLRBestellvorschlag bestellvorschlag where bestellvorschlag.artikel_i_id=" + artikelDto.getIId() + " AND bestellvorschlag." + BestellvorschlagFac.FLR_BESTELLVORSCHLAG_MANDANT_C_NR + "='" + theClientDto.getMandant() + "'"; org.hibernate.Query queryProjekte = session.createQuery(queryStringProjekte); List<?> resultProjekte = queryProjekte.list(); Iterator itProjekte = resultProjekte.iterator(); while (itProjekte.hasNext()) { Integer projektIId = (Integer) itProjekte.next(); alProjekte.add(projektIId); } } else { alProjekte.add(null); } for (int j = 0; j < alProjekte.size(); j++) { Integer projektIId = alProjekte.get(j); // Alle BV-Eintraege des Mandanten auflisten. Criteria crit = session.createCriteria(FLRBestellvorschlag.class); // Filter nach Mandant crit.add(Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_MANDANT_C_NR, theClientDto.getMandant())); // Filter nach Artikel crit.add(Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_ARTIKEL_I_ID, artikelDto.getIId())); if (bBeruecksichtigeProjektklammer == true) { if (projektIId == null) { crit.add(Restrictions.isNull(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_PROJEKT_I_ID)); } else { crit.add( Restrictions.eq(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_PROJEKT_I_ID, projektIId)); } } // Sortierung nach Liefertermin. crit.addOrder(Order.asc(BestellvorschlagFac.FLR_BESTELLVORSCHLAG_T_LIEFERTERMIN)); List<?> resultList = crit.list(); FLRBestellvorschlag[] bestVorschlaege = (FLRBestellvorschlag[]) resultList .toArray(new FLRBestellvorschlag[] {}); // der erste Bestellvorschlag ist der frueheste Bestellvorschlag bvFirst = em.find(Bestellvorschlag.class, bestVorschlaege[0].getI_id()); if (bvFirst == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ""); } Long lVerdichtungszeitraum = 60 * 60 * 1000 * 24 * lVerdichtungszeitraumparam; // Alle Bestellvorschlaege dieses Artikels, // die vor dem Datum sind muessen auf diesem gesammelt werden Timestamp dateOfVerdichtung = new Timestamp( bvFirst.getTLiefertermin().getTime() + lVerdichtungszeitraum); for (int i = 1; i < bestVorschlaege.length; i++) { if (bestVorschlaege[i].getT_liefertermin().before(dateOfVerdichtung) || bestVorschlaege[i].getT_liefertermin().compareTo(dateOfVerdichtung) == 0) { // Bestellvorschlag wird auf vorherigen verdichtet bvFirst.setNZubestellendemenge( bvFirst.getNZubestellendemenge().add(bestVorschlaege[i].getN_zubestellendemenge())); // Der Beleg wird geloescht, da das nicht mehr stimmen // kann bvFirst.setBelegartCNr(null); bvFirst.setIBelegartid(null); bvFirst.setIBelegartpositionid(null); if (bBeruecksichtigeProjektklammer == false) { bvFirst.setProjektIId(null); } // Der Bestellvorschlag der verdichtet wurde kann // geloescht werden removeBestellvorschlag(bestVorschlaege[i].getI_id()); System.out.println("verdichtet"); } else { // Der Liefertermin wird die neue Referenz // fuer die naechsten Vorschlaege bvFirst = em.find(Bestellvorschlag.class, bestVorschlaege[i].getI_id()); dateOfVerdichtung = new Timestamp( bvFirst.getTLiefertermin().getTime() + lVerdichtungszeitraum); } } } } }
From source file:com.lp.server.bestellung.ejbfac.BSMahnwesenFacBean.java
License:Open Source License
/** * erstellt Liefermahnungen, ABMahnungen oder beides ruft dazu die Methoden * echteLiefermahnungen() und (oder) echteABMahnungen() auf * ------------------//from w ww .j a va2 s . c o m * ---------------------------------------------------------- * * @param echteLiefermahnung * boolean * @param echteABMahnungen * boolean * @param theClientDto * String * @throws EJBExceptionLP * @return Integer * ---------------------------------------------------------- * ----------------- */ @TransactionAttribute(TransactionAttributeType.NEVER) private Integer createMahnungen(boolean echteLiefermahnung, boolean echteABMahnungen, boolean liefererinnerung, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null; try { // Mahnstufen des Mandanten holen BSMahnstufeDto bsmahnstufeDto[] = this.bsmahnstufeFindByMandantCNr(theClientDto.getMandant(), theClientDto); if (bsmahnstufeDto == null || bsmahnstufeDto.length == 0) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_KEINE_MAHNSTUFEN_EINGETRAGEN, ""); } // mahnlaufIId generieren wird fuer Liefermahnung und ABMahnung // gebraucht Integer bsmahnlaufIId = null; BSMahnlaufDto bsmahnlaufDto = null; bsmahnlaufIId = context.getBusinessObject(BSMahnwesenFac.class).createBSMahnlauf(bsmahnlaufDto, theClientDto); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria crit = session.createCriteria(FLRBestellpositionReport.class); // folgende Positionsarten werden ignoriert. Collection<String> cPositionsarten = new LinkedList<String>(); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_BETRIFFT); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_SEITENUMBRUCH); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_LEERZEILE); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTBAUSTEIN); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTEINGABE); crit.add(Restrictions.not(Restrictions .in(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, cPositionsarten))); // PJ 16536 String queryString = "SELECT artgru_i_id FROM FLRMahngruppe m" + " WHERE m.flrartikelgruppe.mandant_c_nr ='" + theClientDto.getMandant() + "'"; Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Query query = session2.createQuery(queryString); List<?> results = query.list(); Iterator<?> resultListIterator = results.iterator(); Integer[] ids = new Integer[results.size()]; int row = 0; while (resultListIterator.hasNext()) { Integer artgruIId = (Integer) resultListIterator.next(); ids[row] = artgruIId; row++; } session2.close(); if (ids.length > 0) { crit.createAlias("flrartikel", "a"); crit.createAlias("a.flrartikelgruppe", "ag"); crit.add(Restrictions.in("ag.i_id", ids)); } Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); // nach mandanten filtern critBestellung .add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // PJ 15165 critBestellung.add(Restrictions.or(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS), Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS, Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()))))); // nach Stati filtern Collection<String> cStati = new LinkedList<String>(); cStati.add(BestellungFac.BESTELLSTATUS_OFFEN); cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT); // SK added BESTELLSTATUS_TEILERLEDIGT cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT); critBestellung.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)); List<?> list = crit.list(); for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRBestellpositionReport flrbespos = (FLRBestellpositionReport) iter.next(); /** * nur Liefermahnungen deren Status bestaetigt ist oder deren * Liefertermin vor heute ist */ if (echteLiefermahnung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { Integer latest = 0; for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > latest) { latest = bsmahnungdto[y].getMahnstufeIId(); } } for (int i = 0; i < bsmahnstufeDto.length; i++) { if (latest.equals(bsmahnstufeDto[i].getIId())) { echteLiefermahnungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } else { echteLiefermahnungen(flrbespos, bsmahnlaufIId, null, theClientDto); } } // lt. WH boolean bEchteLiefermahnungVorhanden = false; BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > 0) { bEchteLiefermahnungVorhanden = true; } } } if (bEchteLiefermahnungVorhanden == false) { /** * nur ABMahnungen deren Status offen ist ausser der * Liefertermin ist vor heute dann ist es eine Liefermahnung */ if (echteABMahnungen == true) { // hier wird mahnstufe 0 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId().equals(new Integer(BSMahnwesenFac.MAHNSTUFE_0))) { echteABMahnungen(flrbespos, bsmahnstufeDto[i], bsmahnlaufIId, theClientDto); } } } // lt. WH boolean bABLiefermahnungVorhanden = false; bsmahnungdto = getBSMahnwesenFac().bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() == 0) { bABLiefermahnungVorhanden = true; } } } if (bABLiefermahnungVorhanden == false) { // lt. WH Liefererinnerung ist wie echte // Liefermahnung, // jedoch // nur mit Mahnstufe -1 if (liefererinnerung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { if (flrbespos.getT_lieferterminbestaetigt() == null) { // hier wird mahnstufe -1 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId() .equals(new Integer(BSMahnwesenFac.MAHNSTUFE_MINUS1))) { liefererinnerungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } } } } } return bsmahnlaufIId; } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
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 w w w .j a va2 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.eingangsrechnung.ejbfac.EingangsrechnungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printOffene(TheClientDto theClientDto, int iSort, Integer lieferantIId, Date dStichtag, boolean bStichtagIstFreigabeDatum, boolean bZusatzkosten, boolean mitNichtZugeordnetenBelegen) { this.useCase = UC_OFFENE; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null;/*w w w .java2 s . c om*/ try { Map<Integer, ZahlungszielDto> mZahlungsziel = getMandantFac() .zahlungszielFindAllByMandantAsDto(theClientDto.getMandant(), theClientDto); session = factory.openSession(); List<Integer> lieferantenIIds = new ArrayList<Integer>(); if (lieferantIId != null) { lieferantenIIds.add(lieferantIId); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { Iterator<?> iter = session.createCriteria(FLRLieferant.class).createAlias("flrpartner", "p") .addOrder(Order.asc("p.c_name1nachnamefirmazeile1")) .add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())) .list().iterator(); while (iter.hasNext()) { lieferantenIIds.add(((FLRLieferant) iter.next()).getI_id()); } } else { lieferantenIIds.add(null); } List<Object[]> dataList = new ArrayList<Object[]>(); for (Integer liefIId : lieferantenIIds) { Criteria crit = session.createCriteria(FLREingangsrechnungReport.class); // Filter nach Mandant crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); Collection<String> cStati = new LinkedList<String>(); cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); cStati.add(EingangsrechnungFac.STATUS_ANGELEGT); cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT); crit.add(Restrictions.in("status_c_nr", cStati)); if (bZusatzkosten) { crit.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)); } else { crit.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN))); } if (liefIId != null) { crit.add(Restrictions.eq("lieferant_i_id", liefIId)); } if (bStichtagIstFreigabeDatum) { crit.add(Restrictions.le("t_freigabedatum", dStichtag)); } else { crit.add(Restrictions.le("t_belegdatum", dStichtag)); } crit.add(Restrictions.or(Restrictions.gt("t_bezahltdatum", dStichtag), Restrictions.isNull("t_bezahltdatum"))); crit.add(Restrictions.or(Restrictions.gt("t_manuellerledigt", dStichtag), Restrictions.isNull("t_manuellerledigt"))); if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) { crit.addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { crit.addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) { crit.addOrder(Order.asc("t_faelligkeit")).addOrder(Order.asc("c_nr")); // Inerhalb wird immer nach // Rechnungsnummer sortiert } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) { crit.addOrder(Order.asc("t_faelligkeit_skonto1")).addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) { crit.addOrder(Order.asc("t_faelligkeit_skonto2")).addOrder(Order.asc("c_nr")); } if (iSort != EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { mitNichtZugeordnetenBelegen = false; } List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); int row = 0; Object[][] tempData = new Object[resultList.size()][OFFENE_ANZAHL_FELDER]; if (mitNichtZugeordnetenBelegen) { LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(liefIId, theClientDto); if (liefDto.getKontoIIdKreditorenkonto() != null) { // TODO: nur FLRFinanzBuchungDetail holen Query query = session.createQuery( "SELECT buchungdetail from FLRFinanzBuchungDetail buchungdetail LEFT OUTER JOIN buchungdetail.flrbuchung AS buchung" + " WHERE" + BuchungDetailQueryBuilder.buildNurOffeneBuchungDetails("buchungdetail") + "AND" + BuchungDetailQueryBuilder.buildNichtZuordenbareVonKonto("buchungdetail", "buchung", liefDto.getKontoIIdKreditorenkonto()) + (dStichtag == null ? "" : ("AND buchung.d_buchungsdatum<='" + Helper.formatDateWithSlashes(dStichtag) + "'"))); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> bdList = query.list(); if (bdList.size() > 0) { if (tempData.length < 1) { tempData = new Object[1][OFFENE_ANZAHL_FELDER]; String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2(); tempData[0][OFFENE_FELD_FIRMA] = sFirma; tempData[0][OFFENE_FELD_KREDITORENNR] = getFinanzFac() .kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto()).getCNr(); } tempData[0][OFFENE_SUBREPORT_OFFENE_BUCHUNGEN] = FinanzSubreportGenerator .createBuchungsdetailSubreport(bdList, false); } } } while (resultListIterator.hasNext()) { FLREingangsrechnungReport er = (FLREingangsrechnungReport) resultListIterator.next(); EingangsrechnungDto erDto = getEingangsrechnungFac() .eingangsrechnungFindByPrimaryKey(er.getI_id()); LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(erDto.getLieferantIId(), theClientDto); String sErCNr = erDto.getCNr(); String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2(); ZahlungszielDto zzDto = mZahlungsziel.get(erDto.getZahlungszielIId()); tempData[row][OFFENE_FELD_ER_C_NR] = sErCNr; tempData[row][OFFENE_FELD_FIRMA] = sFirma; tempData[row][OFFENE_FELD_ERDATUM] = er.getT_belegdatum(); tempData[row][OFFENE_FELD_MAHNDATUM] = erDto.getTMahndatum(); tempData[row][OFFENE_FELD_KREDITORENNR] = liefDto.getKontoIIdKreditorenkonto() != null ? getFinanzFac().kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto()) .getCNr() : null; tempData[row][OFFENE_FELD_MAHNSTUFE] = er.getMahnstufe_i_id(); tempData[row][OFFENE_FELD_FREIGABEDATUM] = er.getT_freigabedatum(); tempData[row][OFFENE_FELD_WERT] = erDto.getNBetrag(); tempData[row][OFFENE_FELD_LIEFERANTENRECHNUNGSNUMMER] = erDto.getCLieferantenrechnungsnummer(); tempData[row][OFFENE_FELD_TEXT] = erDto.getCText(); if (zzDto != null) { tempData[row][OFFENE_FELD_ZAHLUNGSZIEL] = zzDto.getCBez(); tempData[row][OFFENE_FELD_SKONTOTAGE1] = zzDto.getSkontoAnzahlTage1(); tempData[row][OFFENE_FELD_SKONTOTAGE2] = zzDto.getSkontoAnzahlTage2(); tempData[row][OFFENE_FELD_SKONTOPROZENT1] = zzDto.getSkontoProzentsatz1(); tempData[row][OFFENE_FELD_SKONTOPROZENT2] = zzDto.getSkontoProzentsatz2(); tempData[row][OFFENE_FELD_NETTOTAGE] = zzDto.getAnzahlZieltageFuerNetto(); if (erDto.getDFreigabedatum() != null) { if (zzDto.getAnzahlZieltageFuerNetto() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT] = er.getT_faelligkeit(); } if (zzDto.getSkontoAnzahlTage1() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO1] = er.getT_faelligkeit_skonto1(); } if (zzDto.getSkontoAnzahlTage2() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO2] = er.getT_faelligkeit_skonto2(); } } } // datum der letzten zahlung bis zum stichtag ermitteln EingangsrechnungzahlungDto[] zahlungen = getEingangsrechnungFac() .eingangsrechnungzahlungFindByEingangsrechnungIId(er.getI_id()); java.sql.Date dZahldatum = null; for (int i = 0; i < zahlungen.length; i++) { if ((dZahldatum == null || zahlungen[i].getTZahldatum().after(dZahldatum)) && !zahlungen[i].getTZahldatum().after(dStichtag)) { dZahldatum = new Date(zahlungen[i].getTZahldatum().getTime()); } } tempData[row][OFFENE_FELD_ZAHLDATUM] = dZahldatum; // Zahlungsbetrag bis zum Stichtag ermitteln BigDecimal bdBezahltFw = new BigDecimal(0); BigDecimal bdBezahltKursBelegdatum = new BigDecimal(0); for (int i = 0; i < zahlungen.length; i++) { if (!zahlungen[i].getTZahldatum().after(dStichtag)) { bdBezahltFw = bdBezahltFw.add(zahlungen[i].getNBetragfw()); bdBezahltKursBelegdatum = bdBezahltKursBelegdatum .add(zahlungen[i].getNBetragfw().multiply(erDto.getNKurs())); } } tempData[row][OFFENE_FELD_BETRAG] = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdBezahltFw, erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), // new Date(System.currentTimeMillis()), dStichtag, theClientDto); tempData[row][OFFENE_FELD_BETRAG_KURS_BELEGDATUM] = bdBezahltKursBelegdatum; tempData[row][OFFENE_FELD_OFFEN] = getLocaleFac().rechneUmInAndereWaehrungZuDatum( erDto.getNBetragfw().subtract(bdBezahltFw), erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), // new Date(System.currentTimeMillis()), dStichtag, theClientDto); tempData[row][OFFENE_FELD_OFFEN_KURS_BELEGDATUM] = erDto.getNBetrag() .subtract(bdBezahltKursBelegdatum); tempData[row][OFFENE_FELD_BETRAG_FW] = bdBezahltFw; tempData[row][OFFENE_FELD_OFFEN_FW] = erDto.getNBetragfw().subtract(bdBezahltFw); tempData[row][OFFENE_FELD_ERWAEHRUNG] = erDto.getWaehrungCNr(); tempData[row][OFFENE_FELD_WERT_FW] = erDto.getNBetragfw(); tempData[row][OFFENE_FELD_ERKURS] = erDto.getNKurs(); WechselkursDto wkDto = getLocaleFac().getKursZuDatum(erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), dStichtag, theClientDto); tempData[row][OFFENE_FELD_KURS_STICHTAG] = wkDto.getNKurs() .setScale(LocaleFac.ANZAHL_NACHKOMMASTELLEN_WECHSELKURS, RoundingMode.HALF_EVEN); row++; } dataList.addAll(Arrays.asList(tempData)); } data = dataList.toArray(new Object[0][]); Map<String, Object> mapParameter = new TreeMap<String, Object>(); mapParameter.put("P_DATUM", dStichtag); mapParameter.put("P_STICHTAGISTFREIGABEDATUM", new Boolean(bStichtagIstFreigabeDatum)); mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten)); String sSortierung = null; if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { sSortierung = "Lieferant"; } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) { sSortierung = "Rechnungsnummer"; } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) { sSortierung = getTextRespectUISpr("lp.faelligkeit", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) { sSortierung = getTextRespectUISpr("er.faelligkeitskonto1", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) { sSortierung = getTextRespectUISpr("er.faelligkeitskonto2", theClientDto.getMandant(), theClientDto.getLocUi()); } mapParameter.put("P_SORTIERUNGNACHLIEFERANT", new Boolean(iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT)); mapParameter.put(LPReport.P_SORTIERUNG, sSortierung); String sZessionstext = null; sZessionstext = getParameterFac().parametermandantFindByPrimaryKey(ParameterFac.PARAMETER_ZESSIONSTEXT, ParameterFac.KATEGORIE_ALLGEMEIN, theClientDto.getMandant()).getCWert(); if (sZessionstext != null) { mapParameter.put("P_ZESSIONSTEXT", sZessionstext); } mapParameter.put("P_MANDANTENWAEHRUNG", theClientDto.getSMandantenwaehrung()); initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL, EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }