List of usage examples for org.hibernate.criterion Restrictions not
public static Criterion not(Criterion expression)
From source file:com.lp.server.bestellung.ejbfac.BestellungFacBean.java
License:Open Source License
public void importiereMonatsbestellung(ArrayList<ImportMonatsbestellungDto> importMonatbestellung, TheClientDto theClientDto) {/* w w w . java 2 s. c om*/ // letzte Bestellung des Lieferanten suchen und nachsehen, ob diese in // diesem Monat bereits vorhanden ist. // PJ 17876 Integer iMonatsbestellungsart = 0; try { ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_BESTELLUNG, ParameterFac.PARAMETER_MONATSBESTELLUNGSART); iMonatsbestellungsart = (Integer) parameter.getCWertAsObject(); } catch (RemoteException e2) { throwEJBExceptionLPRespectOld(e2); } if (iMonatsbestellungsart == 2) { importiereBestellung(importMonatbestellung, theClientDto); return; } for (int i = 0; i < importMonatbestellung.size(); i++) { SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); Criteria c = session.createCriteria(FLRBestellung.class); c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, importMonatbestellung.get(i).getLieferantIId())); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(importMonatbestellung.get(i).getWeDatum().getTime()); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 999); c.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime())); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); SimpleDateFormat dateformat = new SimpleDateFormat("MMMM", theClientDto.getLocUi()); dateformat.format(cal.getTime()); String projektTextMonatsbestellung = "Monatsbestellung " + dateformat.format(cal.getTime()) + " " + cal.get(Calendar.YEAR); c.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG, projektTextMonatsbestellung)); c.add(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, cal.getTime())); // String[] s = new String[2]; s[0] = BestellungFac.BESTELLSTATUS_ERLEDIGT; s[1] = BestellungFac.BESTELLSTATUS_STORNIERT; c.add(Restrictions.not(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, s))); c.addOrder(Order.desc(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM)); c.setMaxResults(1); List<?> list = c.list(); Integer bestellungIId = null; if (list.size() > 0) { FLRBestellung b = (FLRBestellung) list.iterator().next(); bestellungIId = b.getI_id(); } Lieferant lieferant = em.find(Lieferant.class, importMonatbestellung.get(i).getLieferantIId()); Partner partner = em.find(Partner.class, lieferant.getPartnerIId()); if (bestellungIId == null) { BestellungDto bsdto = createBestellungDto(importMonatbestellung.get(i).getLieferantIId(), theClientDto.getMandant(), theClientDto.getIDPersonal()); try { BestellungtextDto bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr( theClientDto.getMandant(), partner.getLocaleCNrKommunikation(), MediaFac.MEDIAART_KOPFTEXT, theClientDto); if (bsText != null) { bsdto.setBestelltextIIdKopftext(bsText.getIId()); } bsText = getBestellungServiceFac().bestellungtextFindByMandantLocaleCNr( theClientDto.getMandant(), partner.getLocaleCNrKommunikation(), MediaFac.MEDIAART_FUSSTEXT, theClientDto); if (bsText != null) { bsdto.setBestelltextIIdFusstext(bsText.getIId()); } } catch (RemoteException e1) { throwEJBExceptionLPRespectOld(e1); } bsdto.setDBelegdatum(new Date(cal.getTimeInMillis()));// bsdto.setDLiefertermin(new Timestamp(cal.getTimeInMillis())); bsdto.setCBez(projektTextMonatsbestellung); try { bestellungIId = getBestellungFac().createBestellung(bsdto, theClientDto); } catch (EJBExceptionLP e) { throw new EJBExceptionLP(e); } catch (RemoteException e) { throw new EJBExceptionLP(e); } } // Position anlegen try { BestellpositionDto bspos = createBestellPositionDto(bestellungIId, importMonatbestellung.get(i).getLieferantIId(), importMonatbestellung.get(i).getArtikelIId(), importMonatbestellung.get(i).getMenge(), theClientDto); Integer bsPosIId = getBestellpositionFac().createBestellposition(bspos, theClientDto, null, null); // Wareneingang zu Verladedatum anlegen, wenn noch nicht // vorhanden if (iMonatsbestellungsart == 0) { Timestamp tVerladedatum = new java.sql.Timestamp( importMonatbestellung.get(i).getWeDatum().getTime()); Query query = em.createNamedQuery("WareneingangfindByBestellungIIdTWareneingangsdatum"); query.setParameter(1, bestellungIId); query.setParameter(2, tVerladedatum); Collection<?> col = query.getResultList(); Integer wareneingangId = null; if (col.size() > 0) { Wareneingang we = (Wareneingang) col.iterator().next(); wareneingangId = we.getIId(); } else { WareneingangDto wedto = new WareneingangDto(); wedto.setBestellungIId(bestellungIId); wedto.setCLieferscheinnr(importMonatbestellung.get(i).getLieferscheinnr()); wedto.setTLieferscheindatum(tVerladedatum); wedto.setTWareneingangsdatum(tVerladedatum); wedto.setLagerIId(lieferant.getLagerIIdZubuchungslager()); wedto.setNWechselkurs(new BigDecimal(1)); try { wareneingangId = getWareneingangFac().createWareneingang(wedto, theClientDto); } catch (RemoteException e) { throw new EJBExceptionLP(e); } } try { WareneingangspositionDto weposDto = new WareneingangspositionDto(); weposDto.setBestellpositionIId(bsPosIId); weposDto.setNGeliefertemenge(importMonatbestellung.get(i).getMenge()); weposDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); weposDto.setPersonalIIdAnlegen(theClientDto.getIDPersonal()); weposDto.setTAendern(new Timestamp(System.currentTimeMillis())); weposDto.setTAnlegen(weposDto.getTAendern()); weposDto.setWareneingangIId(wareneingangId); BigDecimal nGeliefertpreis = bspos.getNNettogesamtpreis(); weposDto.setNGelieferterpreis(nGeliefertpreis); getWareneingangFac().createWareneingangsposition(weposDto, theClientDto); getBestellungFac().aktiviereBestellung(bestellungIId, theClientDto); getBestellpositionFac().manuellAufVollstaendigGeliefertSetzen(bsPosIId, theClientDto); } catch (EJBExceptionLP e) { throw new EJBExceptionLP(e); } catch (RemoteException e) { throw new EJBExceptionLP(e); } } } catch (EJBExceptionLP e) { throw new EJBExceptionLP(e); } catch (RemoteException e) { throw new EJBExceptionLP(e); } session.close(); } }
From source file:com.lp.server.bestellung.ejbfac.BestellvorschlagFacBean.java
License:Open Source License
/** * METHODE VON CK// w ww .j av a2 s . co m * * @param iVorlaufzeit * Integer * @param dateFuerEintraegeOhneLiefertermin * Date * @param theClientDto * String */ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public void erstelleBestellvorschlag(Integer iVorlaufzeit, Integer iToleranz, java.sql.Date dateFuerEintraegeOhneLiefertermin, ArrayList<Integer> arLosIId, ArrayList<Integer> arAuftragIId, boolean bMitNichtlagerbewirtschafteten, boolean bNurLospositionenBeruecksichtigen, TheClientDto theClientDto) { // alten bestellvorschlag loeschen loescheBestellvorlaegeEinesMandaten(theClientDto); Session session = null; try { // Wenn auftragsIId angebeben werden, dann deren Los suchen if (arAuftragIId != null) { for (int i = 0; i < arAuftragIId.size(); i++) { LosDto[] losDtos = getFertigungFac().losFindByAuftragIId(arAuftragIId.get(i)); for (int j = 0; j < losDtos.length; j++) { if (arLosIId == null) { arLosIId = new ArrayList<Integer>(); } arLosIId.add(losDtos[j].getIId()); } } } // Wenn losIIds vorhanden dann nur die Artikel dieser Lose ArrayList<Integer> arArtikelIIds = new ArrayList<Integer>(); if (arLosIId != null) { if (arLosIId.size() > 0) { Object[] oLosIId = new Object[arLosIId.size()]; oLosIId = arLosIId.toArray(); session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria critLose = session.createCriteria(FLRLos.class); critLose.add(Restrictions.in(FertigungFac.FLR_LOS_I_ID, oLosIId)); List<?> resultListLose = critLose.list(); Iterator<?> resultListLoseIterator = resultListLose.iterator(); while (resultListLoseIterator.hasNext()) { FLRLos los = (FLRLos) resultListLoseIterator.next(); LossollmaterialDto[] material = getFertigungFac() .lossollmaterialFindByLosIId(los.getI_id()); for (int i = 0; i < material.length; i++) { if (material[i].getArtikelIId() != null) { arArtikelIIds.add(material[i].getArtikelIId()); } } } } closeSession(session); } // Alle Lagerbewirtschafteten Artikel holen session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRArtikel.class); // Filter nach Mandant crit.add(Restrictions.eq(ArtikelFac.FLR_ARTIKEL_MANDANT_C_NR, theClientDto.getMandant())); // keine Hand- und AZ-Artikel crit.add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKELLISTE_ARTIKELART_C_NR, new String[] { ArtikelFac.ARTIKELART_HANDARTIKEL, ArtikelFac.ARTIKELART_ARBEITSZEIT }))); if (bMitNichtlagerbewirtschafteten == false) { // nur lagerbewirtschaftete crit.add(Restrictions.eq(ArtikelFac.FLR_ARTIKEL_B_LAGERBEWIRTSCHAFTET, Helper.boolean2Short(true))); } // Zusaetlich nach Losen wenn Materialien vorhanden if (arArtikelIIds.size() > 0) { Object[] oArtikelIIds = arArtikelIIds.toArray(); crit.add(Restrictions.in(ArtikelFac.FLR_ARTIKEL_I_ID, oArtikelIIds)); } List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext()) { FLRArtikel artikel = (FLRArtikel) resultListIterator.next(); if (Helper.short2boolean(artikel.getB_lagerbewirtschaftet())) { // Ist dieser Artikel eine Stueckliste? StuecklisteDto stuecklisteDto = getStuecklisteFac() .stuecklisteFindByMandantCNrArtikelIIdOhneExc(artikel.getI_id(), theClientDto); if (stuecklisteDto != null && Helper.short2boolean(stuecklisteDto.getBFremdfertigung()) == false) { // selbstgefertigte Stuecklisten werden im BV nicht // beruecksichtigt. } else { ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(artikel.getI_id(), theClientDto); ArtklaDto artklsDto = null; if (artikelDto.getArtklaIId() != null) { artklsDto = getArtikelFac().artklaFindByPrimaryKey(artikelDto.getArtklaIId(), theClientDto); } if (artklsDto != null && Helper.short2boolean(artklsDto.getBTops()) == true) { // Keine tops artikel } else { // Wenn keine Stueckliste, bzw. Fremdgefertigte // Stueckliste, dann ArrayList<?> al = null; if (bNurLospositionenBeruecksichtigen == true) { al = getInternebestellungFac().berechneBedarfe(artikelDto, iVorlaufzeit, iToleranz, dateFuerEintraegeOhneLiefertermin, false, theClientDto, arLosIId); } else { al = getInternebestellungFac().berechneBedarfe(artikelDto, iVorlaufzeit, iToleranz, dateFuerEintraegeOhneLiefertermin, false, theClientDto, null); } MaterialbedarfDto[] materialbedarf = new MaterialbedarfDto[al.size()]; materialbedarf = (MaterialbedarfDto[]) al.toArray(materialbedarf); for (int i = 0; i < materialbedarf.length; i++) { bestellvorschlagDtoErzeugen(materialbedarf[i].getSBelegartCNr(), artikel.getMandant_c_nr(), artikel.getI_id(), materialbedarf[i].getIBelegIId(), materialbedarf[i].getIBelegpositionIId(), new java.sql.Timestamp(materialbedarf[i].getTTermin().getTime()), materialbedarf[i].getNMenge(), materialbedarf[i].getProjektIId(), theClientDto); } } } } else { if (bMitNichtlagerbewirtschafteten == true) { BigDecimal stdMenge = new BigDecimal(0); ArtikellieferantDto[] dtos = getArtikelFac() .artikellieferantFindByArtikelIId(artikel.getI_id(), theClientDto); if (dtos != null && dtos.length > 0 && dtos[0].getFStandardmenge() != null) { stdMenge = new BigDecimal(dtos[0].getFStandardmenge()); } bestellvorschlagDtoErzeugen(null, artikel.getMandant_c_nr(), artikel.getI_id(), null, null, new java.sql.Timestamp(dateFuerEintraegeOhneLiefertermin.getTime()), stdMenge, null, theClientDto); } } } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { closeSession(session); } }
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 .java2 s . co m*/ * ---------------------------------------------------------- * * @param echteLiefermahnung * boolean * @param echteABMahnungen * boolean * @param theClientDto * String * @throws EJBExceptionLP * @return Integer * ---------------------------------------------------------- * ----------------- */ @TransactionAttribute(TransactionAttributeType.NEVER) private Integer createMahnungen(boolean echteLiefermahnung, boolean echteABMahnungen, boolean liefererinnerung, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null; try { // Mahnstufen des Mandanten holen BSMahnstufeDto bsmahnstufeDto[] = this.bsmahnstufeFindByMandantCNr(theClientDto.getMandant(), theClientDto); if (bsmahnstufeDto == null || bsmahnstufeDto.length == 0) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_KEINE_MAHNSTUFEN_EINGETRAGEN, ""); } // mahnlaufIId generieren wird fuer Liefermahnung und ABMahnung // gebraucht Integer bsmahnlaufIId = null; BSMahnlaufDto bsmahnlaufDto = null; bsmahnlaufIId = context.getBusinessObject(BSMahnwesenFac.class).createBSMahnlauf(bsmahnlaufDto, theClientDto); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria crit = session.createCriteria(FLRBestellpositionReport.class); // folgende Positionsarten werden ignoriert. Collection<String> cPositionsarten = new LinkedList<String>(); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_BETRIFFT); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_SEITENUMBRUCH); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_LEERZEILE); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTBAUSTEIN); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTEINGABE); crit.add(Restrictions.not(Restrictions .in(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, cPositionsarten))); // PJ 16536 String queryString = "SELECT artgru_i_id FROM FLRMahngruppe m" + " WHERE m.flrartikelgruppe.mandant_c_nr ='" + theClientDto.getMandant() + "'"; Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Query query = session2.createQuery(queryString); List<?> results = query.list(); Iterator<?> resultListIterator = results.iterator(); Integer[] ids = new Integer[results.size()]; int row = 0; while (resultListIterator.hasNext()) { Integer artgruIId = (Integer) resultListIterator.next(); ids[row] = artgruIId; row++; } session2.close(); if (ids.length > 0) { crit.createAlias("flrartikel", "a"); crit.createAlias("a.flrartikelgruppe", "ag"); crit.add(Restrictions.in("ag.i_id", ids)); } Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); // nach mandanten filtern critBestellung .add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // PJ 15165 critBestellung.add(Restrictions.or(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS), Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS, Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()))))); // nach Stati filtern Collection<String> cStati = new LinkedList<String>(); cStati.add(BestellungFac.BESTELLSTATUS_OFFEN); cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT); // SK added BESTELLSTATUS_TEILERLEDIGT cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT); critBestellung.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)); List<?> list = crit.list(); for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRBestellpositionReport flrbespos = (FLRBestellpositionReport) iter.next(); /** * nur Liefermahnungen deren Status bestaetigt ist oder deren * Liefertermin vor heute ist */ if (echteLiefermahnung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { Integer latest = 0; for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > latest) { latest = bsmahnungdto[y].getMahnstufeIId(); } } for (int i = 0; i < bsmahnstufeDto.length; i++) { if (latest.equals(bsmahnstufeDto[i].getIId())) { echteLiefermahnungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } else { echteLiefermahnungen(flrbespos, bsmahnlaufIId, null, theClientDto); } } // lt. WH boolean bEchteLiefermahnungVorhanden = false; BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > 0) { bEchteLiefermahnungVorhanden = true; } } } if (bEchteLiefermahnungVorhanden == false) { /** * nur ABMahnungen deren Status offen ist ausser der * Liefertermin ist vor heute dann ist es eine Liefermahnung */ if (echteABMahnungen == true) { // hier wird mahnstufe 0 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId().equals(new Integer(BSMahnwesenFac.MAHNSTUFE_0))) { echteABMahnungen(flrbespos, bsmahnstufeDto[i], bsmahnlaufIId, theClientDto); } } } // lt. WH boolean bABLiefermahnungVorhanden = false; bsmahnungdto = getBSMahnwesenFac().bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() == 0) { bABLiefermahnungVorhanden = true; } } } if (bABLiefermahnungVorhanden == false) { // lt. WH Liefererinnerung ist wie echte // Liefermahnung, // jedoch // nur mit Mahnstufe -1 if (liefererinnerung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { if (flrbespos.getT_lieferterminbestaetigt() == null) { // hier wird mahnstufe -1 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId() .equals(new Integer(BSMahnwesenFac.MAHNSTUFE_MINUS1))) { liefererinnerungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } } } } } return bsmahnlaufIId; } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
From source file:com.lp.server.eingangsrechnung.ejbfac.EingangsrechnungFacBean.java
License:Open Source License
public int wiederholendeZusatzkostenAnlegen(TheClientDto theClientDto) { int iAnzahlAngelegt = 0; Session session = FLRSessionFactory.getFactory().openSession(); Criteria crit = session.createCriteria(FLREingangsrechnung.class); crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); crit.add(Restrictions.eq("eingangsrechnungart_c_nr", EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)); crit.add(Restrictions.not(Restrictions.eq("status_c_nr", EingangsrechnungFac.STATUS_STORNIERT))); crit.add(Restrictions.isNull("t_wiederholenderledigt")); crit.add(Restrictions.isNull("eingangsrechnung_i_id_nachfolger")); crit.add(Restrictions.isNotNull("auftragwiederholungsintervall_c_nr")); crit.add(Restrictions.lt("t_belegdatum", Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000))))); List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext()) { FLREingangsrechnung flrEingangsrechnung = (FLREingangsrechnung) resultListIterator.next(); // Naechster faelliger Termin nach Heute Calendar cBeginn = Calendar.getInstance(); cBeginn.setTimeInMillis(flrEingangsrechnung.getT_belegdatum().getTime()); String intervall = flrEingangsrechnung.getAuftragwiederholungsintervall_c_nr(); Timestamp tHeute = Helper.cutTimestamp(new Timestamp(System.currentTimeMillis() + (24 * 3600000))); if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2WOECHENTLICH)) { cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 14); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_WOECHENTLICH)) { cBeginn.set(Calendar.DAY_OF_MONTH, cBeginn.get(Calendar.DAY_OF_MONTH) + 7); }/*from w w w. j av a 2 s . co m*/ if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 1); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_2JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 2); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_3JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 3); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_4JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 4); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_5JAHR)) { cBeginn.set(Calendar.YEAR, cBeginn.get(Calendar.YEAR) + 5); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_MONATLICH)) { cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 1); } else if (intervall.equals(AuftragServiceFac.AUFTRAGWIEDERHOLUNGSINTERVALL_QUARTAL)) { cBeginn.set(Calendar.MONTH, cBeginn.get(Calendar.MONTH) + 3); } Date tBelegdatumNeu = new Date(cBeginn.getTimeInMillis()); if (cBeginn.getTimeInMillis() < tHeute.getTime()) { Eingangsrechnung er = em.find(Eingangsrechnung.class, flrEingangsrechnung.getI_id()); EingangsrechnungDto erDtoNeu = assembleEingangsrechnungDto(er); erDtoNeu.setIId(null); erDtoNeu.setDBelegdatum(tBelegdatumNeu); erDtoNeu.setStatusCNr(EingangsrechnungFac.STATUS_ANGELEGT); Integer idNeu = createEingangsrechnung(erDtoNeu, theClientDto).getIId(); // Nachfolger setzten er.setEingangsrechnungIIdNachfolger(idNeu); iAnzahlAngelegt++; } } return iAnzahlAngelegt; }
From source file:com.lp.server.eingangsrechnung.ejbfac.EingangsrechnungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printKontierungsjournal(TheClientDto theClientDto, int iFilterER, Integer kostenstelleIId, int iKritDatum, Date dVon, Date dBis, boolean bZusatzkosten) { Session session = null;/*from w w w. jav a2 s . c om*/ try { this.useCase = UC_KONTIERUNG; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria cKontierung = session.createCriteria(FLREingangsrechnungKontierung.class); if (kostenstelleIId != null) { cKontierung.add(Restrictions.eq(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE + ".i_id", kostenstelleIId)); } // Filter nach ER-status Collection<String> cStati = new TreeSet<String>(); if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_ALLE) { cStati.add(EingangsrechnungFac.STATUS_ANGELEGT); cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT); cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT); } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_BEZAHLT) { cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT); } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_OFFENE) { cStati.add(EingangsrechnungFac.STATUS_ANGELEGT); cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT); } Collection<String> cArten = new TreeSet<String>(); if (bZusatzkosten) { cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN); } else { cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_ANZAHLUNG); cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_EINGANGSRECHNUNG); cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_GUTSCHRIFT); cArten.add(EingangsrechnungFac.EINGANGSRECHNUNGART_SCHLUSSZAHLUNG); } String mandantCNr = theClientDto.getMandant(); Criteria cEigangsrechnung = cKontierung .createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLREINGANGSRECHNUNG); if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) { cEigangsrechnung.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr)) .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dVon)) .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dBis)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, cArten)); } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) { cEigangsrechnung.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr)) .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dVon)) .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dBis)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, cArten)); } // Sortierung noch kostenstelle, konto cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE) .addOrder(Order.asc("c_nr")); cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKONTO).addOrder(Order.asc("c_nr")); List<?> listKontierung = cKontierung.list(); ArrayList<ReportEingangsrechnungKontierungsjournalDto> coll = new ArrayList<ReportEingangsrechnungKontierungsjournalDto>(); for (Iterator<?> iter = listKontierung.iterator(); iter.hasNext();) { FLREingangsrechnungKontierung item = (FLREingangsrechnungKontierung) iter.next(); EingangsrechnungDto erDto = getEingangsrechnungFac() .eingangsrechnungFindByPrimaryKey(item.getEingangsrechnung_i_id()); ReportEingangsrechnungKontierungsjournalDto dto = new ReportEingangsrechnungKontierungsjournalDto(); // Bezahlter Wert in Mandantenwaehrung BigDecimal bdBezahlt = getEingangsrechnungFac().getBezahltBetrag(erDto.getIId(), item.getI_id()); dto.setBdBezahlt(bdBezahlt); dto.setBdBezahltFW(getEingangsrechnungFac().getBezahltBetragFw(erDto.getIId(), item.getI_id())); // Bezahlt Wert mit Kurs der ER in Mandantenwaehrung BigDecimal bdBezahltERKurs = getEingangsrechnungFac().getBezahltBetragFwKontierung(erDto.getIId(), item.getI_id()); if (bdBezahltERKurs != null) { bdBezahltERKurs = bdBezahltERKurs.multiply(erDto.getNKurs()); } dto.setBdBezahltzuERKurs(bdBezahltERKurs); // Letztes Zahldatum EingangsrechnungzahlungDto letzteZahlung = getEingangsrechnungFac() .getLetzteZahlung(erDto.getIId()); Date dLetztesZahldatum = null; if (letzteZahlung != null) { dLetztesZahldatum = new Date(letzteZahlung.getTZahldatum().getTime()); } dto.setDLetzesZahldatum(dLetztesZahldatum); // Errechneter Steuersatz // BigDecimal bdErrechneterSteuersatz = erDto // .getNUstBetrag() // .divide(erDto.getNBetrag().subtract( // erDto.getNUstBetrag()), 4, // BigDecimal.ROUND_HALF_EVEN).movePointRight(2); // dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz); dto.setWaehrungCNr(erDto.getWaehrungCNr()); dto.setBdUst(item.getN_betrag_ust().multiply(erDto.getNKurs()).setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdUstFW(item.getN_betrag_ust()); dto.setBdWert(item.getN_betrag().multiply(erDto.getNKurs()).setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdWertFW(item.getN_betrag()); BigDecimal bdErrechneterSteuersatz = getMwstSatzVonBruttoBetragUndUst(erDto.getMandantCNr(), new Timestamp(erDto.getDBelegdatum().getTime()), dto.getBdWert(), dto.getBdUst()); // BigDecimal bdErrechneterSteuersatz = dto // .getBdUst() // .divide(dto.getBdWert().subtract( // dto.getBdUst()), 4, // BigDecimal.ROUND_HALF_EVEN).movePointRight(2); dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz); dto.setDEingangsrechnungsdatum(item.getFlreingangsrechnung().getT_belegdatum()); dto.setSEingangsrechnungsnummer(item.getFlreingangsrechnung().getC_nr()); dto.setSEingangsrechnungText(erDto.getCText()); dto.setSEingangsrechnungWeartikel(erDto.getCWeartikel()); dto.setSKontobezeichnung(item.getFlrkonto().getC_bez()); dto.setSKontonummer(item.getFlrkonto().getC_nr()); dto.setSKostenstelleBezeichnung(item.getFlrkostenstelle().getC_bez()); dto.setSKostenstellenummer(item.getFlrkostenstelle().getC_nr()); dto.setSLieferant(item.getFlreingangsrechnung().getFlrlieferant().getFlrpartner() .getC_name1nachnamefirmazeile1()); if (item.getFlrkonto().getFlrkontoart() != null) { dto.setSKontoart(getFinanzServiceFac().uebersetzeKontoartOptimal( item.getFlrkonto().getFlrkontoart().getC_nr(), theClientDto.getLocUi(), theClientDto.getLocMandant())); } coll.add(dto); } // jetzt noch die nicht mehrfach kontierten holen Criteria cER = session.createCriteria(FLREingangsrechnungReport.class); if (kostenstelleIId != null) { cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_FLRKOSTENSTELLE + ".i_id", kostenstelleIId)); } if (bZusatzkosten) { cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)); } else { cER.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN))); } if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) { cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr)) .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dVon)) .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dBis)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati)); } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) { cER.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr)) .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dVon)) .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dBis)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati)); } List<?> listER = cER.list(); for (Iterator<?> iter = listER.iterator(); iter.hasNext();) { FLREingangsrechnungReport item = (FLREingangsrechnungReport) iter.next(); EingangsrechnungDto erDto = getEingangsrechnungFac() .eingangsrechnungFindByPrimaryKey(item.getI_id()); if (erDto.getKostenstelleIId() != null) { ReportEingangsrechnungKontierungsjournalDto dto = new ReportEingangsrechnungKontierungsjournalDto(); // Bezahlter Wert in Mandantenwaehrung BigDecimal bdBezahlt = getEingangsrechnungFac().getBezahltBetrag(erDto.getIId(), null); dto.setBdBezahlt(bdBezahlt); // Bezahlt Wert mit Kurs der ER in Mandantenwaehrung BigDecimal bdBezahltERKurs = getEingangsrechnungFac().getBezahltBetragFw(erDto.getIId(), null); if (bdBezahltERKurs != null) { dto.setBdBezahltFW(new BigDecimal(bdBezahltERKurs.doubleValue())); bdBezahltERKurs = bdBezahltERKurs.multiply(erDto.getNKurs()); } dto.setBdBezahltzuERKurs(bdBezahltERKurs); // Letztes Zahldatum EingangsrechnungzahlungDto letzteZahlung = getEingangsrechnungFac() .getLetzteZahlung(erDto.getIId()); Date dLetztesZahldatum = null; if (letzteZahlung != null) { dLetztesZahldatum = new Date(letzteZahlung.getTZahldatum().getTime()); } dto.setBdERKurs(erDto.getNKurs()); dto.setWaehrungCNr(erDto.getWaehrungCNr()); dto.setDLetzesZahldatum(dLetztesZahldatum); // Werte dto.setBdUst( erDto.getNUstBetrag().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdWert( erDto.getNBetrag().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdUstFW(erDto.getNUstBetragfw().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdWertFW( erDto.getNBetragfw().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); // Errechneter Steuersatz BigDecimal bdErrechneterSteuersatz = null; if (erDto.getNBetrag().subtract(erDto.getNUstBetrag()).doubleValue() == 0) { bdErrechneterSteuersatz = new BigDecimal(100); } else { // bdErrechneterSteuersatz = erDto // .getNUstBetrag() // .divide(erDto.getNBetrag().subtract( // erDto.getNUstBetrag()), 4, // BigDecimal.ROUND_HALF_EVEN) // .movePointRight(2); bdErrechneterSteuersatz = getMwstSatzVonBruttoBetragUndUst(erDto.getMandantCNr(), new Timestamp(erDto.getDBelegdatum().getTime()), dto.getBdWert(), dto.getBdUst()); } dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz); dto.setDEingangsrechnungsdatum(item.getT_belegdatum()); dto.setSEingangsrechnungsnummer(item.getC_nr()); dto.setSEingangsrechnungText(erDto.getCText()); dto.setSEingangsrechnungWeartikel(erDto.getCWeartikel()); dto.setSLieferantenrechnungsnummer(item.getC_lieferantenrechnungsnummer()); dto.setDFreigabedatum(item.getT_freigabedatum()); if (erDto.getKontoIId() != null) { KontoDto kontoDto = getFinanzFac().kontoFindByPrimaryKey(erDto.getKontoIId()); dto.setSKontobezeichnung(kontoDto.getCBez()); dto.setSKontonummer(kontoDto.getCNr()); if (kontoDto.getKontoartCNr() != null) { dto.setSKontoart( getFinanzServiceFac().uebersetzeKontoartOptimal(kontoDto.getKontoartCNr(), theClientDto.getLocUi(), theClientDto.getLocMandant())); } } else { dto.setSKontobezeichnung(getTextRespectUISpr("er.kontierungfehlerhaft", theClientDto.getMandant(), theClientDto.getLocUi())); dto.setSKontonummer("ERR"); } dto.setSKostenstelleBezeichnung(item.getFlrkostenstelle().getC_bez()); dto.setSKostenstellenummer(item.getFlrkostenstelle().getC_nr()); dto.setSLieferant(item.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1()); if (item.getFlrlieferant().getKonto_i_id_kreditorenkonto() != null) { KontoDto kredKontoDto = getFinanzFac() .kontoFindByPrimaryKey(item.getFlrlieferant().getKonto_i_id_kreditorenkonto()); dto.setSKreditorennummer(kredKontoDto.getCNr()); } else { dto.setSKreditorennummer(null); } coll.add(dto); } } // Sortieren Collections.sort(coll, new ComparatorKontierungsjournal(Helper.SORTIERUNG_NACH_KOSTENSTELLE_UND_KONTO)); data = new Object[coll.size()][KONTIERUNG_ANZAHL_FELDER]; int i = 0; for (Iterator<ReportEingangsrechnungKontierungsjournalDto> iter = coll.iterator(); iter .hasNext(); i++) { ReportEingangsrechnungKontierungsjournalDto item = (ReportEingangsrechnungKontierungsjournalDto) iter .next(); data[i][KONTIERUNG_FELD_WERT_BEZAHLT] = item.getBdBezahlt(); data[i][KONTIERUNG_FELD_WERT_UST] = item.getBdUst(); data[i][KONTIERUNG_FELD_WERT] = item.getBdWert(); data[i][KONTIERUNG_FELD_WERT_BEZAHLT_FW] = item.getBdBezahltFW(); data[i][KONTIERUNG_FELD_WERT_UST_FW] = item.getBdUstFW(); data[i][KONTIERUNG_FELD_WERT_FW] = item.getBdWertFW(); data[i][KONTIERUNG_FELD_ER_KURS] = item.getBdERKurs(); data[i][KONTIERUNG_FELD_WAEHRUNG_C_NR] = item.getWaehrungCNr(); data[i][KONTIERUNG_FELD_ER_DATUM] = item.getDEingangsrechnungsdatum(); data[i][KONTIERUNG_FELD_ER_C_NR] = item.getSEingangsrechnungsnummer(); data[i][KONTIERUNG_FELD_ER_TEXT] = item.getSEingangsrechnungText(); data[i][KONTIERUNG_FELD_ER_WEARTIKEL] = item.getSEingangsrechnungWeartikel(); data[i][KONTIERUNG_FELD_KONTOART_C_NR] = item.getSKontoart(); data[i][KONTIERUNG_FELD_KONTO_C_BEZ] = item.getSKontobezeichnung(); data[i][KONTIERUNG_FELD_KONTO_C_NR] = item.getSKontonummer(); data[i][KONTIERUNG_FELD_KOSTENSTELLE_C_BEZ] = item.getSKostenstelleBezeichnung(); data[i][KONTIERUNG_FELD_KOSTENSTELLE_C_NR] = item.getSKostenstellenummer(); data[i][KONTIERUNG_FELD_ER_LIEFERANT] = item.getSLieferant(); data[i][KONTIERUNG_FELD_LETZTES_ZAHLDATUM] = item.getDLetzesZahldatum(); data[i][KONTIERUNG_FELD_ERRECHNETER_STEUERSATZ] = item.getBdErrechneterSteuersatz(); data[i][KONTIERUNG_FELD_LIEFERANTENRECHNUNGSNUMMER] = item.getSLieferantenrechnungsnummer(); if (item.getDFreigabedatum() == null) { cKontierung = session.createCriteria(FLREingangsrechnungKontierung.class); if (kostenstelleIId != null) { cKontierung.add(Restrictions .eq(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE + ".i_id", kostenstelleIId)); } // Filter nach ER-status cStati = new TreeSet<String>(); if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_ALLE) { cStati.add(EingangsrechnungFac.STATUS_ANGELEGT); cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT); cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT); } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_BEZAHLT) { cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT); } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_OFFENE) { cStati.add(EingangsrechnungFac.STATUS_ANGELEGT); cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); // cStati.add(EingangsrechnungFac.STATUS_VERBUCHT); } mandantCNr = theClientDto.getMandant(); if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) { cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLREINGANGSRECHNUNG) .add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr)) .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dVon)) .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, dBis)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati)); } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) { cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLREINGANGSRECHNUNG) .add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, mandantCNr)) .add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dVon)) .add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, dBis)) .add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, cStati)); } // Sortierung noch kostenstelle, konto cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKOSTENSTELLE) .addOrder(Order.asc("c_nr")); cKontierung.createCriteria(EingangsrechnungFac.FLR_KONTIERUNG_FLRKONTO) .addOrder(Order.asc("c_nr")); listKontierung = cKontierung.list(); coll = new ArrayList<ReportEingangsrechnungKontierungsjournalDto>(); for (Iterator<?> iter1 = listKontierung.iterator(); iter1.hasNext();) { FLREingangsrechnungKontierung item1 = (FLREingangsrechnungKontierung) iter1.next(); EingangsrechnungDto erDto = getEingangsrechnungFac() .eingangsrechnungFindByPrimaryKey(item1.getEingangsrechnung_i_id()); ReportEingangsrechnungKontierungsjournalDto dto = new ReportEingangsrechnungKontierungsjournalDto(); BigDecimal bdBezahlt = getEingangsrechnungFac().getBezahltBetrag(erDto.getIId(), item1.getI_id()); dto.setBdBezahlt(bdBezahlt); // Bezahlt Wert mit Kurs der ER in Mandantenwaehrung BigDecimal bdBezahltERKurs = getEingangsrechnungFac().getBezahltBetragFw(erDto.getIId(), item1.getI_id()); if (bdBezahltERKurs != null) { dto.setBdBezahltFW(new BigDecimal(bdBezahltERKurs.doubleValue())); bdBezahltERKurs = bdBezahltERKurs.multiply(erDto.getNKurs()); } dto.setBdBezahltzuERKurs(bdBezahltERKurs); // Letztes Zahldatum EingangsrechnungzahlungDto letzteZahlung = getEingangsrechnungFac() .getLetzteZahlung(erDto.getIId()); Date dLetztesZahldatum = null; if (letzteZahlung != null) { dLetztesZahldatum = new Date(letzteZahlung.getTZahldatum().getTime()); } dto.setDLetzesZahldatum(dLetztesZahldatum); // Errechneter Steuersatz BigDecimal bdErrechneterSteuersatz = erDto.getNUstBetrag() .divide(erDto.getNBetrag().subtract(erDto.getNUstBetrag()), 4, BigDecimal.ROUND_HALF_EVEN) .movePointRight(2); dto.setBdErrechneterSteuersatz(bdErrechneterSteuersatz); dto.setBdUst(item1.getN_betrag_ust().multiply(erDto.getNKurs()) .setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdWert(item1.getN_betrag().multiply(erDto.getNKurs()) .setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdUstFW(item1.getN_betrag_ust().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setBdWertFW(item1.getN_betrag().setScale(FinanzFac.NACHKOMMASTELLEN, BigDecimal.ROUND_HALF_EVEN)); dto.setWaehrungCNr(erDto.getWaehrungCNr()); dto.setDEingangsrechnungsdatum(item1.getFlreingangsrechnung().getT_belegdatum()); dto.setSEingangsrechnungsnummer(item1.getFlreingangsrechnung().getC_nr()); dto.setSEingangsrechnungText(erDto.getCText()); dto.setSEingangsrechnungWeartikel(erDto.getCWeartikel()); dto.setSKontobezeichnung(item1.getFlrkonto().getC_bez()); dto.setSKontonummer(item1.getFlrkonto().getC_nr()); dto.setSKostenstelleBezeichnung(item1.getFlrkostenstelle().getC_bez()); dto.setSKostenstellenummer(item1.getFlrkostenstelle().getC_nr()); dto.setSLieferant(item1.getFlreingangsrechnung().getFlrlieferant().getFlrpartner() .getC_name1nachnamefirmazeile1()); if (item1.getFlrkonto().getFlrkontoart() != null) { dto.setSKontoart(getFinanzServiceFac().uebersetzeKontoartOptimal( item1.getFlrkonto().getFlrkontoart().getC_nr(), theClientDto.getLocUi(), theClientDto.getLocMandant())); } if (erDto.getDFreigabedatum() != null) { item.setDFreigabedatum(erDto.getDFreigabedatum()); } } } data[i][KONTIERUNG_FELD_ER_FREIGABEDATUM] = item.getDFreigabedatum(); data[i][KONTIERUNG_FELD_WERT_BEZAHLT_ERKURS] = item.getBdBezahltzuERKurs(); data[i][KONTIERUNG_FELD_KREDITORENNUMMER] = item.getSKreditorennummer(); } // Datumsbereich StringBuffer sDatum = new StringBuffer(); if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_BELEG) { sDatum.append("Belegdatum "); } else if (iKritDatum == EingangsrechnungReportFac.REPORT_KONTIERUNG_KRIT_DATUM_FREIGABE) { sDatum.append("Freigabedatum "); } if (dVon != null) { sDatum.append("von " + Helper.formatDatum(dVon, theClientDto.getLocUi())); } if (dBis != null) { sDatum.append(" bis " + Helper.formatDatum(dBis, theClientDto.getLocUi())); } Map<String, Object> mapParameter = new TreeMap<String, Object>(); mapParameter.put("P_DATUM", sDatum.toString()); mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten)); // Filter StringBuffer sFilter = new StringBuffer(); if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_ALLE) { sFilter.append("Alle Eingangsrechnungen"); } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_BEZAHLT) { sFilter.append("Bezahlte Eingangsrechnungen"); } else if (iFilterER == EingangsrechnungReportFac.REPORT_KONTIERUNG_FILTER_ER_OFFENE) { sFilter.append("Offene Eingangsrechnungen"); } sFilter.append(", "); if (kostenstelleIId == null) { sFilter.append("Alle Kostenstellen"); } else { sFilter.append("Eine Kostenstelle"); } mapParameter.put(LPReport.P_FILTER, sFilter.toString()); initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL, EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_KONTIERUNG, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } 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;/*from w w w . j a va2 s .c o 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.eingangsrechnung.ejbfac.EingangsrechnungReportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printAlle(ReportJournalKriterienDto krit, TheClientDto theClientDto, boolean bZusatzkosten, boolean bDatumIstFreigabedatum) { Session session = null;// w w w. j a va 2 s . c om try { this.useCase = UC_ALLE; SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLREingangsrechnungReport.class); c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, theClientDto.getMandant())); if (krit.kostenstelleIId != null) { c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_KOSTENSTELLE_I_ID, krit.kostenstelleIId)); } if (krit.lieferantIId != null) { c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_LIEFERANT_I_ID, krit.lieferantIId)); } String sVon = null; String sBis = null; if (krit.dVon != null) { if (bDatumIstFreigabedatum) { c.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, krit.dVon)); } else { c.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, krit.dVon)); } sVon = Helper.formatDatum(krit.dVon, theClientDto.getLocUi()); } if (krit.dBis != null) { if (bDatumIstFreigabedatum) { c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_FREIGABEDATUM, krit.dBis)); } else { c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_D_BELEGDATUM, krit.dBis)); } sBis = Helper.formatDatum(krit.dBis, theClientDto.getLocUi()); } if (bZusatzkosten) { c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)); } else { c.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN))); } 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 (krit.sBelegnummerVon != null) { sVon = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerVon); c.add(Restrictions.ge(EingangsrechnungFac.FLR_ER_C_NR, sVon)); } if (krit.sBelegnummerBis != null) { sBis = HelperServer.getBelegnummernFilterForHibernateCriterias(f, iGeschaeftsjahr, sMandantKuerzel, krit.sBelegnummerBis); c.add(Restrictions.le(EingangsrechnungFac.FLR_ER_C_NR, sBis)); } if (krit.bSortiereNachKostenstelle) { c.createCriteria(EingangsrechnungFac.FLR_ER_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { c.createCriteria(EingangsrechnungFac.FLR_ER_FLRLIEFERANT).createCriteria(LieferantFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR)); } else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_BELEGNUMMER) { c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR)); } else { c.addOrder(Order.asc(EingangsrechnungFac.FLR_ER_C_NR)); } List<?> list = c.list(); data = new Object[list.size()][ALLE_ANZAHL_FELDER]; int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLREingangsrechnungReport e = (FLREingangsrechnungReport) iter.next(); data[i][FELD_ALLE_AUSZUG] = getEingangsrechnungFac().getAuszugDerLetztenZahlung(e.getI_id()); BankverbindungDto bvDto = getEingangsrechnungFac().getZuletztVerwendeteBankverbindung(e.getI_id()); if (bvDto != null) { BankDto bankDto = getBankFac().bankFindByPrimaryKey(bvDto.getBankIId(), theClientDto); data[i][FELD_ALLE_BANK] = bankDto.getPartnerDto().getCName1nachnamefirmazeile1(); } data[i][FELD_ALLE_BELEGDATUM] = e.getT_belegdatum(); data[i][FELD_ALLE_BEZAHLTDATUM] = e.getT_bezahltdatum(); data[i][FELD_ALLE_EINGANGSRECHNUNGSNUMMER] = e.getC_nr(); data[i][FELD_ALLE_STATUS] = e.getStatus_c_nr(); data[i][FELD_ALLE_FREIGABEDATUM] = e.getT_freigabedatum(); data[i][FELD_ALLE_KOSTENSTELLENUMMER] = e.getFlrkostenstelle() != null ? e.getFlrkostenstelle().getC_nr() : ""; data[i][FELD_ALLE_LIEFERANT] = e.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][FELD_ALLE_TEXT] = e.getC_text(); data[i][FELD_ALLE_WEARTIKEL] = e.getC_weartikel(); data[i][FELD_ALLE_WERT] = e.getN_betrag(); data[i][FELD_ALLE_KURS] = e.getN_kurs(); data[i][FELD_ALLE_WAEHRUNG] = e.getWaehrung_c_nr(); data[i][FELD_ALLE_ZOLLBELEGNUMMER] = e.getC_zollimportpapier(); data[i][FELD_ALLE_WERTNETTO] = e.getN_betrag() != null ? e.getN_betrag().subtract(e.getN_ustbetrag()) : null; data[i][FELD_ALLE_WERTUST] = e.getN_ustbetrag(); data[i][FELD_ALLE_WERT_FW] = e.getN_betragfw(); data[i][FELD_ALLE_WERTNETTO_FW] = e.getN_betragfw() != null ? e.getN_betragfw().subtract(e.getN_ustbetragfw()) : null; data[i][FELD_ALLE_WERTUST_FW] = e.getN_ustbetragfw(); data[i][FELD_ALLE_ZIELDATUM] = getMandantFac().berechneZielDatumFuerBelegdatum( e.getT_freigabedatum(), e.getZahlungsziel_i_id(), theClientDto); data[i][FELD_ALLE_LAENDERART] = getFinanzServiceFac() .getLaenderartZuPartner(e.getFlrlieferant().getFlrpartner().getI_id(), theClientDto); data[i][FELD_ALLE_ZAHLBETRAG] = getEingangsrechnungFac().getBezahltBetrag(e.getI_id(), null); data[i][FELD_ALLE_ZAHLBETRAG_FW] = getEingangsrechnungFac().getBezahltBetragFw(e.getI_id(), null); if (e.getFlrkonto() != null) { data[i][FELD_ALLE_KONTO] = e.getFlrkonto().getC_nr(); } EingangsrechnungKontierungDto[] kontierungDtos = getEingangsrechnungFac() .eingangsrechnungKontierungFindByEingangsrechnungIId(e.getI_id()); if (kontierungDtos.length > 0) { String[] fieldnames = new String[] { "F_BETRAG", "F_USTBETRAG", "F_KOSTENSTELLE", "F_SACHKONTO", "F_UST" }; Object[][] dataSub = new Object[kontierungDtos.length][fieldnames.length]; BigDecimal gesamtUst = new BigDecimal(0); for (int j = 0; j < kontierungDtos.length; j++) { dataSub[j][0] = kontierungDtos[j].getNBetrag(); dataSub[j][1] = kontierungDtos[j].getNBetragUst(); gesamtUst = gesamtUst.add(kontierungDtos[j].getNBetragUst()); dataSub[j][2] = getSystemFac() .kostenstelleFindByPrimaryKey(kontierungDtos[j].getKostenstelleIId()).getCNr(); dataSub[j][3] = getFinanzFac().kontoFindByPrimaryKeySmall(kontierungDtos[j].getKontoIId()) .getCNr(); dataSub[j][4] = new BigDecimal(getMandantFac() .mwstsatzFindByPrimaryKey(kontierungDtos[j].getMwstsatzIId(), theClientDto) .getFMwstsatz()); } data[i][FELD_ALLE_KONTIERUNG] = new LPDatenSubreport(dataSub, fieldnames); data[i][FELD_ALLE_WERTUST] = gesamtUst; } else { data[i][FELD_ALLE_UST] = getMwstSatzVonBruttoBetragUndUst(e.getMandant_c_nr(), new Timestamp(e.getT_belegdatum().getTime()), e.getN_betrag(), e.getN_ustbetrag()); } // Debitorenkontonummer KontoDtoSmall kontoDtoKred = getFinanzFac() .kontoFindByPrimaryKeySmallOhneExc(e.getFlrlieferant().getKonto_i_id_kreditorenkonto()); String sKontonummer; if (kontoDtoKred != null) { sKontonummer = kontoDtoKred.getCNr(); } else { sKontonummer = ""; } data[i][FELD_ALLE_KREDITORENKONTO] = sKontonummer; i++; } Map<String, Object> mapParameter = new TreeMap<String, Object>(); MandantDto mandantDto = getMandantFac().mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto); // Waehrung mapParameter.put(LPReport.P_WAEHRUNG, mandantDto.getWaehrungCNr()); mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten)); mapParameter.put("P_AUSWERTUNG_NACH_FREIGABEDATUM", new Boolean(bDatumIstFreigabedatum)); StringBuffer sSortierung = new StringBuffer(); // Sortierung nach Kostenstelle mapParameter.put(LPReport.P_SORTIERENACHKOSTENSTELLE, new Boolean(krit.bSortiereNachKostenstelle)); if (krit.bSortiereNachKostenstelle) { sSortierung.append( getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi())); sSortierung.append(", "); } // Sortieung nach Lieferant mapParameter.put(LPReport.P_SORTIERENACHLIEFERANT, new Boolean(krit.iSortierung == krit.KRIT_SORT_NACH_PARTNER)); if (krit.iSortierung == krit.KRIT_SORT_NACH_PARTNER) { sSortierung.append( getTextRespectUISpr("lp.lieferant", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (krit.iSortierung == krit.KRIT_SORT_NACH_BELEGNUMMER) { sSortierung.append(getTextRespectUISpr("er.eingangsrechnungsnummer", theClientDto.getMandant(), theClientDto.getLocUi())); } StringBuffer sFilter = new StringBuffer(); if (sVon != null) { sFilter.append(getTextRespectUISpr("lp.von", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" " + sVon + " "); } if (sBis != null) { sFilter.append(getTextRespectUISpr("lp.bis", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" " + sBis + " "); } if (krit.kostenstelleIId != null) { if (sFilter.length() > 0) { sFilter.append(", "); } KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(krit.kostenstelleIId); sFilter.append( getTextRespectUISpr("lp.kostenstelle", theClientDto.getMandant(), theClientDto.getLocUi())); sFilter.append(" "); sFilter.append(kstDto.getCNr()); } mapParameter.put(LPReport.P_SORTIERUNG, sSortierung.toString()); mapParameter.put(LPReport.P_FILTER, sFilter.toString()); initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL, EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_ALLE, 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
@TransactionAttribute(TransactionAttributeType.NEVER) public KapazitaetsvorschauDto getKapazitaetsvorschau(TheClientDto theClientDto) throws EJBExceptionLP { KapazitaetsvorschauDto kapDto = null; Session session = null;/* www. j ava 2 s . c o m*/ try { // ------------------------------------------------------------------ // ----- // Benoetigte Parameter holen // ------------------------------------------------------------------ // ----- // Default Sicht nach Wochen // final int iSicht = FertigungFac.KAPAZITAETSVORSCHAU_NACH_WOCHEN; // Anzahl der angezeigten Vatergruppen. Alles andere wird nach // "Sonstige" verdichtet final ParametermandantDto parameterAnzahlGruppen = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ANZAHL_GRUPPEN); final int iParamAnzahlGruppen = (Integer) parameterAnzahlGruppen.getCWertAsObject(); // Angezeigter Zeitraum = Anzahl der Spalten final ParametermandantDto parameterZeitraum = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ZEITRAUM); final int iParamZeitraum = (Integer) parameterZeitraum.getCWertAsObject(); // ------------------------------------------------------------------ // ----- // Hibernate-Session erstellen // ------------------------------------------------------------------ // ----- SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); // ------------------------------------------------------------------ // ----- // Artikel- / Maschinen-Vatergruppen holen // ------------------------------------------------------------------ // ----- // Alle Artikel-Vatergruppen Criteria cArtikelVatergruppen = session.createCriteria(FLRArtikelgruppe.class); cArtikelVatergruppen.add(Restrictions.isNull(ArtikelFac.FLR_ARTIKELGRUPPE_FLRARTIKELGRUPPE)); List<?> listArtikelgruppen = cArtikelVatergruppen.list(); // Alle Maschinen-Vatergruppen Criteria cMaschinengruppen = session.createCriteria(FLRMaschinengruppe.class); List<?> listMaschinengruppen = cMaschinengruppen.list(); // ------------------------------------------------------------------ // ----- // Anzahl der sub-Diagramme bestimmen // das ist grundsaetzlich (iParamAnzahlGruppen + 1) x 2 ... // (Anzahl d. anzuzeigenden Vatergruppen + Sonstige) f. AZ und // Maschinen // wenn es weniger Vatergruppen als anzuzeigende gibt, reduziert // sich das aber // Gibt es keine Vatergruppe, wird daher alles nach "Sonstige" // verdichtet // ------------------------------------------------------------------ // ----- final int iAnzuzeigendeArtikelgruppen = Math.min(iParamAnzahlGruppen, listArtikelgruppen.size()); final int iAnzuzeigendeMaschinengruppen = Math.min(iParamAnzahlGruppen, listMaschinengruppen.size()); final int iAnzahlZeilen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen + 1; // ------------------------------------------------------------------ // ----- // Dto initialisieren // ------------------------------------------------------------------ // ----- kapDto = new KapazitaetsvorschauDto(iAnzahlZeilen, iParamZeitraum); // ------------------------------------------------------------------ // ----- // Beschriftung der x-Achse ermitteln. das sind die Kalenderwochen // ------------------------------------------------------------------ // ----- HashMap<Integer, Integer> hmKWIndizes = new HashMap<Integer, Integer>(); String[] kw = new String[iParamZeitraum]; GregorianCalendar gc = new GregorianCalendar(); for (int i = 0; i < kw.length; i++) { int iKw = gc.get(GregorianCalendar.WEEK_OF_YEAR); kw[i] = "" + iKw; kapDto.setISpaltenueberschrift(i, kw[i]); hmKWIndizes.put(gc.get(GregorianCalendar.WEEK_OF_YEAR), i); gc.setTimeInMillis(gc.getTimeInMillis() + 7 * 24 * 60 * 60 * 1000); // 1 Woche dazu } // ------------------------------------------------------------------ // ----- // Beschriftung der y-Achse ermitteln. das sind die Namen der // Vatergruppen bzw. 2 x "Sonstige". // Weiters werden die Indizes im Daten-Array fuer die jeweiligen // Gruppen festgelegt. // ------------------------------------------------------------------ // ----- String sSonstige = getTextRespectUISpr("lp.sonstige", theClientDto.getMandant(), theClientDto.getLocUi()); HashMap<Integer, Integer> hmArtikelGruppenIndizes = new HashMap<Integer, Integer>(); HashMap<Integer, Integer> hmMaschinenGruppenIndizes = new HashMap<Integer, Integer>(); // zuerst die Artikelvatergruppen for (int i = 0; i < iAnzuzeigendeArtikelgruppen; i++) { FLRArtikelgruppe item = (FLRArtikelgruppe) listArtikelgruppen.get(i); kapDto.setIZeilenueberschrift(i, item.getC_nr()); hmArtikelGruppenIndizes.put(item.getI_id(), i); } // Dann Sonstige Artikelgruppen final int indexSonstigeArtikelGruppen = iAnzuzeigendeArtikelgruppen; kapDto.setIZeilenueberschrift(indexSonstigeArtikelGruppen, sSonstige); // Maschinengruppen for (int i = 0; i < iAnzuzeigendeMaschinengruppen; i++) { FLRMaschinengruppe item = (FLRMaschinengruppe) listMaschinengruppen.get(i); int index = iAnzuzeigendeArtikelgruppen + 1 + i; kapDto.setIZeilenueberschrift(index, item.getC_bez()); hmMaschinenGruppenIndizes.put(item.getI_id(), index); } // zuletzt Sonstige Maschinengruppen final int indexSonstigeMaschinenGruppen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen; kapDto.setIZeilenueberschrift(indexSonstigeMaschinenGruppen, sSonstige); // ------------------------------------------------------------------ // ----- // Lose holen // ------------------------------------------------------------------ // ----- Criteria cLose = session.createCriteria(FLRLos.class); // Filter nach Mandant cLose.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // Alle Stati ausser Erledigt, Gestoppt, Storniert Collection<String> cLoseStati = new LinkedList<String>(); cLoseStati.add(FertigungFac.STATUS_ERLEDIGT); cLoseStati.add(FertigungFac.STATUS_GESTOPPT); cLoseStati.add(FertigungFac.STATUS_STORNIERT); cLose.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, cLoseStati))); List<?> listLose = cLose.list(); // ------------------------------------------------------------------ // ----- // Auswertungszeitraum und verfuegbare Kapazitaeten ermitteln // ------------------------------------------------------------------ // ----- // 3 Monate in die zukunft Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 3); java.util.Date dMax = Helper.cutDate(new java.sql.Date(c.getTimeInMillis())); java.sql.Timestamp tVon = Helper.cutTimestamp(new java.sql.Timestamp(System.currentTimeMillis())); java.sql.Timestamp tBis = Helper.cutTimestamp(new java.sql.Timestamp(dMax.getTime())); // Verfuegbare Zeiten holen SollverfuegbarkeitDto[] oVerfuegbar = getZeiterfassungFac().getVerfuegbareSollzeit(tVon, tBis, theClientDto); // diese nun aufteilen for (int i = 0; i < oVerfuegbar.length; i++) { SollverfuegbarkeitDto svDto = oVerfuegbar[i]; // "normale" AZ if (svDto.isBMannarbeitszeit()) { // die sind einer Artikelgruppe zugeordnet if (svDto.getIGruppeid() != null) { Integer iZeile = hmArtikelGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeArtikelGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } // Rest = Sonstige Artikelgruppen else { if (svDto.getTDatum() != null) { // Die KW dieses Datums ermitteln, damit das // zugeordnet werden kann GregorianCalendar gcSV = new GregorianCalendar(); gcSV.setTime(svDto.getTDatum()); int kwSV = gcSV.get(Calendar.WEEK_OF_YEAR); Integer iIndexDerKW = hmKWIndizes.get(kwSV); if (iIndexDerKW != null) { // Hier nicht mit 5 multiplizieren, da es fuer // jeden Tag einen eigenen Eintrag gibt kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iIndexDerKW, svDto.getNSollstunden()); } else { // diese KW wird nicht mehr angezeigt - brauch // ich nicht einrechnen } } } } // Maschinenzeit - die Verfuegbarkeit ist jeden Tag gleich else { Integer iZeile = hmMaschinenGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeMaschinenGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeMaschinenGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } } // ------------------------------------------------------------------ // ----- // Offene Zeiten ermitteln // ------------------------------------------------------------------ // ----- for (Iterator<?> iter = listLose.iterator(); iter.hasNext();) { FLRLos los = (FLRLos) iter.next(); // Offene Menge ermitteln BigDecimal bdOffen = los.getN_losgroesse(); for (Iterator<?> iterAblieferung = los.getAblieferungset().iterator(); iterAblieferung.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iterAblieferung.next(); bdOffen = bdOffen.subtract(item.getN_menge()); } // nur Lose mit tatsaechlich offener Menge>0 if (bdOffen.compareTo(new BigDecimal(0)) > 0) { // Faktor zur Berechnung der offenen Zeiten = offene Menge / // Losgroesse. 2 Nachkommastellen sollten reichen. BigDecimal bdFaktor = bdOffen.divide(los.getN_losgroesse(), 2, BigDecimal.ROUND_HALF_EVEN); // Arbeitsplan holen Criteria cLosAZ = session.createCriteria(FLRLossollarbeitsplan.class); cLosAZ.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, los.getI_id())); List<?> listLosAZ = cLosAZ.list(); // fuer alle Taetigkeiten for (Iterator<?> iterAZ = listLosAZ.iterator(); iterAZ.hasNext();) { FLRLossollarbeitsplan losAZ = (FLRLossollarbeitsplan) iterAZ.next(); BigDecimal bdOffeneStunden = losAZ.getN_gesamtzeit().multiply(bdFaktor); // ------------------------------------------------------ // ----------------- // Index der Gruppe bestimmen, der ich das zuordnen muss // ------------------------------------------------------ // ----------------- int iZeilenIndex; // 1. nach Maschinengruppe // 2. nach Artikelgruppe der Taetigkeit FLRMaschine flrMaschine = losAZ.getFlrmaschine(); Integer iMaschinengruppeIId = null; Integer iArtikelgruppeIId = null; if (flrMaschine != null) { FLRMaschinengruppe flrMaschinengruppe = flrMaschine.getFlrmaschinengruppe(); if (flrMaschinengruppe != null) { // Wenn diese Maschinengruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmMaschinenGruppenIndizes.get(flrMaschinengruppe.getI_id()); iMaschinengruppeIId = flrMaschinengruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } // Maschinen ohne Maschinengruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } else { FLRArtikel flrArtikel = losAZ.getFlrartikel(); FLRArtikelgruppe flrArtikelgruppe = flrArtikel.getFlrartikelgruppe(); if (flrArtikelgruppe != null) { // Wenn diese Artikelgruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmArtikelGruppenIndizes.get(flrArtikelgruppe.getI_id()); iArtikelgruppeIId = flrArtikelgruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // Taetigkeiten ohne Artikelgruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // ------------------------------------------------------ // ----------------- // Jetzt hab ich die Gruppe, der ich das zuordnen muss // nun muss die Zeit aufgeteilt werden // ------------------------------------------------------ // ----------------- java.util.Date tLosStarttermin = los.getT_produktionsbeginn(); java.util.Date tLosEndetermin = los.getT_produktionsende(); // beide Termine duerfen nicht vor heute liegen if (tLosStarttermin.before(getDate())) { tLosStarttermin = getDate(); } if (tLosEndetermin.before(getDate())) { tLosEndetermin = getDate(); } // Anzahl der betroffenen Kalenderwochen bestimmen GregorianCalendar gcStart = new GregorianCalendar(); gcStart.setTime(tLosStarttermin); GregorianCalendar gcEnde = new GregorianCalendar(); gcEnde.setTime(tLosEndetermin); int iStartKW = gcStart.get(Calendar.WEEK_OF_YEAR); int iEndeKW = gcEnde.get(Calendar.WEEK_OF_YEAR); int iAnzahlKW = 1 + iEndeKW - iStartKW; // nun auf die Wochen aufteilen BigDecimal bdOffeneStundenJeWoche = bdOffeneStunden; if (iAnzahlKW > 0) { bdOffeneStundenJeWoche = bdOffeneStunden.divide(new BigDecimal(iAnzahlKW), 2, RoundingMode.HALF_UP); } for (int iAktuelleKW = iStartKW; iAktuelleKW <= iEndeKW; iAktuelleKW++) { Integer indexDerKW = hmKWIndizes.get(iAktuelleKW); // wird diese Woche auch angezeigt? if (indexDerKW != null) { KapazitaetsvorschauDetailDto detailDto = new KapazitaetsvorschauDetailDto(); detailDto.setArtikelgruppeIId(iArtikelgruppeIId); detailDto.setArtikelIIdTaetigkeit(losAZ.getFlrartikel().getI_id()); detailDto.setBdDauer(bdOffeneStundenJeWoche); detailDto.setLosIId(los.getI_id()); detailDto.setLossollarbeitsplanIId(losAZ.getI_id()); detailDto.setMaschinengruppeIId(iMaschinengruppeIId); kapDto.addDetail(iZeilenIndex, indexDerKW, detailDto); } } } } } // ------------------------------------------------------------------ // ----- // Diagramm aus den Daten erstellen // ------------------------------------------------------------------ // ----- SymbolAxis xAchse = new SymbolAxis("KW", kw); CombinedDomainXYPlot plot = new CombinedDomainXYPlot(xAchse); for (int iZeile = 0; iZeile < kapDto.getDetails().length; iZeile++) { XYSeries datenZeile = new XYSeries(kapDto.getIZeilenueberschrift(iZeile)); // Balkenfarben festlegen ( >100% = rot, sonst hellgrau) // fuer jede zeile und jede spalte Paint[][] paints = new Paint[1][kapDto.getDetails()[iZeile].length]; for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { BigDecimal bdVerfuegbar = kapDto.getBdVerfuegbareStunden()[iZeile][iSpalte]; BigDecimal bdBenoetigt = new BigDecimal(0); // Benoetigte Zeit jet Gruppe je Woche ermitteln for (Iterator<?> iter = kapDto.getDetails()[iZeile][iSpalte].iterator(); iter.hasNext();) { KapazitaetsvorschauDetailDto item = (KapazitaetsvorschauDetailDto) iter.next(); bdBenoetigt = bdBenoetigt.add(item.getBdDauer()); } BigDecimal value = new BigDecimal(0); if (bdVerfuegbar.compareTo(new BigDecimal(0)) > 0) { value = (bdBenoetigt.multiply(new BigDecimal(100))).divide(bdVerfuegbar, 4, BigDecimal.ROUND_HALF_EVEN); if (value.doubleValue() > 100.0) { paints[0][iSpalte] = Color.red; } else { paints[0][iSpalte] = Color.lightGray; } } // tage ohne Verfuegbarkeit mach ich 100% und weisz else { value = new BigDecimal(100.0); // Wochen ohne Kapazitaet aber mit geplanter Zeit if (bdBenoetigt.compareTo(new BigDecimal(0)) > 0) { paints[0][iSpalte] = Color.MAGENTA; } // Wenn nichts verfuegbar aber auch nichts benoetigt -> // weiss else { paints[0][iSpalte] = Color.white; } } XYDataItem data = new XYDataItem(iSpalte, value.doubleValue()); datenZeile.add(data); } // Zur Collection XYSeriesCollection xyDataset = new XYSeriesCollection(); xyDataset.addSeries(datenZeile); // subplot erstellen XYItemRenderer renderer1 = new CustomXYBarRenderer(paints); // renderer1.setItemLabelsVisible(true); // Legende nicht anzeigen renderer1.setBaseSeriesVisibleInLegend(false); NumberAxis zeilenAchse = new NumberAxis(kapDto.getIZeilenueberschrift(iZeile)); // Beschriftung der Y-Achse um 90 grad drehen zeilenAchse.setLabelAngle(Math.PI / 2.0); zeilenAchse.setAutoRange(true); XYPlot subplot1 = new XYPlot(xyDataset, null, zeilenAchse, renderer1); subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); // Markierung bei 100% final Marker target = new ValueMarker(100.0); target.setPaint(Color.darkGray); // target.setLabel("100 %"); // Label // target.setLabelAnchor(RectangleAnchor.TOP_RIGHT); // target.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT); subplot1.addRangeMarker(target); plot.add(subplot1); // plot.add(subplot1, 1); } JFreeChart lStackedBarChart = new JFreeChart(plot); kapDto.setJfcKapazitaetsvorschau(lStackedBarChart); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { if (session != null) { session.close(); } } return kapDto; }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
public boolean istErstlos(LosDto losDto, TheClientDto theClientDto) { if (losDto.getStuecklisteIId() != null) { SessionFactory factory = FLRSessionFactory.getFactory(); org.hibernate.Session 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(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, losDto.getStuecklisteIId())); c.add(Restrictions.lt(FertigungFac.FLR_LOS_C_NR, losDto.getCNr())); c.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, new String[] { FertigungFac.STATUS_STORNIERT, FertigungFac.STATUS_GESTOPPT }))); // Sortierung nach Losnummer c.addOrder(Order.asc(FertigungFac.FLR_LOS_C_NR)); c.setMaxResults(1);//from ww w . jav a 2s . c o m List<?> list = c.list(); if (list.size() > 0) { return false; } else { return true; } } else { return false; } }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
public JasperPrintLP printFertigungsbegleitschein(Integer losIId, Boolean bStammtVonSchnellanlage, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;//from ww w . j a v a2s . co m try { this.useCase = UC_FERTIGUNGSBEGLEITSCHEIN; this.index = -1; // Los holen LosDto losDto = getFertigungFac().losFindByPrimaryKey(losIId); if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ANGELEGT)) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_NOCH_NICHT_AUSGEGEBEN, ""); } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_STORNIERT)) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_STORNIERT, ""); } else if (losDto.getStatusCNr().equals(FertigungFac.STATUS_ERLEDIGT)) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_DAS_LOS_IST_BEREITS_ERLEDIGT, ""); } // Hole Parameter UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT String artikelnrZuUnterdruecken = null; ParametermandantDto parameterNulltaetigkeit = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_ALLGEMEIN, ParameterFac.PARAMETER_UNTERDRUECKE_ARTIKELNR_NULLTAETIGKEIT); if (parameterNulltaetigkeit.getCWert() != null && !parameterNulltaetigkeit.getCWert().equals("") && !parameterNulltaetigkeit.getCWert().equals(" ")) { artikelnrZuUnterdruecken = parameterNulltaetigkeit.getCWert(); } SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLRLossollarbeitsplan.class); if (artikelnrZuUnterdruecken != null) { c.createAlias(FertigungFac.FLR_LOSSOLLARBEITSPLAN_FLRARTIKEL, "a"); c.add(Restrictions.not( Restrictions.and(Restrictions.isNotNull(FertigungFac.FLR_LOSSOLLARBEITSPLAN_MASCHINE_I_ID), Restrictions.eq("a.c_nr", artikelnrZuUnterdruecken)))); } c.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, losIId)); // Sortierung nach Arbeitsgang c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_ARBEITSGANGNUMMER)); c.addOrder(Order.asc(FertigungFac.FLR_LOSSOLLARBEITSPLAN_I_UNTERARBEITSGANG)); List<?> list = c.list(); int iSizeMaterial = 0; ParametermandantDto parameterMaterial = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNGSBEGLEITSCHEIN_MIT_MATERIAL); short iMaterial = Short.parseShort(parameterMaterial.getCWert()); boolean bMitMaterial = Helper.short2boolean(iMaterial); if (bMitMaterial) { // Hier Material einfuegen Object[][] material = getDataAusgabeListe(new Integer[] { losIId }, Helper.SORTIERUNG_NACH_IDENT, true, false, null, theClientDto); if (material == null) { iSizeMaterial = 0; } else { iSizeMaterial = material.length; } data = new Object[list.size() + material.length][BEGL_SPALTENANZAHL]; for (int i = 0; i < iSizeMaterial; i++) { data[i][BEGL_IST_MATERIAL] = new Boolean(true); data[i][BEGL_MATERIAL_ARTIKELKLASSE] = material[i][AUSG_ARTIKELKLASSE]; data[i][BEGL_MATERIAL_AUSGABE] = material[i][AUSG_AUSGABE]; data[i][BEGL_MATERIAL_BEZEICHNUNG] = material[i][AUSG_BEZEICHNUNG]; data[i][BEGL_MATERIAL_EINHEIT] = material[i][AUSG_EINHEIT]; data[i][BEGL_MATERIAL_FARBCODE] = material[i][AUSG_FARBCODE]; data[i][BEGL_MATERIAL_IDENT] = material[i][AUSG_IDENT]; data[i][BEGL_MATERIAL_LAGER] = material[i][AUSG_LAGER]; data[i][BEGL_MATERIAL_LAGERORT] = material[i][AUSG_LAGERORT]; data[i][BEGL_MATERIAL_MENGE] = material[i][AUSG_MENGE]; data[i][BEGL_MATERIAL_MONTAGEART] = material[i][AUSG_MONTAGEART]; data[i][BEGL_MATERIAL_SCHALE] = material[i][AUSG_SCHALE]; data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG] = material[i][AUSG_ZUSATZBEZEICHNUNG]; data[i][BEGL_MATERIAL_ZUSATZBEZEICHNUNG2] = material[i][AUSG_ZUSATZBEZEICHNUNG2]; data[i][BEGL_MATERIAL_HOEHE] = material[i][AUSG_HOEHE]; data[i][BEGL_MATERIAL_BREITE] = material[i][AUSG_BREITE]; data[i][BEGL_MATERIAL_TIEFE] = material[i][AUSG_TIEFE]; data[i][BEGL_MATERIAL_MATERIAL] = material[i][AUSG_MATERIAL]; data[i][BEGL_BAUFORM] = material[i][AUSG_BAUFORM]; data[i][BEGL_VERPACKUNGSART] = material[i][AUSG_VERPACKUNGSART]; data[i][BEGL_GEWICHTKG] = material[i][AUSG_GEWICHTKG]; data[i][BEGL_MATERIAL_REVISION] = material[i][AUSG_REVISION]; data[i][BEGL_MATERIAL_INDEX] = material[i][AUSG_INDEX]; data[i][BEGL_NURZURINFORMATION] = material[i][AUSG_NUR_ZUR_INFO]; } } else { data = new Object[list.size()][BEGL_SPALTENANZAHL]; } int i = 0; for (Iterator<?> iter = list.iterator(); iter.hasNext(); i++) { FLRLossollarbeitsplan item = (FLRLossollarbeitsplan) iter.next(); ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(item.getFlrartikel().getI_id(), theClientDto); data[i + iSizeMaterial][BEGL_IST_MATERIAL] = new Boolean(false); data[i + iSizeMaterial][BEGL_IDENT] = artikelDto.getCNr(); data[i + iSizeMaterial][BEGL_NURZURINFORMATION] = Helper.short2Boolean(artikelDto.getbNurzurinfo()); data[i + iSizeMaterial][BEGL_BEZEICHNUNG] = artikelDto.getArtikelsprDto().getCBez(); data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG] = artikelDto.getArtikelsprDto().getCZbez(); data[i + iSizeMaterial][BEGL_ZUSATZBEZEICHNUNG2] = artikelDto.getArtikelsprDto().getCZbez2(); data[i + iSizeMaterial][BEGL_ARBEITSGANG] = item.getI_arbeitsgangsnummer(); data[i + iSizeMaterial][BEGL_UNTERARBEITSGANG] = item.getI_unterarbeitsgang(); data[i + iSizeMaterial][BEGL_AGART] = item.getAgart_c_nr(); data[i + iSizeMaterial][BEGL_AUFSPANNUNG] = item.getI_aufspannung(); data[i + iSizeMaterial][BEGL_MATERIAL_REVISION] = artikelDto.getCRevision(); data[i + iSizeMaterial][BEGL_MATERIAL_INDEX] = artikelDto.getCIndex(); data[i + iSizeMaterial][BEGL_FERTIG] = Helper.short2Boolean(item.getB_fertig()); // Ein Mandantenparameter entscheidet, ob auch die Sollzeiten // gedruckt werden ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.FERTIGUNG_FERTIGUNGSBEGLEITSCHEIN_MIT_SOLLDATEN); short iValue = Short.parseShort(parameter.getCWert()); boolean bDruckeSolldaten = Helper.short2boolean(iValue); if (bDruckeSolldaten) { data[i + iSizeMaterial][BEGL_RUESTZEIT] = item.getL_ruestzeit() .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN); data[i + iSizeMaterial][BEGL_STUECKZEIT] = item.getL_stueckzeit() .divide(new BigDecimal(1000 * 60), 4, BigDecimal.ROUND_HALF_EVEN); data[i + iSizeMaterial][BEGL_GESAMTZEIT] = item.getN_gesamtzeit(); } LossollarbeitsplanDto l = getFertigungFac().lossollarbeitsplanFindByPrimaryKey(item.getI_id()); StringBuffer sKommentar = new StringBuffer(); if (l.getCKomentar() != null) { sKommentar.append(l.getCKomentar() + "\n"); } if (l.getXText() != null) { sKommentar.append(l.getXText()); } data[i + iSizeMaterial][BEGL_KOMMENTAR] = sKommentar.toString(); // Maschinenzeiterfassung if (l.getMaschineIId() != null) { MaschineDto maschineDto = getZeiterfassungFac().maschineFindByPrimaryKey(l.getMaschineIId()); data[i + iSizeMaterial][BEGL_MASCHINE] = maschineDto.getCIdentifikationsnr(); data[i + iSizeMaterial][BEGL_MASCHINE_BEZEICHNUNG] = maschineDto.getCBez(); } if (l.getLossollmaterialIId() != null) { LossollmaterialDto posDto = getFertigungFac() .lossollmaterialFindByPrimaryKey(l.getLossollmaterialIId()); ArtikelDto artikelDtoFremdmaterial = getArtikelFac() .artikelFindByPrimaryKeySmall(posDto.getArtikelIId(), theClientDto); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKEL] = artikelDtoFremdmaterial.getCNr(); if (artikelDtoFremdmaterial.getArtikelsprDto() != null) { data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELBEZEICHNUNG] = artikelDtoFremdmaterial .getArtikelsprDto().getCBez(); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELKURZBEZEICHNUNG] = artikelDtoFremdmaterial .getArtikelsprDto().getCKbez(); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG] = artikelDtoFremdmaterial .getArtikelsprDto().getCZbez(); data[i + iSizeMaterial][BEGL_FREMDMATERIAL_ARTIKELZUSATZBEZEICHNUNG2] = artikelDtoFremdmaterial .getArtikelsprDto().getCZbez2(); } data[i + iSizeMaterial][BEGL_FREMDMATERIAL_SOLLMENGE] = posDto.getNMenge(); LoslagerentnahmeDto[] laeger = getFertigungFac() .loslagerentnahmeFindByLosIId(posDto.getLosIId()); if (laeger.length > 0) { ArtikellagerplaetzeDto artikellagerplaetzeDto = getLagerFac() .artikellagerplaetzeFindByArtikelIIdLagerIId(artikelDtoFremdmaterial.getIId(), laeger[0].getLagerIId()); if (artikellagerplaetzeDto != null && artikellagerplaetzeDto.getLagerplatzDto() != null) { data[i + iSizeMaterial][BEGL_FREMDMATERIAL_LAGERORT] = artikellagerplaetzeDto .getLagerplatzDto().getCLagerplatz(); } } } } Map<String, Object> mapParameter = new TreeMap<String, Object>(); mapParameter.put("P_ANGELEGT", new java.util.Date(losDto.getTAnlegen().getTime())); String sAuftragsnummer; String sInternerKommentar = null; String sKunde; String sKundeLieferadresse; Timestamp dLiefertermin; String sLieferart; String sAbteilung = null; String sSpediteur = null; Boolean bPoenale = Boolean.FALSE; Boolean bRoHs = Boolean.FALSE; if (losDto.getAuftragIId() != null) { // Auftrag holen AuftragDto auftragDto = getAuftragFac().auftragFindByPrimaryKey(losDto.getAuftragIId()); sAuftragsnummer = auftragDto.getCNr(); sLieferart = getLocaleFac().lieferartFindByIIdLocaleOhneExc(auftragDto.getLieferartIId(), theClientDto.getLocUi(), theClientDto); if (auftragDto.getSpediteurIId() != null) { sSpediteur = getMandantFac().spediteurFindByPrimaryKey(auftragDto.getSpediteurIId()) .getCNamedesspediteurs(); } bPoenale = Helper.short2Boolean(auftragDto.getBPoenale()); bRoHs = Helper.short2Boolean(auftragDto.getBRoHs()); // Internen Kommentar aus dem Auftrag, abhaengig von einem // Mandantenparameter ParametermandantDto parameter = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_KOMMENTAR_AM_FERTIGUNGSBEGLEITSCHEIN); short iValue = Short.parseShort(parameter.getCWert()); boolean bDruckeKommentar = Helper.short2boolean(iValue); if (bDruckeKommentar) { sInternerKommentar = auftragDto.getXInternerkommentar(); } // Kunde holen KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(auftragDto.getKundeIIdAuftragsadresse(), theClientDto); sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1(); KundeDto kundeDtoLieferadresse = getKundeFac() .kundeFindByPrimaryKey(auftragDto.getKundeIIdLieferadresse(), theClientDto); sKundeLieferadresse = kundeDtoLieferadresse.getPartnerDto().getCName1nachnamefirmazeile1(); sAbteilung = kundeDto.getPartnerDto().getCName3vorname2abteilung(); if (losDto.getAuftragpositionIId() != null) { AuftragpositionDto aufposDto = getAuftragpositionFac() .auftragpositionFindByPrimaryKey(losDto.getAuftragpositionIId()); if (aufposDto.getTUebersteuerbarerLiefertermin() != null) { dLiefertermin = aufposDto.getTUebersteuerbarerLiefertermin(); } else { dLiefertermin = auftragDto.getDLiefertermin(); } } else { dLiefertermin = auftragDto.getDLiefertermin(); } } else { sAuftragsnummer = ""; if (losDto.getKundeIId() != null) { KundeDto kundeDto = getKundeFac().kundeFindByPrimaryKey(losDto.getKundeIId(), theClientDto); sKunde = kundeDto.getPartnerDto().getCName1nachnamefirmazeile1(); } else { sKunde = ""; } sKundeLieferadresse = ""; dLiefertermin = null; sLieferart = ""; sSpediteur = ""; } mapParameter.put("P_AUFTRAGNUMMER", sAuftragsnummer); mapParameter.put("P_AUFTRAG_INTERNERKOMMENTAR", sInternerKommentar); mapParameter.put("P_AUFTRAG_KUNDE_ABTEILUNG", sAbteilung); mapParameter.put("P_LIEFERART", sLieferart); mapParameter.put("P_SPEDITEUR", sSpediteur); mapParameter.put("P_POENALE", bPoenale); mapParameter.put("P_ROHS", bRoHs); KostenstelleDto kstDto = getSystemFac().kostenstelleFindByPrimaryKey(losDto.getKostenstelleIId()); mapParameter.put("P_KOSTENSTELLENUMMER", kstDto.getCNr()); mapParameter.put("P_KUNDE", sKunde); mapParameter.put("P_KUNDE_LIEFERADRESSE", sKundeLieferadresse); mapParameter.put("P_LOSGROESSE", losDto.getNLosgroesse()); mapParameter.put("P_LOSKLASSEN", getLosLosKlassenAlsString(losDto.getIId())); mapParameter.put("P_LOSNUMMER", losDto.getCNr()); mapParameter.put("P_PRODUKTIONSBEGINN", losDto.getTProduktionsbeginn()); mapParameter.put("P_PRODUKTIONSENDE", losDto.getTProduktionsende()); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(losDto.getTProduktionsende()); mapParameter.put("P_PRODUKTIONSENDE_KW", new Integer(gc.get(Calendar.WEEK_OF_YEAR))); mapParameter.put("P_LIEFERTERMIN", dLiefertermin); // Fertigungsort if (losDto.getPartnerIIdFertigungsort() != null) { PartnerDto partnerDto = getPartnerFac().partnerFindByPrimaryKey(losDto.getPartnerIIdFertigungsort(), theClientDto); mapParameter.put("P_FERTIGUNGSORT", partnerDto.formatTitelAnrede()); } // Erstlos mapParameter.put("P_ERSTLOS", new Boolean(istErstlos(losDto, theClientDto))); boolean bDruckeUeberschriftMaterial = false; if (bMitMaterial == true && iSizeMaterial > 0) { bDruckeUeberschriftMaterial = true; } mapParameter.put("P_DRUCKEUEBERSCHRIFTMATERIAL", new Boolean(bDruckeUeberschriftMaterial)); ArrayList<Object> images = new ArrayList<Object>(); String sLosStuecklisteArtikelKommentar = ""; // Bild einfuegen String sMengenEinheit = ""; if (losDto.getStuecklisteIId() != null) { StuecklisteDto stuecklisteDto = getStuecklisteFac() .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto); // Einheit if (stuecklisteDto.getArtikelDto() != null) { if (stuecklisteDto.getArtikelDto().getEinheitCNr() != null) { sMengenEinheit = stuecklisteDto.getArtikelDto().getEinheitCNr(); } } // Sperren String sperren = getArtikelFac().getArtikelsperrenText(stuecklisteDto.getArtikelIId()); mapParameter.put("P_STUECKLISTESPERRSTATUS", sperren); // Abmessungen GeometrieDto geometrieDto = stuecklisteDto.getArtikelDto().getGeometrieDto(); if (geometrieDto != null) { mapParameter.put(P_ARTIKEL_BREITE, geometrieDto.getFBreite()); mapParameter.put(P_ARTIKEL_HOEHE, geometrieDto.getFHoehe()); mapParameter.put(P_ARTIKEL_TIEFE, geometrieDto.getFTiefe()); } // Bauform VerpackungDto verpackungDto = stuecklisteDto.getArtikelDto().getVerpackungDto(); if (verpackungDto != null) { mapParameter.put("P_ARTIKEL_BAUFORM", verpackungDto.getCBauform()); mapParameter.put("P_ARTIKEL_VERPACKUNGSART", verpackungDto.getCVerpackungsart()); } mapParameter.put("P_INDEX", stuecklisteDto.getArtikelDto().getCIndex()); mapParameter.put("P_REVISION", stuecklisteDto.getArtikelDto().getCRevision()); ArtikelkommentarDto[] artikelkommentarDto = getArtikelkommentarFac() .artikelkommentardruckFindByArtikelIIdBelegartCNr(stuecklisteDto.getArtikelIId(), LocaleFac.BELEGART_LOS, theClientDto.getLocUiAsString(), theClientDto); if (artikelkommentarDto != null && artikelkommentarDto.length > 0) { for (int j = 0; j < artikelkommentarDto.length; j++) { if (artikelkommentarDto[j].getArtikelkommentarsprDto() != null) { // Text Kommentar if (artikelkommentarDto[j].getDatenformatCNr().trim() .indexOf(MediaFac.DATENFORMAT_MIMETYPEART_TEXT) != -1) { if (sLosStuecklisteArtikelKommentar == "") { sLosStuecklisteArtikelKommentar += artikelkommentarDto[j] .getArtikelkommentarsprDto().getXKommentar(); } else { sLosStuecklisteArtikelKommentar += "\n" + artikelkommentarDto[j].getArtikelkommentarsprDto().getXKommentar(); } } else if (artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_JPEG) || artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_PNG) || artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_GIF)) { byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia(); if (bild != null) { java.awt.Image myImage = Helper.byteArrayToImage(bild); images.add(myImage); } } else if (artikelkommentarDto[j].getDatenformatCNr() .equals(MediaFac.DATENFORMAT_MIMETYPE_IMAGE_TIFF)) { byte[] bild = artikelkommentarDto[j].getArtikelkommentarsprDto().getOMedia(); java.awt.Image[] tiffs = Helper.tiffToImageArray(bild); if (tiffs != null) { for (int k = 0; k < tiffs.length; k++) { images.add(tiffs[k]); } } } } } } } mapParameter.put("P_MENGENEINHEIT", sMengenEinheit); mapParameter.put("P_PROJEKT", losDto.getCProjekt()); mapParameter.put("P_LOSKOMMENTAR", losDto.getCKommentar()); mapParameter.put("P_LOSLANGTEXT", losDto.getXText()); FertigungsgruppeDto fertGruppeDto = getStuecklisteFac() .fertigungsgruppeFindByPrimaryKey(losDto.getFertigungsgruppeIId()); mapParameter.put("P_FERTIGUNGSGRUPPE", fertGruppeDto.getCBez()); // Materialliste? if (losDto.getStuecklisteIId() != null) { StuecklisteDto stkDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto); if (sLosStuecklisteArtikelKommentar != "") { mapParameter.put("P_STUECKLISTEARTIKELKOMMENTAR", Helper.formatStyledTextForJasper(sLosStuecklisteArtikelKommentar)); } mapParameter.put("P_STUECKLISTEBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCBez()); mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCZbez()); mapParameter.put("P_STUECKLISTEZUSATZBEZEICHNUNG2", stkDto.getArtikelDto().getArtikelsprDto().getCZbez2()); mapParameter.put("P_STUECKLISTEKURZBEZEICHNUNG", stkDto.getArtikelDto().getArtikelsprDto().getCKbez()); mapParameter.put("P_STUECKLISTEREFERENZNUMMER", stkDto.getArtikelDto().getCReferenznr()); mapParameter.put("P_STUECKLISTENUMMER", stkDto.getArtikelDto().getCNr()); mapParameter.put("P_STUECKLISTE_GEWICHTKG", stkDto.getArtikelDto().getFGewichtkg()); if (stkDto.getArtikelDto().getVerpackungDto() != null) { mapParameter.put("P_STUECKLISTE_BAUFORM", stkDto.getArtikelDto().getVerpackungDto().getCBauform()); mapParameter.put("P_STUECKLISTE_VERPACKUNGSART", stkDto.getArtikelDto().getVerpackungDto().getCVerpackungsart()); } if (stkDto.getArtikelDto().getGeometrieDto() != null) { mapParameter.put("P_STUECKLISTE_BREITETEXT", stkDto.getArtikelDto().getGeometrieDto().getCBreitetext()); mapParameter.put("P_STUECKLISTE_BREITE", stkDto.getArtikelDto().getGeometrieDto().getFBreite()); mapParameter.put("P_STUECKLISTE_HOEHE", stkDto.getArtikelDto().getGeometrieDto().getFHoehe()); mapParameter.put("P_STUECKLISTE_TIEFE", stkDto.getArtikelDto().getGeometrieDto().getFTiefe()); } // Stuecklisteneigenschaften StuecklisteeigenschaftDto[] stuecklisteeigenschaftDtos = getStuecklisteFac() .stuecklisteeigenschaftFindByStuecklisteIId(losDto.getStuecklisteIId()); ArrayList<Object[]> al = new ArrayList<Object[]>(); for (int j = 0; j < stuecklisteeigenschaftDtos.length; j++) { StuecklisteeigenschaftDto dto = stuecklisteeigenschaftDtos[j]; Object[] o = new Object[2]; String sStklEigenschaftArt = dto.getStuecklisteeigenschaftartDto().getCBez(); o[0] = sStklEigenschaftArt; o[1] = dto.getCBez(); al.add(o); // Index und Materialplatz auch einzeln an Report uebergeben if (sStklEigenschaftArt.equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_INDEX)) { mapParameter.put(P_STUECKLISTENEIGENSCHAFT_INDEX, dto.getCBez()); } if (sStklEigenschaftArt .equals(StuecklisteReportFac.REPORT_STUECKLISTE_EIGENSCHAFTEN_MATERIALPLATZ)) { mapParameter.put(P_STUECKLISTENEIGENSCHAFT_MATERIALPLATZ, dto.getCBez()); } } if (stuecklisteeigenschaftDtos.length > 0) { String[] fieldnames = new String[] { "F_EIGENSCHAFTART", "F_BEZEICHNUNG" }; Object[][] dataSub = new Object[al.size()][fieldnames.length]; dataSub = (Object[][]) al.toArray(dataSub); mapParameter.put("DATENSUBREPORT", new LPDatenSubreport(dataSub, fieldnames)); } } else { mapParameter.put("P_STUECKLISTEBEZEICHNUNG", losDto.getCProjekt()); mapParameter.put("P_STUECKLISTENUMMER", getTextRespectUISpr("fert.materialliste", theClientDto.getMandant(), theClientDto.getLocUi())); } mapParameter.put("P_SCHNELLANLAGE", bStammtVonSchnellanlage); // Formularnummer anhaengen, wenn vorhanden String report = FertigungReportFac.REPORT_FERTIGUNGSBEGLEITSCHEIN; if (fertGruppeDto.getIFormularnummer() != null) { report = report.replace(".", fertGruppeDto.getIFormularnummer() + "."); } initJRDS(mapParameter, FertigungReportFac.REPORT_MODUL, report, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); JasperPrintLP print = getReportPrint(); Integer cachedReportvariante = theClientDto.getReportvarianteIId(); if (images != null) { for (int k = 0; k < images.size(); k++) { mapParameter = new HashMap<String, Object>(); mapParameter.put("P_BILD", images.get(k)); this.useCase = UC_GANZSEITIGESBILD; this.index = -1; data = new Object[1][1]; data[0][0] = images.get(k); theClientDto.setReportvarianteIId(cachedReportvariante); initJRDS(mapParameter, REPORT_MODUL_ALLGEMEIN, REPORT_GANZSEITIGESBILD, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); print = Helper.addReport2Report(print, getReportPrint().getPrint()); } } return print; } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }