List of usage examples for java.math BigDecimal ROUND_HALF_EVEN
int ROUND_HALF_EVEN
To view the source code for java.math BigDecimal ROUND_HALF_EVEN.
Click Source Link
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
public void pruefePositionenMitSollsatzgroesseUnterschreitung(Integer losIId, BigDecimal bdZuErledigendeMenge, TheClientDto theClientDto) throws EJBExceptionLP { // Basis fuer die Sollsatzgroesse sind die bisher erledigte Menge und // die zu erledigende BigDecimal bdKuenftigErledigt = getErledigteMenge(losIId, theClientDto).add(bdZuErledigendeMenge); LosDto losDto = losFindByPrimaryKey(losIId); // es sollte von jeder Position ein prozentueller Anteil ausgegeben sein // der prozentsatz wird durch die kuenftig erl. Menge im Verhaeltnis zur // Losgroesse bestimmt BigDecimal bdFaktor = bdKuenftigErledigt.divide(losDto.getNLosgroesse(), 10, BigDecimal.ROUND_HALF_EVEN); // alle Positionen holen LossollmaterialDto[] sollmat = lossollmaterialFindByLosIId(losIId); LinkedList<LossollmaterialDto> listUnterschritten = new LinkedList<LossollmaterialDto>(); // fuer jede einzelne soll- und istmenge vergleichen for (int i = 0; i < sollmat.length; i++) { // bisher ausgegebene Menge BigDecimal bdAusgegeben = getAusgegebeneMenge(sollmat[i].getIId(), null, theClientDto); // Die soll-ausgabe menge berechnen BigDecimal bdSollAusgabeMenge = Helper.rundeKaufmaennisch(sollmat[i].getNMenge().multiply(bdFaktor), 3); if (bdSollAusgabeMenge.compareTo(bdAusgegeben) > 0) { // Wenn die soll-ausgabe-menge noch nicht erreicht ist, dann zur // Liste hinzufuegen listUnterschritten.add(sollmat[i]); }/*from w w w . j ava2 s .c o m*/ } // und jetzt noch ein Array aus der Liste bauen LossollmaterialDto[] sollmatUnterschritten = new LossollmaterialDto[listUnterschritten.size()]; int i = 0; for (Iterator<?> iter = listUnterschritten.iterator(); iter.hasNext(); i++) { sollmatUnterschritten[i] = (LossollmaterialDto) iter.next(); } if (sollmatUnterschritten.length > 0) { StringBuffer sText = new StringBuffer(getTextRespectUISpr("fert.sollsatzgroesseunterschritten", theClientDto.getMandant(), theClientDto.getLocUi())); String stkl = getTextRespectUISpr("lp.stueckliste", theClientDto.getMandant(), theClientDto.getLocUi()); for (int j = 0; j < sollmatUnterschritten.length; j++) { sText.append("\n"); if (losDto.getStuecklisteIId() != null) { sText.append(stkl); StuecklisteDto stklDto = getStuecklisteFac() .stuecklisteFindByPrimaryKey(losDto.getStuecklisteIId(), theClientDto); sText.append(" " + stklDto.getArtikelDto().getCNr() + ": "); } ArtikelDto artikelDto = getArtikelFac() .artikelFindByPrimaryKey(sollmatUnterschritten[j].getArtikelIId(), theClientDto); sText.append(artikelDto.formatArtikelbezeichnung()); } ArrayList ai = new ArrayList(); ai.add(sText); throw new EJBExceptionLP(EJBExceptionLP.FEHLER_FERTIGUNG_SOLLSATZGROESSE_UNTERSCHRITTEN, ai, new Exception("losIId == null")); } }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
@TransactionAttribute(TransactionAttributeType.NEVER) public KapazitaetsvorschauDto getKapazitaetsvorschau(TheClientDto theClientDto) throws EJBExceptionLP { KapazitaetsvorschauDto kapDto = null; Session session = null;/*w w w . ja va 2 s . c o m*/ try { // ------------------------------------------------------------------ // ----- // Benoetigte Parameter holen // ------------------------------------------------------------------ // ----- // Default Sicht nach Wochen // final int iSicht = FertigungFac.KAPAZITAETSVORSCHAU_NACH_WOCHEN; // Anzahl der angezeigten Vatergruppen. Alles andere wird nach // "Sonstige" verdichtet final ParametermandantDto parameterAnzahlGruppen = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ANZAHL_GRUPPEN); final int iParamAnzahlGruppen = (Integer) parameterAnzahlGruppen.getCWertAsObject(); // Angezeigter Zeitraum = Anzahl der Spalten final ParametermandantDto parameterZeitraum = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_FERTIGUNG, ParameterFac.PARAMETER_FERTIGUNG_KAPAZITAETSVORSCHAU_ZEITRAUM); final int iParamZeitraum = (Integer) parameterZeitraum.getCWertAsObject(); // ------------------------------------------------------------------ // ----- // Hibernate-Session erstellen // ------------------------------------------------------------------ // ----- SessionFactory factory = FLRSessionFactory.getFactory(); session = factory.openSession(); // ------------------------------------------------------------------ // ----- // Artikel- / Maschinen-Vatergruppen holen // ------------------------------------------------------------------ // ----- // Alle Artikel-Vatergruppen Criteria cArtikelVatergruppen = session.createCriteria(FLRArtikelgruppe.class); cArtikelVatergruppen.add(Restrictions.isNull(ArtikelFac.FLR_ARTIKELGRUPPE_FLRARTIKELGRUPPE)); List<?> listArtikelgruppen = cArtikelVatergruppen.list(); // Alle Maschinen-Vatergruppen Criteria cMaschinengruppen = session.createCriteria(FLRMaschinengruppe.class); List<?> listMaschinengruppen = cMaschinengruppen.list(); // ------------------------------------------------------------------ // ----- // Anzahl der sub-Diagramme bestimmen // das ist grundsaetzlich (iParamAnzahlGruppen + 1) x 2 ... // (Anzahl d. anzuzeigenden Vatergruppen + Sonstige) f. AZ und // Maschinen // wenn es weniger Vatergruppen als anzuzeigende gibt, reduziert // sich das aber // Gibt es keine Vatergruppe, wird daher alles nach "Sonstige" // verdichtet // ------------------------------------------------------------------ // ----- final int iAnzuzeigendeArtikelgruppen = Math.min(iParamAnzahlGruppen, listArtikelgruppen.size()); final int iAnzuzeigendeMaschinengruppen = Math.min(iParamAnzahlGruppen, listMaschinengruppen.size()); final int iAnzahlZeilen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen + 1; // ------------------------------------------------------------------ // ----- // Dto initialisieren // ------------------------------------------------------------------ // ----- kapDto = new KapazitaetsvorschauDto(iAnzahlZeilen, iParamZeitraum); // ------------------------------------------------------------------ // ----- // Beschriftung der x-Achse ermitteln. das sind die Kalenderwochen // ------------------------------------------------------------------ // ----- HashMap<Integer, Integer> hmKWIndizes = new HashMap<Integer, Integer>(); String[] kw = new String[iParamZeitraum]; GregorianCalendar gc = new GregorianCalendar(); for (int i = 0; i < kw.length; i++) { int iKw = gc.get(GregorianCalendar.WEEK_OF_YEAR); kw[i] = "" + iKw; kapDto.setISpaltenueberschrift(i, kw[i]); hmKWIndizes.put(gc.get(GregorianCalendar.WEEK_OF_YEAR), i); gc.setTimeInMillis(gc.getTimeInMillis() + 7 * 24 * 60 * 60 * 1000); // 1 Woche dazu } // ------------------------------------------------------------------ // ----- // Beschriftung der y-Achse ermitteln. das sind die Namen der // Vatergruppen bzw. 2 x "Sonstige". // Weiters werden die Indizes im Daten-Array fuer die jeweiligen // Gruppen festgelegt. // ------------------------------------------------------------------ // ----- String sSonstige = getTextRespectUISpr("lp.sonstige", theClientDto.getMandant(), theClientDto.getLocUi()); HashMap<Integer, Integer> hmArtikelGruppenIndizes = new HashMap<Integer, Integer>(); HashMap<Integer, Integer> hmMaschinenGruppenIndizes = new HashMap<Integer, Integer>(); // zuerst die Artikelvatergruppen for (int i = 0; i < iAnzuzeigendeArtikelgruppen; i++) { FLRArtikelgruppe item = (FLRArtikelgruppe) listArtikelgruppen.get(i); kapDto.setIZeilenueberschrift(i, item.getC_nr()); hmArtikelGruppenIndizes.put(item.getI_id(), i); } // Dann Sonstige Artikelgruppen final int indexSonstigeArtikelGruppen = iAnzuzeigendeArtikelgruppen; kapDto.setIZeilenueberschrift(indexSonstigeArtikelGruppen, sSonstige); // Maschinengruppen for (int i = 0; i < iAnzuzeigendeMaschinengruppen; i++) { FLRMaschinengruppe item = (FLRMaschinengruppe) listMaschinengruppen.get(i); int index = iAnzuzeigendeArtikelgruppen + 1 + i; kapDto.setIZeilenueberschrift(index, item.getC_bez()); hmMaschinenGruppenIndizes.put(item.getI_id(), index); } // zuletzt Sonstige Maschinengruppen final int indexSonstigeMaschinenGruppen = iAnzuzeigendeArtikelgruppen + 1 + iAnzuzeigendeMaschinengruppen; kapDto.setIZeilenueberschrift(indexSonstigeMaschinenGruppen, sSonstige); // ------------------------------------------------------------------ // ----- // Lose holen // ------------------------------------------------------------------ // ----- Criteria cLose = session.createCriteria(FLRLos.class); // Filter nach Mandant cLose.add(Restrictions.eq(FertigungFac.FLR_LOS_MANDANT_C_NR, theClientDto.getMandant())); // Alle Stati ausser Erledigt, Gestoppt, Storniert Collection<String> cLoseStati = new LinkedList<String>(); cLoseStati.add(FertigungFac.STATUS_ERLEDIGT); cLoseStati.add(FertigungFac.STATUS_GESTOPPT); cLoseStati.add(FertigungFac.STATUS_STORNIERT); cLose.add(Restrictions.not(Restrictions.in(FertigungFac.FLR_LOS_STATUS_C_NR, cLoseStati))); List<?> listLose = cLose.list(); // ------------------------------------------------------------------ // ----- // Auswertungszeitraum und verfuegbare Kapazitaeten ermitteln // ------------------------------------------------------------------ // ----- // 3 Monate in die zukunft Calendar c = Calendar.getInstance(); c.setTimeInMillis(System.currentTimeMillis()); c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 3); java.util.Date dMax = Helper.cutDate(new java.sql.Date(c.getTimeInMillis())); java.sql.Timestamp tVon = Helper.cutTimestamp(new java.sql.Timestamp(System.currentTimeMillis())); java.sql.Timestamp tBis = Helper.cutTimestamp(new java.sql.Timestamp(dMax.getTime())); // Verfuegbare Zeiten holen SollverfuegbarkeitDto[] oVerfuegbar = getZeiterfassungFac().getVerfuegbareSollzeit(tVon, tBis, theClientDto); // diese nun aufteilen for (int i = 0; i < oVerfuegbar.length; i++) { SollverfuegbarkeitDto svDto = oVerfuegbar[i]; // "normale" AZ if (svDto.isBMannarbeitszeit()) { // die sind einer Artikelgruppe zugeordnet if (svDto.getIGruppeid() != null) { Integer iZeile = hmArtikelGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeArtikelGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } // Rest = Sonstige Artikelgruppen else { if (svDto.getTDatum() != null) { // Die KW dieses Datums ermitteln, damit das // zugeordnet werden kann GregorianCalendar gcSV = new GregorianCalendar(); gcSV.setTime(svDto.getTDatum()); int kwSV = gcSV.get(Calendar.WEEK_OF_YEAR); Integer iIndexDerKW = hmKWIndizes.get(kwSV); if (iIndexDerKW != null) { // Hier nicht mit 5 multiplizieren, da es fuer // jeden Tag einen eigenen Eintrag gibt kapDto.addBdVerfuegbareStunden(indexSonstigeArtikelGruppen, iIndexDerKW, svDto.getNSollstunden()); } else { // diese KW wird nicht mehr angezeigt - brauch // ich nicht einrechnen } } } } // Maschinenzeit - die Verfuegbarkeit ist jeden Tag gleich else { Integer iZeile = hmMaschinenGruppenIndizes.get(svDto.getIGruppeid()); // ist das eine sichtbare Gruppe if (iZeile != null) { for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(iZeile, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } // wenn nicht, dann zu den sonstigen else { for (int iSpalte = 0; iSpalte < kapDto .getDetails()[indexSonstigeMaschinenGruppen].length; iSpalte++) { // mal 5 Tage kapDto.addBdVerfuegbareStunden(indexSonstigeMaschinenGruppen, iSpalte, svDto.getNSollstunden().multiply(new BigDecimal(5))); } } } } // ------------------------------------------------------------------ // ----- // Offene Zeiten ermitteln // ------------------------------------------------------------------ // ----- for (Iterator<?> iter = listLose.iterator(); iter.hasNext();) { FLRLos los = (FLRLos) iter.next(); // Offene Menge ermitteln BigDecimal bdOffen = los.getN_losgroesse(); for (Iterator<?> iterAblieferung = los.getAblieferungset().iterator(); iterAblieferung.hasNext();) { FLRLosablieferung item = (FLRLosablieferung) iterAblieferung.next(); bdOffen = bdOffen.subtract(item.getN_menge()); } // nur Lose mit tatsaechlich offener Menge>0 if (bdOffen.compareTo(new BigDecimal(0)) > 0) { // Faktor zur Berechnung der offenen Zeiten = offene Menge / // Losgroesse. 2 Nachkommastellen sollten reichen. BigDecimal bdFaktor = bdOffen.divide(los.getN_losgroesse(), 2, BigDecimal.ROUND_HALF_EVEN); // Arbeitsplan holen Criteria cLosAZ = session.createCriteria(FLRLossollarbeitsplan.class); cLosAZ.add(Restrictions.eq(FertigungFac.FLR_LOSSOLLARBEITSPLAN_LOS_I_ID, los.getI_id())); List<?> listLosAZ = cLosAZ.list(); // fuer alle Taetigkeiten for (Iterator<?> iterAZ = listLosAZ.iterator(); iterAZ.hasNext();) { FLRLossollarbeitsplan losAZ = (FLRLossollarbeitsplan) iterAZ.next(); BigDecimal bdOffeneStunden = losAZ.getN_gesamtzeit().multiply(bdFaktor); // ------------------------------------------------------ // ----------------- // Index der Gruppe bestimmen, der ich das zuordnen muss // ------------------------------------------------------ // ----------------- int iZeilenIndex; // 1. nach Maschinengruppe // 2. nach Artikelgruppe der Taetigkeit FLRMaschine flrMaschine = losAZ.getFlrmaschine(); Integer iMaschinengruppeIId = null; Integer iArtikelgruppeIId = null; if (flrMaschine != null) { FLRMaschinengruppe flrMaschinengruppe = flrMaschine.getFlrmaschinengruppe(); if (flrMaschinengruppe != null) { // Wenn diese Maschinengruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmMaschinenGruppenIndizes.get(flrMaschinengruppe.getI_id()); iMaschinengruppeIId = flrMaschinengruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } // Maschinen ohne Maschinengruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeMaschinenGruppen; } } else { FLRArtikel flrArtikel = losAZ.getFlrartikel(); FLRArtikelgruppe flrArtikelgruppe = flrArtikel.getFlrartikelgruppe(); if (flrArtikelgruppe != null) { // Wenn diese Artikelgruppe dargestellt wird, // dann kommt hier der index raus. Integer i = hmArtikelGruppenIndizes.get(flrArtikelgruppe.getI_id()); iArtikelgruppeIId = flrArtikelgruppe.getI_id(); if (i != null) { iZeilenIndex = i; } // wenn nicht -> sonstige. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // Taetigkeiten ohne Artikelgruppe werden nach // "Sonstige" verdichtet. else { iZeilenIndex = indexSonstigeArtikelGruppen; } } // ------------------------------------------------------ // ----------------- // Jetzt hab ich die Gruppe, der ich das zuordnen muss // nun muss die Zeit aufgeteilt werden // ------------------------------------------------------ // ----------------- java.util.Date tLosStarttermin = los.getT_produktionsbeginn(); java.util.Date tLosEndetermin = los.getT_produktionsende(); // beide Termine duerfen nicht vor heute liegen if (tLosStarttermin.before(getDate())) { tLosStarttermin = getDate(); } if (tLosEndetermin.before(getDate())) { tLosEndetermin = getDate(); } // Anzahl der betroffenen Kalenderwochen bestimmen GregorianCalendar gcStart = new GregorianCalendar(); gcStart.setTime(tLosStarttermin); GregorianCalendar gcEnde = new GregorianCalendar(); gcEnde.setTime(tLosEndetermin); int iStartKW = gcStart.get(Calendar.WEEK_OF_YEAR); int iEndeKW = gcEnde.get(Calendar.WEEK_OF_YEAR); int iAnzahlKW = 1 + iEndeKW - iStartKW; // nun auf die Wochen aufteilen BigDecimal bdOffeneStundenJeWoche = bdOffeneStunden; if (iAnzahlKW > 0) { bdOffeneStundenJeWoche = bdOffeneStunden.divide(new BigDecimal(iAnzahlKW), 2, RoundingMode.HALF_UP); } for (int iAktuelleKW = iStartKW; iAktuelleKW <= iEndeKW; iAktuelleKW++) { Integer indexDerKW = hmKWIndizes.get(iAktuelleKW); // wird diese Woche auch angezeigt? if (indexDerKW != null) { KapazitaetsvorschauDetailDto detailDto = new KapazitaetsvorschauDetailDto(); detailDto.setArtikelgruppeIId(iArtikelgruppeIId); detailDto.setArtikelIIdTaetigkeit(losAZ.getFlrartikel().getI_id()); detailDto.setBdDauer(bdOffeneStundenJeWoche); detailDto.setLosIId(los.getI_id()); detailDto.setLossollarbeitsplanIId(losAZ.getI_id()); detailDto.setMaschinengruppeIId(iMaschinengruppeIId); kapDto.addDetail(iZeilenIndex, indexDerKW, detailDto); } } } } } // ------------------------------------------------------------------ // ----- // Diagramm aus den Daten erstellen // ------------------------------------------------------------------ // ----- SymbolAxis xAchse = new SymbolAxis("KW", kw); CombinedDomainXYPlot plot = new CombinedDomainXYPlot(xAchse); for (int iZeile = 0; iZeile < kapDto.getDetails().length; iZeile++) { XYSeries datenZeile = new XYSeries(kapDto.getIZeilenueberschrift(iZeile)); // Balkenfarben festlegen ( >100% = rot, sonst hellgrau) // fuer jede zeile und jede spalte Paint[][] paints = new Paint[1][kapDto.getDetails()[iZeile].length]; for (int iSpalte = 0; iSpalte < kapDto.getDetails()[iZeile].length; iSpalte++) { BigDecimal bdVerfuegbar = kapDto.getBdVerfuegbareStunden()[iZeile][iSpalte]; BigDecimal bdBenoetigt = new BigDecimal(0); // Benoetigte Zeit jet Gruppe je Woche ermitteln for (Iterator<?> iter = kapDto.getDetails()[iZeile][iSpalte].iterator(); iter.hasNext();) { KapazitaetsvorschauDetailDto item = (KapazitaetsvorschauDetailDto) iter.next(); bdBenoetigt = bdBenoetigt.add(item.getBdDauer()); } BigDecimal value = new BigDecimal(0); if (bdVerfuegbar.compareTo(new BigDecimal(0)) > 0) { value = (bdBenoetigt.multiply(new BigDecimal(100))).divide(bdVerfuegbar, 4, BigDecimal.ROUND_HALF_EVEN); if (value.doubleValue() > 100.0) { paints[0][iSpalte] = Color.red; } else { paints[0][iSpalte] = Color.lightGray; } } // tage ohne Verfuegbarkeit mach ich 100% und weisz else { value = new BigDecimal(100.0); // Wochen ohne Kapazitaet aber mit geplanter Zeit if (bdBenoetigt.compareTo(new BigDecimal(0)) > 0) { paints[0][iSpalte] = Color.MAGENTA; } // Wenn nichts verfuegbar aber auch nichts benoetigt -> // weiss else { paints[0][iSpalte] = Color.white; } } XYDataItem data = new XYDataItem(iSpalte, value.doubleValue()); datenZeile.add(data); } // Zur Collection XYSeriesCollection xyDataset = new XYSeriesCollection(); xyDataset.addSeries(datenZeile); // subplot erstellen XYItemRenderer renderer1 = new CustomXYBarRenderer(paints); // renderer1.setItemLabelsVisible(true); // Legende nicht anzeigen renderer1.setBaseSeriesVisibleInLegend(false); NumberAxis zeilenAchse = new NumberAxis(kapDto.getIZeilenueberschrift(iZeile)); // Beschriftung der Y-Achse um 90 grad drehen zeilenAchse.setLabelAngle(Math.PI / 2.0); zeilenAchse.setAutoRange(true); XYPlot subplot1 = new XYPlot(xyDataset, null, zeilenAchse, renderer1); subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); // Markierung bei 100% final Marker target = new ValueMarker(100.0); target.setPaint(Color.darkGray); // target.setLabel("100 %"); // Label // target.setLabelAnchor(RectangleAnchor.TOP_RIGHT); // target.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT); subplot1.addRangeMarker(target); plot.add(subplot1); // plot.add(subplot1, 1); } JFreeChart lStackedBarChart = new JFreeChart(plot); kapDto.setJfcKapazitaetsvorschau(lStackedBarChart); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } finally { if (session != null) { session.close(); } } return kapDto; }
From source file:org.openbravo.test.costing.TestCosting.java
@SuppressWarnings("unchecked") private void assertDocumentPost(BaseOBObject document, String productId, List<DocumentPostAssert> documentPostAssertList) { try {/* ww w . jav a 2 s . c o m*/ BaseOBObject doc = OBDal.getInstance().get(document.getClass(), document.getId()); if (!doc.get("posted").equals("Y")) { OBDal.getInstance().refresh(doc); Thread.sleep(5000); for (int i = 0; i < 10 && !doc.get("posted").equals("Y"); i++) { postDocument(doc); doc = OBDal.getInstance().get(doc.getClass(), doc.getId()); OBDal.getInstance().refresh(doc); Thread.sleep(1000); } } assertEquals(doc.get("posted"), "Y"); final OBCriteria<Table> criteria1 = OBDal.getInstance().createCriteria(Table.class); criteria1.add(Restrictions.eq(Table.PROPERTY_NAME, doc.getEntityName())); Table table = criteria1.list().get(0); final OBCriteria<AccountingFact> criteria2 = OBDal.getInstance().createCriteria(AccountingFact.class); criteria2.add(Restrictions.eq(AccountingFact.PROPERTY_RECORDID, doc.getId())); criteria2.add(Restrictions.eq(AccountingFact.PROPERTY_TABLE, table)); criteria2.addOrderBy(AccountingFact.PROPERTY_SEQUENCENUMBER, true); String groupId = criteria2.list().get(0).getGroupID(); assertEquals(criteria2.list().size(), documentPostAssertList.size()); int i = 0; for (AccountingFact accountingFact : criteria2.list()) { String lineListProperty = Character.toLowerCase(doc.getEntityName().charAt(0)) + doc.getEntityName().substring(1) + "LineList"; BaseOBObject line = null; if (doc.getEntityName().equals(ReceiptInvoiceMatch.ENTITY_NAME)) { if (i % 2 == 0) { line = ((ReceiptInvoiceMatch) doc).getGoodsShipmentLine(); } else { line = ((ReceiptInvoiceMatch) doc).getInvoiceLine(); } } else if (doc.getEntityName().equals(ProductionTransaction.ENTITY_NAME)) { StringBuffer where = new StringBuffer(); where.append(" as t1 "); where.append("\n left join t1." + ProductionLine.PROPERTY_PRODUCTIONPLAN + " t2"); where.append("\n where t2." + ProductionPlan.PROPERTY_PRODUCTION + " = :productionTransaction"); where.append("\n order by t1." + ProductionLine.PROPERTY_LINENO); OBQuery<ProductionLine> hql = OBDal.getInstance().createQuery(ProductionLine.class, where.toString()); hql.setNamedParameter("productionTransaction", OBDal.getInstance().get(ProductionTransaction.class, doc.getId())); line = hql.list().get(i / 2); } else if (doc.getEntityName().equals(CostAdjustment.ENTITY_NAME)) { final OBCriteria<CostAdjustmentLine> criteria3 = OBDal.getInstance() .createCriteria(CostAdjustmentLine.class); criteria3.add(Restrictions.eq(CostAdjustmentLine.PROPERTY_COSTADJUSTMENT, doc)); criteria3.add(Restrictions.eq(CostAdjustmentLine.PROPERTY_NEEDSPOSTING, true)); criteria3.addOrderBy(CostAdjustmentLine.PROPERTY_LINENO, true); line = criteria3.list().get(i / 2); } else if (productId != null && (productId.equals(LANDEDCOSTTYPE1_ID) || productId.equals(LANDEDCOSTTYPE2_ID) || productId.equals(LANDEDCOSTTYPE3_ID))) { line = ((List<BaseOBObject>) OBDal.getInstance().get(doc.getClass(), doc.getId()) .get(lineListProperty)).get(0); } else if (doc.getEntityName().equals(LandedCost.ENTITY_NAME)) { StringBuffer where = new StringBuffer(); where.append(" as t1 "); where.append("\n join t1." + LCReceiptLineAmt.PROPERTY_LANDEDCOSTRECEIPT + " t2"); where.append("\n join t1." + LCReceiptLineAmt.PROPERTY_LANDEDCOSTCOST + " t3"); where.append("\n join t1." + LCReceiptLineAmt.PROPERTY_GOODSSHIPMENTLINE + " t4"); where.append("\n left join t4." + ShipmentInOutLine.PROPERTY_SHIPMENTRECEIPT + " t5"); where.append("\n where t2." + LCReceipt.PROPERTY_LANDEDCOST + " = :landedCost"); where.append("\n order by t3." + LandedCostCost.PROPERTY_LINENO); where.append("\n , t5." + ShipmentInOut.PROPERTY_DOCUMENTNO); where.append("\n , t4." + ShipmentInOutLine.PROPERTY_LINENO); OBQuery<LCReceiptLineAmt> hql = OBDal.getInstance().createQuery(LCReceiptLineAmt.class, where.toString()); LandedCost landedCost = OBDal.getInstance().get(LandedCost.class, doc.getId()); hql.setNamedParameter("landedCost", landedCost); line = hql.list().get(i / 2); } else if (doc.getEntityName().equals(LandedCostCost.ENTITY_NAME)) { if (((LandedCostCost) doc).getLandedCostMatchedList().size() == 1) { line = ((LandedCostCost) doc).getLandedCostMatchedList().get(0); } else if (!((LandedCostCost) doc).getAmount().setScale(2, BigDecimal.ROUND_HALF_UP).equals( ((LandedCostCost) doc).getMatchingAmount().setScale(2, BigDecimal.ROUND_HALF_UP)) && ((LandedCostCost) doc).isMatchingAdjusted()) { if (i == 0) { line = ((LandedCostCost) doc).getLandedCostMatchedList().get(0); } else { line = ((LandedCostCost) doc).getLandedCostMatchedList().get(1); } } else { line = ((LandedCostCost) doc).getLandedCostMatchedList().get(i / 2); } } else if (doc.getEntityName().equals(Invoice.ENTITY_NAME) && i > 0) { line = ((List<BaseOBObject>) OBDal.getInstance().get(doc.getClass(), doc.getId()) .get(lineListProperty)).get(i - 1); } else { line = ((List<BaseOBObject>) OBDal.getInstance().get(doc.getClass(), doc.getId()) .get(lineListProperty)).get(i / 2); } DocumentPostAssert documentPostAssert = documentPostAssertList.get(i); assertGeneralData(accountingFact); /* Accounting window fields assert */ assertEquals(accountingFact.getTable(), table); assertEquals(accountingFact.getRecordID(), doc.getId()); assertEquals(accountingFact.getAccountingSchema().getName(), "Main US/A/Euro"); assertEquals(accountingFact.getAccount().getSearchKey(), documentPostAssert.getAccount()); assertEquals(accountingFact.getQuantity(), documentPostAssert.getQuantity()); BigDecimal rate; if ((productId != null && productId.equals(LANDEDCOSTTYPE3_ID)) || (doc.getEntityName().equals(Invoice.ENTITY_NAME) && ((Invoice) doc).getCurrency().getId().equals(CURRENCY2_ID)) || (doc.getEntityName().equals(LandedCost.ENTITY_NAME) && ((LCReceiptLineAmt) line).getLandedCostCost().getLandedCostType() .equals(OBDal.getInstance().get(Product.class, LANDEDCOSTTYPE3_ID) .getLandedCostTypeList().get(0))) || (doc.getEntityName().equals(LandedCostCost.ENTITY_NAME) && ((LCMatched) line).getInvoiceLine().getProduct() != null && ((LCMatched) line).getInvoiceLine().getProduct().getId() .equals(LANDEDCOSTTYPE3_ID)) || (!doc.getEntityName().equals(LandedCostCost.ENTITY_NAME) && !doc.getEntityName().equals(LandedCost.ENTITY_NAME) && documentPostAssert.getProductId() != null && !OBDal.getInstance().get(Product.class, documentPostAssert.getProductId()) .getPricingProductPriceList().isEmpty() && OBDal.getInstance().get(Product.class, documentPostAssert.getProductId()) .getPricingProductPriceList().get(0).getPriceListVersion() .equals(OBDal.getInstance().get(Product.class, LANDEDCOSTTYPE3_ID) .getPricingProductPriceList().get(0).getPriceListVersion()))) { if (doc.getEntityName().equals(Invoice.ENTITY_NAME) && ((Invoice) doc).getCurrencyConversionRateDocList().size() != 0) { rate = ((Invoice) doc).getCurrencyConversionRateDocList().get(0).getRate(); } else { Calendar calendar = Calendar.getInstance(); calendar.set(9999, 0, 1); OBCriteria<ConversionRate> criteria = OBDal.getInstance() .createCriteria(ConversionRate.class); criteria.add(Restrictions.eq(ConversionRate.PROPERTY_CLIENT, OBDal.getInstance().get(Client.class, CLIENT_ID))); criteria.add(Restrictions.eq(ConversionRate.PROPERTY_CURRENCY, OBDal.getInstance().get(Currency.class, CURRENCY2_ID))); criteria.add(Restrictions.eq(ConversionRate.PROPERTY_TOCURRENCY, OBDal.getInstance().get(Currency.class, CURRENCY1_ID))); criteria.add(Restrictions.ge(ConversionRate.PROPERTY_VALIDTODATE, calendar.getTime())); rate = criteria.list().get(0).getMultipleRateBy(); } } else { rate = BigDecimal.ONE; } assertEquals(accountingFact.getDebit().setScale(2, BigDecimal.ROUND_HALF_UP), documentPostAssert.getDebit().multiply(rate).setScale(2, doc.getEntityName().equals(LandedCost.ENTITY_NAME) ? BigDecimal.ROUND_HALF_EVEN : BigDecimal.ROUND_HALF_UP)); assertEquals(accountingFact.getCredit().setScale(2, BigDecimal.ROUND_HALF_UP), documentPostAssert.getCredit().multiply(rate).setScale(2, doc.getEntityName().equals(LandedCost.ENTITY_NAME) ? BigDecimal.ROUND_HALF_EVEN : BigDecimal.ROUND_HALF_UP)); if ((productId != null && productId.equals(LANDEDCOSTTYPE3_ID)) || (doc.getEntityName().equals(Invoice.ENTITY_NAME) && ((Invoice) doc).getCurrency().getId().equals(CURRENCY2_ID)) || (doc.getEntityName().equals(LandedCost.ENTITY_NAME) && ((LCReceiptLineAmt) line).getLandedCostCost().getLandedCostType() .equals(OBDal.getInstance().get(Product.class, LANDEDCOSTTYPE3_ID) .getLandedCostTypeList().get(0))) || (doc.getEntityName().equals(LandedCostCost.ENTITY_NAME) && ((LCMatched) line).getInvoiceLine().getProduct() != null && ((LCMatched) line) .getInvoiceLine().getProduct().getId().equals(LANDEDCOSTTYPE3_ID))) { rate = BigDecimal.ONE; } else if ((doc.getEntityName().equals(ShipmentInOut.ENTITY_NAME) || doc.getEntityName().equals(CostAdjustment.ENTITY_NAME)) && OBDal.getInstance().get(Organization.class, ORGANIZATION_ID).getCurrency() != null && OBDal.getInstance().get(Organization.class, ORGANIZATION_ID).getCurrency().getId() .equals(CURRENCY2_ID)) { Calendar calendar = Calendar.getInstance(); calendar.set(9999, 0, 1); OBCriteria<ConversionRate> criteria = OBDal.getInstance().createCriteria(ConversionRate.class); criteria.add(Restrictions.eq(ConversionRate.PROPERTY_CLIENT, OBDal.getInstance().get(Client.class, CLIENT_ID))); criteria.add(Restrictions.eq(ConversionRate.PROPERTY_CURRENCY, OBDal.getInstance().get(Currency.class, CURRENCY1_ID))); criteria.add(Restrictions.eq(ConversionRate.PROPERTY_TOCURRENCY, OBDal.getInstance().get(Currency.class, CURRENCY2_ID))); criteria.add(Restrictions.ge(ConversionRate.PROPERTY_VALIDTODATE, calendar.getTime())); rate = criteria.list().get(0).getMultipleRateBy(); } assertEquals(accountingFact.getForeignCurrencyDebit().setScale(2, BigDecimal.ROUND_HALF_UP), documentPostAssert.getDebit().multiply(rate).setScale(2, doc.getEntityName().equals(LandedCost.ENTITY_NAME) ? BigDecimal.ROUND_HALF_EVEN : BigDecimal.ROUND_HALF_UP)); assertEquals(accountingFact.getForeignCurrencyCredit().setScale(2, BigDecimal.ROUND_HALF_UP), documentPostAssert.getCredit().multiply(rate).setScale(2, doc.getEntityName().equals(LandedCost.ENTITY_NAME) ? BigDecimal.ROUND_HALF_EVEN : BigDecimal.ROUND_HALF_UP)); Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(accountingFact.getAccountingDate()); calendar1.set(Calendar.DAY_OF_MONTH, calendar1.getActualMinimum(Calendar.DAY_OF_MONTH)); Calendar calendar2 = Calendar.getInstance(); calendar2.setTime(accountingFact.getAccountingDate()); calendar2.set(Calendar.DAY_OF_MONTH, calendar2.getActualMaximum(Calendar.DAY_OF_MONTH)); final OBCriteria<Period> criteria3 = OBDal.getInstance().createCriteria(Period.class); criteria3.add(Restrictions.eq(Period.PROPERTY_STARTINGDATE, calendar1.getTime())); criteria3.add(Restrictions.eq(Period.PROPERTY_ENDINGDATE, calendar2.getTime())); assertEquals(accountingFact.getPeriod(), criteria3.list().get(0)); if (doc.getEntityName().equals(CostAdjustment.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(today)); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((CostAdjustmentLine) line).getAccountingDate())); if (((CostAdjustmentLine) line).getInventoryTransaction().getGoodsShipmentLine() != null) { assertEquals(accountingFact.getBusinessPartner(), ((CostAdjustmentLine) line).getInventoryTransaction().getGoodsShipmentLine() .getShipmentReceipt().getBusinessPartner()); } else { assertEquals(accountingFact.getBusinessPartner(), null); } } else if (doc.getEntityName().equals(InventoryCount.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(((InventoryCount) doc).getMovementDate())); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((InventoryCount) doc).getMovementDate())); assertEquals(accountingFact.getBusinessPartner(), null); } else if (doc.getEntityName().equals(ReceiptInvoiceMatch.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(((ReceiptInvoiceMatch) doc).getTransactionDate())); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((ReceiptInvoiceMatch) doc).getTransactionDate())); assertEquals(accountingFact.getBusinessPartner(), ((ReceiptInvoiceMatch) doc).getInvoiceLine().getBusinessPartner()); } else if (doc.getEntityName().equals(InternalMovement.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(((InternalMovement) doc).getMovementDate())); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((InternalMovement) doc).getMovementDate())); assertEquals(accountingFact.getBusinessPartner(), null); } else if (doc.getEntityName().equals(InternalConsumption.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(((InternalConsumption) doc).getMovementDate())); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((InternalConsumption) doc).getMovementDate())); assertEquals(accountingFact.getBusinessPartner(), null); } else if (doc.getEntityName().equals(ProductionTransaction.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(((ProductionTransaction) doc).getMovementDate())); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((ProductionTransaction) doc).getMovementDate())); assertEquals(accountingFact.getBusinessPartner(), null); } else if (doc.getEntityName().equals(LandedCost.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(((LandedCost) doc).getReferenceDate())); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((LandedCost) doc).getReferenceDate())); if (i % 2 == 0) { assertEquals(accountingFact.getBusinessPartner(), OBDal.getInstance() .get(ShipmentInOutLine.class, ((LCReceiptLineAmt) line).getGoodsShipmentLine().getId()) .getBusinessPartner()); } else { assertEquals(accountingFact.getBusinessPartner(), null); } } else if (doc.getEntityName().equals(LandedCostCost.ENTITY_NAME)) { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate(((LandedCostCost) doc).getAccountingDate())); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate(((LandedCostCost) doc).getAccountingDate())); if (i == 0 || (documentPostAssert.getProductId() != null && OBDal.getInstance() .get(InvoiceLine.class, ((LandedCostCost) doc).getLandedCostMatchedList().get(0) .getInvoiceLine().getId()) .getProduct() != null && documentPostAssert.getProductId() .equals(OBDal.getInstance() .get(InvoiceLine.class, ((LandedCostCost) doc) .getLandedCostMatchedList().get(0).getInvoiceLine().getId()) .getProduct().getId()))) { assertEquals(accountingFact.getBusinessPartner(), OBDal.getInstance().get(InvoiceLine.class, ((LandedCostCost) doc) .getLandedCostMatchedList().get(0).getInvoiceLine().getId()) .getBusinessPartner()); } else { assertEquals(accountingFact.getBusinessPartner(), null); } } else { assertEquals(formatDate(accountingFact.getTransactionDate()), formatDate((Date) doc.get("accountingDate"))); assertEquals(formatDate(accountingFact.getAccountingDate()), formatDate((Date) doc.get("accountingDate"))); assertEquals(accountingFact.getBusinessPartner(), doc.get("businessPartner")); } if ((productId != null && productId.equals(LANDEDCOSTTYPE3_ID)) || (doc.getEntityName().equals(Invoice.ENTITY_NAME) && ((Invoice) doc).getCurrency().getId().equals(CURRENCY2_ID)) || (doc.getEntityName().equals(LandedCost.ENTITY_NAME) && ((LCReceiptLineAmt) line).getLandedCostCost().getLandedCostType() .equals(OBDal.getInstance().get(Product.class, LANDEDCOSTTYPE3_ID) .getLandedCostTypeList().get(0))) || (doc.getEntityName().equals(LandedCostCost.ENTITY_NAME) && ((LCMatched) line).getInvoiceLine().getProduct() != null && ((LCMatched) line).getInvoiceLine().getProduct().getId() .equals(LANDEDCOSTTYPE3_ID)) || (!doc.getEntityName().equals(Invoice.ENTITY_NAME) && !doc.getEntityName().equals(ReceiptInvoiceMatch.ENTITY_NAME) && OBDal.getInstance().get(Organization.class, ORGANIZATION_ID) .getCurrency() != null && OBDal.getInstance().get(Organization.class, ORGANIZATION_ID).getCurrency() .getId().equals(CURRENCY2_ID))) { assertEquals(accountingFact.getCurrency(), OBDal.getInstance().get(Currency.class, CURRENCY2_ID)); } else { assertEquals(accountingFact.getCurrency(), OBDal.getInstance().get(Currency.class, CURRENCY1_ID)); } if (productId != null && productId.equals(LANDEDCOSTTYPE2_ID)) { if (i == 0) { assertEquals(accountingFact.getProduct(), null); assertEquals(accountingFact.getUOM(), null); assertEquals(accountingFact.getTax(), null); } else if (i == 1) { assertEquals(accountingFact.getProduct(), null); assertEquals(accountingFact.getUOM(), null); assertEquals(accountingFact.getLineID(), null); assertEquals(accountingFact.getRecordID2(), null); OBCriteria<TaxRate> criteria = OBDal.getInstance().createCriteria(TaxRate.class); criteria.add(Restrictions.eq(TaxRate.PROPERTY_TAXCATEGORY, OBDal.getInstance().get(Product.class, productId).getTaxCategory())); criteria.add(Restrictions.eq(TaxRate.PROPERTY_ORGANIZATION, OBDal.getInstance().get(Organization.class, ORGANIZATION_ID))); assertEquals(accountingFact.getTax(), criteria.list().get(0)); } else { assertEquals(accountingFact.getProduct().getId(), productId); assertEquals(accountingFact.getUOM(), line.get("uOM")); assertEquals(accountingFact.getLineID(), line.getId()); assertEquals(accountingFact.getRecordID2(), null); assertEquals(accountingFact.getTax(), null); } } else { if (doc.getEntityName().equals(Invoice.ENTITY_NAME) && i == 0) { assertEquals(accountingFact.getProduct(), null); assertEquals(accountingFact.getUOM(), null); assertEquals(accountingFact.getTax(), null); } else { if (productId == null) { assertEquals(accountingFact.getProduct(), documentPostAssert.getProductId() == null ? null : OBDal.getInstance().get(Product.class, documentPostAssert.getProductId())); } else { assertEquals(accountingFact.getProduct().getId(), productId); } if (line.getEntity().getProperty("uOM", false) == null) { assertEquals(accountingFact.getUOM(), null); } else { assertEquals(accountingFact.getUOM(), line.get("uOM")); } if (!doc.getEntityName().equals(LandedCost.ENTITY_NAME)) { assertEquals(accountingFact.getLineID(), line.getId()); } assertEquals(accountingFact.getRecordID2(), null); assertEquals(accountingFact.getTax(), null); } } assertEquals(accountingFact.getProject(), null); assertEquals(accountingFact.getCostcenter(), null); assertEquals(accountingFact.getAsset(), null); assertEquals(accountingFact.getStDimension(), null); assertEquals(accountingFact.getNdDimension(), null); /* Rest of fields assert */ if (doc.getEntityName().equals(ShipmentInOut.ENTITY_NAME)) { assertEquals(accountingFact.getGLCategory().getName(), "Material Management"); } else if (doc.getEntityName().equals(Invoice.ENTITY_NAME)) { assertEquals(accountingFact.getGLCategory().getName(), "AP Invoice"); } else if (doc.getEntityName().equals(CostAdjustment.ENTITY_NAME)) { assertEquals(accountingFact.getGLCategory().getName(), "None"); } else { assertEquals(accountingFact.getGLCategory().getName(), "Standard"); } assertEquals(accountingFact.getPostingType(), "A"); if (doc.getEntityName().equals(ReceiptInvoiceMatch.ENTITY_NAME)) { assertEquals(accountingFact.getStorageBin(), null); } else if (doc.getEntityName().equals(InternalMovement.ENTITY_NAME)) { if (i % 2 == 0) { assertEquals(accountingFact.getStorageBin(), line.get(InternalMovementLine.PROPERTY_STORAGEBIN)); } else { assertEquals(accountingFact.getStorageBin(), line.get(InternalMovementLine.PROPERTY_NEWSTORAGEBIN)); } } else if (line.getEntity().getProperty("storageBin", false) == null) { assertEquals(accountingFact.getStorageBin(), null); } else { assertEquals(accountingFact.getStorageBin(), line.get("storageBin")); } if (doc.getEntityName().equals(InventoryCount.ENTITY_NAME)) { assertEquals(accountingFact.getDocumentType(), null); assertEquals(accountingFact.getDocumentCategory(), "MMI"); } else if (doc.getEntityName().equals(ReceiptInvoiceMatch.ENTITY_NAME)) { assertEquals(accountingFact.getDocumentType(), null); assertEquals(accountingFact.getDocumentCategory(), "MXI"); } else if (doc.getEntityName().equals(InternalMovement.ENTITY_NAME)) { assertEquals(accountingFact.getDocumentType(), null); assertEquals(accountingFact.getDocumentCategory(), "MMM"); } else if (doc.getEntityName().equals(InternalConsumption.ENTITY_NAME)) { assertEquals(accountingFact.getDocumentType(), null); assertEquals(accountingFact.getDocumentCategory(), "MIC"); } else if (doc.getEntityName().equals(ProductionTransaction.ENTITY_NAME)) { assertEquals(accountingFact.getDocumentType(), null); assertEquals(accountingFact.getDocumentCategory(), "MMP"); } else if (doc.getEntityName().equals(LandedCost.ENTITY_NAME)) { assertEquals(accountingFact.getDocumentType(), null); assertEquals(accountingFact.getDocumentCategory(), "LDC"); } else if (doc.getEntityName().equals(LandedCostCost.ENTITY_NAME)) { assertEquals(accountingFact.getDocumentType(), null); assertEquals(accountingFact.getDocumentCategory(), "LCC"); } else { assertEquals(accountingFact.getDocumentType(), doc.get("documentType")); assertEquals(accountingFact.getDocumentCategory(), ((DocumentType) doc.get("documentType")).getDocumentCategory()); } assertEquals(accountingFact.getSalesRegion(), null); assertEquals(accountingFact.getSalesCampaign(), null); assertEquals(accountingFact.getActivity(), null); assertEquals(accountingFact.getGroupID(), groupId); assertEquals(accountingFact.getType(), "N"); assertEquals(accountingFact.getValue(), documentPostAssert.getAccount()); assertEquals(accountingFact.getWithholding(), null); assertFalse(accountingFact.isModify()); assertEquals(accountingFact.getDateBalanced(), null); final OBCriteria<ElementValue> criteria4 = OBDal.getInstance().createCriteria(ElementValue.class); criteria4.add(Restrictions.eq(ElementValue.PROPERTY_SEARCHKEY, documentPostAssert.getAccount())); assertEquals(accountingFact.getAccountingEntryDescription(), criteria4.list().get(0).getDescription()); i++; } } catch (Exception e) { throw new OBException(e); } }