List of usage examples for org.hibernate.criterion Restrictions not
public static Criterion not(Criterion expression)
From source file:com.lp.server.artikel.ejbfac.InventurFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public void inventurDurchfuehren(Integer inventurIId, boolean bNichtInventierteArtikelAufNullSetzen, TheClientDto theClientDto) throws EJBExceptionLP { InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); myLogger.logKritisch("Inventur Start:" + new Timestamp(System.currentTimeMillis())); // Inventurdatum auf morgen 00:00 setzen Calendar c = Calendar.getInstance(); c.setTimeInMillis(inventurDto.getTInventurdatum().getTime()); c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); Timestamp ts = new Timestamp(c.getTimeInMillis()); inventurDto.setTInventurdatum(Helper.cutTimestamp(ts)); if (Helper.short2boolean(inventurDto.getBInventurdurchgefuehrt()) == true) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_INVENTUR_BEREITS_DURCHGEFUEHRT, new Exception("Helper.short2boolean(inventurDto.getBInventurdurchgefuehrt())==true")); }/*w ww. j a v a 2 s . c om*/ try { // Wenn nur ein Lager angegeben, dann Inventur auch nur fuer ein // Lager durchfuehren LagerDto[] lagerDtos = null; if (inventurDto.getLagerIId() == null) { lagerDtos = getLagerFac().lagerFindByMandantCNr(theClientDto.getMandant()); } else { lagerDtos = new LagerDto[1]; lagerDtos[0] = getLagerFac().lagerFindByPrimaryKey(inventurDto.getLagerIId()); } SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); Criteria artikelQuery = session.createCriteria(FLRArtikel.class); artikelQuery.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())) .add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKELLISTE_ARTIKELART_C_NR, new String[] { ArtikelFac.ARTIKELART_HANDARTIKEL }))); artikelQuery.addOrder(Order.asc("i_id")); List<?> resultList = artikelQuery.list(); Iterator<?> resultListIterator = resultList.iterator(); int ii = 0; while (resultListIterator.hasNext()) { FLRArtikel artikel = (FLRArtikel) resultListIterator.next(); ii += 1; // myLogger.logKritisch(artikel.getC_nr()+": "+new // Integer(ii).toString()); // long t=System.currentTimeMillis(); for (int i = 0; i < lagerDtos.length; i++) { long l = System.currentTimeMillis(); // wenn bNichtInventierteArtikelAufNullSetzen==true, dann // artikel mit jetzt auf lagerstand null setzen if (bNichtInventierteArtikelAufNullSetzen == true && Helper.short2boolean(artikel.getB_lagerbewirtschaftet()) == true) { if (Helper.short2boolean(artikel.getB_chargennrtragend()) == false && Helper.short2boolean(artikel.getB_seriennrtragend()) == false) { InventurlisteDto[] ilDtos = inventurlisteFindByInventurIIdLagerIIdArtikelIId( inventurIId, lagerDtos[i].getIId(), artikel.getI_id(), theClientDto); if (ilDtos.length < 1) { InventurlisteDto inventurlisteDto = new InventurlisteDto(); inventurlisteDto.setArtikelIId(artikel.getI_id()); inventurlisteDto.setLagerIId(lagerDtos[i].getIId()); inventurlisteDto.setInventurIId(inventurIId); inventurlisteDto.setNInventurmenge(new BigDecimal(0)); getInventurFac().createInventurliste(inventurlisteDto, false, theClientDto); } } } InventurstandDto inventurstandDtoVorhanden = inventurstandfindByInventurIIdArtikelIIdLagerIIdOhneExc( inventurIId, lagerDtos[i].getIId(), artikel.getI_id(), theClientDto); if (inventurstandDtoVorhanden == null) { java.math.BigDecimal gestpreis = getLagerFac().getGestehungspreisZumZeitpunkt( artikel.getI_id(), lagerDtos[i].getIId(), inventurDto.getTInventurdatum(), theClientDto); if (gestpreis == null) { gestpreis = new BigDecimal(0); } InventurstandDto inventurstandDto = new InventurstandDto(); inventurstandDto.setArtikelIId(artikel.getI_id()); inventurstandDto.setInventurIId(inventurIId); inventurstandDto.setLagerIId(lagerDtos[i].getIId()); inventurstandDto .setNInventurmenge(getInventurstand(artikel.getI_id(), lagerDtos[i].getIId(), inventurDto.getIId(), inventurDto.getTInventurdatum(), theClientDto)); inventurstandDto.setNInventurpreis(gestpreis); getInventurFac().createInventurstand(inventurstandDto, theClientDto); } } // myLogger.logKritisch("*"+ new // Long(System.currentTimeMillis()-t).toString()); // t=System.currentTimeMillis(); } session.close(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } InventurDto inventur = inventurFindByPrimaryKey(inventurIId, theClientDto); inventur.setBInventurdurchgefuehrt(Helper.boolean2Short(true)); inventur.setTInventurdurchgefuehrt(new Timestamp(System.currentTimeMillis())); inventur.setPersonalIIdInventurdurchgefuehrt(theClientDto.getIDPersonal()); getInventurFac().updateInventur(inventur, theClientDto); myLogger.logKritisch("Inventur Ende:" + new Timestamp(System.currentTimeMillis())); }
From source file:com.lp.server.artikel.ejbfac.LagerFacBean.java
License:Open Source License
/** * Liefert die Mengenmaessige Lagerstandsveraenderung in einem Zeitraum * //from ww w . j ava 2 s . com * @param artikelIId * Integer * @param lagerIId * Integer * @param tVon * Timestamp * @param tBis * Timestamp * @param theClientDto * String * @return BigDecimal */ public BigDecimal getLagerstandsVeraenderungOhneInventurbuchungen(Integer artikelIId, Integer lagerIId, java.sql.Timestamp tVon, java.sql.Timestamp tBis, TheClientDto theClientDto) { if (artikelIId == null || lagerIId == null || tVon == null || tBis == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN, new Exception( "artikelIId == null || lagerIId == null || tsZeitpunkt == null || tBis == null")); } boolean bVonNachBis = false; if (tVon.after(tBis)) { bVonNachBis = true; java.sql.Timestamp tHelp = tVon; tVon = tBis; tBis = tHelp; } SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; session = factory.openSession(); String[] s = new String[1]; s[0] = LocaleFac.BELEGART_INVENTUR; org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class) .add(Expression.gt(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tVon)) .add(Expression.lt(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tBis)) .add(Restrictions.not(Expression.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, s))) .createAlias(LagerFac.FLR_LAGERPLAETZE_FLRARTIKEL, "a").add(Expression.eq("a.i_id", artikelIId)) .createAlias(LagerFac.FLR_LAGERPLAETZE_FLRLAGER, "l").add(Expression.eq("l.i_id", lagerIId)) .add(Expression.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false))) .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_I_ID_BUCHUNG)) .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT)); List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); BigDecimal lagerstandsVeraenderung = new BigDecimal(0); while (resultListIterator.hasNext()) { FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next(); if (lagerbewegung.getN_menge().doubleValue() > 0) { BigDecimal menge = lagerbewegung.getN_menge(); if (bVonNachBis == true) { menge = menge.multiply(new BigDecimal(-1)); } // Wenn Lagerabgang, dann abziehen Menge if (Helper.short2boolean(lagerbewegung.getB_abgang())) { lagerstandsVeraenderung = lagerstandsVeraenderung.subtract(menge); } else { lagerstandsVeraenderung = lagerstandsVeraenderung.add(menge); } } } session.close(); return lagerstandsVeraenderung; }
From source file:com.lp.server.artikel.ejbfac.LagerFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public String pruefeQuickLagerstandGegenEchtenLagerstand(Integer artikelIIdInput, TheClientDto theClientDto) { LagerDto[] lagerDtos = lagerFindByMandantCNr(theClientDto.getMandant()); String[] handartikel = new String[1]; handartikel[0] = ArtikelFac.ARTIKELART_HANDARTIKEL; Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRArtikel.class); crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); // crit.add(Restrictions.eq("i_id", 6901)); crit.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKEL_ARTIKELART_C_NR, handartikel))); crit.add(Expression.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, new Short((short) 1))); if (artikelIIdInput != null) { crit.add(Restrictions.eq("i_id", artikelIIdInput)); }//from w ww .j a va2s . c o m crit.addOrder(Order.asc("c_nr")); List<?> resultList = crit.list(); int zaehler = 1; byte[] CRLFAscii = { 13, 10 }; String rueckgabe = "ZAEHLER;ARTIKEL_I_ID;ARTIKEL_C_NR;LAGER;QUICK;LAGERSTAND" + new String(CRLFAscii); String sql = ""; Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext()) { FLRArtikel flrArtikel = (FLRArtikel) resultListIterator.next(); for (int i = 0; i < lagerDtos.length; i++) { LagerDto lagerDto = lagerDtos[i]; String ausgabe = flrArtikel.getI_id() + ";" + flrArtikel.getC_nr() + ";"; ausgabe += lagerDto.getCNr() + ";"; BigDecimal quicklagerstand = new BigDecimal(0); Artikellager artikellager = em.find(Artikellager.class, new ArtikellagerPK(flrArtikel.getI_id(), lagerDto.getIId())); if (artikellager == null) { ausgabe += "0;"; } else { quicklagerstand = artikellager.getNLagerstand(); } ausgabe += quicklagerstand.toString() + ";"; BigDecimal echterlagerstand = getLagerstandZumZeitpunkt(flrArtikel.getI_id(), lagerDto.getIId(), new java.sql.Timestamp(System.currentTimeMillis() + 3600000 * 24), theClientDto); ausgabe += echterlagerstand.toString() + ";"; if (quicklagerstand.doubleValue() != echterlagerstand.doubleValue()) { rueckgabe += zaehler + ";" + ausgabe + new String(CRLFAscii); System.out.println(zaehler + ";" + ausgabe); String update = "UPDATE WW_ARTIKELLAGER SET N_LAGERSTAND=" + echterlagerstand.doubleValue() + " WHERE ARTIKEL_I_ID=" + flrArtikel.getI_id() + " AND LAGER_I_ID=" + lagerDto.getIId(); System.out.println(update + ";" + new String(CRLFAscii)); sql += update + ";" + new String(CRLFAscii); zaehler++; } } } session.close(); return rueckgabe + sql; }
From source file:com.lp.server.artikel.ejbfac.LagerFacBean.java
License:Open Source License
public void pruefeQuickLagerstandGegenEchtenLagerstandUndFuehreAus(Integer artikelIIdInput, TheClientDto theClientDto) {// www. j a v a2s .c om LagerDto[] lagerDtos = lagerFindByMandantCNr(theClientDto.getMandant()); String[] handartikel = new String[1]; handartikel[0] = ArtikelFac.ARTIKELART_HANDARTIKEL; Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRArtikel.class); crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); // crit.add(Restrictions.eq("i_id", 6901)); crit.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKEL_ARTIKELART_C_NR, handartikel))); crit.add(Expression.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, new Short((short) 1))); if (artikelIIdInput != null) { crit.add(Restrictions.eq("i_id", artikelIIdInput)); } crit.addOrder(Order.asc("c_nr")); List<?> resultList = crit.list(); int zaehler = 1; byte[] CRLFAscii = { 13, 10 }; Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext()) { FLRArtikel flrArtikel = (FLRArtikel) resultListIterator.next(); for (int i = 0; i < lagerDtos.length; i++) { LagerDto lagerDto = lagerDtos[i]; String ausgabe = flrArtikel.getI_id() + ";" + flrArtikel.getC_nr() + ";"; ausgabe += lagerDto.getCNr() + ";"; BigDecimal quicklagerstand = new BigDecimal(0); Artikellager artikellager = em.find(Artikellager.class, new ArtikellagerPK(flrArtikel.getI_id(), lagerDto.getIId())); if (artikellager == null) { ausgabe += "0;"; } else { quicklagerstand = artikellager.getNLagerstand(); } ausgabe += quicklagerstand.toString() + ";"; BigDecimal echterlagerstand = getLagerstandZumZeitpunkt(flrArtikel.getI_id(), lagerDto.getIId(), new java.sql.Timestamp(System.currentTimeMillis() + 3600000 * 24), theClientDto); ausgabe += echterlagerstand.toString() + ";"; if (quicklagerstand.doubleValue() != echterlagerstand.doubleValue()) { // System.out.println(zaehler + ";" + ausgabe); String update = "UPDATE WW_ARTIKELLAGER SET N_LAGERSTAND=" + echterlagerstand.doubleValue() + " WHERE ARTIKEL_I_ID=" + flrArtikel.getI_id() + " AND LAGER_I_ID=" + lagerDto.getIId(); System.out.println(update + ";--BEREITS_AUSGEFUEHRT" + new String(CRLFAscii)); artikellager.setNLagerstand(echterlagerstand); em.flush(); zaehler++; } } } session.close(); }
From source file:com.lp.server.artikel.ejbfac.LagerFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public String pruefeVerbrauchteMenge(TheClientDto theClientDto) { System.out.println("ZAEHLER;I_ID_BUCHUNG;ARTIKEL_I_ID;ARTIKEL_C_NR;POSITIONSMENGE;VERBRAUCHTEMENGE"); byte[] CRLFAscii = { 13, 10 }; String rueckgabe = "ZAEHLER;I_ID_BUCHUNG;ARTIKEL_I_ID;ARTIKEL_C_NR;POSITIONSMENGE;VERBRAUCHTEMENGE" + new String(CRLFAscii); String[] handartikel = new String[1]; handartikel[0] = ArtikelFac.ARTIKELART_HANDARTIKEL; Session sessionArtikel = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria critArtikel = sessionArtikel.createCriteria(FLRArtikel.class); critArtikel.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); // crit.add(Restrictions.eq("i_id", 13995)); critArtikel.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKEL_ARTIKELART_C_NR, handartikel))); critArtikel.add(Expression.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, new Short((short) 1))); critArtikel.addOrder(Order.asc("c_nr")); List<?> resultListArtikel = critArtikel.list(); Iterator<?> resultListIteratorArtikel = resultListArtikel.iterator(); int row = 0;/*from ww w. ja va2s . c o m*/ while (resultListIteratorArtikel.hasNext()) { FLRArtikel flrArtikel = (FLRArtikel) resultListIteratorArtikel.next(); SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; session = factory.openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class) .createAlias(LagerFac.FLR_LAGERPLAETZE_FLRLAGER, "l"); crit.add(Expression.not(Expression.in("l.c_nr", new String[] { LagerFac.LAGER_KEINLAGER }))); crit.add(Expression.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(true))); crit.add(Expression.eq(LagerFac.FLR_LAGERBEWEGUNG_ARTIKEL_I_ID, flrArtikel.getI_id())); crit.addOrder(Order.asc(LagerFac.FLR_LAGERBEWEGUNG_I_ID_BUCHUNG)) .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT)); List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); int lastColumn = -1; while (resultListIterator.hasNext()) { FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next(); if (lastColumn == lagerbewegung.getI_id_buchung().intValue()) { } else { BigDecimal verbrauchteMenge = new BigDecimal(0); Query query = em.createNamedQuery("LagerabgangursprungfindByILagerbewegungid"); query.setParameter(1, lagerbewegung.getI_id_buchung()); Collection<?> cl = query.getResultList(); // if (cl.isEmpty()) { // verbrauchteMenge = new BigDecimal(0); // } // else { LagerabgangursprungDto[] dtos = assembleLagerabgangursprungDtos(cl); for (int i = 0; i < dtos.length; i++) { verbrauchteMenge = verbrauchteMenge.add(dtos[i].getNVerbrauchtemenge()); } if (lagerbewegung.getN_menge().compareTo(verbrauchteMenge) != 0) { row++; String zeile = row + ";" + lagerbewegung.getI_id_buchung() + ";" + lagerbewegung.getArtikel_i_id() + ";" + lagerbewegung.getFlrartikel().getC_nr() + ";" + lagerbewegung.getN_menge() + ";" + verbrauchteMenge; System.out.println(zeile); rueckgabe += zeile + new String(CRLFAscii); } lastColumn = lagerbewegung.getI_id_buchung().intValue(); } } session.close(); } sessionArtikel.close(); return rueckgabe; }
From source file:com.lp.server.artikel.ejbfac.LagerFacBean.java
License:Open Source License
public BigDecimal getAbgewertetenGestehungspreis(BigDecimal gestpreis, Integer artikelIId, Integer lagerIId, Timestamp tStichtag, int iMonate, double dProzent) { Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class); crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_ARTIKEL_I_ID, artikelIId)); crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false))); if (lagerIId != null) { crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_LAGER_I_ID, lagerIId)); }//from w w w. j av a 2 s .c om if (tStichtag != null) { crit.add(Restrictions.le(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tStichtag)); } else { crit.add(Restrictions.lt(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + 24 * 3600000)))); } // CK: Kundenwunsch am 2009-03-04: Handbuchungen und // Inventurbuchungen // sollen nicht beruecksichtigt werden String[] belegarten = new String[2]; belegarten[0] = LocaleFac.BELEGART_INVENTUR; belegarten[1] = LocaleFac.BELEGART_HAND; crit.add(Restrictions.not(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, belegarten))); // CK: Kundenwunsch am 2009-03-04: Es muessen sowohl // Zubuchungen, als auch Abbuchungen // beruecksichtigt werden // crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper // .boolean2Short(false))); crit.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT)); List results = crit.list(); Iterator resultListIterator = results.iterator(); ArrayList<FLRLagerbewegung> alZugaenge = new ArrayList<FLRLagerbewegung>(); while (resultListIterator.hasNext()) { FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next(); if (lagerbewegung.getN_menge().doubleValue() > 0) { // Datum des letzten Zugangs alZugaenge.add(lagerbewegung); } } if (alZugaenge.size() > 0) { // Lagerbewegungen nach Belegdatum sortieren for (int m = alZugaenge.size() - 1; m > 0; --m) { for (int n = 0; n < m; ++n) { FLRLagerbewegung o1 = (FLRLagerbewegung) alZugaenge.get(n); FLRLagerbewegung o2 = (FLRLagerbewegung) alZugaenge.get(n + 1); if (o1.getT_belegdatum().before(o2.getT_belegdatum())) { alZugaenge.set(n, o2); alZugaenge.set(n + 1, o1); } } } // nun zaehlt das juengste Belegdatum FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) alZugaenge.get(0); java.util.Calendar cAbDemWirdAbgewertet = java.util.Calendar.getInstance(); if (tStichtag != null) { cAbDemWirdAbgewertet.setTimeInMillis(tStichtag.getTime()); } cAbDemWirdAbgewertet.set(java.util.Calendar.MONTH, cAbDemWirdAbgewertet.get(java.util.Calendar.MONTH) - iMonate); double dAbwertung = 0; while (dAbwertung < 100 && lagerbewegung.getT_buchungszeit().getTime() < cAbDemWirdAbgewertet.getTimeInMillis()) { dAbwertung += dProzent; cAbDemWirdAbgewertet.set(java.util.Calendar.MONTH, cAbDemWirdAbgewertet.get(java.util.Calendar.MONTH) - 1); } return Helper.rundeKaufmaennisch(gestpreis.multiply(new BigDecimal(1 - (dAbwertung / 100))), 4); } session.close(); return new BigDecimal(0); }
From source file:com.lp.server.artikel.ejbfac.LagerFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.SUPPORTS) public BigDecimal getVerbrauchteMengeEinesArtikels(Integer artikelIId, java.sql.Timestamp tVon, java.sql.Timestamp tBis, TheClientDto theClientDto) { Session session = FLRSessionFactory.getFactory().openSession(); // PJ 14006/*w w w . j a v a 2 s. c o m*/ org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class).createAlias("flrartikel", "a") .add(Restrictions.eq("a.i_id", artikelIId)).createAlias("flrlager", "l") .add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant())); crit.add(Restrictions.ge(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tVon)); crit.add(Restrictions.le(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM, tBis)); crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false))); crit.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(true))); crit.add(Restrictions.not(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, new String[] { LocaleFac.BELEGART_HAND, LocaleFac.BELEGART_LOSABLIEFERUNG }))); List<?> results = crit.list(); Iterator<?> resultListIterator = results.iterator(); BigDecimal bdMenge = new BigDecimal(0); while (resultListIterator.hasNext()) { FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next(); if (lagerbewegung.getN_menge().doubleValue() > 0) { bdMenge = bdMenge.add(lagerbewegung.getN_menge()); } } return bdMenge; }
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 ww.j av a 2 s. co m*/ } 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 w ww .ja va 2 s . 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.LagerReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printWarenbewegungsjournal(Integer artikelIId, Integer lagerIId, Timestamp dVon, Timestamp dBis, TheClientDto theClientDto) { if (artikelIId == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FELD_DARF_NICHT_NULL_SEIN, new Exception("artikelIId == null")); }/* w w w. j a v a2s.com*/ ArtikelDto dto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto); boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF, theClientDto); boolean darfVerkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_VERKAUF, theClientDto); Session session = FLRSessionFactory.getFactory().openSession(); // Testfunktion AD // recalcGestehungspreisKomplett(artikelIId, session, true); org.hibernate.Criteria crit = session.createCriteria(FLRLagerbewegung.class).createAlias("flrartikel", "a") .add(Restrictions.eq("a.i_id", artikelIId)).createAlias("flrlager", "l") .add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant())) .add(Restrictions.not(Restrictions.eq("l.lagerart_c_nr", LagerFac.LAGERART_WERTGUTSCHRIFT))) .add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false))) .add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false))) .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BELEGDATUM)) .addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT)); if (lagerIId != null) { crit.add(Restrictions.eq("l.i_id", lagerIId)); } if (dVon != null) { crit.add(Restrictions.ge(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, Helper.cutTimestamp(dVon))); } if (dBis != null) { Timestamp tsBis = new Timestamp(dBis.getTime()); tsBis.setTime(tsBis.getTime() + 24 * 3600000); crit.add(Restrictions.lt(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, Helper.cutTimestamp(tsBis))); } List<?> results = crit.list(); Iterator<?> resultListIterator = results.iterator(); index = -1; sAktuellerReport = LagerReportFac.REPORT_WARENBEWEGUNGSJOURNAL; ArrayList<Object[]> al = new ArrayList<Object[]>(); while (resultListIterator.hasNext()) { FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next(); if (lagerbewegung.getN_menge().doubleValue() != 0) { Object[] dataHelp = new Object[20]; try { BelegInfos infosZugang = getLagerFac().getBelegInfos(lagerbewegung.getC_belegartnr(), lagerbewegung.getI_belegartid(), lagerbewegung.getI_belegartpositionid(), theClientDto); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANG_WER_HAT_GEBUCHT] = lagerbewegung.getFlrpersonal() .getC_kurzzeichen(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSBELEG] = lagerbewegung.getFlrbelegart().getC_kbez() + infosZugang.getBelegnummer(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_LAGER] = lagerbewegung.getFlrlager().getC_nr(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_SNR] = lagerbewegung.getC_seriennrchargennr(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUBUCHUNGSZEITPUNKT] = lagerbewegung.getT_buchungszeit(); if (darfEinkaufspreisSehen) { dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_EINSTANDSPREIS] = lagerbewegung.getN_einstandspreis(); } if (lagerbewegung.getFlrhersteller() != null) { dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_HERSTELLER] = lagerbewegung.getFlrhersteller() .getC_nr(); } if (lagerbewegung.getFlrland() != null) { dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_URSPRUNGSLAND] = lagerbewegung.getFlrland() .getC_lkz(); } dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_WE_REFERENZ] = getLagerFac() .getWareneingangsreferenzSubreport(lagerbewegung.getC_belegartnr(), lagerbewegung.getI_belegartpositionid(), lagerbewegung.getC_seriennrchargennr(), false, theClientDto); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSMENGE] = lagerbewegung.getN_menge(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGFIRMAKOMMENTAR] = infosZugang.getKundeLieferant(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSDATUM] = infosZugang.getBelegdatum(); Session sessionSub = FLRSessionFactory.getFactory().openSession(); String queryString = "FROM FLRLagerabgangursprung AS lagerabgangursprung WHERE lagerabgangursprung.compId.i_lagerbewegungidursprung=" + lagerbewegung.getI_id_buchung() + " AND lagerabgangursprung.n_verbrauchtemenge>0"; Query querySub = sessionSub.createQuery(queryString); List<?> subResults = querySub.list(); Iterator<?> subResultListIterator = subResults.iterator(); if (subResults.size() == 0) { // CK: Projekt 8200 if (darfEinkaufspreisSehen) { dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_GESTPREIS] = getLagerFac() .getGemittelterGestehungspreisEinesLagers(artikelIId, lagerbewegung.getFlrlager().getI_id(), theClientDto); } al.add(dataHelp); } else { while (subResultListIterator.hasNext()) { FLRLagerabgangursprung lagerabgangursprung = (FLRLagerabgangursprung) subResultListIterator .next(); Session sessionAbgang = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria critAbgang = sessionAbgang .createCriteria(FLRLagerbewegung.class); critAbgang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_I_ID_BUCHUNG, lagerabgangursprung.getCompId().getI_lagerbewegungid())); critAbgang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false))); critAbgang.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT)); List<?> resultsAbgang = critAbgang.list(); try { FLRLagerbewegung flrLagerbewegungAbgang = (FLRLagerbewegung) resultsAbgang .iterator().next(); BelegInfos infosAbgang = getLagerFac().getBelegInfos( flrLagerbewegungAbgang.getC_belegartnr(), flrLagerbewegungAbgang.getI_belegartid(), lagerbewegung.getI_belegartpositionid(), theClientDto); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANG_WER_HAT_GEBUCHT] = flrLagerbewegungAbgang .getFlrpersonal().getC_kurzzeichen(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSBELEG] = flrLagerbewegungAbgang .getFlrbelegart().getC_kbez() + infosAbgang.getBelegnummer(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ZUGANGSBELEG] = lagerbewegung.getFlrbelegart() .getC_kbez() + infosZugang.getBelegnummer(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGFIRMAKOMMENTAR] = infosAbgang .getKundeLieferant(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSDATUM] = infosAbgang.getBelegdatum(); dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABBUCHUNGSZEITPUNKT] = flrLagerbewegungAbgang .getT_buchungszeit(); if (darfEinkaufspreisSehen) { dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_GESTPREIS] = lagerabgangursprung .getN_gestehungspreis(); } if (darfVerkaufspreisSehen) { dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_VKPREIS] = flrLagerbewegungAbgang .getN_verkaufspreis(); } dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSMENGE] = lagerabgangursprung .getN_verbrauchtemenge(); al.add(dataHelp); } catch (java.util.NoSuchElementException e) { dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGSBELEG] = "FEHLER:"; dataHelp[REPORT_WARENBEWEGUNGSJOURNAL_ABGANGFIRMAKOMMENTAR] = "KEINE INFORMATIONEN"; al.add(dataHelp); } dataHelp = new Object[20]; sessionAbgang.close(); } } sessionSub.close(); } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } } } session.close(); Object[][] returnArray = new Object[al.size()][18]; data = (Object[][]) al.toArray(returnArray); HashMap<String, Object> parameter = new HashMap<String, Object>(); parameter.put("P_ARTIKEL", dto.formatArtikelbezeichnung()); parameter.put("P_RECHT_LP_DARF_PREISE_SEHEN_EINKAUF", darfEinkaufspreisSehen); parameter.put("P_RECHT_LP_DARF_PREISE_SEHEN_VERKAUF", darfVerkaufspreisSehen); if (dVon != null) { parameter.put("P_VON", dVon); } if (dBis != null) { parameter.put("P_BIS", dBis); } if (lagerIId != null) { try { LagerDto lagerDto = getLagerFac().lagerFindByPrimaryKey(lagerIId); parameter.put("P_LAGER", lagerDto.getCNr()); } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } } initJRDS(parameter, LagerReportFac.REPORT_MODUL, LagerReportFac.REPORT_WARENBEWEGUNGSJOURNAL, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); }