List of usage examples for org.hibernate.criterion Restrictions or
public static LogicalExpression or(Criterion lhs, Criterion rhs)
From source file:com.lp.server.bestellung.ejbfac.BestellungReportFacBean.java
License:Open Source License
/** * Alle offenen Bestellungen fuer einen bestimmten Mandanten drucken. * //from w ww . jav a 2 s . c om * @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.BSMahnwesenFacBean.java
License:Open Source License
/** * erstellt Liefermahnungen, ABMahnungen oder beides ruft dazu die Methoden * echteLiefermahnungen() und (oder) echteABMahnungen() auf * ------------------/*ww w .ja va 2 s .c om*/ * ---------------------------------------------------------- * * @param echteLiefermahnung * boolean * @param echteABMahnungen * boolean * @param theClientDto * String * @throws EJBExceptionLP * @return Integer * ---------------------------------------------------------- * ----------------- */ @TransactionAttribute(TransactionAttributeType.NEVER) private Integer createMahnungen(boolean echteLiefermahnung, boolean echteABMahnungen, boolean liefererinnerung, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null; try { // Mahnstufen des Mandanten holen BSMahnstufeDto bsmahnstufeDto[] = this.bsmahnstufeFindByMandantCNr(theClientDto.getMandant(), theClientDto); if (bsmahnstufeDto == null || bsmahnstufeDto.length == 0) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_KEINE_MAHNSTUFEN_EINGETRAGEN, ""); } // mahnlaufIId generieren wird fuer Liefermahnung und ABMahnung // gebraucht Integer bsmahnlaufIId = null; BSMahnlaufDto bsmahnlaufDto = null; bsmahnlaufIId = context.getBusinessObject(BSMahnwesenFac.class).createBSMahnlauf(bsmahnlaufDto, theClientDto); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria crit = session.createCriteria(FLRBestellpositionReport.class); // folgende Positionsarten werden ignoriert. Collection<String> cPositionsarten = new LinkedList<String>(); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_BETRIFFT); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_SEITENUMBRUCH); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_LEERZEILE); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTBAUSTEIN); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTEINGABE); crit.add(Restrictions.not(Restrictions .in(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, cPositionsarten))); // PJ 16536 String queryString = "SELECT artgru_i_id FROM FLRMahngruppe m" + " WHERE m.flrartikelgruppe.mandant_c_nr ='" + theClientDto.getMandant() + "'"; Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Query query = session2.createQuery(queryString); List<?> results = query.list(); Iterator<?> resultListIterator = results.iterator(); Integer[] ids = new Integer[results.size()]; int row = 0; while (resultListIterator.hasNext()) { Integer artgruIId = (Integer) resultListIterator.next(); ids[row] = artgruIId; row++; } session2.close(); if (ids.length > 0) { crit.createAlias("flrartikel", "a"); crit.createAlias("a.flrartikelgruppe", "ag"); crit.add(Restrictions.in("ag.i_id", ids)); } Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); // nach mandanten filtern critBestellung .add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // PJ 15165 critBestellung.add(Restrictions.or(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS), Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS, Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()))))); // nach Stati filtern Collection<String> cStati = new LinkedList<String>(); cStati.add(BestellungFac.BESTELLSTATUS_OFFEN); cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT); // SK added BESTELLSTATUS_TEILERLEDIGT cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT); critBestellung.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)); List<?> list = crit.list(); for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRBestellpositionReport flrbespos = (FLRBestellpositionReport) iter.next(); /** * nur Liefermahnungen deren Status bestaetigt ist oder deren * Liefertermin vor heute ist */ if (echteLiefermahnung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { Integer latest = 0; for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > latest) { latest = bsmahnungdto[y].getMahnstufeIId(); } } for (int i = 0; i < bsmahnstufeDto.length; i++) { if (latest.equals(bsmahnstufeDto[i].getIId())) { echteLiefermahnungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } else { echteLiefermahnungen(flrbespos, bsmahnlaufIId, null, theClientDto); } } // lt. WH boolean bEchteLiefermahnungVorhanden = false; BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > 0) { bEchteLiefermahnungVorhanden = true; } } } if (bEchteLiefermahnungVorhanden == false) { /** * nur ABMahnungen deren Status offen ist ausser der * Liefertermin ist vor heute dann ist es eine Liefermahnung */ if (echteABMahnungen == true) { // hier wird mahnstufe 0 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId().equals(new Integer(BSMahnwesenFac.MAHNSTUFE_0))) { echteABMahnungen(flrbespos, bsmahnstufeDto[i], bsmahnlaufIId, theClientDto); } } } // lt. WH boolean bABLiefermahnungVorhanden = false; bsmahnungdto = getBSMahnwesenFac().bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() == 0) { bABLiefermahnungVorhanden = true; } } } if (bABLiefermahnungVorhanden == false) { // lt. WH Liefererinnerung ist wie echte // Liefermahnung, // jedoch // nur mit Mahnstufe -1 if (liefererinnerung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { if (flrbespos.getT_lieferterminbestaetigt() == null) { // hier wird mahnstufe -1 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId() .equals(new Integer(BSMahnwesenFac.MAHNSTUFE_MINUS1))) { liefererinnerungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } } } } } return bsmahnlaufIId; } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
From source file:com.lp.server.eingangsrechnung.ejbfac.EingangsrechnungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printOffene(TheClientDto theClientDto, int iSort, Integer lieferantIId, Date dStichtag, boolean bStichtagIstFreigabeDatum, boolean bZusatzkosten, boolean mitNichtZugeordnetenBelegen) { this.useCase = UC_OFFENE; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null;// ww w. j ava 2s.co m try { Map<Integer, ZahlungszielDto> mZahlungsziel = getMandantFac() .zahlungszielFindAllByMandantAsDto(theClientDto.getMandant(), theClientDto); session = factory.openSession(); List<Integer> lieferantenIIds = new ArrayList<Integer>(); if (lieferantIId != null) { lieferantenIIds.add(lieferantIId); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { Iterator<?> iter = session.createCriteria(FLRLieferant.class).createAlias("flrpartner", "p") .addOrder(Order.asc("p.c_name1nachnamefirmazeile1")) .add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())) .list().iterator(); while (iter.hasNext()) { lieferantenIIds.add(((FLRLieferant) iter.next()).getI_id()); } } else { lieferantenIIds.add(null); } List<Object[]> dataList = new ArrayList<Object[]>(); for (Integer liefIId : lieferantenIIds) { Criteria crit = session.createCriteria(FLREingangsrechnungReport.class); // Filter nach Mandant crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); Collection<String> cStati = new LinkedList<String>(); cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); cStati.add(EingangsrechnungFac.STATUS_ANGELEGT); cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT); crit.add(Restrictions.in("status_c_nr", cStati)); if (bZusatzkosten) { crit.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)); } else { crit.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN))); } if (liefIId != null) { crit.add(Restrictions.eq("lieferant_i_id", liefIId)); } if (bStichtagIstFreigabeDatum) { crit.add(Restrictions.le("t_freigabedatum", dStichtag)); } else { crit.add(Restrictions.le("t_belegdatum", dStichtag)); } crit.add(Restrictions.or(Restrictions.gt("t_bezahltdatum", dStichtag), Restrictions.isNull("t_bezahltdatum"))); crit.add(Restrictions.or(Restrictions.gt("t_manuellerledigt", dStichtag), Restrictions.isNull("t_manuellerledigt"))); if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) { crit.addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { crit.addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) { crit.addOrder(Order.asc("t_faelligkeit")).addOrder(Order.asc("c_nr")); // Inerhalb wird immer nach // Rechnungsnummer sortiert } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) { crit.addOrder(Order.asc("t_faelligkeit_skonto1")).addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) { crit.addOrder(Order.asc("t_faelligkeit_skonto2")).addOrder(Order.asc("c_nr")); } if (iSort != EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { mitNichtZugeordnetenBelegen = false; } List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); int row = 0; Object[][] tempData = new Object[resultList.size()][OFFENE_ANZAHL_FELDER]; if (mitNichtZugeordnetenBelegen) { LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(liefIId, theClientDto); if (liefDto.getKontoIIdKreditorenkonto() != null) { // TODO: nur FLRFinanzBuchungDetail holen Query query = session.createQuery( "SELECT buchungdetail from FLRFinanzBuchungDetail buchungdetail LEFT OUTER JOIN buchungdetail.flrbuchung AS buchung" + " WHERE" + BuchungDetailQueryBuilder.buildNurOffeneBuchungDetails("buchungdetail") + "AND" + BuchungDetailQueryBuilder.buildNichtZuordenbareVonKonto("buchungdetail", "buchung", liefDto.getKontoIIdKreditorenkonto()) + (dStichtag == null ? "" : ("AND buchung.d_buchungsdatum<='" + Helper.formatDateWithSlashes(dStichtag) + "'"))); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> bdList = query.list(); if (bdList.size() > 0) { if (tempData.length < 1) { tempData = new Object[1][OFFENE_ANZAHL_FELDER]; String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2(); tempData[0][OFFENE_FELD_FIRMA] = sFirma; tempData[0][OFFENE_FELD_KREDITORENNR] = getFinanzFac() .kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto()).getCNr(); } tempData[0][OFFENE_SUBREPORT_OFFENE_BUCHUNGEN] = FinanzSubreportGenerator .createBuchungsdetailSubreport(bdList, false); } } } while (resultListIterator.hasNext()) { FLREingangsrechnungReport er = (FLREingangsrechnungReport) resultListIterator.next(); EingangsrechnungDto erDto = getEingangsrechnungFac() .eingangsrechnungFindByPrimaryKey(er.getI_id()); LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(erDto.getLieferantIId(), theClientDto); String sErCNr = erDto.getCNr(); String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2(); ZahlungszielDto zzDto = mZahlungsziel.get(erDto.getZahlungszielIId()); tempData[row][OFFENE_FELD_ER_C_NR] = sErCNr; tempData[row][OFFENE_FELD_FIRMA] = sFirma; tempData[row][OFFENE_FELD_ERDATUM] = er.getT_belegdatum(); tempData[row][OFFENE_FELD_MAHNDATUM] = erDto.getTMahndatum(); tempData[row][OFFENE_FELD_KREDITORENNR] = liefDto.getKontoIIdKreditorenkonto() != null ? getFinanzFac().kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto()) .getCNr() : null; tempData[row][OFFENE_FELD_MAHNSTUFE] = er.getMahnstufe_i_id(); tempData[row][OFFENE_FELD_FREIGABEDATUM] = er.getT_freigabedatum(); tempData[row][OFFENE_FELD_WERT] = erDto.getNBetrag(); tempData[row][OFFENE_FELD_LIEFERANTENRECHNUNGSNUMMER] = erDto.getCLieferantenrechnungsnummer(); tempData[row][OFFENE_FELD_TEXT] = erDto.getCText(); if (zzDto != null) { tempData[row][OFFENE_FELD_ZAHLUNGSZIEL] = zzDto.getCBez(); tempData[row][OFFENE_FELD_SKONTOTAGE1] = zzDto.getSkontoAnzahlTage1(); tempData[row][OFFENE_FELD_SKONTOTAGE2] = zzDto.getSkontoAnzahlTage2(); tempData[row][OFFENE_FELD_SKONTOPROZENT1] = zzDto.getSkontoProzentsatz1(); tempData[row][OFFENE_FELD_SKONTOPROZENT2] = zzDto.getSkontoProzentsatz2(); tempData[row][OFFENE_FELD_NETTOTAGE] = zzDto.getAnzahlZieltageFuerNetto(); if (erDto.getDFreigabedatum() != null) { if (zzDto.getAnzahlZieltageFuerNetto() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT] = er.getT_faelligkeit(); } if (zzDto.getSkontoAnzahlTage1() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO1] = er.getT_faelligkeit_skonto1(); } if (zzDto.getSkontoAnzahlTage2() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO2] = er.getT_faelligkeit_skonto2(); } } } // datum der letzten zahlung bis zum stichtag ermitteln EingangsrechnungzahlungDto[] zahlungen = getEingangsrechnungFac() .eingangsrechnungzahlungFindByEingangsrechnungIId(er.getI_id()); java.sql.Date dZahldatum = null; for (int i = 0; i < zahlungen.length; i++) { if ((dZahldatum == null || zahlungen[i].getTZahldatum().after(dZahldatum)) && !zahlungen[i].getTZahldatum().after(dStichtag)) { dZahldatum = new Date(zahlungen[i].getTZahldatum().getTime()); } } tempData[row][OFFENE_FELD_ZAHLDATUM] = dZahldatum; // Zahlungsbetrag bis zum Stichtag ermitteln BigDecimal bdBezahltFw = new BigDecimal(0); BigDecimal bdBezahltKursBelegdatum = new BigDecimal(0); for (int i = 0; i < zahlungen.length; i++) { if (!zahlungen[i].getTZahldatum().after(dStichtag)) { bdBezahltFw = bdBezahltFw.add(zahlungen[i].getNBetragfw()); bdBezahltKursBelegdatum = bdBezahltKursBelegdatum .add(zahlungen[i].getNBetragfw().multiply(erDto.getNKurs())); } } tempData[row][OFFENE_FELD_BETRAG] = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdBezahltFw, erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), // new Date(System.currentTimeMillis()), dStichtag, theClientDto); tempData[row][OFFENE_FELD_BETRAG_KURS_BELEGDATUM] = bdBezahltKursBelegdatum; tempData[row][OFFENE_FELD_OFFEN] = getLocaleFac().rechneUmInAndereWaehrungZuDatum( erDto.getNBetragfw().subtract(bdBezahltFw), erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), // new Date(System.currentTimeMillis()), dStichtag, theClientDto); tempData[row][OFFENE_FELD_OFFEN_KURS_BELEGDATUM] = erDto.getNBetrag() .subtract(bdBezahltKursBelegdatum); tempData[row][OFFENE_FELD_BETRAG_FW] = bdBezahltFw; tempData[row][OFFENE_FELD_OFFEN_FW] = erDto.getNBetragfw().subtract(bdBezahltFw); tempData[row][OFFENE_FELD_ERWAEHRUNG] = erDto.getWaehrungCNr(); tempData[row][OFFENE_FELD_WERT_FW] = erDto.getNBetragfw(); tempData[row][OFFENE_FELD_ERKURS] = erDto.getNKurs(); WechselkursDto wkDto = getLocaleFac().getKursZuDatum(erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), dStichtag, theClientDto); tempData[row][OFFENE_FELD_KURS_STICHTAG] = wkDto.getNKurs() .setScale(LocaleFac.ANZAHL_NACHKOMMASTELLEN_WECHSELKURS, RoundingMode.HALF_EVEN); row++; } dataList.addAll(Arrays.asList(tempData)); } data = dataList.toArray(new Object[0][]); Map<String, Object> mapParameter = new TreeMap<String, Object>(); mapParameter.put("P_DATUM", dStichtag); mapParameter.put("P_STICHTAGISTFREIGABEDATUM", new Boolean(bStichtagIstFreigabeDatum)); mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten)); String sSortierung = null; if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { sSortierung = "Lieferant"; } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) { sSortierung = "Rechnungsnummer"; } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) { sSortierung = getTextRespectUISpr("lp.faelligkeit", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) { sSortierung = getTextRespectUISpr("er.faelligkeitskonto1", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) { sSortierung = getTextRespectUISpr("er.faelligkeitskonto2", theClientDto.getMandant(), theClientDto.getLocUi()); } mapParameter.put("P_SORTIERUNGNACHLIEFERANT", new Boolean(iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT)); mapParameter.put(LPReport.P_SORTIERUNG, sSortierung); String sZessionstext = null; sZessionstext = getParameterFac().parametermandantFindByPrimaryKey(ParameterFac.PARAMETER_ZESSIONSTEXT, ParameterFac.KATEGORIE_ALLGEMEIN, theClientDto.getMandant()).getCWert(); if (sZessionstext != null) { mapParameter.put("P_ZESSIONSTEXT", sZessionstext); } mapParameter.put("P_MANDANTENWAEHRUNG", theClientDto.getSMandantenwaehrung()); initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL, EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
License:Open Source License
public LossollarbeitsplanDto[] getAlleOffenenZeiternFuerStueckrueckmeldung(Integer personalIId, TheClientDto theClientDto) {//from w w w. j a v a 2 s. co m ArrayList<LossollarbeitsplanDto> alDaten = new ArrayList<LossollarbeitsplanDto>(); HashMap ids = new HashMap(); try { Integer taetigkeitIId_Kommt = getZeiterfassungFac() .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_KOMMT, theClientDto).getIId(); Integer taetigkeitIId_Geht = getZeiterfassungFac() .taetigkeitFindByCNr(ZeiterfassungFac.TAETIGKEIT_GEHT, theClientDto).getIId(); Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria liste = session.createCriteria(FLRZeitdaten.class); liste.add(Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_PERSONAL_I_ID, personalIId)); liste.add(Restrictions.or( Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_TAETIGKEIT_I_ID, taetigkeitIId_Kommt), Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_TAETIGKEIT_I_ID, taetigkeitIId_Geht))); liste.add(Expression.lt(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT, new Timestamp(System.currentTimeMillis()))); liste.add( Expression.eq(ZeiterfassungFac.FLR_ZEITDATEN_B_AUTOMATIKBUCHUNG, Helper.boolean2Short(false))); liste.addOrder(Order.desc(ZeiterfassungFac.FLR_ZEITDATEN_T_ZEIT)); liste.setMaxResults(1); List<?> letztesKommt = liste.list(); Iterator it = letztesKommt.iterator(); Timestamp tVon = Helper.cutTimestamp(new Timestamp(System.currentTimeMillis())); if (it.hasNext()) { tVon = new Timestamp(((FLRZeitdaten) it.next()).getT_zeit().getTime()); } boolean bTheoretischeIstZeit = false; try { ParametermandantDto parameterIstZeit = (ParametermandantDto) getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_PERSONAL, ParameterFac.PARAMETER_THEORETISCHE_IST_ZEIT_RECHNUNG); bTheoretischeIstZeit = ((Boolean) parameterIstZeit.getCWertAsObject()); } catch (RemoteException ex5) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex5); } ZeitdatenDto[] dtos = getZeiterfassungFac().zeitdatenFindZeitdatenEinesTagesUndEinerPerson(personalIId, tVon, new Timestamp(System.currentTimeMillis())); boolean bRuestenSchonVorhanden = false; for (int i = dtos.length - 1; i >= 0; i--) { if (dtos[i].getCBelegartnr() != null && dtos[i].getIBelegartid() != null) { if (dtos[i].getCBelegartnr().equals(LocaleFac.BELEGART_LOS) && dtos[i].getIBelegartpositionid() != null) { try { Lossollarbeitsplan lossollarbeitsplan = em.find(Lossollarbeitsplan.class, dtos[i].getIBelegartpositionid()); if (lossollarbeitsplan != null) { if (!Helper.short2boolean(lossollarbeitsplan.getBNurmaschinenzeit()) && !Helper.short2boolean(lossollarbeitsplan.getBFertig())) { LossollarbeitsplanDto sollDto = assembleLossollarbeitsplanDto( lossollarbeitsplan); // PJ 16233 if (bTheoretischeIstZeit) { if (!ids.containsKey(sollDto.getIId())) { // PJ 16035 Ruesten nur das letzte if (sollDto.getAgartCNr() == null) { if (bRuestenSchonVorhanden == false) { bRuestenSchonVorhanden = true; alDaten.add(sollDto); ids.put(sollDto.getIId(), sollDto.getIId()); } } else { alDaten.add(sollDto); ids.put(sollDto.getIId(), sollDto.getIId()); } } } else { alDaten.add(sollDto); } } } } catch (NoResultException fe) { // keiner da } } } } // nun nach Losnr und AG sortieren // Nach Fertigungsgruppe sortieren for (int k = alDaten.size() - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { LossollarbeitsplanDto a1 = (LossollarbeitsplanDto) alDaten.get(j); LossollarbeitsplanDto a2 = (LossollarbeitsplanDto) alDaten.get(j + 1); LosDto l1 = losFindByPrimaryKey(a1.getLosIId()); LosDto l2 = losFindByPrimaryKey(a2.getLosIId()); String s1 = l1.getCNr(); if (a1.getIUnterarbeitsgang() != null) { s1 += Helper.fitString2LengthAlignRight(a1.getIUnterarbeitsgang() + "", 10, ' '); } else { s1 += Helper.fitString2LengthAlignRight("", 10, ' '); } s1 += Helper.fitString2LengthAlignRight(a1.getIArbeitsgangnummer() + "", 10, ' '); String s2 = l2.getCNr(); if (a2.getIUnterarbeitsgang() != null) { s2 += Helper.fitString2LengthAlignRight(a2.getIUnterarbeitsgang() + "", 10, ' '); } else { s2 += Helper.fitString2LengthAlignRight("", 10, ' '); } s2 += Helper.fitString2LengthAlignRight(a2.getIArbeitsgangnummer() + "", 10, ' '); if (s1.compareTo(s2) > 0) { alDaten.set(j, a2); alDaten.set(j + 1, a1); } } } } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } LossollarbeitsplanDto[] returnArray = new LossollarbeitsplanDto[alDaten.size()]; return (LossollarbeitsplanDto[]) alDaten.toArray(returnArray); }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printHalbfertigfabrikatsinventur(java.sql.Timestamp tsStichtag, int iSortierung, boolean bVerdichtet, Integer partnerIIdFertigungsort, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from www .ja va 2 s . c o m try { Map<String, Object> mapParameter = new TreeMap<String, Object>(); if (tsStichtag != null) { mapParameter.put("P_STICHTAG", tsStichtag); Calendar c = Calendar.getInstance(); c.setTimeInMillis(tsStichtag.getTime()); c.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH) + 1); tsStichtag = new java.sql.Timestamp(c.getTimeInMillis()); tsStichtag = Helper.cutTimestamp(tsStichtag); } this.useCase = UC_HALBFERTIGFABRIKATSINVENTUR; this.index = -1; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLosReport.class); c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // c.add(Restrictions.eq("i_id", 99579)); if (partnerIIdFertigungsort != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_PARTNER_I_ID_FERTIGUNGSORT, partnerIIdFertigungsort)); } if (tsStichtag == null) { c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_ERLEDIGT, FertigungFac.STATUS_ANGELEGT, FertigungFac.STATUS_GESTOPPT }))); } else { c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT }))); c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOS_T_ERLEDIGT, tsStichtag), Restrictions.isNull(FertigungFac.FLR_LOS_T_ERLEDIGT))); c.add(Restrictions.or(Restrictions.gt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tsStichtag), Restrictions.isNull(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT))); c.add(Restrictions.le(FertigungFac.FLR_LOS_T_AUSGABE, tsStichtag)); } // Sortierung nach Losnummer c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR)); List<?> list = c.list(); ArrayList<Object[]> alDaten = new ArrayList<Object[]>(); int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLosReport item = (FLRLosReport) iter.next(); Object[] zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); zeile[HF_LOSGROESSE] = item.getN_losgroesse(); if (item.getFlrstueckliste() != null) { zeile[HF_ARTIKELNUMMER] = item.getFlrstueckliste().getFlrartikel().getC_nr(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall( item.getFlrstueckliste().getFlrartikel().getI_id(), theClientDto); zeile[HF_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); ; } else { zeile[HF_ARTIKELNUMMER] = getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi()); zeile[HF_BEZEICHNUNG] = item.getC_projekt(); } LosablieferungDto[] losablieferungDtos = getFertigungFac() .losablieferungFindByLosIId(item.getI_id(), true, theClientDto); BigDecimal bdAbgeliefert = new BigDecimal(0.0000); for (int j = 0; j < losablieferungDtos.length; j++) { if (tsStichtag == null) { bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge()); } else { if (tsStichtag.after(losablieferungDtos[j].getTAendern())) { bdAbgeliefert = bdAbgeliefert.add(losablieferungDtos[j].getNMenge()); } } } zeile[HF_ERLEDIGT] = bdAbgeliefert; // Nun eine Zeile pro Position // Ausgegebenes Material LossollmaterialDto[] sollmat = getFertigungFac().lossollmaterialFindByLosIId(item.getI_id()); for (int j = 0; j < sollmat.length; j++) { BigDecimal bdMenge = getFertigungFac().getAusgegebeneMenge(sollmat[j].getIId(), tsStichtag, theClientDto); zeile[HF_POSITION_AUSGEGEBEN] = bdMenge; // Einkaufspreis des ersten Lieferanten hinzufuegen ArtikellieferantDto dto = getArtikelFac().getArtikelEinkaufspreis(sollmat[j].getArtikelIId(), null, new BigDecimal(1), theClientDto.getSMandantenwaehrung(), new java.sql.Date(sollmat[j].getTAendern().getTime()), theClientDto); if (dto != null) { zeile[HF_POSITION_EKPREIS] = dto.getLief1Preis(); } // CK:2008-12-23 Wegen Beistellteilen ist die Verfaelschung // des Gestehungspreises falsch // es muss immer der Gestehungspreis zum ausgabezeitpunkt // verwendet werden. BigDecimal bdPreis = getFertigungFac().getAusgegebeneMengePreis(sollmat[j].getIId(), tsStichtag, theClientDto); zeile[HF_POSITION_PREIS] = bdPreis; BigDecimal sollsatzmenge = new BigDecimal(0); if (item.getN_losgroesse().doubleValue() != 0) { sollsatzmenge = sollmat[j].getNMenge().divide(item.getN_losgroesse(), BigDecimal.ROUND_HALF_EVEN); } BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); if (theoretischabgeliefert.doubleValue() > bdMenge.doubleValue()) { theoretischabgeliefert = bdMenge; } zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN] = bdMenge.subtract(theoretischabgeliefert); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(sollmat[j].getArtikelIId(), theClientDto); zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr(); zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung(); if (bVerdichtet) { if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_POSITION_ARTIKELNUMMMER] .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) { bGefunden = true; zeileTemp[HF_LOSNUMMER] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) { bGefunden = true; zeileTemp[HF_POSITION_ARTIKELNUMMMER] = ""; zeileTemp[HF_POSITION_BEZEICHNUNG] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } } else { alDaten.add(zeile); } zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); } // Verbrauchte Arbeitszeit LossollarbeitsplanDto[] lossollarbeitsplanDto = getFertigungFac() .lossollarbeitsplanFindByLosIId(item.getI_id()); for (int j = 0; j < lossollarbeitsplanDto.length; j++) { AuftragzeitenDto[] zeiten = getZeiterfassungFac().getAllZeitenEinesBeleges( LocaleFac.BELEGART_LOS, item.getI_id(), null, null, null, tsStichtag, false, false, theClientDto); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey( lossollarbeitsplanDto[j].getArtikelIIdTaetigkeit(), theClientDto); zeile[HF_POSITION_ARTIKELNUMMMER] = artikelDto.getCNr(); zeile[HF_POSITION_BEZEICHNUNG] = artikelDto.formatBezeichnung(); BigDecimal bdArbeitszeitwert = new BigDecimal(0); BigDecimal bdIstZeit = new BigDecimal(0); for (int k = 0; k < zeiten.length; k++) { if (artikelDto.getIId().equals(zeiten[k].getArtikelIId())) { bdArbeitszeitwert = bdArbeitszeitwert.add(zeiten[k].getBdKosten()); bdIstZeit = bdIstZeit.add(new BigDecimal(zeiten[k].getDdDauer().doubleValue())); } } BigDecimal sollsatzmenge = new BigDecimal(0); if (item.getN_losgroesse().doubleValue() != 0) { sollsatzmenge = lossollarbeitsplanDto[j].getNGesamtzeit().divide(item.getN_losgroesse(), BigDecimal.ROUND_HALF_EVEN); } if (Helper.short2boolean(lossollarbeitsplanDto[j].getBNurmaschinenzeit())) { zeile[HF_POSITION_AUSGEGEBEN] = new BigDecimal(0); } else { zeile[HF_POSITION_AUSGEGEBEN] = lossollarbeitsplanDto[j].getNGesamtzeit(); } BigDecimal theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); BigDecimal restist = bdIstZeit.subtract(theoretischabgeliefert); if (restist.doubleValue() <= 0) { restist = new BigDecimal(0); } if (theoretischabgeliefert.doubleValue() > bdIstZeit.doubleValue()) { theoretischabgeliefert = bdIstZeit; } zeile[HF_POSITION_ABGELIFERT] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN] = restist; if (bdIstZeit.doubleValue() != 0) { zeile[HF_POSITION_PREIS] = bdArbeitszeitwert.divide(bdIstZeit, BigDecimal.ROUND_HALF_EVEN); } else { zeile[HF_POSITION_PREIS] = new BigDecimal(0); } AuftragzeitenDto[] maschinenzeiten = getZeiterfassungFac().getAllMaschinenzeitenEinesBeleges( item.getI_id(), lossollarbeitsplanDto[j].getIId(), null, tsStichtag, theClientDto); BigDecimal bdArbeitszeitwertMaschine = new BigDecimal(0); BigDecimal bdIstZeitMaschine = new BigDecimal(0); for (int k = 0; k < maschinenzeiten.length; k++) { bdArbeitszeitwertMaschine = bdArbeitszeitwertMaschine.add(maschinenzeiten[k].getBdKosten()); bdIstZeitMaschine = bdIstZeitMaschine .add(new BigDecimal(maschinenzeiten[k].getDdDauer().doubleValue())); } if (lossollarbeitsplanDto[j].getMaschineIId() == null) { zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = new BigDecimal(0); } else { zeile[HF_POSITION_AUSGEGEBEN_MASCHINE] = lossollarbeitsplanDto[j].getNGesamtzeit(); } theoretischabgeliefert = sollsatzmenge.multiply(bdAbgeliefert); BigDecimal restistMaschine = bdIstZeitMaschine.subtract(theoretischabgeliefert); if (restistMaschine.doubleValue() <= 0) { restistMaschine = new BigDecimal(0); } if (theoretischabgeliefert.doubleValue() > bdIstZeitMaschine.doubleValue()) { theoretischabgeliefert = bdIstZeitMaschine; } zeile[HF_POSITION_ABGELIFERT_MASCHINE] = theoretischabgeliefert; zeile[HF_POSITION_OFFEN_MASCHINE] = restistMaschine; if (bdIstZeitMaschine.doubleValue() != 0) { zeile[HF_POSITION_PREIS_MASCHINE] = bdArbeitszeitwertMaschine.divide(bdIstZeitMaschine, BigDecimal.ROUND_HALF_EVEN); } else { zeile[HF_POSITION_PREIS_MASCHINE] = new BigDecimal(0); } if (bVerdichtet) { if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_POSITION_ARTIKELNUMMMER] .equals(zeile[HF_POSITION_ARTIKELNUMMMER])) { bGefunden = true; zeileTemp[HF_LOSNUMMER] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { boolean bGefunden = false; for (int k = 0; k < alDaten.size(); k++) { Object[] zeileTemp = (Object[]) alDaten.get(k); if (zeileTemp[HF_LOSNUMMER].equals(zeile[HF_LOSNUMMER])) { bGefunden = true; zeileTemp[HF_POSITION_ARTIKELNUMMMER] = ""; zeileTemp[HF_POSITION_BEZEICHNUNG] = ""; zeileTemp[HF_POSITION_AUSGEGEBEN] = ((BigDecimal) zeileTemp[HF_POSITION_AUSGEGEBEN]) .add((BigDecimal) zeile[HF_POSITION_AUSGEGEBEN]); zeileTemp[HF_POSITION_ABGELIFERT] = ((BigDecimal) zeileTemp[HF_POSITION_ABGELIFERT]) .add((BigDecimal) zeile[HF_POSITION_ABGELIFERT]); // Neuen Preis berechnen BigDecimal alterPreis = (BigDecimal) zeileTemp[HF_POSITION_PREIS]; BigDecimal alteOffen = (BigDecimal) zeileTemp[HF_POSITION_OFFEN]; BigDecimal neuerPreis = (BigDecimal) zeile[HF_POSITION_PREIS]; BigDecimal neueOffen = (BigDecimal) zeile[HF_POSITION_OFFEN]; BigDecimal wertNeu = alterPreis.multiply(alteOffen) .add(neuerPreis.multiply(neueOffen)); if (neueOffen.add(alteOffen).doubleValue() != 0) { zeileTemp[HF_POSITION_PREIS] = wertNeu.divide(neueOffen.add(alteOffen), 4, BigDecimal.ROUND_HALF_EVEN); } else { zeileTemp[HF_POSITION_PREIS] = new BigDecimal(0); } zeileTemp[HF_POSITION_OFFEN] = neueOffen.add(alteOffen); alDaten.set(k, zeileTemp); } } if (bGefunden == false) { alDaten.add(zeile); } } } else { alDaten.add(zeile); } zeile = new Object[17]; zeile[HF_LOSNUMMER] = item.getC_nr(); } } mapParameter.put(LPReport.P_WAEHRUNG, theClientDto.getSMandantenwaehrung()); mapParameter.put("P_VERDICHTET", new Boolean(bVerdichtet)); if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_LOSNR) { // Sortierng nach Losnr data = new Object[alDaten.size()][17]; data = (Object[][]) alDaten.toArray(data); initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_HALBFERTIGFABRIKATSINVENTUR, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); } else if (iSortierung == FertigungReportFac.HF_OPTION_SORTIERUNG_ARTIKELNR) { // Sortieren nach Identnr for (int k = alDaten.size() - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Object[] a1 = (Object[]) alDaten.get(j); Object[] a2 = (Object[]) alDaten.get(j + 1); if (((String) a1[HF_POSITION_ARTIKELNUMMMER]) .compareTo((String) a2[HF_POSITION_ARTIKELNUMMMER]) > 0) { alDaten.set(j, a2); alDaten.set(j + 1, a1); } } } data = new Object[alDaten.size()][17]; data = (Object[][]) alDaten.toArray(data); initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_HALBFERTIGFABRIKATSINVENTUR_IDENT, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); } return getReportPrint(); } catch (RemoteException t) { throwEJBExceptionLPRespectOld(t); } finally { closeSession(session); } return getReportPrint(); }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printLosstatistik(java.sql.Timestamp tVon, java.sql.Timestamp tBis, Integer losIId, Integer stuecklisteIId, Integer auftragIId, boolean bArbeitsplanSortiertNachAG, boolean bVerdichtet, java.sql.Timestamp tStichtag, TheClientDto theClientDto) { this.useCase = UC_LOSSTATISTIK; this.index = -1; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); PersonalDto[] personalDtos = null;//from w ww .j a va 2 s . c o m MaschineDto[] maschineDtos = null; try { personalDtos = getPersonalFac().personalFindByMandantCNr(theClientDto.getMandant(), true); maschineDtos = getZeiterfassungFac().maschineFindByMandantCNr(theClientDto.getMandant()); } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } Map<String, Object> mapParameter = new TreeMap<String, Object>(); Criteria c = session.createCriteria(FLRLosReport.class); c.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { LocaleFac.STATUS_ANGELEGT, LocaleFac.STATUS_STORNIERT }))); if (stuecklisteIId != null) { c.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, stuecklisteIId)); StuecklisteDto stuecklisteDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(stuecklisteIId, theClientDto); mapParameter.put("P_STUECKLISTE", stuecklisteDto.getArtikelDto().formatArtikelbezeichnung()); } if (losIId != null) { c.add(Restrictions.eq("i_id", losIId)); } if (auftragIId != null) { c.createAlias("flrauftrag", "a").add(Restrictions.eq("a.i_id", auftragIId)); try { AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(auftragIId); KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); mapParameter.put("P_AUFTRAG", auftragDto.getCNr()); mapParameter.put("P_AUFTRAGPROJEKT", auftragDto.getCBezProjektbezeichnung()); mapParameter.put("P_AUFTRAGKUNDE", kundeDto.getPartnerDto().formatAnrede()); mapParameter.put("P_BEARBEITER", getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdAnlegen(), theClientDto)); if (auftragDto.getPersonalIIdVertreter() != null) { mapParameter.put("P_VERTRETER", getPersonalFac().getPersonRpt(auftragDto.getPersonalIIdVertreter(), theClientDto)); } } catch (RemoteException ex2) { throwEJBExceptionLPRespectOld(ex2); } } if (tStichtag != null) { mapParameter.put("P_STICHTAG", tStichtag);// new // Timestamp(tStichtag.getTime())); tStichtag = Helper.cutTimestamp(new Timestamp(tStichtag.getTime() + 24 * 3600000)); } if (losIId == null && auftragIId == null) { if (tVon != null) { c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tVon), Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tVon))); mapParameter.put("P_VON", tVon); } if (tBis != null) { c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tBis), Restrictions.lt(FertigungFac.FLR_LOS_T_ERLEDIGT, tBis))); mapParameter.put("P_BIS", new Timestamp(tBis.getTime() - 3600000)); } if (tStichtag != null) { c.add(Restrictions.or(Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag), Restrictions.lt(FertigungFac.FLR_LOSREPORT_T_ANLEGEN, tStichtag))); c.add(Restrictions.or(Restrictions.ge(FertigungFac.FLR_LOSREPORT_T_MANUELLERLEDIGT, tStichtag), Restrictions.ge(FertigungFac.FLR_LOS_T_ERLEDIGT, tStichtag))); } } c.addOrder(Order.asc("c_nr")); List<?> results = c.list(); ArrayList<LosStatistikDto> al = new ArrayList<LosStatistikDto>(); Iterator<?> resultListIterator = results.iterator(); while (resultListIterator.hasNext()) { FLRLosReport los = (FLRLosReport) resultListIterator.next(); try { LosDto losDto = getFertigungFac().losFindByPrimaryKey(los.getI_id()); BigDecimal abgeliefert = new BigDecimal(0); for (Iterator<?> iter2 = los.getAblieferungset().iterator(); iter2.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iter2.next(); abgeliefert = abgeliefert.add(item.getN_menge()); } // VKpreis BigDecimal vkPreis = null; if (los.getFlrauftragposition() != null) { vkPreis = los.getFlrauftragposition() .getN_nettogesamtpreisplusversteckteraufschlagminusrabatte(); } else { if (los.getFlrstueckliste() != null) { Integer kundeIId = null; if (los.getFlrauftrag() != null) { kundeIId = los.getFlrauftrag().getFlrkunde().getI_id(); } if (kundeIId == null && los.getFlrkunde() != null) { kundeIId = los.getFlrkunde().getI_id(); } if (kundeIId != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(kundeIId, theClientDto); MwstsatzDto mwstsatzDtoAktuell = getMandantFac() .mwstsatzFindByMwstsatzbezIIdAktuellster(kundeDto.getMwstsatzbezIId(), theClientDto); VkpreisfindungDto vkpreisfindungDto = getVkPreisfindungFac().verkaufspreisfindung( los.getFlrstueckliste().getArtikel_i_id(), kundeIId, losDto.getNLosgroesse(), losDto.getTProduktionsende(), kundeDto.getVkpfArtikelpreislisteIIdStdpreisliste(), mwstsatzDtoAktuell.getIId(), theClientDto.getSMandantenwaehrung(), theClientDto); VerkaufspreisDto kundenVKPreisDto = Helper.getVkpreisBerechnet(vkpreisfindungDto); if (kundenVKPreisDto != null) { vkPreis = kundenVKPreisDto.nettopreis; } } else { VkPreisfindungEinzelverkaufspreisDto vkpreisDto = getVkPreisfindungFac() .getArtikeleinzelverkaufspreis(los.getFlrstueckliste().getArtikel_i_id(), null, theClientDto.getSMandantenwaehrung(), theClientDto); if (vkpreisDto != null && vkpreisDto.getNVerkaufspreisbasis() != null) { vkPreis = vkpreisDto.getNVerkaufspreisbasis(); } } } } // Zuerst Material Session session2 = factory.openSession(); Criteria cSoll = session.createCriteria(FLRLossollmaterial.class); cSoll.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLMATERIAL_LOS_I_ID, los.getI_id())); cSoll.createAlias("flrartikel", "a"); cSoll.addOrder(Order.asc("a.c_nr")); List<?> resultsSoll = cSoll.list(); Iterator<?> resultListIteratorSoll = resultsSoll.iterator(); while (resultListIteratorSoll.hasNext()) { FLRLossollmaterial sollmat = (FLRLossollmaterial) resultListIteratorSoll.next(); if (bVerdichtet == false && sollmat.getIstmaterialset().size() > 0) { int i = 0; for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) { FLRLosistmaterial item = (FLRLosistmaterial) iter.next(); LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr()); ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto); losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); Timestamp tsBuchungszeit = null; List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac() .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS, item.getI_id()); for (int k = 0; k < snrDtos.size(); k++) { LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS, item.getI_id(), snrDtos.get(k).getCSeriennrChargennr()); tsBuchungszeit = bewDto.getTBuchungszeit(); break; } losStatistikDto.setBuchungszeit(tsBuchungszeit); if (i == 0) { losStatistikDto.setSollmenge(sollmat.getN_menge()); losStatistikDto.setSollpreis(sollmat.getN_sollpreis()); } else { losStatistikDto.setSollmenge(new BigDecimal(0)); losStatistikDto.setSollpreis(new BigDecimal(0)); } losStatistikDto.setBMaterial(true); losStatistikDto.setIstpreis(getFertigungFac() .getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); BigDecimal istmenge = new BigDecimal(0); if (Helper.short2boolean(item.getB_abgang()) == true) { istmenge = istmenge.add(item.getN_menge()); } else { istmenge = istmenge.subtract(item.getN_menge()); } losStatistikDto.setIstmenge(istmenge); if (tStichtag == null) { al.add(losStatistikDto); i++; } else { if (tsBuchungszeit == null) { al.add(losStatistikDto); i++; } else { if (tsBuchungszeit.before(tStichtag)) { al.add(losStatistikDto); i++; } } } } } else { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(sollmat.getFlrartikel().getC_nr()); ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKeySmall(sollmat.getFlrartikel().getI_id(), theClientDto); losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); losStatistikDto.setSollmenge(sollmat.getN_menge()); losStatistikDto.setSollpreis(sollmat.getN_sollpreis()); losStatistikDto.setBMaterial(true); losStatistikDto.setIstpreis( getFertigungFac().getAusgegebeneMengePreis(sollmat.getI_id(), null, theClientDto)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); BigDecimal istmenge = new BigDecimal(0); for (Iterator<?> iter = sollmat.getIstmaterialset().iterator(); iter.hasNext();) { FLRLosistmaterial item = (FLRLosistmaterial) iter.next(); if (tStichtag != null) { Timestamp tsBuchungszeit = null; List<SeriennrChargennrMitMengeDto> snrDtos = getLagerFac() .getAllSeriennrchargennrEinerBelegartposition(LocaleFac.BELEGART_LOS, item.getI_id()); for (int k = 0; k < snrDtos.size(); k++) { LagerbewegungDto bewDto = getLagerFac().getLetzteintrag(LocaleFac.BELEGART_LOS, item.getI_id(), snrDtos.get(k).getCSeriennrChargennr()); tsBuchungszeit = bewDto.getTBuchungszeit(); break; } if (tsBuchungszeit.after(tStichtag)) { continue; } } if (Helper.short2boolean(item.getB_abgang()) == true) { istmenge = istmenge.add(item.getN_menge()); } else { istmenge = istmenge.subtract(item.getN_menge()); } } losStatistikDto.setIstmenge(istmenge); al.add(losStatistikDto); } } session2.close(); LossollarbeitsplanDto[] lossollarbeitsplanDtos = getFertigungFac() .lossollarbeitsplanFindByLosIId(los.getI_id()); // PJ14351 Nach AG sortieren if (bArbeitsplanSortiertNachAG == true) { // Nach Fertigungsgruppe sortieren for (int k = lossollarbeitsplanDtos.length - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Integer a1 = lossollarbeitsplanDtos[j].getIArbeitsgangnummer(); Integer a2 = lossollarbeitsplanDtos[j + 1].getIArbeitsgangnummer(); if (a1.intValue() > a2.intValue()) { LossollarbeitsplanDto temp = lossollarbeitsplanDtos[j]; lossollarbeitsplanDtos[j] = lossollarbeitsplanDtos[j + 1]; lossollarbeitsplanDtos[j + 1] = temp; } } } } ArrayList<LosStatistikDto> hmSoll = new ArrayList<LosStatistikDto>(); // Zuerst Maschinenzeiten for (int i = 0; i < lossollarbeitsplanDtos.length; i++) { if (lossollarbeitsplanDtos[i].getMaschineIId() != null) { Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit(); BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto); // Schon vorhanden? boolean bGefunden = false; for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) { if (lossollarbeitsplanDtos[i].getMaschineIId() .equals(losStatistikDto.getMaschineIId())) { losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit)); bGefunden = true; hmSoll.set(j, losStatistikDto); } } } if (!bGefunden) { LosStatistikDto losStatistikMaschineDto = new LosStatistikDto(losDto); losStatistikMaschineDto.setArtikelnummer(artikelDto.getCNr()); losStatistikMaschineDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); losStatistikMaschineDto.setSollmenge(sollzeit); losStatistikMaschineDto.setBMaterial(false); losStatistikMaschineDto.setBIstPerson(false); losStatistikMaschineDto.setAbgelieferteMenge(abgeliefert); losStatistikMaschineDto.setVkpreisStueckliste(vkPreis); losStatistikMaschineDto.setSollpreis(getZeiterfassungFac() .getMaschinenKostenZumZeitpunkt(lossollarbeitsplanDtos[i].getMaschineIId(), Helper.cutTimestamp(new Timestamp(System.currentTimeMillis())))); MaschineDto maschineDto = getZeiterfassungFac() .maschineFindByPrimaryKey(lossollarbeitsplanDtos[i].getMaschineIId()); String maschinenname = "M:"; if (maschineDto.getCIdentifikationsnr() != null) { maschinenname += maschineDto.getCIdentifikationsnr() + " "; } maschinenname += maschineDto.getCBez(); losStatistikMaschineDto.setPersonMaschine(maschinenname); losStatistikMaschineDto.setMaschineIId(maschineDto.getIId()); hmSoll.add(losStatistikMaschineDto); } } } // Dann Personalzeiten for (int i = 0; i < lossollarbeitsplanDtos.length; i++) { if (!Helper.short2boolean(lossollarbeitsplanDtos[i].getBNurmaschinenzeit())) { Integer artikelIId = lossollarbeitsplanDtos[i].getArtikelIIdTaetigkeit(); BigDecimal sollzeit = lossollarbeitsplanDtos[i].getNGesamtzeit(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKeySmall(artikelIId, theClientDto); // Schon vorhanden? boolean bGefunden = false; for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getArtikelnummer().equals(artikelDto.getCNr())) { if (losStatistikDto.getMaschineIId() == null) { losStatistikDto.setSollmenge(losStatistikDto.getSollmenge().add(sollzeit)); hmSoll.set(j, losStatistikDto); bGefunden = true; } } } if (!bGefunden) { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(artikelDto.getCNr()); losStatistikDto.setArtikelbezeichnung(artikelDto.formatBezeichnung()); losStatistikDto.setSollmenge(sollzeit); losStatistikDto.setBMaterial(false); losStatistikDto.setBIstPerson(true); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); ArtikellieferantDto artikellieferantDto = getArtikelFac().getArtikelEinkaufspreis( artikelDto.getIId(), new BigDecimal(1), theClientDto.getSMandantenwaehrung(), theClientDto); if (artikellieferantDto != null && artikellieferantDto.getLief1Preis() != null) { losStatistikDto.setSollpreis(artikellieferantDto.getLief1Preis()); } else { losStatistikDto.setSollpreis(new BigDecimal(0)); } hmSoll.add(losStatistikDto); } } } // Dann Zeiten AuftragzeitenDto[] maschinenzeitenDtos = getZeiterfassungFac() .getAllMaschinenzeitenEinesBeleges(los.getI_id(), null, null, tStichtag, theClientDto); AuftragzeitenDto[] personalzeitenDtos = getZeiterfassungFac().getAllZeitenEinesBeleges( LocaleFac.BELEGART_LOS, los.getI_id(), null, null, null, tStichtag, true, false, theClientDto); for (int i = 0; i < personalzeitenDtos.length; i++) { boolean bGefunden = false; for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getMaschineIId() == null) { if (losStatistikDto.getArtikelnummer().equals(personalzeitenDtos[i].getSArtikelcnr())) { bGefunden = true; } } } if (bGefunden == false) { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(personalzeitenDtos[i].getSArtikelcnr()); losStatistikDto.setArtikelbezeichnung(personalzeitenDtos[i].getSArtikelbezeichnung()); losStatistikDto.setSollmenge(new BigDecimal(0)); losStatistikDto.setSollpreis(new BigDecimal(0)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); hmSoll.add(losStatistikDto); } } for (int i = 0; i < maschinenzeitenDtos.length; i++) { boolean bGefunden = false; if (tStichtag != null && maschinenzeitenDtos[i].getTsEnde() != null && tStichtag.before(maschinenzeitenDtos[i].getTsEnde())) { continue; } for (int j = 0; j < hmSoll.size(); j++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(j); if (losStatistikDto.getMaschineIId() != null && losStatistikDto.getMaschineIId() .equals(maschinenzeitenDtos[i].getIPersonalMaschinenId())) { if (losStatistikDto.getArtikelnummer() .equals(maschinenzeitenDtos[i].getSArtikelcnr())) { bGefunden = true; } } } if (bGefunden == false) { LosStatistikDto losStatistikDto = new LosStatistikDto(losDto); losStatistikDto.setArtikelnummer(maschinenzeitenDtos[i].getSArtikelcnr()); losStatistikDto.setArtikelbezeichnung(maschinenzeitenDtos[i].getSArtikelbezeichnung()); losStatistikDto.setMaschineIId(maschinenzeitenDtos[i].getIPersonalMaschinenId()); losStatistikDto.setSollmenge(new BigDecimal(0)); losStatistikDto.setSollpreis(new BigDecimal(0)); losStatistikDto.setAbgelieferteMenge(abgeliefert); losStatistikDto.setVkpreisStueckliste(vkPreis); hmSoll.add(losStatistikDto); } } for (int k = 0; k < hmSoll.size(); k++) { LosStatistikDto losStatistikDto = (LosStatistikDto) hmSoll.get(k); losStatistikDto.setAbgelieferteMenge(abgeliefert); int iPos = al.size(); al.add(losStatistikDto); // Personen if (losStatistikDto.getMaschineIId() == null) { for (int i = 0; i < personalDtos.length; i++) { PersonalDto personalDto = personalDtos[i]; BigDecimal bdgesamtzeit = new BigDecimal(0); BigDecimal bdgesamtkosten = new BigDecimal(0); String person = ""; for (int j = 0; j < personalzeitenDtos.length; j++) { AuftragzeitenDto azDto = personalzeitenDtos[j]; if (azDto != null) { if (personalDto.getIId().equals(azDto.getIPersonalMaschinenId()) && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) { bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer())); bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten()); person = azDto.getSPersonalMaschinenname(); personalzeitenDtos[j] = null; } } } if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) { LosStatistikDto losStatistikPersonDto = new LosStatistikDto(losDto); losStatistikPersonDto.setPersonMaschine(person); losStatistikPersonDto.setBMaterial(false); losStatistikPersonDto.setAbgelieferteMenge(abgeliefert); losStatistikPersonDto.setVkpreisStueckliste(vkPreis); losStatistikPersonDto.setIstmenge(bdgesamtzeit); if (bdgesamtzeit.doubleValue() != 0) { losStatistikPersonDto.setIstpreis( bdgesamtkosten.divide(bdgesamtzeit, 4, BigDecimal.ROUND_HALF_EVEN)); } else { losStatistikPersonDto.setIstpreis(new BigDecimal(0)); } al.add(losStatistikPersonDto); } } } // Maschinen if (losStatistikDto.getMaschineIId() != null) { for (int i = 0; i < maschineDtos.length; i++) { MaschineDto maschineDto = maschineDtos[i]; BigDecimal bdgesamtzeit = new BigDecimal(0); BigDecimal bdgesamtkosten = new BigDecimal(0); for (int j = 0; j < maschinenzeitenDtos.length; j++) { if (tStichtag != null && maschinenzeitenDtos[j].getTsEnde() != null && tStichtag.before(maschinenzeitenDtos[j].getTsEnde())) { continue; } AuftragzeitenDto azDto = maschinenzeitenDtos[j]; if (maschineDto.getIId().equals(azDto.getIPersonalMaschinenId()) && azDto.getSArtikelcnr().equals(losStatistikDto.getArtikelnummer())) { if (losStatistikDto.getMaschineIId().equals(azDto.getIPersonalMaschinenId())) { bdgesamtzeit = bdgesamtzeit.add(new BigDecimal(azDto.getDdDauer())); bdgesamtkosten = bdgesamtkosten.add(azDto.getBdKosten()); } } } if (bdgesamtzeit.doubleValue() != 0 || bdgesamtkosten.doubleValue() != 0) { BigDecimal kosten = bdgesamtkosten.divide(bdgesamtzeit, 4, BigDecimal.ROUND_HALF_EVEN); if (losStatistikDto.getIstmenge() != null) { losStatistikDto.setIstmenge(losStatistikDto.getIstmenge().add(bdgesamtzeit)); } else { losStatistikDto.setIstmenge(bdgesamtzeit); } if (losStatistikDto.getIstpreis() != null) { losStatistikDto.setIstpreis(losStatistikDto.getIstpreis().add(kosten)); } else { losStatistikDto.setIstpreis(kosten); } al.set(iPos, losStatistikDto); } } } } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } } session.close(); data = new Object[al.size()][23]; for (int i = 0; i < al.size(); i++) { LosStatistikDto losStatistikDto = (LosStatistikDto) al.get(i); data[i][LOSSTATISTIK_GRUPPIERUNG] = losStatistikDto.getLosDto().getCNr(); if (losStatistikDto.getLosDto().getTManuellerledigt() != null) { data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTManuellerledigt(); } else { data[i][LOSSTATISTIK_ERLEDIGUNGSDATUM] = losStatistikDto.getLosDto().getTErledigt(); } data[i][LOSSTATISTIK_BEWERTUNG] = losStatistikDto.getLosDto().getFBewertung(); data[i][LOSSTATISTIK_GEPLANTESSOLLMATERIAL] = losStatistikDto.getLosDto().getNSollmaterial(); data[i][LOSSTATISTIK_GRUPPIERUNGBEZEICHNUNG] = losStatistikDto.getLosDto().getCProjekt(); data[i][LOSSTATISTIK_GRUPPIERUNGERLEDIGT] = losStatistikDto.getLosDto().getTErledigt(); data[i][LOSSTATISTIK_GRUPPIERUNGAUSGABE] = losStatistikDto.getLosDto().getTAusgabe(); data[i][LOSSTATISTIK_GRUPPIERUNABGELIEFERTEMENGE] = losStatistikDto.getAbgelieferteMenge(); data[i][LOSSTATISTIK_GRUPPIERUNGLOSGROESSE] = losStatistikDto.getLosDto().getNLosgroesse(); data[i][LOSSTATISTIK_GRUPPIERUNVKPREIS] = losStatistikDto.getVkpreisStueckliste(); data[i][LOSSTATISTIK_BUCHUNGSZEIT] = losStatistikDto.getBuchungszeit(); if (losStatistikDto.getLosDto().getStuecklisteIId() != null) { data[i][LOSSTATISTIK_GRUPPIERUNGSTKLARTIKEL] = getStuecklisteFac() .stuecklisteFindByPrimaryKey(losStatistikDto.getLosDto().getStuecklisteIId(), theClientDto) .getArtikelDto().formatArtikelbezeichnung(); } if (losStatistikDto.getLosDto().getAuftragIId() != null) { AuftragDto auftragDto = getAuftragFac() .auftragFindByPrimaryKey(losStatistikDto.getLosDto().getAuftragIId()); if (auftragDto.getKundeIIdAuftragsadresse() != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); data[i][LOSSTATISTIK_GRUPPIERUNGKUNDE] = kundeDto.getPartnerDto().formatAnrede(); } } data[i][LOSSTATISTIK_ISTMENGE] = losStatistikDto.getIstmenge(); data[i][LOSSTATISTIK_ISTPREIS] = losStatistikDto.getIstpreis(); data[i][LOSSTATISTIK_PERSONALMASCHINE] = losStatistikDto.getPersonMaschine(); data[i][LOSSTATISTIK_ISTPERSON] = new Boolean(losStatistikDto.isBIstPerson()); data[i][LOSSTATISTIK_SOLLMENGE] = losStatistikDto.getSollmenge(); data[i][LOSSTATISTIK_SOLLPREIS] = losStatistikDto.getSollpreis(); data[i][LOSSTATISTIK_ARTIKELNUMMER] = losStatistikDto.getArtikelnummer(); data[i][LOSSTATISTIK_ARTIKELBEZEICHNUNG] = losStatistikDto.getArtikelbezeichnung(); data[i][LOSSTATISTIK_UNTERGRUPPEMATERIAL] = new Boolean(losStatistikDto.isBMaterial()); } initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, FertigungReportFac.REPORT_LOSSTATISTIK, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) private List<BuchungsjournalExportDatevBuchung> getBuchungen(Date von, Date bis, boolean mitAutoEB, boolean mitManEB, boolean mitAutoB, TheClientDto theClientDto) throws RemoteException, EJBExceptionLP { String mandant = theClientDto.getMandant(); ParametermandantDto pMitlaufendesKonto = getParameterFac().getMandantparameter(mandant, ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_MITLAUFENDES_KONTO); String durchlaufKonto = pMitlaufendesKonto.getCWert(); ParametermandantDto pKontoklassenOhneUst = getParameterFac().getMandantparameter(mandant, ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_KONTOKLASSEN_OHNE_BU_SCHLUESSEL); List<String> kontoklassenOhneUst = Arrays.asList(pKontoklassenOhneUst.getCWert().split(",")); FinanzamtDto[] finanzaemter = getFinanzFac().finanzamtFindAll(theClientDto); List<Integer> mitlaufendeKonten = new ArrayList<Integer>(); Map<Integer, Integer> mwstKonten = new HashMap<Integer, Integer>(); for (FinanzamtDto amt : finanzaemter) { SteuerkategorieDto[] stkDtos = getFinanzServiceFac() .steuerkategorieFindByFinanzamtIId(amt.getPartnerIId(), theClientDto); for (SteuerkategorieDto stkat : stkDtos) { if (stkat.getKontoIIdForderungen() != null) mitlaufendeKonten.add(stkat.getKontoIIdForderungen()); if (stkat.getKontoIIdVerbindlichkeiten() != null) mitlaufendeKonten.add(stkat.getKontoIIdVerbindlichkeiten()); SteuerkategoriekontoDto[] stkks = getFinanzServiceFac().steuerkategoriekontoFindAll(stkat.getIId()); for (SteuerkategoriekontoDto stkk : stkks) { if (mwstKonten.containsKey(stkk.getKontoIIdEk())) mwstKonten.put(stkk.getKontoIIdEk(), null); else mwstKonten.put(stkk.getKontoIIdEk(), stkk.getMwstsatzbezIId()); if (mwstKonten.containsKey(stkk.getKontoIIdVk())) mwstKonten.put(stkk.getKontoIIdVk(), null); else mwstKonten.put(stkk.getKontoIIdVk(), stkk.getMwstsatzbezIId()); if (mwstKonten.containsKey(stkk.getKontoIIdEinfuhrUst())) mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), null); else mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), stkk.getMwstsatzbezIId()); //gibt es fuer ein Konto mehrere zugewiesene MwstSaetze, null in die Map schreiben //so weiss man, dass das Konto entweder nur einen MwstSatz haben kann oder aber //wenn vorhanden in der Map aber null, dann MwstSatz berechnen. }/*from w ww. ja v a2 s. com*/ } } List<BuchungsjournalExportDatevBuchung> buchungen = new ArrayList<BuchungsjournalExportDatevBuchung>(); Session session = FLRSessionFactory.getFactory().openSession(); Criteria c = session.createCriteria(FLRFinanzBuchung.class); c.createAlias("flrkostenstelle", "ks"); if (!mitAutoB) c.add(Restrictions.like("b_autombuchung", 0)); if (!mitAutoEB) c.add(Restrictions.like("b_autombuchungeb", 0)); if (!mitManEB) c.add(Restrictions.not(Restrictions.like("buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG))); c.add(Restrictions.ge("d_buchungsdatum", von)).add(Restrictions.le("d_buchungsdatum", bis)) .add(Restrictions.like("ks.mandant_c_nr", mandant)).addOrder(Order.asc("d_buchungsdatum")) .addOrder(Order.asc("c_belegnummer")); Iterator<?> iter = c.list().iterator(); while (iter.hasNext()) { FLRFinanzBuchung hvBuchung = (FLRFinanzBuchung) iter.next(); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> haben = session.createCriteria(FLRFinanzBuchungDetail.class) .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id())) .add(Restrictions.or( Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung), Restrictions.gt("n_betrag", BigDecimal.ZERO)), Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung), Restrictions.lt("n_betrag", BigDecimal.ZERO)))) .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG), Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten)))) .addOrder(Order.asc("i_id")).list(); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> soll = session.createCriteria(FLRFinanzBuchungDetail.class) .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id())) .add(Restrictions.or( Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung), Restrictions.gt("n_betrag", BigDecimal.ZERO)), Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung), Restrictions.lt("n_betrag", BigDecimal.ZERO)))) .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG), Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten)))) .addOrder(Order.asc("i_id")).list(); String gegenkontoCNr; FLRFinanzKonto flrGegenkonto = null; List<FLRFinanzBuchungDetail> zuBuchen; String uid = null; boolean buSchluesselErlaubt = true; boolean buSchluesselGanzeBuchung = true; if (soll.size() == 1) { flrGegenkonto = soll.get(0).getFlrkonto(); gegenkontoCNr = flrGegenkonto.getC_nr(); uid = getUIDZuKonto(flrGegenkonto, theClientDto); zuBuchen = haben; } else if (haben.size() == 1) { gegenkontoCNr = haben.get(0).getFlrkonto().getC_nr(); flrGegenkonto = soll.get(0).getFlrkonto(); uid = getUIDZuKonto(flrGegenkonto, theClientDto); zuBuchen = soll; } else { zuBuchen = soll; zuBuchen.addAll(haben); gegenkontoCNr = durchlaufKonto; } if (flrGegenkonto != null && flrGegenkonto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) { for (String klassen : kontoklassenOhneUst) { if (!klassen.isEmpty() && flrGegenkonto.getC_nr().startsWith(klassen)) { buSchluesselGanzeBuchung = false; break; } } } // zuBuchen = getBuchungenKorrekteUst(zuBuchen, mwstKonten); for (int i = 0; i < zuBuchen.size(); i++) { FLRFinanzBuchungDetail b = zuBuchen.get(i); FLRFinanzKonto konto = b.getFlrkonto(); buSchluesselErlaubt = true; if (konto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) { for (String klassen : kontoklassenOhneUst) { if (!klassen.isEmpty() && konto.getC_nr().startsWith(klassen)) { buSchluesselErlaubt = false; break; } } } Integer fibuCode = 0; BigDecimal umsatz = null; if (mwstKonten.containsKey(b.getKonto_i_id())) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_KONTIERUNG_ZUGEORDNET, "Fehler! keine Mwst-Buchung erwartet!", (hvBuchung.getFlrfbbelegart() == null ? hvBuchung.getC_text() : hvBuchung.getFlrfbbelegart().getC_nr()) + " " + hvBuchung.getC_belegnummer()); // System.out.println("Fehler! keine Mwst-Buchung erwartet! " + hvBuchung.getC_belegnummer() + ", id = " + hvBuchung.getI_id()); // break; } else { if (zuBuchen.size() > i + 1) { FLRFinanzBuchungDetail mwstBuchung = zuBuchen.get(i + 1); if (mwstKonten.containsKey(mwstBuchung.getKonto_i_id())) { Integer mwstIId = mwstKonten.get(mwstBuchung.getKonto_i_id()); MwstsatzDto mwstDto; if (mwstIId != null) { mwstDto = getMandantFac().mwstsatzFindZuDatum(mwstIId, new Timestamp(hvBuchung.getD_buchungsdatum().getTime())); } else { mwstDto = getMandantFac().getMwstSatzVonBruttoBetragUndUst(mandant, new Timestamp(hvBuchung.getD_buchungsdatum().getTime()), b.getN_betrag(), mwstBuchung.getN_betrag()); } fibuCode = mwstDto.getIFibumwstcode(); if (fibuCode == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_EXPORT_KEIN_MWSTCODE, "", mwstDto.getMwstsatzbezDto().getCBezeichnung()); } umsatz = b.getN_betrag().add(mwstBuchung.getN_betrag()).abs(); i++; } } } BuchungsjournalExportDatevBuchung datevBuchung = new BuchungsjournalExportDatevBuchung(); datevBuchung.setUmsatz(umsatz == null ? b.getN_betrag().abs() : umsatz); boolean negativ = b.getN_betrag().signum() < 0; datevBuchung.setSoll(negativ != b.getBuchungdetailart_c_nr().equals(BuchenFac.SollBuchung)); //XOR datevBuchung.setKonto(b.getFlrkonto().getC_nr()); datevBuchung.setGegenkonto(gegenkontoCNr); if (hvBuchung.getT_storniert() != null) { fibuCode += 20; } if (buSchluesselErlaubt && buSchluesselGanzeBuchung) datevBuchung.setBuSchluessel(fibuCode == 0 ? "" : fibuCode.toString()); datevBuchung.setBelegdatum(hvBuchung.getD_buchungsdatum()); datevBuchung.setBeleg(hvBuchung.getC_belegnummer()); datevBuchung.setBuchungstext(hvBuchung.getC_text()); datevBuchung.setUid(uid == null ? getUIDZuKonto(b.getFlrkonto(), theClientDto) : uid); buchungen.add(datevBuchung); } } return buchungen; }
From source file:com.lp.server.finanz.ejbfac.FinanzReportFacBean.java
License:Open Source License
/** * Buchungsjournal drucken./*from w ww. j av a 2s . co m*/ * * @param theClientDto * String * @param buchungsjournalIId * Integer * @return JasperPrint * @throws EJBExceptionLP */ public JasperPrintLP printBuchungsjournal(TheClientDto theClientDto, Integer buchungsjournalIId, Date dVon, Date dBis, boolean storniert, boolean bDatumsfilterIstBuchungsdatum, String text, String belegnummer, BigDecimal betrag) throws EJBExceptionLP { Session session = null; try { this.useCase = UC_BUCHUNGSJOURNAL; this.index = -1; Map<String, Object> mapParameter = new TreeMap<String, Object>(); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRFinanzBuchungDetail.class); Timestamp help = new Timestamp(dVon.getTime()); c.createAlias("flrbuchung", "s"); String datumsfilter = "s.d_buchungsdatum"; if (!bDatumsfilterIstBuchungsdatum) { datumsfilter = "t_anlegen"; } c.add(Restrictions.ge(datumsfilter, Helper.cutTimestamp(help))); if (text != null) { c.add(Restrictions.ilike("s." + FinanzFac.FLR_BUCHUNG_C_TEXT, "%" + text + "%")); mapParameter.put("P_TEXT", text); } if (belegnummer != null) { String trennzeichen = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_TRENNZEICHEN) .getCWert(); Integer stellenBelegnummer = new Integer(getParameterFac() .getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMERNFORMAT_STELLEN_BELEGNUMMER) .getCWert()); String sValue = belegnummer; sValue = sValue.replaceAll("%", ""); sValue = Helper.fitString2LengthAlignRight(sValue, stellenBelegnummer, '0'); sValue = "%" + trennzeichen + sValue; c.add(Restrictions.like("s." + FinanzFac.FLR_BUCHUNG_C_BELEGNUMMER, sValue)); } if (betrag != null) { Integer toleranzBetragsuche = new Integer(getParameterFac() .getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_TOLERANZ_BETRAGSUCHE) .getCWert()); BigDecimal value1 = betrag.subtract( new BigDecimal(betrag.doubleValue() * ((double) toleranzBetragsuche / (double) 100))).abs(); BigDecimal value2 = betrag .add(new BigDecimal(betrag.doubleValue() * ((double) toleranzBetragsuche / (double) 100))) .abs(); c.add(Restrictions.or(Restrictions.between(FinanzFac.FLR_BUCHUNGDETAIL_N_BETRAG, value1, value2), Restrictions.between(FinanzFac.FLR_BUCHUNGDETAIL_N_BETRAG, value2.negate(), value1.negate()))); mapParameter.put("P_TOLERANZ_BETRAGSSUCHE", toleranzBetragsuche); mapParameter.put("P_BETRAG", betrag); } help = new Timestamp(dBis.getTime() + 24 * 3600000); c.add(Restrictions.lt(datumsfilter, Helper.cutTimestamp(help))); if (storniert != true) { c.add(Restrictions.isNull("s.t_storniert")); } else { // Skip } c.createAlias("s.flrkostenstelle", "k"); c.add(Restrictions.eq("k.mandant_c_nr", theClientDto.getMandant())); List<?> list = c.list(); data = new Object[list.size()][REPORT_BUCHUNGSJOURNAL_ANZAHL_SPALTEN]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRFinanzBuchungDetail b = (FLRFinanzBuchungDetail) iter.next(); data[i][REPORT_BUCHUNGSJOURNAL_AUSZUG] = b.getI_auszug(); data[i][REPORT_BUCHUNGSJOURNAL_BELEGNUMMER] = b.getFlrbuchung().getC_belegnummer(); data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSART] = b.getFlrbuchung().getBuchungsart_c_nr(); data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSDATUM] = b.getFlrbuchung().getD_buchungsdatum(); if (b.getFlrgegenkonto() != null) { data[i][REPORT_BUCHUNGSJOURNAL_GEGENKONTONUMMER] = b.getFlrgegenkonto().getC_nr(); } data[i][REPORT_BUCHUNGSJOURNAL_BETRAG] = b.getN_betrag(); data[i][REPORT_BUCHUNGSJOURNAL_KONTONUMMER] = b.getFlrkonto().getC_nr(); data[i][REPORT_BUCHUNGSJOURNAL_KOSTENSTELLENUMMER] = b.getFlrbuchung().getFlrkostenstelle() .getC_nr(); data[i][REPORT_BUCHUNGSJOURNAL_TEXT] = b.getFlrbuchung().getC_text(); data[i][REPORT_BUCHUNGSJOURNAL_UST] = b.getN_ust(); if (b.getFlrbuchung().getT_storniert() == null) { data[i][REPORT_BUCHUNGSJOURNAL_STORNIERT] = new Boolean(false); } else { data[i][REPORT_BUCHUNGSJOURNAL_STORNIERT] = new Boolean(true); } if (b.getBuchungdetailart_c_nr().equals("SOLL ")) { data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = b.getN_betrag(); data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = null; } else if (b.getBuchungdetailart_c_nr().equals("HABEN ")) { data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = b.getN_betrag(); data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = null; } else { data[i][REPORT_BUCHUNGSJOURNAL_SOLL] = null; data[i][REPORT_BUCHUNGSJOURNAL_HABEN] = null; } data[i][REPORT_BUCHUNGSJOURNAL_BUCHUNGSJOURNALDATUM] = b.getT_anlegen(); data[i][REPORT_BUCHUNGSJOURNAL_WER] = getPersonalFac() .personalFindByPrimaryKeySmall(b.getFlrbuchung().getPersonal_i_id_anlegen()) .getCKurzzeichen(); i++; } MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto); mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr()); mapParameter.put("P_VON", dVon); mapParameter.put("P_MITSTORNIERTEN", new Boolean(storniert)); mapParameter.put("P_DATUMSFILTER_IST_BUCHUNGSDATUM", new Boolean(bDatumsfilterIstBuchungsdatum)); mapParameter.put("P_BIS", dBis); initJRDS(mapParameter, FinanzReportFac.REPORT_MODUL, FinanzReportFac.REPORT_BUCHUNGSJOURNAL, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
From source file:com.lp.server.lieferschein.ejbfac.LieferscheinReportFacBean.java
License:Open Source License
/** * Alle offenen Lieferscheine fuer einen bestimmten Mandanten drucken. * //w w w .ja v a 2 s . c om * @param reportJournalKriterienDtoI * die Filter- und Sortierkriterien * @param theClientDto * der aktuelle Benutzer * @throws EJBExceptionLP * Ausnahme * @return JasperPrint der Druck */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printLieferscheinOffene(ReportJournalKriterienDto reportJournalKriterienDtoI, Integer iArt, boolean bMitDetails, TheClientDto theClientDto) throws EJBExceptionLP { if (reportJournalKriterienDtoI == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PARAMETER_IS_NULL, new Exception("reportJournalKriterienDtoI == null")); } JasperPrintLP oPrintO = null; cAktuellerReport = LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE; int iIndex = 0; ArrayList<FLRLieferschein> oZeilen = new ArrayList(); SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; try { session = factory.openSession(); // Hiberante Criteria fuer alle Tabellen ausgehend von meiner // Haupttabelle anlegen, // nach denen ich filtern und sortieren kann Criteria crit = session.createCriteria(FLRLieferschein.class); // Einschraenkung auf den aktuellen Mandanten crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); // Einschraenkung nach Status Offen crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_LIEFERSCHEINSTATUS_STATUS_C_NR, LieferscheinFac.LSSTATUS_GELIEFERT)); if (iArt != null) { if (iArt == 1) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR, Helper.boolean2Short(true))); } else if (iArt == 2) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_B_VERRECHENBAR, Helper.boolean2Short(false))); } } // Einschraenkung nach einer bestimmten Kostenstelle if (reportJournalKriterienDtoI.kostenstelleIId != null) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KOSTENSTELLE_I_ID, reportJournalKriterienDtoI.kostenstelleIId)); } // Einschraenkung nach einem bestimmten Kunden if (reportJournalKriterienDtoI.kundeIId != null) { crit.add(Restrictions.eq(LieferscheinFac.FLR_LIEFERSCHEIN_KUNDE_I_ID_LIEFERADRESSE, reportJournalKriterienDtoI.kundeIId)); } // Einschraenkung nach Belegdatum von - bis String sVon = null; String sBis = null; if (reportJournalKriterienDtoI.dVon != null) { crit.add(Restrictions.ge(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, reportJournalKriterienDtoI.dVon)); sVon = Helper.formatDatum(reportJournalKriterienDtoI.dVon, theClientDto.getLocUi()); } if (reportJournalKriterienDtoI.dBis != null) { crit.add(Restrictions.le(LieferscheinFac.FLR_LIEFERSCHEIN_D_BELEGDATUM, reportJournalKriterienDtoI.dBis)); sBis = Helper.formatDatum(reportJournalKriterienDtoI.dBis, theClientDto.getLocUi()); } // Einschraenkung nach Belegnummer von - bis LpBelegnummerFormat f = getBelegnummerGeneratorObj().getBelegnummernFormat(theClientDto.getMandant()); Integer iGeschaeftsjahr = getParameterFac().getGeschaeftsjahr(theClientDto.getMandant()); String sMandantKuerzel = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_BELEGNUMMER_MANDANTKENNUNG).getCWert(); if (reportJournalKriterienDtoI.sBelegnummerVon != null) { sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, reportJournalKriterienDtoI.sBelegnummerVon); crit.add(Restrictions.ge("c_nr", sVon)); } if (reportJournalKriterienDtoI.sBelegnummerBis != null) { sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, reportJournalKriterienDtoI.sBelegnummerBis); crit.add(Restrictions.le("c_nr", sBis)); } // Sortierung nach Kostenstelle ist immer die erste Sortierung if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) { crit.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { crit.createCriteria(LieferscheinFac.FLR_LIEFERSCHEIN_FLRKUNDE).createCriteria(KundeFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); } // es wird in jedem Fall nach der Belegnummer sortiert crit.addOrder(Order.asc("c_nr")); List<?> list = crit.list(); Iterator<?> it = list.iterator(); while (it.hasNext()) { FLRLieferschein flrlieferschein = (FLRLieferschein) it.next(); oZeilen.add(flrlieferschein); session = factory.openSession(); Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class); critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN, flrlieferschein)); critPosition.add(Restrictions.or( Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE), Restrictions.eq( LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR, LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE))); // critPosition // .add(Restrictions // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE)); List<?> posList = critPosition.list(); for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) { FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next(); iIndex++; } iIndex++; } data = new Object[iIndex][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANZAHL_ZEILEN]; // Anzahl // der // Spalten // in // der // Gruppe Iterator<?> itZeilen = oZeilen.iterator(); int i = 0; while (itZeilen.hasNext()) { FLRLieferschein flrlieferschein = (FLRLieferschein) itZeilen.next(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein .getFlrkostenstelle().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ANLAGEDATUM] = flrlieferschein .getD_belegdatum(); // todo data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERTERMIN] = flrlieferschein .getT_liefertermin(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZAHLUNGSZIEL] = getMandantFac() .zahlungszielFindByIIdLocaleOhneExc(flrlieferschein.getZahlungsziel_i_id(), theClientDto.getLocMandant(), theClientDto); if (flrlieferschein.getFlrauftrag() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = flrlieferschein .getFlrauftrag().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = flrlieferschein .getFlrauftrag().getC_bez(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = flrlieferschein .getFlrauftrag().getC_bestellnummer(); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAGSNUMMER] = null; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_AUFTRAG_PROJEKT] = null; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_BESTELLNUMMER] = null; } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERART] = getLocaleFac() .lieferartFindByIIdLocaleOhneExc(flrlieferschein.getLieferart_i_id(), theClientDto.getLocMandant(), theClientDto); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERARTORT] = flrlieferschein .getC_lieferartort(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper .short2Boolean(flrlieferschein.getB_verrechenbar()); if (flrlieferschein.getFlrziellager() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ZIELLAGER] = flrlieferschein .getFlrziellager().getC_nr(); } if (flrlieferschein.getFlrlager() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ABLAGER] = flrlieferschein .getFlrlager().getC_nr(); } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_RECHNUNGSADRESSE] = flrlieferschein .getFlrkunderechnungsadresse().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_VERRECHENBAR] = Helper .short2Boolean(flrlieferschein.getB_verrechenbar()); if (flrlieferschein.getSpediteur_i_id() != null) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = getMandantFac() .spediteurFindByPrimaryKey(flrlieferschein.getSpediteur_i_id()).getCNamedesspediteurs(); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_SPEDITEUR] = null; } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_PROJEKTBEZEICHNUNG] = flrlieferschein .getC_bez_projektbezeichnung(); session = factory.openSession(); Criteria critPosition = session.createCriteria(FLRLieferscheinposition.class); critPosition.add(Restrictions.eq(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_FLRLIEFERSCHEIN, flrlieferschein)); critPosition.add(Restrictions.or( Restrictions.isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE), Restrictions.eq( LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_LIEFERSCHEINPOSITIONART_C_NR, LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_TEXTEINGABE))); // critPosition // .add(Restrictions // .isNotNull(LieferscheinpositionFac.FLR_LIEFERSCHEINPOSITION_N_MENGE)); List<?> posList = critPosition.list(); boolean darfVerkaufspreisSehen = getTheJudgeFac() .hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_VERKAUF, theClientDto); for (Iterator<?> ipos = posList.iterator(); ipos.hasNext();) { FLRLieferscheinposition item = (FLRLieferscheinposition) ipos.next(); i++;// in die naechste Zeile vorruecken // nur mengenbehaftete Positionen beruecksichtigen if (item.getN_menge() != null) { String artikelCNr = null; // TODO boeser Workaround ... PJ 4400 if (item.getFlrartikel().getC_nr().startsWith("~")) { artikelCNr = AngebotReportFac.REPORT_VORKALKULATION_ZEICHEN_FUER_HANDEINGABE; } else { artikelCNr = item.getFlrartikel().getC_nr(); } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELCNR] = artikelCNr; String cArtikelBezeichnung = ""; if (item.getPositionsart_c_nr() .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT) || item.getPositionsart_c_nr() .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_HANDEINGABE)) { cArtikelBezeichnung = getArtikelFac().baueArtikelBezeichnungMehrzeiligOhneExc( item.getFlrartikel().getI_id(), item.getPositionsart_c_nr(), item.getC_bez(), item.getC_zbez(), false, null, theClientDto); } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELBEZEICHNUNG] = cArtikelBezeichnung; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELMENGE] = item.getN_menge(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELEINHEIT] = item .getEinheit_c_nr() == null ? null : item.getEinheit_c_nr().trim(); if (darfVerkaufspreisSehen) { // Positionspreise sind in Belegwaehrung abgelegt BigDecimal nPreisInBelegwaehrung = item .getN_nettogesamtpreisplusversteckteraufschlagminusrabatt(); nPreisInBelegwaehrung = getBetragMalWechselkurs(nPreisInBelegwaehrung, Helper.getKehrwert(new BigDecimal( flrlieferschein.getF_wechselkursmandantwaehrungzulieferscheinwaehrung() .doubleValue()))); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = nPreisInBelegwaehrung; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = item .getN_menge().multiply(nPreisInBelegwaehrung); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELNETTOGESAMTPREISPLUSVERSTECKTERAUFSCHLAGMINUSRABATT] = null; data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERWERT] = null; } // Grundlage ist der positionsbezogene Gestehungspreis // des Artikels. BigDecimal bdGestehungspreis = Helper.getBigDecimalNull(); if (item.getPositionsart_c_nr() .equals(LieferscheinpositionFac.LIEFERSCHEINPOSITIONSART_IDENT)) { try { BigDecimal bdGestehungswert = getLieferscheinFac() .berechneGestehungswertEinerLieferscheinposition(item.getI_id(), theClientDto); // Gestehungspreis bezogen auf 1 Stueck wird // gemittelt bdGestehungspreis = bdGestehungswert.divide(item.getN_menge(), 4, BigDecimal.ROUND_HALF_EVEN); bdGestehungspreis = Helper.rundeKaufmaennisch(bdGestehungspreis, 4); } catch (Throwable t) { // dieser Fall sollte nicht auftreten, bitte als // moeglichen Fehler pruefen! } } data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELGESTEHUNGSPREIS] = bdGestehungspreis; if (darfVerkaufspreisSehen) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = item .getN_menge().multiply(bdGestehungspreis); } else { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_ARTIKELOFFENERDB] = null; } // die Positionen brauchen alle Attribute, nach denen im // Report gruppiert wird data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein .getFlrkostenstelle().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); // fuer die Gruppierung } else if (item.getPositionsart_c_nr().equals(LocaleFac.POSITIONSART_TEXTEINGABE)) { data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_TEXTEINGABE] = item .getC_textinhalt(); // die Positionen brauchen alle Attribute, nach denen im // Report gruppiert wird data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_KOSTENSTELLECNR] = flrlieferschein .getFlrkostenstelle().getC_nr(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINKUNDE] = flrlieferschein .getFlrkunde().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE_LIEFERSCHEINCNR] = flrlieferschein .getC_nr(); // fuer die Gruppierung } } i++; // in die naechste Zeile vorruecken } // Erstellung des Report HashMap parameter = new HashMap<Object, Object>(); // die Parameter dem Report uebergeben parameter.put(LPReport.P_SORTIERUNG, buildSortierungLieferscheinOffene(reportJournalKriterienDtoI, theClientDto)); parameter.put(LPReport.P_FILTER, buildFilterLieferscheinOffene(reportJournalKriterienDtoI, theClientDto)); // die Parameter zur Bildung von Zwischensummen uebergeben if (reportJournalKriterienDtoI.bSortiereNachKostenstelle) { parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(true)); } else { parameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(false)); } if (reportJournalKriterienDtoI.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(true)); } else { parameter.put(LPReport.P_SORTIERENACHKUNDE, new Boolean(false)); } parameter.put("P_LIEFERSCHEINWAEHRUNG", theClientDto.getSMandantenwaehrung()); parameter.put("P_DETAILS", new Boolean(bMitDetails)); initJRDS(parameter, LieferscheinReportFac.REPORT_MODUL, LieferscheinReportFac.REPORT_LIEFERSCHEIN_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); oPrintO = getReportPrint(); } catch (RemoteException re) { throwEJBExceptionLPRespectOld(re); } finally { closeSession(session); } return oPrintO; }
From source file:com.lp.server.personal.ejbfac.ZeiterfassungReportFacBean.java
License:Open Source License
public JasperPrintLP printMaschinenliste(java.sql.Timestamp tStichtag, boolean bMitVersteckten, TheClientDto theClientDto) {/*from w ww. j a va 2 s. c om*/ sAktuellerReport = ZeiterfassungReportFac.REPORT_MASCHINENLISTE; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); org.hibernate.Criteria crit = session .createCriteria(com.lp.server.personal.fastlanereader.generated.FLRMaschine.class) .add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); if (bMitVersteckten == false) { crit.add(Restrictions.eq(ZeiterfassungFac.FLR_MASCHINE_B_VERSTECKT, Helper.boolean2Short(false))); } if (tStichtag != null) { crit.add(Restrictions.or(Restrictions.le(ZeiterfassungFac.FLR_MASCHINE_T_KAUFDATUM, tStichtag), Restrictions.isNull(ZeiterfassungFac.FLR_MASCHINE_T_KAUFDATUM))); } crit.createAlias(ZeiterfassungFac.FLR_MASCHINE_FLR_MASCHINENGRUPPE, "m").addOrder(Order.asc("m.c_bez")); crit.addOrder(Order.asc(ZeiterfassungFac.FLR_MASCHINE_C_INVENTARNUMMER)); List<?> resultList = crit.list(); data = new Object[resultList.size()][10]; Iterator<?> resultListIterator = resultList.iterator(); int row = 0; while (resultListIterator.hasNext()) { FLRMaschine flrmaschine = (FLRMaschine) resultListIterator.next(); data[row][REPORT_MASCHINENLISTE_INVENTARNUMMER] = flrmaschine.getC_inventarnummer(); data[row][REPORT_MASCHINENLISTE_BEZEICHNUNG] = flrmaschine.getC_bez(); data[row][REPORT_MASCHINENLISTE_IDENTIFIKATIONSNUMMER] = flrmaschine.getC_identifikationsnr(); data[row][REPORT_MASCHINENLISTE_KAUFDATUM] = flrmaschine.getT_kaufdatum(); data[row][REPORT_MASCHINENLISTE_VERFUEGBARKEIT] = flrmaschine.getF_verfuegbarkeitinprozent(); data[row][REPORT_MASCHINENLISTE_AUTOENDE] = new Boolean( Helper.short2Boolean(flrmaschine.getB_autoendebeigeht())); data[row][REPORT_MASCHINENLISTE_KOSTEN_ZUM_ZEITPUNKT] = getZeiterfassungFac() .getMaschinenKostenZumZeitpunkt(flrmaschine.getI_id(), new Timestamp(System.currentTimeMillis())); data[row][REPORT_MASCHINENLISTE_MASCHINENGRUPPE] = flrmaschine.getFlrmaschinengruppe().getC_bez(); Session s2 = FLRSessionFactory.getFactory().openSession(); Query query2 = session.createQuery("FROM FLRMaschinenzeitdaten m WHERE m.maschine_i_id=" + flrmaschine.getI_id() + " ORDER BY m.t_von DESC"); query2.setMaxResults(1); List<?> resultListSub = query2.list(); String starter = ""; Timestamp tUm = null; if (resultListSub.size() > 0) { FLRMaschinenzeitdaten m = (FLRMaschinenzeitdaten) resultListSub.iterator().next(); starter = m.getFlrpersonal_gestartet().getFlrpartner().getC_name1nachnamefirmazeile1(); if (m.getFlrpersonal_gestartet().getFlrpartner().getC_name2vornamefirmazeile2() != null) { starter += " " + m.getFlrpersonal_gestartet().getFlrpartner().getC_name2vornamefirmazeile2(); } tUm = new Timestamp(m.getT_von().getTime()); } data[row][REPORT_MASCHINENLISTE_ZULETZT_GESTARTET_VON] = starter; data[row][REPORT_MASCHINENLISTE_ZULETZT_GESTARTET_UM] = tUm; row++; } HashMap<String, Object> parameter = new HashMap<String, Object>(); parameter.put("T_STICHTAG", tStichtag); initJRDS(parameter, ZeiterfassungReportFac.REPORT_MODUL, ZeiterfassungReportFac.REPORT_MASCHINENLISTE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); }