List of usage examples for org.hibernate.criterion Restrictions in
public static Criterion in(String propertyName, Collection values)
From source file:com.lp.server.bestellung.ejbfac.BSMahnwesenFacBean.java
License:Open Source License
/** * erstellt Liefermahnungen, ABMahnungen oder beides ruft dazu die Methoden * echteLiefermahnungen() und (oder) echteABMahnungen() auf * ------------------/*from ww w . j a v a 2 s . com*/ * ---------------------------------------------------------- * * @param echteLiefermahnung * boolean * @param echteABMahnungen * boolean * @param theClientDto * String * @throws EJBExceptionLP * @return Integer * ---------------------------------------------------------- * ----------------- */ @TransactionAttribute(TransactionAttributeType.NEVER) private Integer createMahnungen(boolean echteLiefermahnung, boolean echteABMahnungen, boolean liefererinnerung, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null; try { // Mahnstufen des Mandanten holen BSMahnstufeDto bsmahnstufeDto[] = this.bsmahnstufeFindByMandantCNr(theClientDto.getMandant(), theClientDto); if (bsmahnstufeDto == null || bsmahnstufeDto.length == 0) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_KEINE_MAHNSTUFEN_EINGETRAGEN, ""); } // mahnlaufIId generieren wird fuer Liefermahnung und ABMahnung // gebraucht Integer bsmahnlaufIId = null; BSMahnlaufDto bsmahnlaufDto = null; bsmahnlaufIId = context.getBusinessObject(BSMahnwesenFac.class).createBSMahnlauf(bsmahnlaufDto, theClientDto); SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria crit = session.createCriteria(FLRBestellpositionReport.class); // folgende Positionsarten werden ignoriert. Collection<String> cPositionsarten = new LinkedList<String>(); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_BETRIFFT); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_SEITENUMBRUCH); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_LEERZEILE); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTBAUSTEIN); cPositionsarten.add(BestellpositionFac.BESTELLPOSITIONART_TEXTEINGABE); crit.add(Restrictions.not(Restrictions .in(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, cPositionsarten))); // PJ 16536 String queryString = "SELECT artgru_i_id FROM FLRMahngruppe m" + " WHERE m.flrartikelgruppe.mandant_c_nr ='" + theClientDto.getMandant() + "'"; Session session2 = FLRSessionFactory.getFactory().openSession(); org.hibernate.Query query = session2.createQuery(queryString); List<?> results = query.list(); Iterator<?> resultListIterator = results.iterator(); Integer[] ids = new Integer[results.size()]; int row = 0; while (resultListIterator.hasNext()) { Integer artgruIId = (Integer) resultListIterator.next(); ids[row] = artgruIId; row++; } session2.close(); if (ids.length > 0) { crit.createAlias("flrartikel", "a"); crit.createAlias("a.flrartikelgruppe", "ag"); crit.add(Restrictions.in("ag.i_id", ids)); } Criteria critBestellung = crit.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); // nach mandanten filtern critBestellung .add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // PJ 15165 critBestellung.add(Restrictions.or(Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS), Restrictions.lt(BestellungFac.FLR_BESTELLUNG_T_MAHNSPERREBIS, Helper.cutTimestamp(new Timestamp(System.currentTimeMillis()))))); // nach Stati filtern Collection<String> cStati = new LinkedList<String>(); cStati.add(BestellungFac.BESTELLSTATUS_OFFEN); cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT); // SK added BESTELLSTATUS_TEILERLEDIGT cStati.add(BestellungFac.BESTELLSTATUS_TEILERLEDIGT); critBestellung.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)); List<?> list = crit.list(); for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLRBestellpositionReport flrbespos = (FLRBestellpositionReport) iter.next(); /** * nur Liefermahnungen deren Status bestaetigt ist oder deren * Liefertermin vor heute ist */ if (echteLiefermahnung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { Integer latest = 0; for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > latest) { latest = bsmahnungdto[y].getMahnstufeIId(); } } for (int i = 0; i < bsmahnstufeDto.length; i++) { if (latest.equals(bsmahnstufeDto[i].getIId())) { echteLiefermahnungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } else { echteLiefermahnungen(flrbespos, bsmahnlaufIId, null, theClientDto); } } // lt. WH boolean bEchteLiefermahnungVorhanden = false; BSMahnungDto[] bsmahnungdto = getBSMahnwesenFac() .bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() > 0) { bEchteLiefermahnungVorhanden = true; } } } if (bEchteLiefermahnungVorhanden == false) { /** * nur ABMahnungen deren Status offen ist ausser der * Liefertermin ist vor heute dann ist es eine Liefermahnung */ if (echteABMahnungen == true) { // hier wird mahnstufe 0 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId().equals(new Integer(BSMahnwesenFac.MAHNSTUFE_0))) { echteABMahnungen(flrbespos, bsmahnstufeDto[i], bsmahnlaufIId, theClientDto); } } } // lt. WH boolean bABLiefermahnungVorhanden = false; bsmahnungdto = getBSMahnwesenFac().bsmahnungFindByBestellpositionIIdOhneExc(flrbespos.getI_id(), theClientDto); if (bsmahnungdto.length > 0) { for (int y = 0; y < bsmahnungdto.length; y++) { if (bsmahnungdto[y].getMahnstufeIId() == 0) { bABLiefermahnungVorhanden = true; } } } if (bABLiefermahnungVorhanden == false) { // lt. WH Liefererinnerung ist wie echte // Liefermahnung, // jedoch // nur mit Mahnstufe -1 if (liefererinnerung == true && !(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbespos.getFlrbestellung().getBestellungart_c_nr()))) { if (flrbespos.getT_lieferterminbestaetigt() == null) { // hier wird mahnstufe -1 uebergeben for (int i = 0; i < bsmahnstufeDto.length; i++) { if (bsmahnstufeDto[i].getIId() .equals(new Integer(BSMahnwesenFac.MAHNSTUFE_MINUS1))) { liefererinnerungen(flrbespos, bsmahnlaufIId, bsmahnstufeDto[i], theClientDto); } } } } } } } return bsmahnlaufIId; } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
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 www .j av a 2s . com*/ 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;/* www . jav a 2s.c om*/ try { Map<Integer, ZahlungszielDto> mZahlungsziel = getMandantFac() .zahlungszielFindAllByMandantAsDto(theClientDto.getMandant(), theClientDto); session = factory.openSession(); List<Integer> lieferantenIIds = new ArrayList<Integer>(); if (lieferantIId != null) { lieferantenIIds.add(lieferantIId); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { Iterator<?> iter = session.createCriteria(FLRLieferant.class).createAlias("flrpartner", "p") .addOrder(Order.asc("p.c_name1nachnamefirmazeile1")) .add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())) .list().iterator(); while (iter.hasNext()) { lieferantenIIds.add(((FLRLieferant) iter.next()).getI_id()); } } else { lieferantenIIds.add(null); } List<Object[]> dataList = new ArrayList<Object[]>(); for (Integer liefIId : lieferantenIIds) { Criteria crit = session.createCriteria(FLREingangsrechnungReport.class); // Filter nach Mandant crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); Collection<String> cStati = new LinkedList<String>(); cStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); cStati.add(EingangsrechnungFac.STATUS_ANGELEGT); cStati.add(EingangsrechnungFac.STATUS_ERLEDIGT); crit.add(Restrictions.in("status_c_nr", cStati)); if (bZusatzkosten) { crit.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN)); } else { crit.add(Restrictions.not(Restrictions.eq(EingangsrechnungFac.FLR_ER_EINGANGSRECHNUNGART_C_NR, EingangsrechnungFac.EINGANGSRECHNUNGART_ZUSATZKOSTEN))); } if (liefIId != null) { crit.add(Restrictions.eq("lieferant_i_id", liefIId)); } if (bStichtagIstFreigabeDatum) { crit.add(Restrictions.le("t_freigabedatum", dStichtag)); } else { crit.add(Restrictions.le("t_belegdatum", dStichtag)); } crit.add(Restrictions.or(Restrictions.gt("t_bezahltdatum", dStichtag), Restrictions.isNull("t_bezahltdatum"))); crit.add(Restrictions.or(Restrictions.gt("t_manuellerledigt", dStichtag), Restrictions.isNull("t_manuellerledigt"))); if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) { crit.addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { crit.addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) { crit.addOrder(Order.asc("t_faelligkeit")).addOrder(Order.asc("c_nr")); // Inerhalb wird immer nach // Rechnungsnummer sortiert } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) { crit.addOrder(Order.asc("t_faelligkeit_skonto1")).addOrder(Order.asc("c_nr")); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) { crit.addOrder(Order.asc("t_faelligkeit_skonto2")).addOrder(Order.asc("c_nr")); } if (iSort != EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { mitNichtZugeordnetenBelegen = false; } List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); int row = 0; Object[][] tempData = new Object[resultList.size()][OFFENE_ANZAHL_FELDER]; if (mitNichtZugeordnetenBelegen) { LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(liefIId, theClientDto); if (liefDto.getKontoIIdKreditorenkonto() != null) { // TODO: nur FLRFinanzBuchungDetail holen Query query = session.createQuery( "SELECT buchungdetail from FLRFinanzBuchungDetail buchungdetail LEFT OUTER JOIN buchungdetail.flrbuchung AS buchung" + " WHERE" + BuchungDetailQueryBuilder.buildNurOffeneBuchungDetails("buchungdetail") + "AND" + BuchungDetailQueryBuilder.buildNichtZuordenbareVonKonto("buchungdetail", "buchung", liefDto.getKontoIIdKreditorenkonto()) + (dStichtag == null ? "" : ("AND buchung.d_buchungsdatum<='" + Helper.formatDateWithSlashes(dStichtag) + "'"))); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> bdList = query.list(); if (bdList.size() > 0) { if (tempData.length < 1) { tempData = new Object[1][OFFENE_ANZAHL_FELDER]; String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2(); tempData[0][OFFENE_FELD_FIRMA] = sFirma; tempData[0][OFFENE_FELD_KREDITORENNR] = getFinanzFac() .kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto()).getCNr(); } tempData[0][OFFENE_SUBREPORT_OFFENE_BUCHUNGEN] = FinanzSubreportGenerator .createBuchungsdetailSubreport(bdList, false); } } } while (resultListIterator.hasNext()) { FLREingangsrechnungReport er = (FLREingangsrechnungReport) resultListIterator.next(); EingangsrechnungDto erDto = getEingangsrechnungFac() .eingangsrechnungFindByPrimaryKey(er.getI_id()); LieferantDto liefDto = getLieferantFac().lieferantFindByPrimaryKey(erDto.getLieferantIId(), theClientDto); String sErCNr = erDto.getCNr(); String sFirma = liefDto.getPartnerDto().formatFixTitelName1Name2(); ZahlungszielDto zzDto = mZahlungsziel.get(erDto.getZahlungszielIId()); tempData[row][OFFENE_FELD_ER_C_NR] = sErCNr; tempData[row][OFFENE_FELD_FIRMA] = sFirma; tempData[row][OFFENE_FELD_ERDATUM] = er.getT_belegdatum(); tempData[row][OFFENE_FELD_MAHNDATUM] = erDto.getTMahndatum(); tempData[row][OFFENE_FELD_KREDITORENNR] = liefDto.getKontoIIdKreditorenkonto() != null ? getFinanzFac().kontoFindByPrimaryKeySmall(liefDto.getKontoIIdKreditorenkonto()) .getCNr() : null; tempData[row][OFFENE_FELD_MAHNSTUFE] = er.getMahnstufe_i_id(); tempData[row][OFFENE_FELD_FREIGABEDATUM] = er.getT_freigabedatum(); tempData[row][OFFENE_FELD_WERT] = erDto.getNBetrag(); tempData[row][OFFENE_FELD_LIEFERANTENRECHNUNGSNUMMER] = erDto.getCLieferantenrechnungsnummer(); tempData[row][OFFENE_FELD_TEXT] = erDto.getCText(); if (zzDto != null) { tempData[row][OFFENE_FELD_ZAHLUNGSZIEL] = zzDto.getCBez(); tempData[row][OFFENE_FELD_SKONTOTAGE1] = zzDto.getSkontoAnzahlTage1(); tempData[row][OFFENE_FELD_SKONTOTAGE2] = zzDto.getSkontoAnzahlTage2(); tempData[row][OFFENE_FELD_SKONTOPROZENT1] = zzDto.getSkontoProzentsatz1(); tempData[row][OFFENE_FELD_SKONTOPROZENT2] = zzDto.getSkontoProzentsatz2(); tempData[row][OFFENE_FELD_NETTOTAGE] = zzDto.getAnzahlZieltageFuerNetto(); if (erDto.getDFreigabedatum() != null) { if (zzDto.getAnzahlZieltageFuerNetto() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT] = er.getT_faelligkeit(); } if (zzDto.getSkontoAnzahlTage1() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO1] = er.getT_faelligkeit_skonto1(); } if (zzDto.getSkontoAnzahlTage2() != null) { tempData[row][OFFENE_FELD_FAELLIGKEIT_SKONTO2] = er.getT_faelligkeit_skonto2(); } } } // datum der letzten zahlung bis zum stichtag ermitteln EingangsrechnungzahlungDto[] zahlungen = getEingangsrechnungFac() .eingangsrechnungzahlungFindByEingangsrechnungIId(er.getI_id()); java.sql.Date dZahldatum = null; for (int i = 0; i < zahlungen.length; i++) { if ((dZahldatum == null || zahlungen[i].getTZahldatum().after(dZahldatum)) && !zahlungen[i].getTZahldatum().after(dStichtag)) { dZahldatum = new Date(zahlungen[i].getTZahldatum().getTime()); } } tempData[row][OFFENE_FELD_ZAHLDATUM] = dZahldatum; // Zahlungsbetrag bis zum Stichtag ermitteln BigDecimal bdBezahltFw = new BigDecimal(0); BigDecimal bdBezahltKursBelegdatum = new BigDecimal(0); for (int i = 0; i < zahlungen.length; i++) { if (!zahlungen[i].getTZahldatum().after(dStichtag)) { bdBezahltFw = bdBezahltFw.add(zahlungen[i].getNBetragfw()); bdBezahltKursBelegdatum = bdBezahltKursBelegdatum .add(zahlungen[i].getNBetragfw().multiply(erDto.getNKurs())); } } tempData[row][OFFENE_FELD_BETRAG] = getLocaleFac().rechneUmInAndereWaehrungZuDatum(bdBezahltFw, erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), // new Date(System.currentTimeMillis()), dStichtag, theClientDto); tempData[row][OFFENE_FELD_BETRAG_KURS_BELEGDATUM] = bdBezahltKursBelegdatum; tempData[row][OFFENE_FELD_OFFEN] = getLocaleFac().rechneUmInAndereWaehrungZuDatum( erDto.getNBetragfw().subtract(bdBezahltFw), erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), // new Date(System.currentTimeMillis()), dStichtag, theClientDto); tempData[row][OFFENE_FELD_OFFEN_KURS_BELEGDATUM] = erDto.getNBetrag() .subtract(bdBezahltKursBelegdatum); tempData[row][OFFENE_FELD_BETRAG_FW] = bdBezahltFw; tempData[row][OFFENE_FELD_OFFEN_FW] = erDto.getNBetragfw().subtract(bdBezahltFw); tempData[row][OFFENE_FELD_ERWAEHRUNG] = erDto.getWaehrungCNr(); tempData[row][OFFENE_FELD_WERT_FW] = erDto.getNBetragfw(); tempData[row][OFFENE_FELD_ERKURS] = erDto.getNKurs(); WechselkursDto wkDto = getLocaleFac().getKursZuDatum(erDto.getWaehrungCNr(), theClientDto.getSMandantenwaehrung(), dStichtag, theClientDto); tempData[row][OFFENE_FELD_KURS_STICHTAG] = wkDto.getNKurs() .setScale(LocaleFac.ANZAHL_NACHKOMMASTELLEN_WECHSELKURS, RoundingMode.HALF_EVEN); row++; } dataList.addAll(Arrays.asList(tempData)); } data = dataList.toArray(new Object[0][]); Map<String, Object> mapParameter = new TreeMap<String, Object>(); mapParameter.put("P_DATUM", dStichtag); mapParameter.put("P_STICHTAGISTFREIGABEDATUM", new Boolean(bStichtagIstFreigabeDatum)); mapParameter.put("P_ZUSATZKOSTEN", new Boolean(bZusatzkosten)); String sSortierung = null; if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT) { sSortierung = "Lieferant"; } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_RECHNUNGSNUMMER) { sSortierung = "Rechnungsnummer"; } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT) { sSortierung = getTextRespectUISpr("lp.faelligkeit", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO1) { sSortierung = getTextRespectUISpr("er.faelligkeitskonto1", theClientDto.getMandant(), theClientDto.getLocUi()); } else if (iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_FAELLIGKEIT_SKONTO2) { sSortierung = getTextRespectUISpr("er.faelligkeitskonto2", theClientDto.getMandant(), theClientDto.getLocUi()); } mapParameter.put("P_SORTIERUNGNACHLIEFERANT", new Boolean(iSort == EingangsrechnungReportFac.REPORT_OFFENE_SORT_LIEFERANT)); mapParameter.put(LPReport.P_SORTIERUNG, sSortierung); String sZessionstext = null; sZessionstext = getParameterFac().parametermandantFindByPrimaryKey(ParameterFac.PARAMETER_ZESSIONSTEXT, ParameterFac.KATEGORIE_ALLGEMEIN, theClientDto.getMandant()).getCWert(); if (sZessionstext != null) { mapParameter.put("P_ZESSIONSTEXT", sZessionstext); } mapParameter.put("P_MANDANTENWAEHRUNG", theClientDto.getSMandantenwaehrung()); initJRDS(mapParameter, EingangsrechnungReportFac.REPORT_MODUL, EingangsrechnungReportFac.REPORT_EINGANGSRECHNUNG_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { closeSession(session); } }
From source file:com.lp.server.eingangsrechnung.ejbfac.ZahlungsvorschlagFacBean.java
License:Open Source License
public Integer createZahlungsvorschlag(ZahlungsvorschlagkriterienDto krit, TheClientDto theClientDto) throws EJBExceptionLP { Integer iZViid = null;//from w w w .j a v a 2 s. c o m Session session = null; try { SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); Criteria c = session.createCriteria(FLREingangsrechnungReport.class); // Es werden alle offenen ERs dieses Mandanten ausgewertet. // 1. Filter nach Mandant c.add(Restrictions.eq(EingangsrechnungFac.FLR_ER_MANDANT_C_NR, theClientDto.getMandant())); // 2. Filter nach Status Collection<String> collStati = new LinkedList<String>(); collStati.add(EingangsrechnungFac.STATUS_ANGELEGT); collStati.add(EingangsrechnungFac.STATUS_TEILBEZAHLT); c.add(Restrictions.in(EingangsrechnungFac.FLR_ER_STATUS_C_NR, collStati)); // Abfragen List<?> list = c.list(); if (list.size() > 0) { // wenn da welche daherkommen, mach ich einen neuen lauf ZahlungsvorschlaglaufDto zvlaufDto = new ZahlungsvorschlaglaufDto(); zvlaufDto.setBankverbindungIId(krit.getBankvertbindungIId()); zvlaufDto.setBMitskonto(Helper.boolean2Short(krit.isBMitSkonto())); zvlaufDto.setISkontoueberziehungsfristintagen(krit.getISkontoUeberziehungsfristInTagen()); zvlaufDto.setMandantCNr(theClientDto.getMandant()); zvlaufDto.setTNaechsterzahlungslauf(krit.getDNaechsterZahlungslauf()); zvlaufDto.setTZahlungsstichtag(krit.getDZahlungsstichtag()); iZViid = createZahlungsvorschlaglauf(zvlaufDto, theClientDto); // Zahlungsziele cachen final Map<Integer, ZahlungszielDto> mZahlungsziele = (Map<Integer, ZahlungszielDto>) getMandantFac() .zahlungszielFindAllByMandantAsDto(theClientDto.getMandant(), theClientDto); for (Iterator<?> iter = list.iterator(); iter.hasNext();) { FLREingangsrechnungReport e = (FLREingangsrechnungReport) iter.next(); // Offenen Werte ermitteln BigDecimal bdBruttowertFW = e.getN_betragfw(); BigDecimal bdBruttooffenFW = bdBruttowertFW .subtract(getEingangsrechnungFac().getBezahltBetragFw(e.getI_id(), null)); // Wenn noch was offen ist if (bdBruttooffenFW.compareTo(new BigDecimal(0)) > 0) { // Faelligkeitsdatum berechnen // das ist grundsaetzlich Freigabedatum + Zahlungsziel (sofern definiert) java.util.Date dFaellig = e.getT_freigabedatum(); // Netto faellig - ebenfalls plus Zahlungsziel (sofern definiert) java.util.Date dFaelligNetto = e.getT_freigabedatum(); int iZielTage = 0; BigDecimal bdAngewandterSkontoSatz = new BigDecimal(0); if (e.getZahlungsziel_i_id() != null) { ZahlungszielDto zzDto = mZahlungsziele.get(e.getZahlungsziel_i_id()); // mit Skonto zahlen if (krit.isBMitSkonto()) { // Skontoueberziehungstage einrechnen dFaellig = Helper.addiereTageZuDatum(dFaellig, krit.getISkontoUeberziehungsfristInTagen()); boolean bSkontoGehtSichAus = false; // schaun, ob sich der erste Skonto noch ausgeht if (zzDto.getSkontoAnzahlTage1() != null && zzDto.getSkontoProzentsatz1() != null) { // Bei diesem Datum waere mit Skonto1 zu zahlen java.util.Date dFaelligBeiSkonto1 = Helper.addiereTageZuDatum(dFaellig, zzDto.getSkontoAnzahlTage1()); // wenn das spaetestens heute ist -> anwenden if (dFaelligBeiSkonto1.compareTo(Helper.cutDate(getDate())) >= 0) { bSkontoGehtSichAus = true; bdAngewandterSkontoSatz = zzDto.getSkontoProzentsatz1(); iZielTage = zzDto.getSkontoAnzahlTage1(); } } // wenn nicht, dann schaun, ob sich der zweite ausgeht if (!bSkontoGehtSichAus && zzDto.getSkontoAnzahlTage2() != null && zzDto.getSkontoProzentsatz2() != null) { // Bei diesem Datum waere mit Skonto2 zu zahlen java.util.Date dFaelligBeiSkonto2 = Helper.addiereTageZuDatum(dFaellig, zzDto.getSkontoAnzahlTage2()); // wenn das spaetestens heute ist -> anwenden if (dFaelligBeiSkonto2.compareTo(Helper.cutDate(getDate())) >= 0) { bSkontoGehtSichAus = true; bdAngewandterSkontoSatz = zzDto.getSkontoProzentsatz2(); iZielTage = zzDto.getSkontoAnzahlTage2(); } } // wenn auch das nicht gegangen ist, muss sowieso netto gezahlt werden if (!bSkontoGehtSichAus && zzDto.getAnzahlZieltageFuerNetto() != null) { iZielTage = zzDto.getAnzahlZieltageFuerNetto(); } } // nicht mit Skonto zahlen -> nettotage else { if (zzDto.getAnzahlZieltageFuerNetto() != null) { iZielTage = zzDto.getAnzahlZieltageFuerNetto(); } } // Nettofaelligkeitsdatum if (zzDto.getAnzahlZieltageFuerNetto() != null) { dFaelligNetto = Helper.addiereTageZuDatum(dFaelligNetto, zzDto.getAnzahlZieltageFuerNetto()); } } // Zieltage addieren dFaellig = Helper.addiereTageZuDatum(dFaellig, iZielTage); // wenn vor dem naechsten Zahlungslauf faellig, dann speichern if (dFaellig.before(krit.getDNaechsterZahlungslauf())) { // vorher noch den Skontosatz anwenden BigDecimal bdMultiplikator = new BigDecimal(1) .subtract(bdAngewandterSkontoSatz.movePointLeft(2)); bdBruttooffenFW = bdBruttooffenFW.multiply(bdMultiplikator) .setScale(FinanzFac.NACHKOMMASTELLEN, RoundingMode.HALF_UP); // Dto zusammenbauen ZahlungsvorschlagDto zvDto = new ZahlungsvorschlagDto(); zvDto.setBBezahlen(Helper.boolean2Short(true)); zvDto.setEingangsrechnungIId(e.getI_id()); zvDto.setNAngewandterskontosatz(bdAngewandterSkontoSatz); zvDto.setNOffen(bdBruttooffenFW); zvDto.setTFaellig(new java.sql.Date(dFaellig.getTime())); // in sql-date umwandeln zvDto.setZahlungsvorschlaglaufIId(iZViid); // Eintrag speichern createZahlungsvorschlag(zvDto); } } } } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } finally { if (session != null) { session.close(); } } return iZViid; }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) public String gebeMehrereLoseAus(Integer fertigungsgruppeIId, boolean throwExceptionWhenCreate, boolean bAufAktualisierungPruefen, TheClientDto theClientDto) { Session session = FLRSessionFactory.getFactory().openSession(); Criteria crit = session.createCriteria(FLRLosReport.class); String s = null;// w ww . j av a 2 s.co m String[] stati = new String[4]; stati[0] = FertigungFac.STATUS_ANGELEGT; crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati)); crit.add(Restrictions.eq(FertigungFac.FLR_LOSREPORT_FERTIGUNGSGRUPPE_I_ID, fertigungsgruppeIId)); crit.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); byte[] CRLFAscii = { 13, 10 }; List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); boolean bKopfzeileEinfuegen = true; while (resultListIterator.hasNext()) { FLRLosReport flrLos = (FLRLosReport) resultListIterator.next(); if (bAufAktualisierungPruefen) { boolean bGeandert = false; if (flrLos.getStueckliste_i_id() != null) { StuecklisteDto stklDto = getStuecklisteFac() .stuecklisteFindByPrimaryKey(flrLos.getStueckliste_i_id(), theClientDto); // ist der Arbeitsplan der Stueckliste aktueller als der des // Loses? if (flrLos.getT_aktualisierungarbeitszeit() != null && stklDto.getTAendernarbeitsplan().after(flrLos.getT_aktualisierungarbeitszeit())) { bGeandert = true; } if (flrLos.getT_aktualisierungstueckliste() != null && stklDto.getTAendernposition().after(flrLos.getT_aktualisierungstueckliste())) { bGeandert = true; } if (bGeandert == true) { if (bKopfzeileEinfuegen == true) { bKopfzeileEinfuegen = false; s = "<font size='3' face='Monospaced'>"; s += Helper.fitString2Length("Losnummer", 12, '\u00A0'); s += Helper.fitString2Length("Stkl.Nr.", 25, '\u00A0'); s += Helper.fitString2Length("Stkl.Bez.", 40, '\u00A0'); s += Helper.fitString2Length("Anlagedatum", 14, '\u00A0'); s += Helper.fitString2Length("\u00C4nd.Dat.Stkl.", 14, '\u00A0'); s += Helper.fitString2Length("\u00C4nd.Dat.AP", 14, '\u00A0'); s += "<br>"; s += "<br>"; } s += Helper.fitString2Length(flrLos.getC_nr(), 12, '\u00A0'); s += Helper.fitString2Length(stklDto.getArtikelDto().getCNr(), 25, '\u00A0'); if (stklDto.getArtikelDto().getArtikelsprDto() != null) { s += Helper.fitString2Length(stklDto.getArtikelDto().getArtikelsprDto().getCBez(), 40, '\u00A0'); } else { s += Helper.fitString2Length("", 40, '\u00A0'); } s += Helper.fitString2Length( Helper.formatDatum(flrLos.getT_anlegen(), theClientDto.getLocUi()), 14, '\u00A0'); s += Helper.fitString2Length( Helper.formatDatum(stklDto.getTAendernposition(), theClientDto.getLocUi()), 14, '\u00A0'); s += Helper.fitString2Length( Helper.formatDatum(stklDto.getTAendernarbeitsplan(), theClientDto.getLocUi()), 14, '\u00A0'); s += "<br>"; } } } else { try { context.getBusinessObject(FertigungFac.class).gebeLosAus(flrLos.getI_id(), false, throwExceptionWhenCreate, theClientDto, null); } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } } return s; }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
License:Open Source License
@TransactionTimeout(6000) public void perAuftragsnummerLoseAbliefern(Integer auftragIId, TheClientDto theClientDto) { // Alle// ww w. j a v a 2s . c o m try { AuftragpositionDto[] dtos = getAuftragpositionFac().auftragpositionFindByAuftragOffeneMenge(auftragIId); ArrayList<Object> alGehtNicht = new ArrayList<Object>(); for (int i = 0; i < dtos.length; i++) { AuftragpositionDto auftragpositionDto = dtos[i]; if (auftragpositionDto.getArtikelIId() != null) { StuecklisteDto stuecklisteDto = getStuecklisteFac() .stuecklisteFindByMandantCNrArtikelIIdOhneExc(auftragpositionDto.getArtikelIId(), theClientDto); if (stuecklisteDto != null && Helper.short2boolean(stuecklisteDto.getBMaterialbuchungbeiablieferung()) == true) { ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKey(stuecklisteDto.getArtikelIId(), theClientDto); BigDecimal nMengeOffen = auftragpositionDto.getNOffeneMenge(); Session session = FLRSessionFactory.getFactory().openSession(); Criteria crit = session.createCriteria(FLRLosReport.class); String[] stati = new String[2]; stati[0] = FertigungFac.STATUS_IN_PRODUKTION; stati[1] = FertigungFac.STATUS_TEILERLEDIGT; crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati)); crit.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())); crit.add(Restrictions.eq(FertigungFac.FLR_LOS_STUECKLISTE_I_ID, stuecklisteDto.getIId())); crit.addOrder(Order.asc("c_nr")); List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext() && nMengeOffen.doubleValue() > 0) { FLRLosReport flrLos = (FLRLosReport) resultListIterator.next(); BigDecimal bdOffenLos = flrLos.getN_losgroesse() .subtract(getFertigungFac().getErledigteMenge(flrLos.getI_id(), theClientDto)); if (bdOffenLos.doubleValue() > 0) { boolean bErledigt = false; LosablieferungDto losablieferungDto = new LosablieferungDto(); losablieferungDto.setLosIId(flrLos.getI_id()); if (bdOffenLos.doubleValue() >= nMengeOffen.doubleValue()) { losablieferungDto.setNMenge(nMengeOffen); if (bdOffenLos.doubleValue() == nMengeOffen.doubleValue()) { bErledigt = true; } nMengeOffen = new BigDecimal(0); } else { losablieferungDto.setNMenge(bdOffenLos); nMengeOffen = nMengeOffen.subtract(bdOffenLos); bErledigt = true; } // Materialbuchen bucheMaterialAufLos(losFindByPrimaryKey(flrLos.getI_id()), losablieferungDto.getNMenge(), false, false, true, theClientDto, null, false); // Sind sollsatzgroeszen unterschritten? // Sollsatzgroessen pruefen pruefePositionenMitSollsatzgroesseUnterschreitung(flrLos.getI_id(), losablieferungDto.getNMenge(), theClientDto); createLosablieferung(losablieferungDto, theClientDto, bErledigt); } } if (nMengeOffen.doubleValue() > 0) { alGehtNicht.add(artikelDto.formatArtikelbezeichnung() + " " + Helper.formatZahl(nMengeOffen, 4, theClientDto.getLocUi()) + " " + artikelDto.getEinheitCNr()); } } } } if (alGehtNicht.size() > 0) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_ABLIEFERN_PER_AUFTRAGSNUMMER_NICHT_MOEGLICH, alGehtNicht, new Exception("Zuwenig offene Lose")); } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
License:Open Source License
public BigDecimal getAnzahlInFertigung(Integer artikelIId, TheClientDto theClientDto) { BigDecimal anzahl = new BigDecimal(0); Session session = null;//from w w w . j a v a 2s. co m StuecklisteDto stuecklisteDto = getStuecklisteFac().stuecklisteFindByMandantCNrArtikelIIdOhneExc(artikelIId, theClientDto); if (stuecklisteDto != null) { // -------------------------------------------------------------- // --------- session = FLRSessionFactory.getFactory().openSession(); Criteria crit = session.createCriteria(FLRLos.class); String[] stati = new String[5]; stati[0] = FertigungFac.STATUS_ANGELEGT; stati[1] = FertigungFac.STATUS_IN_PRODUKTION; stati[2] = FertigungFac.STATUS_AUSGEGEBEN; stati[3] = FertigungFac.STATUS_TEILERLEDIGT; stati[4] = FertigungFac.STATUS_GESTOPPT; crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati)); crit.add( Restrictions.eq(FertigungFac.FLR_INTERNE_BESTELLUNG_STUECKLISTE_I_ID, stuecklisteDto.getIId())); List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext()) { FLRLos flrLos = (FLRLos) resultListIterator.next(); if (flrLos.getStatus_c_nr().equals(FertigungFac.STATUS_TEILERLEDIGT)) { // Erledigte Menge bestimmen. BigDecimal bdErledigt = getErledigteMenge(flrLos.getI_id(), theClientDto); // Wenn noch was offen ist (es koennte auch // Ueberlieferungen geben). if (flrLos.getN_losgroesse().compareTo(bdErledigt) > 0) { anzahl = anzahl.add(flrLos.getN_losgroesse().subtract(bdErledigt)); } } else { anzahl = anzahl.add(flrLos.getN_losgroesse()); } } } return anzahl; }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
License:Open Source License
public ArrayList<LosDto> getLoseInFertigung(Integer artikelIId, TheClientDto theClientDto) { Session session = null;//from w w w . ja v a 2 s . com ArrayList<LosDto> lose = new ArrayList<LosDto>(); try { StuecklisteDto stuecklisteDto = getStuecklisteFac() .stuecklisteFindByMandantCNrArtikelIIdOhneExc(artikelIId, theClientDto); if (stuecklisteDto != null) { // -------------------------------------------------------------- // --------- session = FLRSessionFactory.getFactory().openSession(); Criteria crit = session.createCriteria(FLRLos.class); String[] stati = new String[4]; stati[0] = FertigungFac.STATUS_ANGELEGT; stati[1] = FertigungFac.STATUS_IN_PRODUKTION; stati[2] = FertigungFac.STATUS_AUSGEGEBEN; stati[3] = FertigungFac.STATUS_TEILERLEDIGT; crit.add(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, stati)); crit.add(Restrictions.eq(FertigungFac.FLR_INTERNE_BESTELLUNG_STUECKLISTE_I_ID, stuecklisteDto.getIId())); List<?> resultList = crit.list(); Iterator<?> resultListIterator = resultList.iterator(); while (resultListIterator.hasNext()) { FLRLos flrLos = (FLRLos) resultListIterator.next(); LosDto losDto = getFertigungFac().losFindByPrimaryKey(flrLos.getI_id()); if (flrLos.getStatus_c_nr().equals(FertigungFac.STATUS_TEILERLEDIGT)) { // Erledigte Menge bestimmen. BigDecimal bdErledigt = getErledigteMenge(flrLos.getI_id(), theClientDto); // Wenn noch was offen ist (es koennte auch // Ueberlieferungen geben). if (flrLos.getN_losgroesse().compareTo(bdErledigt) > 0) { lose.add(losDto); } } else { lose.add(losDto); } } } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { closeSession(session); } return lose; }
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;//from w ww . j a va 2s.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);// ww w . j a v a2s . c om List<?> list = c.list(); if (list.size() > 0) { return false; } else { return true; } } else { return false; } }