List of usage examples for java.math BigDecimal divide
public BigDecimal divide(BigDecimal divisor, MathContext mc)
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
private void erstelleLossollmaterial(Integer losIId, Integer stuecklisteIId, BigDecimal bdPositionsMenge, Integer lagerIId_Hauptlager, boolean bFlachdruecken, int iEbene, TheClientDto theClientDto) { iEbene++;/*from w ww.j a va 2 s . co m*/ try { StuecklistepositionDto[] stkPos = getStuecklisteFac() .stuecklistepositionFindByStuecklisteIId(stuecklisteIId, theClientDto); StuecklisteDto stklDto = getStuecklisteFac().stuecklisteFindByPrimaryKey(stuecklisteIId, theClientDto); for (int i = 0; i < stkPos.length; i++) { // alle stuecklistenpositionen ins los uebernehmen LossollmaterialDto losMatDto = new LossollmaterialDto(); losMatDto.setArtikelIId(stkPos[i].getArtikelIId()); losMatDto.setBNachtraeglich(Helper.boolean2Short(false)); losMatDto.setCKommentar(stkPos[i].getCKommentar()); losMatDto.setCPosition(stkPos[i].getCPosition()); losMatDto.setFDimension1(stkPos[i].getFDimension1()); losMatDto.setFDimension2(stkPos[i].getFDimension2()); losMatDto.setFDimension3(stkPos[i].getFDimension3()); losMatDto.setILfdnummer(stkPos[i].getILfdnummer()); losMatDto.setIBeginnterminoffset(stkPos[i].getIBeginnterminoffset()); losMatDto.setISort(stkPos[i].getISort()); losMatDto.setLosIId(losIId); losMatDto.setMontageartIId(stkPos[i].getMontageartIId()); // Einheit umrechnen ArtikelDto artikelDto = getArtikelFac().artikelFindByPrimaryKey(stkPos[i].getArtikelIId(), theClientDto); losMatDto.setEinheitCNr(artikelDto.getEinheitCNr()); BigDecimal bdFaktor = getSystemFac().rechneUmInAndereEinheit(new BigDecimal(1), artikelDto.getEinheitCNr(), stkPos[i].getEinheitCNr(), stkPos[i].getIId(), theClientDto); // nun die Dimensionen BigDecimal bdDimProdukt = new BigDecimal(1); EinheitDto einheitDto = getSystemFac().einheitFindByPrimaryKey(stkPos[i].getEinheitCNr(), theClientDto); if (einheitDto.getIDimension().intValue() >= 1) { if (stkPos[i].getFDimension1() != null) { bdDimProdukt = bdDimProdukt .multiply(new BigDecimal(stkPos[i].getFDimension1().floatValue())); } } if (einheitDto.getIDimension().intValue() >= 2) { if (stkPos[i].getFDimension2() != null) { bdDimProdukt = bdDimProdukt .multiply(new BigDecimal(stkPos[i].getFDimension2().floatValue())); } } if (einheitDto.getIDimension().intValue() >= 3) { if (stkPos[i].getFDimension3() != null) { bdDimProdukt = bdDimProdukt .multiply(new BigDecimal(stkPos[i].getFDimension3().floatValue())); } } // verschnitt BigDecimal bdMenge = Helper.berechneMengeInklusiveVerschnitt(stkPos[i].getNMenge(), artikelDto.getFVerschnittfaktor(), artikelDto.getFVerschnittbasis(), bdPositionsMenge); // endgueltige Menge berechnen if (bdFaktor.doubleValue() != 0) { bdMenge = bdMenge.divide(bdFaktor, BigDecimal.ROUND_HALF_EVEN); BigDecimal losSollMenge = bdMenge.multiply(bdDimProdukt).multiply(bdPositionsMenge).divide( new BigDecimal(stklDto.getIErfassungsfaktor().doubleValue()), BigDecimal.ROUND_HALF_EVEN); if (losSollMenge.doubleValue() < 0.001 && losSollMenge.doubleValue() > 0.000001) { losSollMenge = new BigDecimal("0.001"); losSollMenge = losSollMenge.setScale(3, BigDecimal.ROUND_HALF_EVEN); } else { losSollMenge = losSollMenge.setScale(3, BigDecimal.ROUND_HALF_EVEN); } losMatDto.setNMenge(losSollMenge); } BigDecimal bdSollpreis = getLagerFac().getGemittelterGestehungspreisEinesLagers( stkPos[i].getArtikelIId(), lagerIId_Hauptlager, theClientDto); losMatDto.setNSollpreis(bdSollpreis); // Datensatz speichern // Wenn Unterstueckliste und Hilfsstueckliste: StuecklisteDto stuecklisteDto = getStuecklisteFac() .stuecklisteFindByMandantCNrArtikelIIdOhneExc(stkPos[i].getArtikelIId(), theClientDto); if (stuecklisteDto != null && stuecklisteDto.getArtikelIId() == 3376) { int u = 0; } if (stuecklisteDto != null && stuecklisteDto.getStuecklisteartCNr() .equals(StuecklisteFac.STUECKLISTEART_HILFSSTUECKLISTE) && bFlachdruecken == true) { if (iEbene < 10) { erstelleLossollmaterial(losIId, stuecklisteDto.getIId(), losMatDto.getNMenge(), lagerIId_Hauptlager, true, iEbene, theClientDto); } } else { LossollmaterialDto lossollmaterialDto = createLossollmaterial(losMatDto, theClientDto); Integer iOriginal_IId = new Integer(lossollmaterialDto.getIId()); // Ersatztypen anlegen PosersatzDto[] posersatzDtos = getStuecklisteFac() .posersatzFindByStuecklistepositionIId(stkPos[i].getIId()); if (iEbene < 10) { for (int k = 0; k < posersatzDtos.length; k++) { losMatDto.setArtikelIId(posersatzDtos[k].getArtikelIIdErsatz()); losMatDto.setNMenge(new BigDecimal(0)); losMatDto.setLossollmaterialIIdOriginal(iOriginal_IId); createLossollmaterial(losMatDto, theClientDto); } } } } } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } }
From source file:com.lp.server.fertigung.ejbfac.FertigungFacBean.java
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public BigDecimal getAusgegebeneMengePreis(Integer lossollmaterialIId, java.sql.Timestamp tStichtag, TheClientDto theClientDto) throws EJBExceptionLP { try {// w w w . jav a2s .c om BigDecimal bdMenge = new BigDecimal(0); BigDecimal bdWert = new BigDecimal(0); LosistmaterialDto[] losist = losistmaterialFindByLossollmaterialIId(lossollmaterialIId); for (int i = 0; i < losist.length; i++) { BigDecimal bdAusgegeben = getLagerFac().getMengeEinerBelegposition(LocaleFac.BELEGART_LOS, losist[i].getIId(), tStichtag); if (Helper.short2boolean(losist[i].getBAbgang())) { BigDecimal bdPreis = getLagerFac().getGemittelterGestehungspreisEinerAbgangsposition( LocaleFac.BELEGART_LOS, losist[i].getIId()); bdMenge = bdMenge.add(bdAusgegeben); bdWert = bdWert.add(bdPreis.multiply(bdAusgegeben)); } else { BigDecimal bdPreis = getLagerFac().getGemittelterEinstandspreisEinerZugangsposition( LocaleFac.BELEGART_LOS, losist[i].getIId()); bdMenge = bdMenge.subtract(bdAusgegeben); bdWert = bdWert.subtract(bdPreis.multiply(bdAusgegeben)); } } if (bdMenge.doubleValue() == 0) { return bdMenge; } else { return bdWert.divide(bdMenge, BigDecimal.ROUND_HALF_EVEN); } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); return null; } }