List of usage examples for org.hibernate.criterion Restrictions and
public static LogicalExpression and(Criterion lhs, Criterion rhs)
From source file:com.jubination.model.dao.ClientDAOImpl.java
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) public List<TempClient> readBackupEntityByNumberAndDate(String number, String date) { System.out.println(/* w ww. j av a 2 s . c o m*/ "READ TEMP CLIENT TODAY WITH SAME NUMBER:::::::::::::::::::::::::::::::::::::::::::::::CHECK"); session = getSessionFactory().getCurrentSession(); return session.createCriteria(TempClient.class).add(Restrictions.and(Restrictions.eq("phoneNumber", number), Restrictions.ilike("dateCreation", date, MatchMode.START))).list(); }
From source file:com.jubination.model.dao.ClientDAOImpl.java
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) public Object fetchInnerEntities(String param, String type) { List<Lead> list = null; if (param.equals("Lead")) { if (type.equals("NotificationOn")) { session = getSessionFactory().getCurrentSession(); list = (List<Lead>) session.createCriteria(Lead.class).add(Restrictions.isNotNull("followUpDate")) .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list(); }//ww w.ja v a 2 s . c om if (type.equals("Pending")) { session = getSessionFactory().getCurrentSession(); list = (List<Lead>) session.createCriteria(Lead.class).add(Restrictions.ge("count", 1)) .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list(); } } else if (param.equals("Number")) { session = getSessionFactory().getCurrentSession(); list = (List<Lead>) session.createCriteria(Lead.class).createAlias("client", "c") .add(Restrictions.eq("c.phoneNumber", type)) .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list(); } else if (param.equals("MissedAppointmentStatusToday")) { session = getSessionFactory().getCurrentSession(); list = (List<Lead>) session.createCriteria(Lead.class) .add(Restrictions.and(Restrictions.like("missedAppointmentStatus", type, MatchMode.ANYWHERE), Restrictions.eq("appointmentDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date())))) .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list(); } else if (param.equals("ActiveSourceLeads")) { session = getSessionFactory().getCurrentSession(); list = (List<Lead>) session.createCriteria(Lead.class, "l").createAlias("client", "c") .add(Restrictions.and(Restrictions.ge("l.count", 1), Restrictions.eq("c.source", type))) .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list(); } if (list != null) { for (Lead lead : list) { if (lead != null) { if (lead.getBeneficiaries() != null) { lead.getBeneficiaries().size(); } } } } System.out.println("READ LEAD WITH A STATUS :::::::::::::::::::::::::::::::::::::::::::::::CHECK"); return (T) list; }
From source file:com.jubination.model.dao.ClientDAOImpl.java
@Transactional(propagation = Propagation.REQUIRED, readOnly = true) public List<Object> fetchFreshCallEntity(String fromDate, String toDate) { List list = null;/*from w ww . j a va 2 s.com*/ session = getSessionFactory().getCurrentSession(); Criteria criteria = session.createCriteria(Client.class, "client").add(Restrictions.and( Restrictions.ge("client.dateCreation", fromDate), Restrictions.le("client.dateCreation", toDate))); criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); list = criteria.list(); for (Client c : (List<Client>) list) { c.getLead().size(); for (Lead l : c.getLead()) { l.getCall().size(); } } System.out.println( "IMPORTANT:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" + list.size()); return list; }
From source file:com.jubinationre.model.dao.CallAPIMessageDAOImpl.java
public Object getByProperty(Object entity, String listType) { List<CallAPIMessage> list = new ArrayList<CallAPIMessage>(); switch (listType) { case "Number": String number = (String) entity; try {/* w w w .j a v a2 s .com*/ session = getSessionFactory().openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(CallAPIMessage.class, "call"); criteria.add(Restrictions.eq("CallTo", number)); list = criteria.list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); System.out.println("Error in building CallAPIMessage and its properties at CallAPIDAO " + e); e.printStackTrace(); } break; case "OrderId": Long orderId = (Long) entity; try { session = getSessionFactory().openSession(); session.beginTransaction(); list.add((CallAPIMessage) session.get(CallAPIMessage.class, (Long) orderId)); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); System.out.println("Error in building CallAPIMessage and its properties at CallAPIDAO " + e); e.printStackTrace(); } break; case "Sid": String sid = (String) entity; try { session = getSessionFactory().openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(CallAPIMessage.class, "call"); criteria.add(Restrictions.eq("Sid", sid)); list = criteria.list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); System.out.println("Error in deleting Items and its properties at ItemsDAO " + e); e.printStackTrace(); } break; case "DateCreated": String dateCreated = (String) entity; try { session = getSessionFactory().openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(CallAPIMessage.class, "call"); criteria.add(Restrictions.like("DateCreated", dateCreated, MatchMode.START)); list = criteria.list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); System.out.println("Error in deleting Items and its properties at ItemsDAO " + e); e.printStackTrace(); } break; case "PendingOnDate": String pendingOnDate = (String) entity; try { session = getSessionFactory().openSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(CallAPIMessage.class, "call"); criteria.add(Restrictions.or( Restrictions.and(Restrictions.like("DateCreated", pendingOnDate, MatchMode.START), Restrictions.like("TrackStatus", "did not", MatchMode.ANYWHERE)), Restrictions.and(Restrictions.like("DateCreated", pendingOnDate, MatchMode.START), Restrictions.like("TrackStatus", "Pressed 2", MatchMode.START)), Restrictions.and(Restrictions.like("DateCreated", pendingOnDate, MatchMode.START), Restrictions.like("Status", "failed", MatchMode.START)), Restrictions.and(Restrictions.like("DateCreated", pendingOnDate, MatchMode.START), Restrictions.like("Status", "no-answer", MatchMode.START)))); list = criteria.list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); System.out.println("Error in deleting Items and its properties at ItemsDAO " + e); e.printStackTrace(); } break; default: System.err.println("Not a valid option"); break; } return list; }
From source file:com.klistret.cmdb.utility.hibernate.XPathCriteria.java
License:Open Source License
/** * //w w w. j a va2s . c o m * @param predicate * @return */ protected Criterion getRestriction(Expr predicate, HibernateStep context) { logger.debug("Adding restrictions by predicate to context [{}]", context); switch (predicate.getType()) { case Or: /** * Recursively breaks down the OrExpr by translating on the first * and second operands */ if (((OrExpr) predicate).getOperands().size() != 2) throw new ApplicationException( String.format("OrExpr expression [%s] expects 2 operands", predicate)); return Restrictions.or(getRestriction(((OrExpr) predicate).getOperands().get(0), context), getRestriction(((OrExpr) predicate).getOperands().get(1), context)); case And: /** * Recursively breaks down the AndExpr by translating on the first * and second operands */ if (((AndExpr) predicate).getOperands().size() != 2) throw new ApplicationException( String.format("AndExpr expression [%s] expects 2 operands", predicate)); return Restrictions.and(getRestriction(((AndExpr) predicate).getOperands().get(0), context), getRestriction(((AndExpr) predicate).getOperands().get(1), context)); case Comparison: /** * Find the literal */ LiteralExpr literal = getLiteralOperand(((ComparisonExpr) predicate).getOperands()); /** * Find the relative path making a Hibernate relative path */ RelativePathExpr rpe = getRelativePathOperand(((ComparisonExpr) predicate).getOperands()); HibernateRelativePath hRPath = process(rpe, context); build(hRPath); HibernateStep last = hRPath.getLastHibernateStep(); /** * Property name with alias prefix */ String alias = last.getPrevious() == null ? aliasCache.get(context.getPath()) : aliasCache.get(last.getPrevious().getPath()); String propertyName = alias == null ? last.getName() : String.format("%s.%s", alias, last.getName()); /** * Paths with XML properties (always the last step if present) * return a XPath restriction. */ if (hRPath.hasXML()) { if (!hRPath.isTruncated()) throw new ApplicationException(String.format( "Predicate relative path ending in an XML property [%s] must be truncated", last)); /** * Last Hibernate step of the Hibernate path marks the property * which the restriction acts on. */ StepExpr step = (StepExpr) last.getStep(); /** * A new XPath is created from the last step downwards till the * step prior to the ending step. */ String xpath = null; for (int depth = step.getDepth(); depth < step.getRelativePath().getDepth() - 1; depth++) { Expr expr = step.getRelativePath().getExpr(depth); xpath = xpath == null ? expr.getXPath() : String.format("%s/%s", xpath, expr.getXPath()); } Step ending = (Step) step.getRelativePath().getLastExpr(); /** * A new comparison is generated */ List<Expr> operands = new ArrayList<Expr>(); operands.add(ending); operands.add(literal); xpath = String.format("%s[%s]", xpath, ComparisonExpr.getXPath(((ComparisonExpr) predicate).getOperator(), operands, false)); xpath = String.format("%s%s", context.getBaseExpression().getProlog(), xpath); PathExpression other = new PathExpression(xpath); return new XPathRestriction(propertyName, (Step) other.getRelativePath().getFirstExpr()); } if (((StepExpr) last.getStep()).hasPredicates()) throw new ApplicationException(String.format( "Comparisons against Hibernate properties may not have an underlying step [] with predicates", last.getStep())); logger.debug("Predicate is comparison [{}] against property [{}]", ((ComparisonExpr) predicate).getOperator().name(), propertyName); switch (((ComparisonExpr) predicate).getOperator()) { case ValueEquals: logger.debug("Value: {}", literal.getValue().getJavaValue()); return Restrictions.eq(propertyName, literal.getValue().getJavaValue()); case ValueGreaterThan: logger.debug("Value: {}", literal.getValue().getJavaValue()); return Restrictions.gt(propertyName, literal.getValue().getJavaValue()); case ValueGreaterThanOrEquals: logger.debug("Value: {}", literal.getValue().getJavaValue()); return Restrictions.ge(propertyName, literal.getValue().getJavaValue()); case ValueLessThan: logger.debug("Value: {}", literal.getValue().getJavaValue()); return Restrictions.lt(propertyName, literal.getValue().getJavaValue()); case ValueLessThanOrEquals: logger.debug("Value: {}", literal.getValue().getJavaValue()); return Restrictions.le(propertyName, literal.getValue().getJavaValue()); case ValueNotEquals: logger.debug("Value: {}", literal.getValue().getJavaValue()); return Restrictions.ne(propertyName, literal.getValue().getJavaValue()); case GeneralEquals: /** * If atomic (not a sequence) then the 'in' restriction is not * usable (defaults to 'eq' restriction) since the argument is * an array of objects. */ if (literal.isAtomic()) { logger.debug("Value: {}", literal.getValue().getJavaValue()); return Restrictions.eq(propertyName, literal.getValue().getJavaValue()); } logger.debug("Values: {}", literal.getValues()); Object[] javaValues = new Object[literal.getValues().length]; for (int index = 0; index < literal.getValues().length; index++) javaValues[index] = ((com.klistret.cmdb.utility.saxon.Value) literal.getValues()[index]) .getJavaValue(); return Restrictions.in(propertyName, javaValues); case Matches: if (((ComparisonExpr) predicate).getOperands().size() != 2) throw new ApplicationException( String.format("Matches function [%s] expects 2 operands", predicate)); logger.debug("Value: {}", literal.getValue().getText()); return Restrictions.ilike(propertyName, literal.getValue().getText(), MatchMode.EXACT); case Exists: if (((ComparisonExpr) predicate).getOperands().size() != 1) throw new ApplicationException( String.format("Exists function [%s] expects only 1 operand", predicate)); return Restrictions.isNotNull(propertyName); case Empty: if (((ComparisonExpr) predicate).getOperands().size() != 1) throw new ApplicationException( String.format("Empty function [%s] expects only 1 operand", predicate)); return Restrictions.isNull(propertyName); default: throw new ApplicationException( String.format("Unexpected comparison operator [%s] handling predicates", ((ComparisonExpr) predicate).getOperator())); } default: throw new ApplicationException(String.format("Unexpected expr [%s] type for predicate", predicate)); } }
From source file:com.liferay.portal.workflow.jbpm.dao.CustomSession.java
License:Open Source License
protected void addSearchByUserRolesCriterion(Criteria criteria, Boolean searchByUserRoles, ServiceContext serviceContext) throws SystemException { if (searchByUserRoles == null) { return;/* w w w .j a v a 2s . c o m*/ } Criteria assigneesCriteria = criteria.createCriteria("assignees"); if (!searchByUserRoles) { assigneesCriteria.add(Restrictions.eq("assigneeClassName", User.class.getName())); assigneesCriteria.add(Restrictions.eq("assigneeClassPK", serviceContext.getUserId())); return; } List<Long> roleIds = RoleRetrievalUtil.getRoleIds(serviceContext); List<UserGroupRole> userGroupRoles = UserGroupRoleLocalServiceUtil .getUserGroupRoles(serviceContext.getUserId()); if (userGroupRoles.isEmpty()) { assigneesCriteria.add(Restrictions.eq("assigneeClassName", Role.class.getName())); assigneesCriteria.add(Restrictions.in("assigneeClassPK", roleIds.toArray(new Long[roleIds.size()]))); } else { Junction junction = Restrictions.disjunction(); junction.add(Restrictions.and(Restrictions.eq("assigneeClassName", Role.class.getName()), Restrictions.in("assigneeClassPK", roleIds.toArray(new Long[roleIds.size()])))); for (UserGroupRole userGroupRole : userGroupRoles) { junction.add(Restrictions.and(Restrictions.eq("groupId", userGroupRole.getGroupId()), Restrictions.and(Restrictions.eq("assigneeClassName", Role.class.getName()), Restrictions.eq("assigneeClassPK", userGroupRole.getRoleId())))); } assigneesCriteria.add(junction); } }
From source file:com.lm.lic.manager.hibernate.RequestForLicenseDAO.java
public Integer findNumIsvGoodSales(String isvId, String store, Date startDate, Date endDate) { Integer numSales = 0;//from ww w . j a v a 2 s .c om try { Long lisvid = Long.parseLong(isvId); Criteria criteria = getSession().createCriteria(RequestForLicense.class); Criterion isvIdCrit = Restrictions.eq("isv.id", lisvid); Criterion requestorCrit = Restrictions.eq("requestor", store); LogicalExpression andExp = Restrictions.and(isvIdCrit, requestorCrit); criteria.add(andExp); addDateRangeRestrictions(TIME_REQUESTED, startDate, endDate, criteria); criteria.setProjection(Projections.rowCount()); numSales = (Integer) criteria.list().get(0); } catch (RuntimeException re) { log.error("find by property name failed", re); throw re; } return numSales; }
From source file:com.lp.server.bestellung.ejbfac.BestellungReportFacBean.java
License:Open Source License
/** * Alle offenen Bestellungen fuer einen bestimmten Mandanten drucken. * // w w w. j av a 2 s . c om * @param krit * die Filter- und Sortierkriterien * @param dStichtag * Date * @param bSortierungNachLiefertermin * Boolean * @param artikelklasseIId * Integer * @param artikelgruppeIId * Integer * @param artikelCNrVon * String * @param artikelCNrBis * String * @param projektCBezeichnung * String * @param auftragIId * Integer * @param theClientDto * der aktuelle Benutzer * @throws EJBExceptionLP * Ausnahme * @return JasperPrint der Druck */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printBestellungOffene(ReportJournalKriterienDto krit, Date dStichtag, Boolean bSortierungNachLiefertermin, Integer artikelklasseIId, Integer artikelgruppeIId, String artikelCNrVon, String artikelCNrBis, String projektCBezeichnung, Integer auftragIId, Integer iArt, boolean bNurAngelegte, boolean bNurOffeneMengenAnfuehren, Integer[] projekte, TheClientDto theClientDto) throws EJBExceptionLP { useCase = UC_OFFENE; int iAnzahlZeilen = 0; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = null; // vom Stichtag die Uhrzeit abschneiden dStichtag = Helper.cutDate(dStichtag); // die dem Report uebergeben HashMap<String, Object> parameter = new HashMap<String, Object>(); parameter.put("P_STICHTAG", Helper.formatDatum(dStichtag, theClientDto.getLocUi())); dStichtag = Helper.addiereTageZuDatum(dStichtag, 1); session = factory.openSession(); boolean darfEinkaufspreisSehen = getTheJudgeFac().hatRecht(RechteFac.RECHT_LP_DARF_PREISE_SEHEN_EINKAUF, theClientDto); boolean bProjektklammer = getMandantFac().darfAnwenderAufZusatzfunktionZugreifen( MandantFac.ZUSATZFUNKTION_PROJEKTKLAMMER, theClientDto.getMandant()); // Hiberante Criteria fuer alle Tabellen ausgehend von meiner // Haupttabelle anlegen, // nach denen ich filtern und sortieren kann Criteria crit = session.createCriteria(FLRBestellung.class); // Einschraenkung auf den aktuellen Mandanten crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_MANDANT_C_NR, theClientDto.getMandant())); // Einschraenkung nach Status Offen, Erledigt Collection<String> cStati = new LinkedList<String>(); cStati.add(BestellungFac.BESTELLSTATUS_ANGELEGT); if (bNurAngelegte == false) { cStati.add(BestellungFac.BESTELLSTATUS_OFFEN); cStati.add(BestellungFac.BESTELLSTATUS_BESTAETIGT); cStati.add(BestellungFac.BESTELLSTATUS_ERLEDIGT); } crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGSTATUS_C_NR, cStati)); // Das Belegdatum muss vor dem Stichtag liegen crit.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, dStichtag)); /** * @todo MB->MB hier sollte auch das erledigt-datum ziehen, das gibts * aber in der BS nicht :-( */ crit.add(Restrictions.or(Restrictions.ge(BestellungFac.FLR_BESTELLUNG_T_MANUELLGELIEFERT, dStichtag), Restrictions.isNull(BestellungFac.FLR_BESTELLUNG_T_MANUELLGELIEFERT))); // Das Belegdatum muss vor dem Stichtag liegen crit.add(Restrictions.le(BestellungFac.FLR_BESTELLUNG_T_BELEGDATUM, dStichtag)); // Filter nach Projektbezeichnung if (projektCBezeichnung != null) { crit.add(Restrictions.ilike(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG, "%" + projektCBezeichnung + "%")); } // Projektklammer if (projekte != null && projekte.length > 0) { crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_PROJEKT_I_ID, projekte)); String text = ""; for (int i = 0; i < projekte.length; i++) { try { ProjektDto pDto = getProjektFac().projektFindByPrimaryKey(projekte[i]); text += pDto.getCNr() + ", "; } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } parameter.put("P_PROJEKTE", text); } // Filter nach Auftrag if (auftragIId != null) { crit.add(Restrictions.like(BestellungFac.FLR_BESTELLUNG_AUFTRAG_I_ID, auftragIId)); } // Einschraenkung nach einer bestimmten Kostenstelle if (krit.kostenstelleIId != null) { crit.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_KOSTENSTELLE_I_ID, krit.kostenstelleIId)); } // Einschraenkung nach einem bestimmten Lieferanten if (krit.lieferantIId != null) { crit.add( Restrictions.eq(BestellungFac.FLR_BESTELLUNG_LIEFERANT_I_ID_BESTELLADRESSE, krit.lieferantIId)); } // Filter nach Bestellungsart Collection<String> cArt = null; if (iArt != null) { if (iArt == 1) { // Ohne Rahmenbestellungen cArt = new LinkedList<String>(); cArt.add(BestellungFac.BESTELLUNGART_FREIE_BESTELLUNG_C_NR); cArt.add(BestellungFac.BESTELLUNGART_ABRUFBESTELLUNG_C_NR); cArt.add(BestellungFac.BESTELLUNGART_LEIHBESTELLUNG_C_NR); crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, cArt)); } else if (iArt == 2) { // Nur Rahmenbestellungen cArt = new LinkedList<String>(); cArt.add(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR); crit.add(Restrictions.in(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR, cArt)); } } // Sortierung nach Kostenstelle ist immer die erste Sortierung if (krit.bSortiereNachKostenstelle) { crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRKOSTENSTELLE).addOrder(Order.asc("c_nr")); } // Sortierung nach Kunde, eventuell innerhalb der Kostenstelle if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER) { crit.createCriteria(BestellungFac.FLR_BESTELLUNG_FLRLIEFERANT).createCriteria(LieferantFac.FLR_PARTNER) .addOrder(Order.asc(PartnerFac.FLR_PARTNER_NAME1NACHNAMEFIRMAZEILE1)); } // Sortierung nach Projekt, eventuell innerhalb der Kostenstelle else if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PROJEKT) { if (bProjektklammer == true) { crit.createAlias(BestellungFac.FLR_BESTELLUNG_FLRPROJEKT, "p"); crit.addOrder(Order.asc("p.c_nr")); } else { crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_C_BEZPROJEKTBEZEICHNUNG)); } } // Sortierung nach Bestellungart, eventuell innerhalb der // Kostenstelle // else if (krit.iSortierung == // ReportJournalKriterienDto.KRIT_SORT_NACH_ART) { // crit.addOrder(Order // .asc(BestellungFac.FLR_BESTELLUNG_BESTELLUNGART_C_NR)); // } // Sortierung nach Liefertermin (optional) if (bSortierungNachLiefertermin != null && bSortierungNachLiefertermin.booleanValue()) { crit.addOrder(Order.asc(BestellungFac.FLR_BESTELLUNG_T_LIEFERTERMIN)); } // es wird in jedem Fall nach der Belegnummer sortiert crit.addOrder(Order.asc("c_nr")); List<?> list = crit.list(); Iterator<?> it = list.iterator(); ArrayList<FLRBestellung> bestellung = new ArrayList<FLRBestellung>(); while (it.hasNext()) { FLRBestellung flrbestellung = (FLRBestellung) it.next(); session = factory.openSession(); Criteria crit1 = session.createCriteria(FLRBestellposition.class); Criteria crit1Bestellung = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); // nur Positionen der aktuellen Bestellung. crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id())); // keine erledigten Positionen. crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)); // keine geliferten Positionen. crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_GELIEFERT)); // Der Liefertermin muss vor dem Stichtag liegen crit1.add(Restrictions.or(Restrictions.and( // Wenn der AB-Termin // eingegeben ist, zieht // der Restrictions.isNotNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions .le(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN, dStichtag)), Restrictions.and( // sonst der // uebersteuerte // Liefertermin Restrictions .isNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions.le(BestellpositionFac.FLR_BESTELLPOSITION_T_UEBERSTEUERTERLIEFERTERMIN, dStichtag)))); if (artikelklasseIId != null || artikelgruppeIId != null || artikelCNrVon != null || artikelCNrBis != null) { // Wenn nach Artikelklassen/Gruppen gefiltert wird, dann // kommen nur Ident-Positionen crit1.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, BestellpositionFac.BESTELLPOSITIONART_IDENT)); Criteria critArtikel = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL); if (artikelklasseIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE) .add(Restrictions.eq("i_id", artikelklasseIId)); } if (artikelgruppeIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE) .add(Restrictions.eq("i_id", artikelgruppeIId)); } if (artikelCNrVon != null) { critArtikel.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon)); } if (artikelCNrBis != null) { critArtikel.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis)); } } List<?> resultList = crit1.list(); // Wenn die Bestellung anzuzeigende Positionen enthaelt, dann in // die Liste aufnehmen. if (resultList.size() > 0) { bestellung.add(flrbestellung); iAnzahlZeilen++; } for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) { FLRBestellposition item = (FLRBestellposition) iter.next(); if (item.getN_menge() != null) { bestellung.add(null); iAnzahlZeilen++; } } } data = new Object[iAnzahlZeilen][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ANZAHL_SPALTEN]; int i = 0; while (i < iAnzahlZeilen) { FLRBestellung flrbestellung = null; if (bestellung.get(i) != null) { flrbestellung = (FLRBestellung) bestellung.get(i); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGCNR] = flrbestellung.getC_nr(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGARTCNR] = flrbestellung .getBestellungart_c_nr(); if (bProjektklammer && flrbestellung.getProjekt_i_id() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung.getFlrprojekt() .getC_nr(); } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung .getC_bezprojektbezeichnung(); } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERANT] = flrbestellung .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); // PJ 14752 String sortierstring = ""; if (krit.bSortiereNachKostenstelle == true) { sortierstring = Helper.fitString2Length(flrbestellung.getFlrkostenstelle().getC_nr(), 80, ' '); } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { sortierstring += Helper.fitString2Length( flrbestellung.getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(), 80, ' ') + Helper.fitString2Length("", 80, ' '); } if (bSortierungNachLiefertermin == true) { sortierstring += Helper.fitString2Length(flrbestellung.getT_liefertermin() + "", 15, ' '); } data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring; data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGDATUM] = Helper .formatDatum(flrbestellung.getT_belegdatum(), theClientDto.getLocUi()); if (flrbestellung.getFlrkostenstelle() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_KOSTENSTELLECNR] = flrbestellung .getFlrkostenstelle().getC_nr(); } i++; } session = factory.openSession(); Criteria crit1 = session.createCriteria(FLRBestellpositionReport.class); // Keine erledigten Positionen. crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_ERLEDIGT)); crit1.add(Restrictions.ne(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONSTATUS_C_NR, BestellpositionFac.BESTELLPOSITIONSTATUS_GELIEFERT)); // Der Liefertermin muss vor dem Stichtag liegen crit1.add(Restrictions.or(Restrictions.and( // Wenn der AB-Termin // eingegeben ist, zieht // der Restrictions.isNotNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions .le(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN, dStichtag)), Restrictions.and( // sonst der // uebersteuerte // Liefertermin Restrictions .isNull(BestellpositionFac.FLR_BESTELLPOSITION_T_AUFTRAGSBESTAETIGUNGSTERMIN), Restrictions.le(BestellpositionFac.FLR_BESTELLPOSITION_T_UEBERSTEUERTERLIEFERTERMIN, dStichtag)))); // Nur Positionen der aktuellen Bestellung. Criteria crit1Bestellung = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRBESTELLUNG); crit1Bestellung.add(Restrictions.eq(BestellungFac.FLR_BESTELLUNG_I_ID, flrbestellung.getI_id())); if (artikelklasseIId != null || artikelgruppeIId != null || artikelCNrVon != null || artikelCNrBis != null) { // Wenn nach Artikelklassen/Gruppen gefiltert wird, dann // kommen nur Ident-Positionen crit1.add(Restrictions.eq(BestellpositionFac.FLR_BESTELLPOSITION_BESTELLPOSITIONART_C_NR, BestellpositionFac.BESTELLPOSITIONART_IDENT)); Criteria critArtikel = crit1.createCriteria(BestellpositionFac.FLR_BESTELLPOSITION_FLRARTIKEL); if (artikelklasseIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELKLASSE) .add(Restrictions.eq("i_id", artikelklasseIId)); } if (artikelgruppeIId != null) { critArtikel.createCriteria(ArtikelFac.FLR_ARTIKEL_FLRARTIKELGRUPPE) .add(Restrictions.eq("i_id", artikelgruppeIId)); } if (artikelCNrVon != null) { critArtikel.add(Restrictions.ge(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrVon)); } if (artikelCNrBis != null) { critArtikel.add(Restrictions.le(ArtikelFac.FLR_ARTIKEL_C_NR, artikelCNrBis)); } } List<?> resultList = crit1.list(); for (Iterator<?> iter = resultList.iterator(); iter.hasNext();) { FLRBestellpositionReport item = (FLRBestellpositionReport) iter.next(); if (item.getN_menge() != null) { String artikelCNr = null; /** * @todo das ist nicht sehr sauber ... */ if (item.getFlrartikel().getC_nr().startsWith("~")) { artikelCNr = BestellungReportFac.REPORT_VORKALKULATION_ZEICHEN_FUER_HANDEINGABE; } else { artikelCNr = item.getFlrartikel().getC_nr(); } Criteria critWep = session.createCriteria(FLRWareneingangspositionen.class); critWep.createCriteria("flrbestellposition").add(Restrictions.eq("i_id", item.getI_id())); List<?> wepResultList = critWep.list(); Iterator<?> wepResultListIterator = wepResultList.iterator(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGCNR] = flrbestellung.getC_nr(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGARTCNR] = flrbestellung .getBestellungart_c_nr(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_PROJEKT] = flrbestellung .getC_bezprojektbezeichnung(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERANT] = flrbestellung .getFlrlieferant().getFlrpartner().getC_name1nachnamefirmazeile1(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELCNR] = artikelCNr; // SP903 if (item.getPosition_i_id_artikelset() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_POSITION; } else { Session sessionSet = FLRSessionFactory.getFactory().openSession(); sessionSet = factory.openSession(); Criteria critSet = sessionSet.createCriteria(FLRBestellpositionReport.class); critSet.add(Restrictions.eq("position_i_id_artikelset", item.getI_id())); int iZeilen = critSet.list().size(); if (iZeilen > 0) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_SETARTIKEL_TYP] = ArtikelFac.SETARTIKEL_TYP_KOPF; } sessionSet.close(); } // PJ 14752 String sortierstring = ""; if (krit.bSortiereNachKostenstelle == true) { sortierstring = Helper.fitString2Length(flrbestellung.getFlrkostenstelle().getC_nr(), 80, ' '); } if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { sortierstring += Helper .fitString2Length(flrbestellung.getFlrlieferant().getFlrpartner() .getC_name1nachnamefirmazeile1(), 80, ' ') + Helper.fitString2Length(artikelCNr, 80, ' '); } if (bSortierungNachLiefertermin == true) { sortierstring += Helper.fitString2Length(flrbestellung.getT_liefertermin() + "", 15, ' '); } data[i][REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM] = sortierstring; data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELMENGE] = item.getN_menge(); BigDecimal bdOffeneLiefermenge = new BigDecimal(0); if (BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR .equals(flrbestellung.getBestellungart_c_nr())) { try { BestellpositionDto[] abrufPos = getBestellpositionFac() .bestellpositionFindByBestellpositionIIdRahmenposition(item.getI_id(), theClientDto); for (int y = 0; y < abrufPos.length; y++) { bdOffeneLiefermenge = bdOffeneLiefermenge .add(getBestellpositionFac().berechneOffeneMenge(abrufPos[y])); } } catch (RemoteException e) { } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_OFFENELIEFERUNGEN] = bdOffeneLiefermenge; } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_OFFENELIEFERUNGEN] = null; } StringBuffer sbArtikelInfo = new StringBuffer(); if (item.getC_bezeichnung() != null) { sbArtikelInfo.append(item.getC_bezeichnung()); } else { ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKey(item.getFlrartikel().getI_id(), theClientDto); if (artikelDto.getArtikelsprDto() != null) { if (artikelDto.getArtikelsprDto().getCBez() != null) { sbArtikelInfo.append(artikelDto.getArtikelsprDto().getCBez()); } } } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELBEZ] = sbArtikelInfo.toString(); // der Preis wird in Mandantenwaehrung angezeigt, es // gilt der hinterlegte Wechselkurs BigDecimal bdPreisinmandantenwaehrung = item.getN_nettogesamtpreis(); BigDecimal wechselkursmandantwaehrungzuauftragswaehrung = null; if (!flrbestellung.getWaehrung_c_nr_bestellwaehrung() .equals(theClientDto.getSMandantenwaehrung())) { wechselkursmandantwaehrungzuauftragswaehrung = new BigDecimal( flrbestellung.getF_wechselkursmandantwaehrungbestellungswaehrung().doubleValue()); bdPreisinmandantenwaehrung = getBetragMalWechselkurs(bdPreisinmandantenwaehrung, Helper.getKehrwert(wechselkursmandantwaehrungzuauftragswaehrung)); } if (darfEinkaufspreisSehen) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELPREIS] = bdPreisinmandantenwaehrung; } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELPREIS] = null; } if (item.getEinheit_c_nr() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELEINHEIT] = item .getEinheit_c_nr().trim(); } if (item.getT_auftragsbestaetigungstermin() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABTERMIN] = Helper .formatDatum(item.getT_auftragsbestaetigungstermin(), theClientDto.getLocUi()); } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABNUMMER] = item.getC_abnummer(); data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ABKOMMENTAR] = item.getC_abkommentar(); if (item.getT_uebersteuerterliefertermin() != null) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERTERMIN] = Helper .formatDatum(item.getT_uebersteuerterliefertermin(), theClientDto.getLocUi()); } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_BESTELLUNGLIEFERTERMIN] = Helper .formatDatum(item.getFlrbestellung().getT_liefertermin(), theClientDto.getLocUi()); } BigDecimal noffeneMenge = item.getN_menge(); BigDecimal ngeliferteMenge = new BigDecimal(0); if (flrbestellung.getBestellungart_c_nr() .equals(BestellungFac.BESTELLUNGART_RAHMENBESTELLUNG_C_NR)) { noffeneMenge = item.getN_offenemenge(); while (wepResultListIterator.hasNext()) { FLRWareneingangspositionen waren = (FLRWareneingangspositionen) wepResultListIterator .next(); ngeliferteMenge = ngeliferteMenge.add(waren.getN_geliefertemenge()); } } else { while (wepResultListIterator.hasNext()) { FLRWareneingangspositionen waren = (FLRWareneingangspositionen) wepResultListIterator .next(); noffeneMenge = noffeneMenge.subtract(waren.getN_geliefertemenge()); } } data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELGELIFERTEMENGE] = ngeliferteMenge; data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEMENGE] = noffeneMenge; if (darfEinkaufspreisSehen) { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEWERT] = noffeneMenge .multiply(bdPreisinmandantenwaehrung); } else { data[i][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEWERT] = null; } i++; } } } closeSession(session); // PJ 15254 if (bNurOffeneMengenAnfuehren) { ArrayList alTemp = new ArrayList(); for (int k = 0; k < data.length; k++) { BigDecimal bdOffeneMenge = (BigDecimal) data[k][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ARTIKELOFFENEMENGE]; if (bdOffeneMenge != null && bdOffeneMenge.doubleValue() > 0) { alTemp.add(data[k]); } } Object[][] returnArray = new Object[alTemp .size()][BestellungReportFac.REPORT_BESTELLUNG_OFFENE_ANZAHL_SPALTEN]; data = (Object[][]) alTemp.toArray(returnArray); } // PJ 14752 Manuell nachsortieren (in Besprechung mit AD+WH besprochen) if (krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_IDENT) { for (int k = data.length - 1; k > 0; --k) { for (int j = 0; j < k; ++j) { Object[] o = data[j]; Object[] o1 = data[j + 1]; String s = (String) o[REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM]; String s1 = (String) o1[REPORT_BESTELLUNG_OFFENE_SORTIERKRITERIUM]; if (s.toUpperCase().compareTo(s1.toUpperCase()) > 0) { data[j] = o1; data[j + 1] = o; } } } } parameter.put(LPReport.P_SORTIERUNG, buildSortierungBestellungOffene(krit, theClientDto)); parameter.put(LPReport.P_FILTER, buildFilterBestellungOffene(krit, artikelklasseIId, artikelgruppeIId, artikelCNrVon, artikelCNrBis, projektCBezeichnung, theClientDto)); parameter.put(LPReport.P_SORTIERENACHLIEFERANT, new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_PARTNER)); parameter.put("P_SORTIERENACHBESTELLUNGART", new Boolean(krit.iSortierung == ReportJournalKriterienDto.KRIT_SORT_NACH_ART)); parameter.put("P_TITLE", getTextRespectUISpr("bes.print.offene", theClientDto.getMandant(), theClientDto.getLocUi())); parameter.put(P_MANDANTWAEHRUNG, theClientDto.getSMandantenwaehrung()); initJRDS(parameter, BestellungReportFac.REPORT_MODUL, BestellungReportFac.REPORT_BESTELLUNG_JOURNAL_OFFENE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); }
From source file:com.lp.server.fertigung.ejbfac.FertigungReportFacBean.java
License:Open Source License
public JasperPrintLP printFertigungsbegleitschein(Integer losIId, Boolean bStammtVonSchnellanlage, TheClientDto theClientDto) throws EJBExceptionLP { Session session = null;/*from w ww .j a v a 2s. 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); } }
From source file:com.lp.server.finanz.ejbfac.FibuExportFacBean.java
License:Open Source License
@TransactionAttribute(TransactionAttributeType.NEVER) private List<BuchungsjournalExportDatevBuchung> getBuchungen(Date von, Date bis, boolean mitAutoEB, boolean mitManEB, boolean mitAutoB, TheClientDto theClientDto) throws RemoteException, EJBExceptionLP { String mandant = theClientDto.getMandant(); ParametermandantDto pMitlaufendesKonto = getParameterFac().getMandantparameter(mandant, ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_MITLAUFENDES_KONTO); String durchlaufKonto = pMitlaufendesKonto.getCWert(); ParametermandantDto pKontoklassenOhneUst = getParameterFac().getMandantparameter(mandant, ParameterFac.KATEGORIE_FINANZ, ParameterFac.PARAMETER_EXPORT_DATEV_KONTOKLASSEN_OHNE_BU_SCHLUESSEL); List<String> kontoklassenOhneUst = Arrays.asList(pKontoklassenOhneUst.getCWert().split(",")); FinanzamtDto[] finanzaemter = getFinanzFac().finanzamtFindAll(theClientDto); List<Integer> mitlaufendeKonten = new ArrayList<Integer>(); Map<Integer, Integer> mwstKonten = new HashMap<Integer, Integer>(); for (FinanzamtDto amt : finanzaemter) { SteuerkategorieDto[] stkDtos = getFinanzServiceFac() .steuerkategorieFindByFinanzamtIId(amt.getPartnerIId(), theClientDto); for (SteuerkategorieDto stkat : stkDtos) { if (stkat.getKontoIIdForderungen() != null) mitlaufendeKonten.add(stkat.getKontoIIdForderungen()); if (stkat.getKontoIIdVerbindlichkeiten() != null) mitlaufendeKonten.add(stkat.getKontoIIdVerbindlichkeiten()); SteuerkategoriekontoDto[] stkks = getFinanzServiceFac().steuerkategoriekontoFindAll(stkat.getIId()); for (SteuerkategoriekontoDto stkk : stkks) { if (mwstKonten.containsKey(stkk.getKontoIIdEk())) mwstKonten.put(stkk.getKontoIIdEk(), null); else mwstKonten.put(stkk.getKontoIIdEk(), stkk.getMwstsatzbezIId()); if (mwstKonten.containsKey(stkk.getKontoIIdVk())) mwstKonten.put(stkk.getKontoIIdVk(), null); else mwstKonten.put(stkk.getKontoIIdVk(), stkk.getMwstsatzbezIId()); if (mwstKonten.containsKey(stkk.getKontoIIdEinfuhrUst())) mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), null); else mwstKonten.put(stkk.getKontoIIdEinfuhrUst(), stkk.getMwstsatzbezIId()); //gibt es fuer ein Konto mehrere zugewiesene MwstSaetze, null in die Map schreiben //so weiss man, dass das Konto entweder nur einen MwstSatz haben kann oder aber //wenn vorhanden in der Map aber null, dann MwstSatz berechnen. }// w w w. j a v a2 s . c o m } } List<BuchungsjournalExportDatevBuchung> buchungen = new ArrayList<BuchungsjournalExportDatevBuchung>(); Session session = FLRSessionFactory.getFactory().openSession(); Criteria c = session.createCriteria(FLRFinanzBuchung.class); c.createAlias("flrkostenstelle", "ks"); if (!mitAutoB) c.add(Restrictions.like("b_autombuchung", 0)); if (!mitAutoEB) c.add(Restrictions.like("b_autombuchungeb", 0)); if (!mitManEB) c.add(Restrictions.not(Restrictions.like("buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG))); c.add(Restrictions.ge("d_buchungsdatum", von)).add(Restrictions.le("d_buchungsdatum", bis)) .add(Restrictions.like("ks.mandant_c_nr", mandant)).addOrder(Order.asc("d_buchungsdatum")) .addOrder(Order.asc("c_belegnummer")); Iterator<?> iter = c.list().iterator(); while (iter.hasNext()) { FLRFinanzBuchung hvBuchung = (FLRFinanzBuchung) iter.next(); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> haben = session.createCriteria(FLRFinanzBuchungDetail.class) .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id())) .add(Restrictions.or( Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung), Restrictions.gt("n_betrag", BigDecimal.ZERO)), Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung), Restrictions.lt("n_betrag", BigDecimal.ZERO)))) .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG), Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten)))) .addOrder(Order.asc("i_id")).list(); @SuppressWarnings("unchecked") List<FLRFinanzBuchungDetail> soll = session.createCriteria(FLRFinanzBuchungDetail.class) .createAlias("flrbuchung", "b").add(Restrictions.eq("buchung_i_id", hvBuchung.getI_id())) .add(Restrictions.or( Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.SollBuchung), Restrictions.gt("n_betrag", BigDecimal.ZERO)), Restrictions.and(Restrictions.like("buchungdetailart_c_nr", BuchenFac.HabenBuchung), Restrictions.lt("n_betrag", BigDecimal.ZERO)))) .add(Restrictions.or(Restrictions.eq("b.buchungsart_c_nr", FinanzFac.BUCHUNGSART_EROEFFNUNG), Restrictions.not(Restrictions.in("konto_i_id", mitlaufendeKonten)))) .addOrder(Order.asc("i_id")).list(); String gegenkontoCNr; FLRFinanzKonto flrGegenkonto = null; List<FLRFinanzBuchungDetail> zuBuchen; String uid = null; boolean buSchluesselErlaubt = true; boolean buSchluesselGanzeBuchung = true; if (soll.size() == 1) { flrGegenkonto = soll.get(0).getFlrkonto(); gegenkontoCNr = flrGegenkonto.getC_nr(); uid = getUIDZuKonto(flrGegenkonto, theClientDto); zuBuchen = haben; } else if (haben.size() == 1) { gegenkontoCNr = haben.get(0).getFlrkonto().getC_nr(); flrGegenkonto = soll.get(0).getFlrkonto(); uid = getUIDZuKonto(flrGegenkonto, theClientDto); zuBuchen = soll; } else { zuBuchen = soll; zuBuchen.addAll(haben); gegenkontoCNr = durchlaufKonto; } if (flrGegenkonto != null && flrGegenkonto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) { for (String klassen : kontoklassenOhneUst) { if (!klassen.isEmpty() && flrGegenkonto.getC_nr().startsWith(klassen)) { buSchluesselGanzeBuchung = false; break; } } } // zuBuchen = getBuchungenKorrekteUst(zuBuchen, mwstKonten); for (int i = 0; i < zuBuchen.size(); i++) { FLRFinanzBuchungDetail b = zuBuchen.get(i); FLRFinanzKonto konto = b.getFlrkonto(); buSchluesselErlaubt = true; if (konto.getKontotyp_c_nr().equals(FinanzServiceFac.KONTOTYP_SACHKONTO)) { for (String klassen : kontoklassenOhneUst) { if (!klassen.isEmpty() && konto.getC_nr().startsWith(klassen)) { buSchluesselErlaubt = false; break; } } } Integer fibuCode = 0; BigDecimal umsatz = null; if (mwstKonten.containsKey(b.getKonto_i_id())) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_KONTIERUNG_ZUGEORDNET, "Fehler! keine Mwst-Buchung erwartet!", (hvBuchung.getFlrfbbelegart() == null ? hvBuchung.getC_text() : hvBuchung.getFlrfbbelegart().getC_nr()) + " " + hvBuchung.getC_belegnummer()); // System.out.println("Fehler! keine Mwst-Buchung erwartet! " + hvBuchung.getC_belegnummer() + ", id = " + hvBuchung.getI_id()); // break; } else { if (zuBuchen.size() > i + 1) { FLRFinanzBuchungDetail mwstBuchung = zuBuchen.get(i + 1); if (mwstKonten.containsKey(mwstBuchung.getKonto_i_id())) { Integer mwstIId = mwstKonten.get(mwstBuchung.getKonto_i_id()); MwstsatzDto mwstDto; if (mwstIId != null) { mwstDto = getMandantFac().mwstsatzFindZuDatum(mwstIId, new Timestamp(hvBuchung.getD_buchungsdatum().getTime())); } else { mwstDto = getMandantFac().getMwstSatzVonBruttoBetragUndUst(mandant, new Timestamp(hvBuchung.getD_buchungsdatum().getTime()), b.getN_betrag(), mwstBuchung.getN_betrag()); } fibuCode = mwstDto.getIFibumwstcode(); if (fibuCode == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FINANZ_EXPORT_KEIN_MWSTCODE, "", mwstDto.getMwstsatzbezDto().getCBezeichnung()); } umsatz = b.getN_betrag().add(mwstBuchung.getN_betrag()).abs(); i++; } } } BuchungsjournalExportDatevBuchung datevBuchung = new BuchungsjournalExportDatevBuchung(); datevBuchung.setUmsatz(umsatz == null ? b.getN_betrag().abs() : umsatz); boolean negativ = b.getN_betrag().signum() < 0; datevBuchung.setSoll(negativ != b.getBuchungdetailart_c_nr().equals(BuchenFac.SollBuchung)); //XOR datevBuchung.setKonto(b.getFlrkonto().getC_nr()); datevBuchung.setGegenkonto(gegenkontoCNr); if (hvBuchung.getT_storniert() != null) { fibuCode += 20; } if (buSchluesselErlaubt && buSchluesselGanzeBuchung) datevBuchung.setBuSchluessel(fibuCode == 0 ? "" : fibuCode.toString()); datevBuchung.setBelegdatum(hvBuchung.getD_buchungsdatum()); datevBuchung.setBeleg(hvBuchung.getC_belegnummer()); datevBuchung.setBuchungstext(hvBuchung.getC_text()); datevBuchung.setUid(uid == null ? getUIDZuKonto(b.getFlrkonto(), theClientDto) : uid); buchungen.add(datevBuchung); } } return buchungen; }