List of usage examples for org.hibernate Criteria createCriteria
public Criteria createCriteria(String associationPath) throws HibernateException;
From source file:com.lp.server.artikel.ejbfac.LagerFacBean.java
License:Open Source License
/** * @deprecated use getAllSerienChargennrAufLagerInfoDtos() instead *//*from www .j a v a2 s . c om*/ public SeriennrChargennrAufLagerDto[] getAllSerienChargennrAufLager(Integer artikelIId, Integer lagerIId, TheClientDto theClientDto, Boolean bNurChargennummern, boolean bSortiertNachSerienChargennummer, java.sql.Timestamp tStichtag) throws EJBExceptionLP { if (artikelIId == null || bNurChargennummern == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception("artikelIId == null || bNurChargennummern == null")); } java.util.TreeMap list = new java.util.TreeMap(); FLRLagerbewegung lagerbewegungen = new FLRLagerbewegung(); lagerbewegungen.setB_vollstaendigverbraucht(Helper.boolean2Short(false)); lagerbewegungen.setB_abgang(Helper.boolean2Short(false)); FLRArtikel artikel = new FLRArtikel(); artikel.setI_id(artikelIId); if (bNurChargennummern == true) { artikel.setB_chargennrtragend(Helper.boolean2Short(true)); } lagerbewegungen.setFlrartikel(artikel); Session session = null; session = FLRSessionFactory.getFactory().openSession(); Criteria snrs = session.createCriteria(FLRLagerbewegung.class) .add(Expression.eq("this." + LagerFac.FLR_LAGERBEWEGUNG_B_VOLLSTAENDIGVERBRAUCHT, Helper.boolean2Short(false))) .add(Expression.eq("this." + LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false))) .add(Expression.isNotNull("this." + LagerFac.FLR_LAGERBEWEGUNG_C_SERIENNRCHARGENNR)); snrs.add(Example.create(lagerbewegungen)); snrs.createAlias("flrlager", "l"); if (!getMandantFac().darfAnwenderAufZusatzfunktionZugreifen( MandantFac.ZUSATZFUNKTION_ZENTRALER_ARTIKELSTAMM, theClientDto)) { snrs.add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant())); } else { if (getMandantFac().darfAnwenderAufZusatzfunktionZugreifen(MandantFac.ZUSATZFUNKTION_GETRENNTE_LAGER, theClientDto)) { snrs.add(Restrictions.eq("l.mandant_c_nr", theClientDto.getMandant())); } } if (lagerIId != null) { snrs.add(Restrictions.eq("l.i_id", lagerIId)); } snrs.createCriteria(LagerFac.FLR_LAGERBEWEGUNG_FLRARTIKEL).add(Expression.eq("i_id", artikelIId)); if (tStichtag != null) { snrs.add(Expression.lt(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, tStichtag)); } snrs.addOrder(Order.asc(LagerFac.FLR_LAGERBEWEGUNG_I_ID_BUCHUNG)); snrs.addOrder(Order.desc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT)); List<?> listSnr = snrs.list(); Iterator<?> listSnrIterator = listSnr.iterator(); Integer lagerIIdKeinlager = lagerFindByCNrByMandantCNr(LagerFac.LAGER_KEINLAGER, theClientDto.getMandant()) .getIId(); int lastColumn = -1; String letzteChargennummer = null; while (listSnrIterator.hasNext()) { FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) listSnrIterator.next(); if (lastColumn == lagerbewegung.getI_id_buchung().intValue() || lagerbewegung.getC_seriennrchargennr().equals(letzteChargennummer)) { } else { if (!lagerbewegung.getFlrlager().getI_id().equals(lagerIIdKeinlager)) { SeriennrChargennrAufLagerDto dto = new SeriennrChargennrAufLagerDto(); BigDecimal menge = getMengeAufLager(lagerbewegung.getFlrartikel().getI_id(), lagerbewegung.getFlrlager().getI_id(), lagerbewegung.getC_seriennrchargennr(), theClientDto); if (menge.doubleValue() != 0) { if (Helper.short2boolean(lagerbewegung.getFlrartikel().getB_chargennrtragend()) == true) { dto.setBSeriennr(Helper.boolean2Short(false)); dto.setNMenge(Helper.rundeKaufmaennisch(menge, 2)); dto.setCSeriennrChargennr(lagerbewegung.getC_seriennrchargennr()); } else if (Helper .short2boolean(lagerbewegung.getFlrartikel().getB_seriennrtragend()) == true) { dto.setBSeriennr(Helper.boolean2Short(true)); dto.setNMenge(new BigDecimal(1)); dto.setCSeriennrChargennr(lagerbewegung.getC_seriennrchargennr()); } dto.setTBuchungszeit(new java.sql.Timestamp(lagerbewegung.getT_buchungszeit().getTime())); if (bSortiertNachSerienChargennummer) { list.put(lagerbewegung.getC_seriennrchargennr(), dto); } else { list.put(dto.getTBuchungszeit(), dto); } } } lastColumn = lagerbewegung.getI_id_buchung().intValue(); letzteChargennummer = lagerbewegung.getC_seriennrchargennr(); } } session.close(); SeriennrChargennrAufLagerDto[] returnArray = new SeriennrChargennrAufLagerDto[list.size()]; Iterator<?> it = list.keySet().iterator(); int i = 0; while (it.hasNext()) { if (bSortiertNachSerienChargennummer) { String s = (String) it.next(); SeriennrChargennrAufLagerDto dto = (SeriennrChargennrAufLagerDto) list.get(s); returnArray[i] = dto; } else { Timestamp ts = (Timestamp) it.next(); SeriennrChargennrAufLagerDto dto = (SeriennrChargennrAufLagerDto) list.get(ts); returnArray[i] = dto; } i++; } return returnArray; }
From source file:com.lp.server.artikel.ejbfac.ReservierungFacBean.java
License:Open Source License
/** * Reservierungen pruefen. 1. Bestehende Reservierungseintraege aus * Auftrag/Los 2. Lose pruefen, ob die Reservierungen richtig eingetragen * sind. 3. Auftraege pruefen, ob die Reservierungen richtig eingetragen * sind.//from w w w . j a v a 2s .c o m * * @param theClientDto * String * @throws EJBExceptionLP */ public void pruefeReservierungen(TheClientDto theClientDto) throws EJBExceptionLP { Session session = FLRSessionFactory.getFactory().openSession(); String hqlDelete = "delete FROM FLRArtikelreservierung"; session.createQuery(hqlDelete).executeUpdate(); session.close(); // Lose session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria lossollmaterial = session.createCriteria(FLRLossollmaterial.class); lossollmaterial.createCriteria(FertigungFac.FLR_LOSSOLLMATERIAL_FLRLOS) .add(Restrictions.eq(FertigungFac.FLR_LOS_STATUS_C_NR, FertigungFac.STATUS_ANGELEGT)); // Query ausfuehren List<?> lossollList = lossollmaterial.list(); Iterator<?> lossollListIterator = lossollList.iterator(); while (lossollListIterator.hasNext()) { FLRLossollmaterial lossollmat = (FLRLossollmaterial) lossollListIterator.next(); // Fuer angelegte Lose MUSS es einen Reservierungseintrag geben. // nur fuer Artikel if (lossollmat.getFlrartikel() != null) { ArtikelreservierungDto resDto = new ArtikelreservierungDto(); resDto.setArtikelIId(lossollmat.getFlrartikel().getI_id()); resDto.setCBelegartnr(LocaleFac.BELEGART_LOS); resDto.setIBelegartpositionid(lossollmat.getI_id()); resDto.setNMenge(lossollmat.getN_menge()); // PJ17994 resDto.setTLiefertermin(Helper.addiereTageZuTimestamp( new java.sql.Timestamp(lossollmat.getFlrlos().getT_produktionsbeginn().getTime()), lossollmat.getI_beginnterminoffset())); // anlegen createArtikelreservierung(resDto); myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto); } } session.close(); // Auftraege session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria abPosCrit = session.createCriteria(FLRAuftragposition.class); // nur Artikel-Positionen abPosCrit.add(Restrictions.isNotNull(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRARTIKEL)); org.hibernate.Criteria abCrit = abPosCrit.createCriteria(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRAUFTRAG); // Rahmenauftraege werden ignoriert, da diese keine Reservierungen // ausloesen. abCrit.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGART_C_NR, AuftragServiceFac.AUFTRAGART_RAHMEN)); // Nur Sataus Offen und Teilerledigt String[] stati = new String[3]; stati[0] = AuftragServiceFac.AUFTRAGSTATUS_OFFEN; stati[1] = AuftragServiceFac.AUFTRAGSTATUS_TEILERLEDIGT; stati[2] = AuftragServiceFac.AUFTRAGSTATUS_ANGELEGT; abCrit.add(Restrictions.in(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR, stati)); // Query ausfuehren List<?> abposList = abPosCrit.list(); Iterator<?> abPosListIterator = abposList.iterator(); while (abPosListIterator.hasNext()) { FLRAuftragposition abPos = (FLRAuftragposition) abPosListIterator.next(); // Fuer offene Auftraege MUSS es einen Reservierungseintrag geben. // (ausser positionsstatus = erledigt) // nur fuer noch nicht erledigte Auftragspositionen mit offener // Menge != 0 if (abPos.getN_offenemenge().compareTo(new BigDecimal(0)) != 0 && !abPos.getAuftragpositionstatus_c_nr() .equals(AuftragServiceFac.AUFTRAGPOSITIONSTATUS_ERLEDIGT)) { ArtikelreservierungDto resDto = new ArtikelreservierungDto(); resDto.setArtikelIId(abPos.getFlrartikel().getI_id()); resDto.setCBelegartnr(LocaleFac.BELEGART_AUFTRAG); resDto.setIBelegartpositionid(abPos.getI_id()); resDto.setNMenge(abPos.getN_offenemenge()); java.sql.Timestamp tLiefertermin; if (abPos.getN_offenemenge().compareTo(new BigDecimal(0)) < 0) { // Negative Menge -> Finaltermin tLiefertermin = new java.sql.Timestamp(abPos.getFlrauftrag().getT_finaltermin().getTime()); } else { // Positive Menge -> Liefertermin AuftragpositionDto abPosDto = null; try { abPosDto = getAuftragpositionFac().auftragpositionFindByPrimaryKey(abPos.getI_id()); } catch (RemoteException ex2) { throwEJBExceptionLPRespectOld(ex2); } tLiefertermin = abPosDto.getTUebersteuerbarerLiefertermin(); } resDto.setTLiefertermin(tLiefertermin); // anlegen createArtikelreservierung(resDto); myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto); } } session.close(); // Auftraege session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria speiseplan = session.createCriteria(FLRSpeiseplanposition.class); speiseplan.createCriteria("flrspeiseplan") .add(Restrictions.ge("t_datum", Helper.cutTimestamp(new Timestamp(System.currentTimeMillis())))); // Query ausfuehren List<?> speiseplanList = speiseplan.list(); Iterator<?> speiseplanListIterator = speiseplanList.iterator(); while (speiseplanListIterator.hasNext()) { FLRSpeiseplanposition flrSpeiseplanposition = (FLRSpeiseplanposition) speiseplanListIterator.next(); if (flrSpeiseplanposition.getN_menge().doubleValue() > 0) { ArtikelreservierungDto resDto = new ArtikelreservierungDto(); resDto.setArtikelIId(flrSpeiseplanposition.getArtikel_i_id()); resDto.setCBelegartnr(LocaleFac.BELEGART_KUECHE); resDto.setIBelegartpositionid(flrSpeiseplanposition.getI_id()); resDto.setNMenge(flrSpeiseplanposition.getN_menge()); resDto.setTLiefertermin( new Timestamp(flrSpeiseplanposition.getFlrspeiseplan().getT_datum().getTime())); createArtikelreservierung(resDto); myLogger.warn(theClientDto.getIDUser(), "Reservierung nachgetragen: " + resDto); } } session.close(); myLogger.exit("Reservierungspr\u00FCfung abgeschlossen"); }
From source file:com.lp.server.auftrag.ejbfac.AuftragpositionFacBean.java
License:Open Source License
public void pruefeAuftragseriennumern(TheClientDto theClientDto) { Session session = FLRSessionFactory.getFactory().openSession(); String[] srnnrn = null;//from ww w.j av a 2s .c o m AuftragseriennrnDto auftragseriennrnDto = null; try { org.hibernate.Criteria crit = session.createCriteria(FLRAuftragpositionReport.class); org.hibernate.Criteria critAuftrag = crit .createCriteria(AuftragpositionFac.FLR_AUFTRAGPOSITION_FLRAUFTRAG); critAuftrag.add(Restrictions.ne(AuftragFac.FLR_AUFTRAG_AUFTRAGSTATUS_C_NR, AuftragServiceFac.AUFTRAGSTATUS_STORNIERT)); crit.add(Restrictions.isNotNull("c_seriennrchargennr")); List<?> aposList = crit.list(); Iterator<?> aposIterator = aposList.iterator(); while (aposIterator.hasNext()) { FLRAuftragpositionReport item = (FLRAuftragpositionReport) aposIterator.next(); srnnrn = Helper.erzeugeStringArrayAusString(item.getC_seriennrchargennr()); for (int i = 0; i < srnnrn.length; i++) { auftragseriennrnDto = new AuftragseriennrnDto(); auftragseriennrnDto.setAuftragpositionIId(item.getI_id()); auftragseriennrnDto.setArtikelIId(item.getArtikel_i_id()); auftragseriennrnDto.setCSeriennr(srnnrn[i]); try { createAuftragseriennrn(auftragseriennrnDto, theClientDto); if (i == srnnrn.length - 1) { Auftragposition oPos = null; oPos = em.find(Auftragposition.class, item.getI_id()); if (oPos == null) { } oPos.setCSeriennrchargennr(null); } } catch (EJBExceptionLP ex) { System.out.println( "auftragposition " + item.getI_id() + " auftrag " + item.getFlrauftrag().getC_nr()); } } } } finally { if (session != null) { session.close(); } } }
From source file:com.lp.server.bestellung.ejbfac.BestellungReportFacBean.java
License:Open Source License
public JasperPrintLP printBestellungenAlle(ReportJournalKriterienDto krit, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;/*from w w w. j a v a 2 s . c om*/ try { this.useCase = UC_ALLE; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF, theClientDto); // reportjournal: 00 Erzeugen einer Hibernate-Criteria-Query Criteria c = session.createCriteria(FLRBestellung.class); // reportjournal: 01 Filter nach Mandant c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // reportjournal: 02 Filter: nur eine Kostenstelle if (krit.kostenstelleIId != null) { c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId)); } // reportjournal: 03 Filter: nur ein Lieferant if (krit.lieferantIId != null) { c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, krit.lieferantIId)); } String sVon = null; String sBis = null; // reportjournal: 04 Datum von if (krit.dVon != null) { c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN, Helper.cutDate(krit.dVon))); sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi()); } // reportjournal: 05 Datum bis if (krit.dBis != null) { c.add(Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN, Helper.cutDate(Helper.addiereTageZuDatum(krit.dBis, 1)))); sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi()); } // reportjournalbelegnummer: 0 dazu muss ich das Belegnummernformat // und das // aktuelle Geschaeftsjahr des Mandanten kennen. LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant()); Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant()); String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert(); // reportjournal: 06 belegnummer von // reportjournalbelegnummer: 1 (von) hier funktionierts fast gleich // wie bei den Direktfiltern if (krit.sBelegnummerVon != null) { sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerVon); c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_C_NR, sVon)); } // reportjournal: 07 belegnummer bis // reportjournalbelegnummer: 2 (bis) detto if (krit.sBelegnummerBis != null) { sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerBis); c.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_C_NR, sBis)); } // reportjournal: 08 Sortierung nach Kostenstelle if (krit.bSortiereNachKostenstelle) { c.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } // reportjournal: 09 Sortierung nach Lieferant if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { c.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT).createCriteria(LieferantFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); } // reportjournal: 10 Sortierung nach Belegnummer else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) { c.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_NR)); } // reportjournal: 11 Und nun zusammenbauen der Daten List<?> list = c.list(); data = new Object[list.size()][7]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRBestellung b = (FLRBestellung) iter.next(); // reportjournal: 12 Fuer die Performance: so wenige // ejb-Methoden wie moeglich aufrufen! data[i][ALLE_BELEGDATUM] = b.getT_belegdatum(); data[i][ALLE_BESTELLNUMMER] = b.getC_nr(); data[i][ALLE_STATUS] = b.getBestellungstatus_c_nr(); if (darfEinkaufspreisSehen) { data[i][ALLE_BESTELLWERT] = b.getN_bestellwert(); } else { data[i][ALLE_BESTELLWERT] = null; } data[i][ALLE_KOSTENSTELLENUMMER] = b.getFlrkostenstelle() != null ? b.getFlrkostenstelle().getC_nr() : null; data[i][ALLE_LIEFERANT] = b.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][ALLE_LIEFERTERMIN] = b.getT_liefertermin(); i++; } Map<String, Object> map = new TreeMap<String, Object>(); MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto); // Waehrung map.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr()); StringBuffer sSortierung = new StringBuffer(); // Sortierung nach Kostenstelle // reportjournalparameter: 0 nach Kostenstelle map.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle)); if (krit.bSortiereNachKostenstelle) { sSortierung.append( getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi())); sSortierung.append(", "); } // Sortierung nach Lieferant // reportjournalparameter: 1 nach Lieferanten map.put(LPReport.P_SORTIERENACHLIEFERANT, new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER)); if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { sSortierung.append( getTextRespectUISpr("lp.lieferant", theClientDto.getMandant(), theClientDto.getLocUi())); } // reportjournalparameter: 2 nach Belegnummer else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) { sSortierung.append( getTextRespectUISpr("bes.bestnr", theClientDto.getMandant(), theClientDto.getLocUi())); } StringBuffer sFilter = new StringBuffer(); if (sVon != null) { sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" " + sVon + " "); } if (sBis != null) { sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" " + sBis + " "); } if (krit.kostenstelleIId != null) { if (sFilter.length() > 0) { sFilter.append(", "); } KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId); sFilter.append( getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" "); sFilter.append(kstDto.getCNr()); } // reportjournalparameter: 3 Uebergabe map.put(LPReport.P_SORTIERUNG, sSortierung.toString()); map.put(LPReport.P_FILTER, sFilter.toString()); initJRDS(map, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNGEN_ALLE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { closeSession(session); } return getReportPrint(); }
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 a v a2s .com*/ * @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. * //www .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.BestellungReportFacBean.java
License:Open Source License
/** * Diese Methode liefert eine Liste von allen offenen Bestellungen eines * Mandanten, die nach den eingegebenen Kriterien des Benutzers * zusammengestellt wird. <br>/*w w w . ja va 2s . c o m*/ * Achtung: Hibernate verwendet lazy initialization, d.h. der Zugriff auf * Collections muss innerhalb der Session erfolgen. * * @param reportJournalKriterienDtoI * die Kriterien des Benutzers * @param dStichtag * Date * @param bSortierungNachLiefertermin * Boolean * @param artikelklasseIId * Integer * @param artikelgruppeIId * Integer * @param theClientDto * der aktuelle Benutzer * @return ReportBestellungOffeneDto[] die Liste der Bestellungen * @throws EJBExceptionLP * Ausnahme */ private ReportBestellungOffeneDto[] getListeReportBestellungOffene( ReportJournalKriterienDto reportJournalKriterienDtoI, Date dStichtag, Boolean bSortierungNachLiefertermin, Integer artikelklasseIId, Integer artikelgruppeIId, TheClientDto theClientDto) throws EJBExceptionLP { ReportBestellungOffeneDto[] aResult = null; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; // vom Stichtag die Uhrzeit abschneiden dStichtag = Helper.cutDate(dStichtag); try { session = factory.openSession(); // Hiberante Criteria fuer alle Tabellen ausgehend von meiner // Haupttabelle anlegen, // nach denen ich filtern und sortieren kann Criteria crit = session.createCriteria(FLRBestellung.class); // Einschraenkung auf den aktuellen Mandanten crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); // Einschraenkung nach Bestelllungart crit.add(Restrictions.ne(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR)); crit.add(Restrictions.ne(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, BestellungFac.BESTELLUNGART_ABRUFBESTELLUNG_C_NR)); crit.add(Restrictions.ne(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, BestellungFac.BESTELLUNGART_LEIHBESTELLUNG_C_NR)); // Einschraenkung nach Status Offen, Erledigt Collection<String> cStati = new LinkedList<String>(); 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)); // Einschraenkung nach einer bestimmten Kostenstelle if (reportJournalKriterienDtoI.kostenstelleIId != null) { crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, reportJournalKriterienDtoI.kostenstelleIId)); } // Einschraenkung nach einem bestimmten Lieferanten if (reportJournalKriterienDtoI.lieferantIId != null) { crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, reportJournalKriterienDtoI.lieferantIId)); } // Sortierung nach Kostenstelle ist immer die erste Sortierung if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) { crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle if (reportJournalKriterienDtoI.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 (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PROJEKT) { crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG)); } // 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(); aResult = new ReportBestellungOffeneDto[list.size()]; int iIndex = 0; Iterator<?> it = list.iterator(); ReportBestellungOffeneDto reportDto = null; while (it.hasNext()) { FLRBestellung flrbestellung = (FLRBestellung) it.next(); Session session1 = null; session1 = factory.openSession(); Criteria crit1 = session1.createCriteria(FLRBestellposition.class); // keine erledigten Positionen. crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)); // und nur die, die sich auf den aktuellen Bestellung beziehen. Criteria crit1Bestellung = crit1 .createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id())); int anzahlPositionen = 0; List<?> resultList = crit1.list(); for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) { FLRBestellposition item = (FLRBestellposition) iter.next(); if (item.getBestellpositionart_c_nr().equals(BestellpositionFac.BESTELLPOSITIONART_IDENT) || item.getBestellpositionart_c_nr() .equals(BestellpositionFac.BESTELLPOSITIONART_HANDEINGABE)) { anzahlPositionen++; } } reportDto = new ReportBestellungOffeneDto(); reportDto.setIIdBestellung(flrbestellung.getI_id()); reportDto.setCNrBestellung(flrbestellung.getC_nr()); reportDto.setLieferantCName1( flrbestellung.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1()); reportDto.setIAnzahlPositionen(anzahlPositionen); aResult[iIndex] = reportDto; iIndex++; } } finally { closeSession(session); } return aResult; }
From source file:com.lp.server.bestellung.ejbfac.BestellungReportFacBean.java
License:Open Source License
public JasperPrintLP printBestellungWareneingangsJournal(ReportJournalKriterienDto krit, Integer artikelklasseIId, Integer artikelgruppeIId, String artikelCNrVon, String artikelCNrBis, String projektCBezeichnung, Integer auftragIId, boolean bMitWarenverbrauch, TheClientDto theClientDto) throws EJBExceptionLP, RemoteException { Session session = null;// w w w . j ava 2s .c o m useCase = UC_BESTELLUNG_WARENEINGANG; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF, theClientDto); Criteria c = session.createCriteria(FLRWareneingangspositionen.class); Criteria cWe = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRWARENEINGANG); Criteria cBesPos = c.createCriteria(WareneingangFac.FLR_WEPOS_FLRBESTELLPOSITION); Criteria cArt = cBesPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL); Criteria cBestellung = cWe.createCriteria(WareneingangFac.FLR_WE_FLRBESTELLUNG); cBestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // Datum von if (krit.dVon != null) { cWe.add(Restrictions.ge(WareneingangFac.FLRSPALTE_T_WARENEINGANGSDATUM, Helper.cutDate(krit.dVon))); } // Datum bis if (krit.dBis != null) { java.sql.Date dBisTemp = Helper.cutDate(new java.sql.Date(krit.dBis.getTime() + 24 * 3600000)); cWe.add(Restrictions.lt(WareneingangFac.FLRSPALTE_T_WARENEINGANGSDATUM, dBisTemp)); } // Filter nach Projektbezeichnung if (projektCBezeichnung != null) { cBestellung.add(Restrictions.ilike(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG, "%" + projektCBezeichnung + "%")); } // Filter nach Auftrag if (auftragIId != null) { cBestellung.add(Restrictions.like(BestellungFac.FLR_BESTELLUNG_AUFTRAG_I_ID, auftragIId)); } LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant()); Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant()); String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert(); // reportjournal: 06 belegnummer von // reportjournalbelegnummer: 1 (von) hier funktionierts fast gleich // wie bei den Direktfiltern if (krit.sBelegnummerVon != null) { String sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerVon); cBestellung.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_C_NR, sVon)); } // reportjournal: 07 belegnummer bis // reportjournalbelegnummer: 2 (bis) detto if (krit.sBelegnummerBis != null) { String sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerBis); cBestellung.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_C_NR, sBis)); } // Einschraenkung nach einer bestimmten Kostenstelle if (krit.kostenstelleIId != null) { cBestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId)); } // Einschraenkung nach einem bestimmten Lieferanten if (krit.lieferantIId != null) { cBestellung.add( Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, krit.lieferantIId)); } if (artikelklasseIId != null) { cArt.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE) .add(Restrictions.eq("i_id", artikelklasseIId)); } if (artikelgruppeIId != null) { cArt.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE) .add(Restrictions.eq("i_id", artikelgruppeIId)); } if (artikelCNrVon != null) { cArt.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon)); } if (artikelCNrBis != null) { cArt.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis)); } // Sortierung nach Kostenstelle ist immer die erste Sortierung if (krit.bSortiereNachKostenstelle) { cBestellung.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } Map<String, Object> map = new TreeMap<String, Object>(); if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_DATUM) { cWe.addOrder(Order.asc(WareneingangFac.FLRSPALTE_T_WARENEINGANGSDATUM)); map.put(LPReport.P_SORTIERUNG, getTextRespectUISpr("bes.wedatum", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { cArt.addOrder(Order.asc(ArtikelFac.FLR_ARTIKEL_C_NR)); map.put(LPReport.P_SORTIERUNG, getTextRespectUISpr("lp.artikel", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) { cBestellung.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_NR)); map.put(LPReport.P_SORTIERUNG, getTextRespectUISpr("bes.belegnummer", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PROJEKT) { cBestellung.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG)); map.put(LPReport.P_SORTIERUNG, getTextRespectUISpr("lp.projekt", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { cBestellung.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT) .createCriteria(LieferantFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); map.put(LPReport.P_SORTIERUNG, getTextRespectUISpr("lp.partner", theClientDto.getMandant(), theClientDto.getLocUi())); } else { c.addOrder(Order.asc("i_id")); map.put(LPReport.P_SORTIERUNG, "i_id"); } List<?> list = c.list(); data = new Object[list.size()][REPORT_BSWARENEINGANGSJOURNAL_ANZAHL_SPALTEN]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRWareneingangspositionen w = (FLRWareneingangspositionen) iter.next(); if (w.getFlrwareneingang().getT_wareneingansdatum() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_DATUM] = w.getFlrwareneingang().getT_wareneingansdatum(); } if (w.getFlrwareneingang().getFlrbestellung().getC_nr() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_BESTELLNUMMER] = w.getFlrwareneingang().getFlrbestellung() .getC_nr(); } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_BESTELLNUMMER] = ""; } if (w.getFlrbestellposition().getFlrartikel().getC_nr() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_IDENT] = w.getFlrbestellposition().getFlrartikel().getC_nr(); } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_IDENT] = ""; } if (w.getFlrbestellposition().getC_bezeichnung() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_BEZEICHNUNG] = w.getFlrbestellposition().getC_bezeichnung(); } else { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( w.getFlrbestellposition().getFlrartikel().getI_id(), theClientDto); data[i][REPORT_BSWARENEINGANGSJOURNAL_BEZEICHNUNG] = artikelDto.formatBezeichnung(); } if (bMitWarenverbrauch) { data[i][REPORT_BSWARENEINGANGSJOURNAL_WA_REFERENZ] = getLagerFac() .getWarenausgangsreferenzSubreport(LocaleFac.BELEGART_BESTELLUNG, w.getI_id(), null, theClientDto); } // SP903 if (w.getFlrbestellposition().getPosition_i_id_artikelset() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_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", w.getFlrbestellposition().getI_id())); int iZeilen = critSet.list().size(); if (iZeilen > 0) { data[i][REPORT_BSWARENEINGANGSJOURNAL_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_KOPF; } sessionSet.close(); } data[i][REPORT_BSWARENEINGANGSJOURNAL_PROJEKT] = w.getFlrbestellposition().getFlrbestellung() .getC_bezprojektbezeichnung(); data[i][REPORT_BSWARENEINGANGSJOURNAL_LIEFERANT] = w.getFlrbestellposition().getFlrbestellung() .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); if (w.getN_geliefertemenge() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_MENGE] = w.getN_geliefertemenge(); } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_MENGE] = new BigDecimal(0); } if (w.getN_gelieferterpreis() != null) { if (darfEinkaufspreisSehen) { BigDecimal kurs = new BigDecimal(w.getFlrwareneingang().getFlrbestellung() .getF_wechselkursmandantwaehrungbestellungswaehrung()); if (kurs.doubleValue() != 0) { data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = w.getN_gelieferterpreis() .divide(kurs, 4, BigDecimal.ROUND_HALF_EVEN); } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = new BigDecimal(0); } } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = null; } } else { if (darfEinkaufspreisSehen) { data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = new BigDecimal(0); } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_GELIEFERTERPREIS] = null; } } if (w.getN_einstandspreis() != null) { if (darfEinkaufspreisSehen) { BigDecimal kurs = new BigDecimal(w.getFlrwareneingang().getFlrbestellung() .getF_wechselkursmandantwaehrungbestellungswaehrung()); if (kurs.doubleValue() != 0) { data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = w.getN_einstandspreis().divide(kurs, 4, BigDecimal.ROUND_HALF_EVEN); } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = new BigDecimal(0); } } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = null; } } else { if (darfEinkaufspreisSehen) { data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = new BigDecimal(0); } else { data[i][REPORT_BSWARENEINGANGSJOURNAL_EINSTANDSPREIS] = null; } } data[i][REPORT_BSWARENEINGANGSJOURNAL_LIEFERSCHEIN] = w.getFlrwareneingang().getC_lieferscheinnr(); data[i][REPORT_BSWARENEINGANGSJOURNAL_LIEFERSCHEINDATUM] = w.getFlrwareneingang() .getT_lieferscheindatum(); if (w.getFlrwareneingang().getFlreingangsrechnung() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_EINGANGSRECHNUNG] = w.getFlrwareneingang() .getFlreingangsrechnung().getC_nr(); } if (w.getFlrwareneingang().getFlrbestellung().getFlrkostenstelle() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_KOSTENSTELLE] = w.getFlrwareneingang().getFlrbestellung() .getFlrkostenstelle().getC_nr(); } data[i][REPORT_BSWARENEINGANGSJOURNAL_ZUBUCHUNGSLAGER] = w.getFlrwareneingang().getFlrlager().getC_nr(); data[i][REPORT_BSWARENEINGANGSJOURNAL_RABATTSATZ] = w.getFlrwareneingang().getF_rabattsatz(); if (w.getFlrwareneingang().getFlrbestellung().getAuftrag_i_id() != null) { data[i][REPORT_BSWARENEINGANGSJOURNAL_AUFTRAG] = w.getFlrwareneingang().getFlrbestellung() .getFlrauftrag().getC_nr(); } if (w.getFlrbestellposition().getFlrartikel().getFlrartikelklasse() != null) { w.getFlrbestellposition().getFlrartikel().getFlrartikelklasse().getC_nr(); data[i][REPORT_BSWARENEINGANGSJOURNAL_ARTIKELKLASSE] = w.getFlrbestellposition().getFlrartikel() .getFlrartikelklasse().getC_nr(); } if (w.getFlrbestellposition().getFlrartikel().getFlrartikelgruppe() != null) { w.getFlrbestellposition().getFlrartikel().getFlrartikelgruppe().getC_nr(); data[i][REPORT_BSWARENEINGANGSJOURNAL_ARTIKELGRUPPE] = w.getFlrbestellposition().getFlrartikel() .getFlrartikelgruppe().getC_nr(); } data[i][REPORT_BSWARENEINGANGSJOURNAL_TRANSPORTKOSTEN] = w.getFlrwareneingang().getN_transportkosten(); data[i][REPORT_BSWARENEINGANGSJOURNAL_BANKSPESEN] = w.getFlrwareneingang().getN_bankspesen(); data[i][REPORT_BSWARENEINGANGSJOURNAL_ZOLLKOSTEN] = w.getFlrwareneingang().getN_zollkosten(); data[i][REPORT_BSWARENEINGANGSJOURNAL_SONSTIGEKOSTEN] = w.getFlrwareneingang().getN_sonstigespesen(); data[i][REPORT_BSWARENEINGANGSJOURNAL_GK_FAKTOR] = w.getFlrwareneingang().getF_gemeinkostenfaktor(); i++; } if (krit.dBis != null) { map.put("P_BIS", new Timestamp(krit.dBis.getTime())); } if (krit.dVon != null) { map.put("P_VON", new Timestamp(krit.dVon.getTime())); } map.put("P_MIT_WARENVERBRAUCH", new Boolean(bMitWarenverbrauch)); map.put(LPReport.P_REPORT_INFORMATION, ""); initJRDS(map, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNG_JOURNAL_WARENEINGANG, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); session.close(); return getReportPrint(); }
From source file:com.lp.server.bestellung.ejbfac.BestellvorschlagFacBean.java
License:Open Source License
public BestellungDto[] erstelleAbrufbestellungenAusBV(BestellvorschlagDto[] bestellvorschlagDto, TheClientDto theClientDto) throws EJBExceptionLP, RemoteException { Session session = FLRSessionFactory.getFactory().openSession(); try {/*from w w w. ja va 2 s.c om*/ ArrayList<Integer> alUeberlieferteBestellungIId = new ArrayList<Integer>(); HashMap<Integer, Integer> hmAbrufeZuRahmen = new HashMap<Integer, Integer>(); for (int i = 0; i < bestellvorschlagDto.length; i++) { boolean bUebergeleitet = false; if (bestellvorschlagDto[i].getILieferantId() != null) { BigDecimal bdZuBestellendeMenge = bestellvorschlagDto[i].getNZubestellendeMenge(); Criteria besPos = session.createCriteria(FLRBestellposition.class); Criteria best = besPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); Criteria artikel = besPos.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL); // Filter auf den Mandanten best.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // nur Rahmenbestellungen. best.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR)); // Einschraenkung nach Status Offen, Erledigt Collection<String> cStati = new LinkedList<String>(); cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT); cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT); cStati.add(BestellungFac.BESTELLSTATUS_OFFEN); best.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)); best.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, bestellvorschlagDto[i].getILieferantId())); besPos.add(Restrictions.gt(BestellpositionFac.FLR_BESTELLPOSITION_N_OFFENEMENGE, new BigDecimal(0))); artikel.add( Restrictions.eq(ArtikelFac.FLR_ARTIKEL_I_ID, bestellvorschlagDto[i].getIArtikelId())); // Sortierung damit die aelteren Rahmen zuerst abgerufen // werden best.addOrder(Order.desc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN)); // Query ausfuehren List<?> besposList = besPos.list(); Iterator<?> besposListIterator = besposList.iterator(); boolean bMengeGenuegt = false; ArrayList<Integer> alVerwendeteBesPosIId = new ArrayList<Integer>(); while (besposListIterator.hasNext() && !bMengeGenuegt) { FLRBestellposition bespos = (FLRBestellposition) besposListIterator.next(); if (bdZuBestellendeMenge.compareTo(bespos.getN_offenemenge()) < 0) { bMengeGenuegt = true; } else { bdZuBestellendeMenge = bdZuBestellendeMenge.subtract(bespos.getN_offenemenge()); } alVerwendeteBesPosIId.add(bespos.getI_id()); } // Jetzt haben wir eine Liste aller Rahmenpositionen die // verwendet werden sollen. BigDecimal bdBereitsBestellteMenge = new BigDecimal(0); for (int y = 0; y < alVerwendeteBesPosIId.size(); y++) { BestellpositionDto besPosDto = getBestellpositionFac() .bestellpositionFindByPrimaryKey(alVerwendeteBesPosIId.get(y)); BestellungDto abrufBestellungDto = null; if (hmAbrufeZuRahmen.containsKey(besPosDto.getBelegIId())) { abrufBestellungDto = getBestellungFac() .bestellungFindByPrimaryKey(hmAbrufeZuRahmen.get(besPosDto.getBelegIId())); } BestellungDto rahmenBestellungDto = getBestellungFac() .bestellungFindByPrimaryKey(besPosDto.getBelegIId()); boolean bAbrufvorhanden = false; // wenn wir bereits durch einen anderen Bestellvorschlag // einen Abruf fuer diesen Lieferanten mit diesem // Liefertermin angelegt haben if (abrufBestellungDto != null) { if (abrufBestellungDto.getDLiefertermin() .equals(bestellvorschlagDto[i].getTLiefertermin())) { bAbrufvorhanden = true; } } if (!bAbrufvorhanden) { // Wir haben fuer diese Bestellung noch keinen Abruf // und legen diesen an MandantDto mandantDto = getMandantFac() .mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto); // Wechselkurs ist immer der aktuelle BigDecimal wechselkurs = getLocaleFac().getWechselkurs2( rahmenBestellungDto.getWaehrungCNr(), mandantDto.getWaehrungCNr(), theClientDto); abrufBestellungDto = new BestellungDto(); abrufBestellungDto.setFWechselkursmandantwaehrungzubelegwaehrung( new Double(wechselkurs.doubleValue())); abrufBestellungDto .setPersonalIIdAnforderer(rahmenBestellungDto.getPersonalIIdAnforderer()); abrufBestellungDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); abrufBestellungDto.setPersonalIIdAnlegen(theClientDto.getIDPersonal()); abrufBestellungDto.setZahlungszielIId(rahmenBestellungDto.getZahlungszielIId()); abrufBestellungDto.setBelegartCNr(LocaleFac.BELEGART_BESTELLUNG); abrufBestellungDto .setBestellungartCNr(BestellungFac.BESTELLUNGART_ABRUFBESTELLUNG_C_NR); abrufBestellungDto.setStatusCNr(BestellungFac.BESTELLSTATUS_ANGELEGT); abrufBestellungDto.setIBestellungIIdRahmenbestellung(rahmenBestellungDto.getIId()); abrufBestellungDto .setBTeillieferungMoeglich(rahmenBestellungDto.getBTeillieferungMoeglich()); abrufBestellungDto.setDBelegdatum(this.getDate()); abrufBestellungDto.setDLiefertermin(bestellvorschlagDto[i].getTLiefertermin()); abrufBestellungDto.setKostenstelleIId(rahmenBestellungDto.getKostenstelleIId()); abrufBestellungDto.setLieferantIIdBestelladresse( rahmenBestellungDto.getLieferantIIdBestelladresse()); abrufBestellungDto.setLieferantIIdRechnungsadresse( rahmenBestellungDto.getLieferantIIdRechnungsadresse()); abrufBestellungDto.setSpediteurIId(rahmenBestellungDto.getSpediteurIId()); abrufBestellungDto.setMandantCNr(mandantDto.getCNr()); abrufBestellungDto.setLieferartIId(rahmenBestellungDto.getLieferartIId()); abrufBestellungDto.setWaehrungCNr(rahmenBestellungDto.getWaehrungCNr()); abrufBestellungDto .setFAllgemeinerRabattsatz(rahmenBestellungDto.getFAllgemeinerRabattsatz()); Integer iAbrufBEstellungIId = getBestellungFac().createBestellung(abrufBestellungDto, theClientDto); abrufBestellungDto = getBestellungFac().bestellungFindByPrimaryKey(iAbrufBEstellungIId); hmAbrufeZuRahmen.put(besPosDto.getBelegIId(), abrufBestellungDto.getIId()); } // Bestellung wurde nun angelgt oder war bereits // vorhanden // Jetzt die Position anlegen oder updaten BestellpositionDto[] vorhandeneAbrufe = getBestellpositionFac() .bestellpositionFindByBestellung(abrufBestellungDto.getIId(), theClientDto); BestellpositionDto abrufBestellpositionDto = null; for (int x = 0; x < vorhandeneAbrufe.length; x++) { if (bestellvorschlagDto[i].getIArtikelId() .equals(vorhandeneAbrufe[x].getArtikelIId())) { abrufBestellpositionDto = vorhandeneAbrufe[x]; } } BigDecimal bdbenoetigteMenge = bestellvorschlagDto[i].getNZubestellendeMenge() .subtract(bdBereitsBestellteMenge); BigDecimal bdAbrufmenge; if (bdbenoetigteMenge.compareTo(besPosDto.getNOffeneMenge()) > 0) { if (y == alVerwendeteBesPosIId.size() - 1) { // Letzte Pos, also wird ueberliefert bdAbrufmenge = bdbenoetigteMenge; if (!alUeberlieferteBestellungIId.contains(besPosDto.getBelegIId())) { alUeberlieferteBestellungIId.add(besPosDto.getBelegIId()); } } else { bdAbrufmenge = besPosDto.getNOffeneMenge(); } } else { bdAbrufmenge = bdbenoetigteMenge; } if (abrufBestellpositionDto == null) { abrufBestellpositionDto = new BestellpositionDto(); abrufBestellpositionDto.setNMenge(bdAbrufmenge); bdbenoetigteMenge = bdbenoetigteMenge.subtract(bdAbrufmenge); ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKey(bestellvorschlagDto[i].getIArtikelId(), theClientDto); abrufBestellpositionDto.setIBestellpositionIIdRahmenposition(besPosDto.getIId()); abrufBestellpositionDto.setArtikelIId(bestellvorschlagDto[i].getIArtikelId()); abrufBestellpositionDto.setBDrucken(Helper.boolean2Short(false)); abrufBestellpositionDto.setPositionsartCNr(BestellpositionFac.BESTELLPOSITIONART_IDENT); abrufBestellpositionDto .setBestellpositionstatusCNr(BestellpositionFac.BESTELLPOSITIONSTATUS_OFFEN); abrufBestellpositionDto.setBestellungIId(abrufBestellungDto.getIId()); abrufBestellpositionDto.setCBez(artikelDto.getArtikelsprDto().getCBez()); // bestellpositionDto.setISort(new Integer(j++)); abrufBestellpositionDto.setEinheitCNr(artikelDto.getEinheitCNr()); abrufBestellpositionDto.setNNettoeinzelpreis(besPosDto.getNNettoeinzelpreis()); abrufBestellpositionDto.setNNettogesamtpreis(besPosDto.getNNettogesamtpreis()); abrufBestellpositionDto.setNRabattbetrag(besPosDto.getNRabattbetrag()); abrufBestellpositionDto.setDRabattsatz(besPosDto.getDRabattsatz()); abrufBestellpositionDto.setNMaterialzuschlag(besPosDto.getNMaterialzuschlag()); abrufBestellpositionDto .setBNettopreisuebersteuert(besPosDto.getBNettopreisuebersteuert()); abrufBestellpositionDto .setTUebersteuerterLiefertermin(bestellvorschlagDto[i].getTLiefertermin()); getBestellpositionFac().createAbrufbestellposition(abrufBestellpositionDto, BestellpositionFac.PREISPFLEGEARTIKELLIEFERANT_PREIS_UNVERAENDERT, null, theClientDto); } else { BigDecimal bdMenge = bdAbrufmenge.add(abrufBestellpositionDto.getNMenge()); abrufBestellpositionDto.setNMenge(bdMenge); bdbenoetigteMenge = bdbenoetigteMenge.subtract(bdMenge); getBestellpositionFac().updateAbrufbestellposition(abrufBestellpositionDto, BestellpositionFac.PREISPFLEGEARTIKELLIEFERANT_PREIS_UNVERAENDERT, null, theClientDto); } bUebergeleitet = true; } if (bUebergeleitet) { this.removeBestellvorschlag(bestellvorschlagDto[i]); } } } BestellungDto[] toReturn = new BestellungDto[alUeberlieferteBestellungIId.size()]; for (int x = 0; x < alUeberlieferteBestellungIId.size(); x++) { toReturn[x] = getBestellungFac().bestellungFindByPrimaryKey(alUeberlieferteBestellungIId.get(x)); } return toReturn; } catch (Exception e) { throw new EJBExceptionLP(e); } finally { session.close(); } }
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 * ------------------/* w ww .j a v a 2 s. com*/ * ---------------------------------------------------------- * * @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); } }