Java tutorial
/******************************************************************************* * HELIUM V, Open Source ERP software for sustained success * at small and medium-sized enterprises. * Copyright (C) 2004 - 2014 HELIUM V IT-Solutions GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation, either version 3 of theLicense, or * (at your option) any later version. * * According to sec. 7 of the GNU Affero General Public License, version 3, * the terms of the AGPL are supplemented with the following terms: * * "HELIUM V" and "HELIUM 5" are registered trademarks of * HELIUM V IT-Solutions GmbH. The licensing of the program under the * AGPL does not imply a trademark license. Therefore any rights, title and * interest in our trademarks remain entirely with us. If you want to propagate * modified versions of the Program under the name "HELIUM V" or "HELIUM 5", * you may only do so if you have a written permission by HELIUM V IT-Solutions * GmbH (to acquire a permission please contact HELIUM V IT-Solutions * at trademark@heliumv.com). * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Contact: developers@heliumv.com ******************************************************************************/ package com.lp.server.artikel.ejbfac; import java.math.*; import java.rmi.*; import java.sql.*; import java.util.*; import org.hibernate.*; import org.hibernate.criterion.*; import org.jboss.annotation.ejb.TransactionTimeout; import com.lp.server.artikel.ejb.*; import com.lp.server.artikel.fastlanereader.generated.*; import com.lp.server.artikel.service.*; import com.lp.server.system.pkgenerator.*; import com.lp.server.system.pkgenerator.bl.*; import com.lp.server.system.service.*; import com.lp.server.util.*; import com.lp.server.util.fastlanereader.*; import com.lp.util.*; import net.sf.jasperreports.engine.*; import com.lp.server.util.report.JasperPrintLP; /** * * <p> Diese Klasse kuemmert sich um ...</p> * * <p>Copyright Logistik Pur GmbH (c) 2004-2008</p> * * <p>Erstellung: Vorname Nachname; dd.mm.06</p> * * <p>@author $Author: christian $</p> * * @version not attributable Date $Date: 2013/01/17 16:15:13 $ * * @todo diese Klasse darf nicht von LPReport erben. */ import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.persistence.EntityExistsException; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.Query; @Stateless public class InventurFacBean extends LPReport implements InventurFac, JRDataSource { @PersistenceContext private EntityManager em; private Object[][] data = null; private String sAktuellerReport = null; private static int REPORT_INVENTURLISTE_ARTIKELNUMMER = 0; private static int REPORT_INVENTURLISTE_ARTIKELBEZEICHNUNG = 1; private static int REPORT_INVENTURLISTE_SERIENNUMMERCHARGENNUMMER = 2; private static int REPORT_INVENTURLISTE_INVENTURMENGE = 3; private static int REPORT_INVENTURLISTE_INVENTURPREIS = 4; private static int REPORT_INVENTURLISTE_LAGER = 5; private static int REPORT_INVENTURLISTE_INVENTURWERT = 6; private static int REPORT_INVENTURLISTE_LIEF1PREIS_ZUM_INVENTURDATUM = 7; private static int REPORT_INVENTURLISTE_LIEF1PREIS_AKTUELL = 8; private static int REPORT_INVENTURSTAND_ARTIKELNUMMER = 0; private static int REPORT_INVENTURSTAND_ARTIKELBEZEICHNUNG = 1; private static int REPORT_INVENTURSTAND_ARTIKELZUSATZBEZEICHNUNG = 2; private static int REPORT_INVENTURSTAND_ARTIKELZUSATZBEZEICHNUNG2 = 3; private static int REPORT_INVENTURSTAND_ARTIKELKURZBEZEICHNUNG = 4; private static int REPORT_INVENTURSTAND_SERIENNUMMERCHARGENNUMMER = 5; private static int REPORT_INVENTURSTAND_INVENTURMENGE = 6; private static int REPORT_INVENTURSTAND_INVENTURPREIS = 7; private static int REPORT_INVENTURSTAND_LAGER = 8; private static int REPORT_INVENTURSTAND_INVENTURWERT = 9; private static int REPORT_INVENTURSTAND_LAGERSTAND = 10; private static int REPORT_INVENTURSTAND_ARTIKELART = 11; private static int REPORT_INVENTURSTAND_ARTIKELGRUPPE = 12; private static int REPORT_INVENTURSTAND_ARTIKELKLASSE = 13; private static int REPORT_INVENTURSTAND_STUECKLISTE = 14; private static int REPORT_INVENTURPROTOKOLL_ARTIKELNUMMER = 0; private static int REPORT_INVENTURPROTOKOLL_ARTIKELBEZEICHNUNG = 1; private static int REPORT_INVENTURPROTOKOLL_KORREKTURZEITPUNKT = 2; private static int REPORT_INVENTURPROTOKOLL_KORREKTURMENGE = 3; private static int REPORT_INVENTURPROTOKOLL_INVENTURPREIS = 4; private static int REPORT_INVENTURPROTOKOLL_INVENTURMENGE = 5; private static int REPORT_INVENTURPROTOKOLL_ARTIKELART = 6; private static int REPORT_INVENTURPROTOKOLL_LAGERSTAND = 7; private static int REPORT_NICHTERFASSTEARTIKEL_ARTIKELNUMMER = 0; private static int REPORT_NICHTERFASSTEARTIKEL_ARTIKELBEZEICHNUNG = 1; private static int REPORT_NICHTERFASSTEARTIKEL_SERIENNUMMERCHARGENNUMMER = 2; private static int REPORT_NICHTERFASSTEARTIKEL_LAGER = 3; private static int REPORT_NICHTERFASSTEARTIKEL_LAGERSTAND = 4; public Integer createInventur(InventurDto inventurDto, TheClientDto theClientDto) throws EJBExceptionLP { if (inventurDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurDto == null")); } if (inventurDto.getTInventurdatum() == null || inventurDto.getCBez() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception("inventurDto.getTInventurdatum() == null || inventurDto.getCBez() == null")); } inventurDto.setMandantCNr(theClientDto.getMandant()); inventurDto.setBInventurdurchgefuehrt(Helper.boolean2Short(false)); inventurDto.setBAbwertungdurchgefuehrt(Helper.boolean2Short(false)); try { // PJ 17901 Query query = em.createNamedQuery("InventurfindByTInventurdatumMandantCNr"); query.setParameter(1, inventurDto.getTInventurdatum()); query.setParameter(2, inventurDto.getMandantCNr()); Collection c = query.getResultList(); Iterator it = c.iterator(); while (it.hasNext()) { Inventur inventur = (Inventur) it.next(); if (inventur.getLagerIId() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DUPLICATE_UNIQUE, new Exception("WW_INVENTUR.UC")); } else { if (inventurDto.getLagerIId() != null) { if (inventurDto.getLagerIId().equals(inventur.getLagerIId())) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DUPLICATE_UNIQUE, new Exception("WW_INVENTUR.UC")); } } } } } catch (NoResultException ex) { } try { // generieren von primary key PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_INVENTUR); inventurDto.setIId(pk); inventurDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); inventurDto.setTAendern(new Timestamp(System.currentTimeMillis())); Inventur inventur = new Inventur(inventurDto.getIId(), inventurDto.getTInventurdatum(), inventurDto.getBInventurdurchgefuehrt(), inventurDto.getBAbwertungdurchgefuehrt(), inventurDto.getCBez(), inventurDto.getPersonalIIdAendern(), inventurDto.getMandantCNr()); em.persist(inventur); em.flush(); setInventurFromInventurDto(inventur, inventurDto); return inventurDto.getIId(); } catch (EntityExistsException e) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_ANLEGEN, e); } } public void removeInventur(InventurDto inventurDto) throws EJBExceptionLP { myLogger.entry(); if (inventurDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurDto == null")); } if (inventurDto.getIId() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception("inventurDto.getIId() == null")); } // try { Inventur toRemove = em.find(Inventur.class, inventurDto.getIId()); if (toRemove == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei removeInventur. Es gibt keine iid " + inventurDto.getIId() + "\ndto.toString: " + inventurDto.toString()); } try { em.remove(toRemove); em.flush(); } catch (EntityExistsException er) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, er); } // } // catch (RemoveException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEIM_LOESCHEN, e); // } } public void updateInventur(InventurDto inventurDto, TheClientDto theClientDto) { myLogger.entry(); if (inventurDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurDto == null")); } if (inventurDto.getIId() == null || inventurDto.getTInventurdatum() == null || inventurDto.getCBez() == null || inventurDto.getMandantCNr() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception( "inventurDto.getIId() == null || inventurDto.getTInventurdatum() == null || inventurDto.getCBez() == null || inventurDto.getMandantCNr() == null")); } Integer iId = inventurDto.getIId(); Inventur inventur = null; // try { inventur = em.find(Inventur.class, iId); if (inventur == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei updateInventur. Es gibt keine iid " + inventurDto.getIId() + "\ndto.toString: " + inventurDto.toString()); } try { Integer iIdVorhanden = inventur.getIId(); Query query = em.createNamedQuery("InventurfindByTInventurdatumMandantCNr"); query.setParameter(1, inventurDto.getTInventurdatum()); query.setParameter(2, inventurDto.getMandantCNr()); Collection c = query.getResultList(); Iterator it = c.iterator(); while (it.hasNext()) { Inventur inventurVorhanden = (Inventur) it.next(); if (!inventurVorhanden.getIId().equals(inventurDto.getIId())) { if (inventurVorhanden.getLagerIId() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DUPLICATE_UNIQUE, new Exception("WW_INVENTUR.UC")); } else { if (inventurDto.getLagerIId() != null) { if (inventurDto.getLagerIId().equals(inventurVorhanden.getLagerIId())) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DUPLICATE_UNIQUE, new Exception("WW_INVENTUR.UC")); } } } } } } catch (NoResultException ex) { // nix da } inventurDto.setLagerIId(inventur.getLagerIId()); // Wenn sich das Inventurdatum aendert, dann Belegdatum im Lager updaten try { if (!inventur.getTInventurdatum().equals(inventurDto.getTInventurdatum())) { getLagerFac().updateTBelegdatumEinesBelegesImLager(LocaleFac.BELEGART_INVENTUR, inventurDto.getIId(), inventurDto.getTInventurdatum(), theClientDto); } } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } inventurDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); inventurDto.setTAendern(new Timestamp(System.currentTimeMillis())); setInventurFromInventurDto(inventur, inventurDto); } public InventurDto inventurFindByPrimaryKey(Integer iId, TheClientDto theClientDtoI) throws EJBExceptionLP { return inventurFindByPrimaryKey(iId); } public InventurDto inventurFindByPrimaryKey(Integer iId) throws EJBExceptionLP { Validator.pkFieldNotNull(iId, "iId"); InventurDto inventurDto = findByPrimaryKeyOhneExc(iId); if (inventurDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei inventurFindByPrimaryKey. Es gibt keine iid " + iId); } return inventurDto; } public InventurDto findByPrimaryKeyOhneExc(Integer iId) { if (iId == null) return null; Inventur inventur = em.find(Inventur.class, iId); if (inventur == null) return null; return assembleInventurDto(inventur); } public InventurDto findByTInventurdatumMandantCNr(Timestamp tInventurdatum, String mandantCNr) throws EJBExceptionLP { // try { Query query = em.createNamedQuery("InventurfindByTInventurdatumMandantCNr"); query.setParameter(1, tInventurdatum); query.setParameter(2, mandantCNr); Inventur inventur = (Inventur) query.getSingleResult(); if (inventur == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FIND, "Fehler bei findByTInventurdatumMandantCNr. Es gibt keinen Eintrag mit inventurdatum " + tInventurdatum + " f\u00FCr dem mandant " + mandantCNr); } return assembleInventurDto(inventur); // } // catch (FinderException ex) { // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FIND, ex); // } } public InventurDto[] inventurFindDurchgefuehrteInventurenEinesZeitraums(Timestamp tVon, Timestamp tBis, String mandantCNr) throws EJBExceptionLP { if (tVon == null || tBis == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("tVon == null || tBis == null")); } // try { Query query = em.createNamedQuery("InventurfindDurchgefuehrteInventurenEinesZeitraums"); query.setParameter(1, Helper.cutTimestamp(tVon)); query.setParameter(2, Helper.cutTimestamp(tBis)); query.setParameter(3, mandantCNr); Collection<?> cl = query.getResultList(); // if (cl.isEmpty()) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FIND, // null); // } return assembleInventurDtos(cl); // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FIND, // e); // } } public InventurDto[] inventurFindInventurenNachDatum(Timestamp tInventurdatum, String mandantCNr) throws EJBExceptionLP { if (tInventurdatum == null || mandantCNr == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("tVon == null || tBis == null")); } // try { Query query = em.createNamedQuery("InventurfindInventurenNachDatum"); query.setParameter(1, Helper.cutTimestamp(tInventurdatum)); query.setParameter(2, mandantCNr); Collection<?> cl = query.getResultList(); // if (cl.isEmpty()) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FIND, // null); // } return assembleInventurDtos(cl); // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FIND, // e); // } } public InventurDto[] inventurFindOffene(String mandantCNr) throws EJBExceptionLP { Validator.notEmpty(mandantCNr, "mandantCNr"); return assembleInventurDtos(InventurQuery.listByMandantOffene(em, mandantCNr)); } private void setInventurFromInventurDto(Inventur inventur, InventurDto inventurDto) { inventur.setTInventurdatum(inventurDto.getTInventurdatum()); inventur.setCBez(inventurDto.getCBez()); inventur.setTAendern(inventurDto.getTAendern()); inventur.setPersonalIIdAendern(inventurDto.getPersonalIIdAendern()); inventur.setPersonalIIdAbwertungdurchgefuehrt(inventurDto.getPersonalIIdAendern()); inventur.setPersonalIIdInventurdurchgefuehrt(inventurDto.getPersonalIIdAendern()); inventur.setBAbwertungdurchgefuehrt(inventurDto.getBAbwertungdurchgefuehrt()); inventur.setBInventurdurchgefuehrt(inventurDto.getBInventurdurchgefuehrt()); inventur.setTAbwertungdurchgefuehrt(inventurDto.getTAbwertungdurchgefuehrt()); inventur.setTInventurdurchgefuehrt(inventurDto.getTInventurdurchgefuehrt()); inventur.setMandantCNr(inventurDto.getMandantCNr()); inventur.setLagerIId(inventurDto.getLagerIId()); em.merge(inventur); em.flush(); } private InventurDto assembleInventurDto(Inventur inventur) { return InventurDtoAssembler.createDto(inventur); } private InventurDto[] assembleInventurDtos(Collection<?> inventurs) { List<InventurDto> list = new ArrayList<InventurDto>(); if (inventurs != null) { Iterator<?> iterator = inventurs.iterator(); while (iterator.hasNext()) { Inventur inventur = (Inventur) iterator.next(); list.add(assembleInventurDto(inventur)); } } InventurDto[] returnArray = new InventurDto[list.size()]; return (InventurDto[]) list.toArray(returnArray); } public ArrayList<String> sindSeriennumernBereitsInventiert(InventurlisteDto inventurlisteDto, String[] snrs, TheClientDto theClientDto) { ArrayList<String> al = new ArrayList<String>(); if (snrs != null) { for (int i = 0; i < snrs.length; i++) { try { Query query = em .createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr"); query.setParameter(1, inventurlisteDto.getInventurIId()); query.setParameter(2, inventurlisteDto.getLagerIId()); query.setParameter(3, inventurlisteDto.getArtikelIId()); query.setParameter(4, snrs[i]); Inventurliste inventurliste = (Inventurliste) query.getSingleResult(); // bereits inventiert al.add(snrs[i]); } catch (NoResultException e) { // nicht inventiert } } } return al; } public void mehrereSeriennumernInventieren(InventurlisteDto inventurlisteDto, String[] snrs, TheClientDto theClientDto) { if (snrs != null) { for (int i = 0; i < snrs.length; i++) { try { Query query = em .createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr"); query.setParameter(1, inventurlisteDto.getInventurIId()); query.setParameter(2, inventurlisteDto.getLagerIId()); query.setParameter(3, inventurlisteDto.getArtikelIId()); query.setParameter(4, snrs[i]); Inventurliste inventurliste = (Inventurliste) query.getSingleResult(); // Gibts schon, auslassen } catch (NoResultException e) { inventurlisteDto.setCSeriennrchargennr(snrs[i]); createInventurliste(inventurlisteDto, false, theClientDto); } } } } public void inventurlisteErfassenMitScanner(InventurlisteDto inventurlisteDto, boolean bKorrekturbuchung, boolean bPruefeAufZuGrosseMenge, TheClientDto theClientDto) throws EJBExceptionLP { if (inventurlisteDto.getCSeriennrchargennr() != null) { Inventurliste inventurliste; try { Query query = em .createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr"); query.setParameter(1, inventurlisteDto.getInventurIId()); query.setParameter(2, inventurlisteDto.getLagerIId()); query.setParameter(3, inventurlisteDto.getArtikelIId()); query.setParameter(4, inventurlisteDto.getCSeriennrchargennr()); inventurliste = (Inventurliste) query.getSingleResult(); inventurlisteDto.setIId(inventurliste.getIId()); if (bKorrekturbuchung == false) { inventurlisteDto.setNInventurmenge( inventurliste.getNInventurmenge().add(inventurlisteDto.getNInventurmenge())); } } catch (NoResultException e) { createInventurliste(inventurlisteDto, bPruefeAufZuGrosseMenge, theClientDto); } } else { Query query = em.createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIId"); query.setParameter(1, inventurlisteDto.getInventurIId()); query.setParameter(2, inventurlisteDto.getLagerIId()); query.setParameter(3, inventurlisteDto.getArtikelIId()); InventurlisteDto[] dtos = assembleInventurlisteDtos(query.getResultList()); if (dtos != null && dtos.length > 0) { inventurlisteDto.setIId(dtos[0].getIId()); if (bKorrekturbuchung == false) { inventurlisteDto.setNInventurmenge( dtos[0].getNInventurmenge().add(inventurlisteDto.getNInventurmenge())); } } else { createInventurliste(inventurlisteDto, bPruefeAufZuGrosseMenge, theClientDto); return; } } try { LockMeDto[] dtos = getTheJudgeFac().findByWerWas("lockme_inventur", inventurlisteDto.getInventurIId() + ""); if (dtos != null && dtos.length > 0) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_IS_ALREADY_LOCKED, new Exception("FEHLER_IS_ALREADY_LOCKED")); } else { updateInventurliste(inventurlisteDto, bPruefeAufZuGrosseMenge, theClientDto); } } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } } public void inventurlisteFuerSerienChargennummerAbschliessen(Integer inventurIId, Integer artikelIId, Integer lagerIId, TheClientDto theClientDto) { SeriennrChargennrAufLagerDto[] dtos = null; try { dtos = getLagerFac().getAllSerienChargennrAufLagerInfoDtos(artikelIId, lagerIId, false, null, theClientDto); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } for (int i = 0; i < dtos.length; i++) { try { Query query = em .createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr"); query.setParameter(1, inventurIId); query.setParameter(2, lagerIId); query.setParameter(3, artikelIId); query.setParameter(4, dtos[i].getCSeriennrChargennr()); Inventurliste inventurliste = (Inventurliste) query.getSingleResult(); if (inventurliste == null) { InventurlisteDto inventurlisteDto = new InventurlisteDto(); inventurlisteDto.setArtikelIId(artikelIId); inventurlisteDto.setLagerIId(lagerIId); inventurlisteDto.setInventurIId(inventurIId); inventurlisteDto.setCSeriennrchargennr(dtos[i].getCSeriennrChargennr()); inventurlisteDto.setNInventurmenge(new BigDecimal(0)); createInventurliste(inventurlisteDto, false, theClientDto); } } catch (NoResultException ex1) { InventurlisteDto inventurlisteDto = new InventurlisteDto(); inventurlisteDto.setArtikelIId(artikelIId); inventurlisteDto.setLagerIId(lagerIId); inventurlisteDto.setInventurIId(inventurIId); inventurlisteDto.setCSeriennrchargennr(dtos[i].getCSeriennrChargennr()); inventurlisteDto.setNInventurmenge(new BigDecimal(0)); createInventurliste(inventurlisteDto, false, theClientDto); } } } public Integer createInventurliste(InventurlisteDto inventurlisteDto, boolean bPruefeAufZuGrosseMenge, TheClientDto theClientDto) throws EJBExceptionLP { if (inventurlisteDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurlisteDto == null")); } if (inventurlisteDto.getInventurIId() == null || inventurlisteDto.getLagerIId() == null || inventurlisteDto.getArtikelIId() == null || inventurlisteDto.getNInventurmenge() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception( "inventurlisteDto.getInventurIId() == null || inventurlisteDto.getLagerIId() == null || inventurlisteDto.getArtikelIId() == null || inventurlisteDto.getNInventurmenge() == null")); } try { if (inventurlisteDto.getCSeriennrchargennr() != null) { Query query = em .createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr"); query.setParameter(1, inventurlisteDto.getInventurIId()); query.setParameter(2, inventurlisteDto.getLagerIId()); query.setParameter(3, inventurlisteDto.getArtikelIId()); query.setParameter(4, inventurlisteDto.getCSeriennrchargennr()); Inventurliste doppelt = (Inventurliste) query.getSingleResult(); if (doppelt != null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DUPLICATE_UNIQUE, new Exception("WW_INVENTURLISTE.UC")); } } else { Query query1 = em.createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIId"); query1.setParameter(1, inventurlisteDto.getInventurIId()); query1.setParameter(2, inventurlisteDto.getLagerIId()); query1.setParameter(3, inventurlisteDto.getArtikelIId()); Collection<?> c = query1.getResultList(); if (c.size() > 0) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DUPLICATE_UNIQUE, new Exception("WW_INVENTURLISTE.UC")); } } } catch (NoResultException ex) { // NIX } // Wenn ein Lager in der Inventur angegeben ist, dann darf nur dieses // inventiert werden. InventurDto inventurDto = inventurFindByPrimaryKey(inventurlisteDto.getInventurIId()); if (inventurDto.getLagerIId() != null && !inventurDto.getLagerIId().equals(inventurlisteDto.getLagerIId())) { throw new EJBExceptionLP( EJBExceptionLP.FEHLER_INVENTUR_ES_DARF_NUR_DAS_LAGER_DER_INVENTUR_VERWENDET_WERDEN, new Exception("FEHLER_INVENTUR_ES_DARF_NUR_DAS_LAGER_DER_INVENTUR_VERWENDET_WERDEN")); } try { // generieren von primary key PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_INVENTURLISTE); inventurlisteDto.setIId(pk); inventurlisteDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); inventurlisteDto.setTAendern(new Timestamp(System.currentTimeMillis())); Inventurliste inventurliste = new Inventurliste(inventurlisteDto.getIId(), inventurlisteDto.getInventurIId(), inventurlisteDto.getLagerIId(), inventurlisteDto.getArtikelIId(), inventurlisteDto.getNInventurmenge(), inventurlisteDto.getPersonalIIdAendern()); em.persist(inventurliste); em.flush(); setInventurlisteFromInventurlisteDto(inventurliste, inventurlisteDto); // Korrekturbuchung durchfuehren + ins Protokoll schreiben inventurlisteDto.setArtikelDto( getArtikelFac().artikelFindByPrimaryKeySmall(inventurlisteDto.getArtikelIId(), theClientDto)); if (Helper.short2boolean(inventurlisteDto.getArtikelDto().getBSeriennrtragend())) { if (inventurlisteDto.getNInventurmenge().doubleValue() == 0 || inventurlisteDto.getNInventurmenge().doubleValue() == 1) { } else { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_MENGE_FUER_SERIENNUMMERNBUCHUNG_MUSS_EINS_SEIN, new Exception()); } } java.math.BigDecimal lagerstand = new java.math.BigDecimal(0); if (Helper.short2boolean(inventurlisteDto.getArtikelDto().getBChargennrtragend()) || Helper.short2boolean(inventurlisteDto.getArtikelDto().getBSeriennrtragend())) { lagerstand = getLagerFac().getMengeAufLager(inventurlisteDto.getArtikelIId(), inventurlisteDto.getLagerIId(), inventurlisteDto.getCSeriennrchargennr(), theClientDto); } else { lagerstand = getLagerFac().getLagerstandOhneExc(inventurlisteDto.getArtikelIId(), inventurlisteDto.getLagerIId(), theClientDto); } java.math.BigDecimal diff = inventurlisteDto.getNInventurmenge().subtract(lagerstand); InventurprotokollDto inventurprotokollDto = new InventurprotokollDto(); inventurprotokollDto.setInventurIId(inventurlisteDto.getInventurIId()); inventurprotokollDto.setInventurlisteIId(inventurlisteDto.getIId()); inventurprotokollDto.setNKorrekturmenge(diff); if (bPruefeAufZuGrosseMenge == true) { ParametermandantDto parametermandantautoDebitDto = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_ARTIKEL, ParameterFac.PARAMETER_ERLAUBTE_ABWEICHUNG_INVENTURLISTE); int i = (Integer) parametermandantautoDebitDto.getCWertAsObject(); if (diff.abs().doubleValue() > i) { ArrayList alInfo = new ArrayList(); alInfo.add(i); throw new EJBExceptionLP(EJBExceptionLP.FEHLER_INVENTUR_MENGE_ZU_GROSS, alInfo, new Exception("FEHLER_INVENTUR_MENGE_ZU_GROSS")); } } java.math.BigDecimal gestpreis = getLagerFac().getGemittelterGestehungspreisEinesLagers( inventurlisteDto.getArtikelIId(), inventurlisteDto.getLagerIId(), theClientDto); inventurprotokollDto.setNInventurpreis(gestpreis); inventurprotokollDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); inventurprotokollDto.setTAendern(new java.sql.Timestamp(System.currentTimeMillis())); inventurprotokollDto.setTZeitpunkt(new java.sql.Timestamp(System.currentTimeMillis())); if (diff.doubleValue() < 0) { getLagerFac().bucheAb(LocaleFac.BELEGART_INVENTUR, inventurlisteDto.getInventurIId(), inventurlisteDto.getIId(), inventurlisteDto.getArtikelIId(), diff.abs(), gestpreis, inventurlisteDto.getLagerIId(), inventurlisteDto.getCSeriennrchargennr(), new java.sql.Timestamp(System.currentTimeMillis()), theClientDto); createInventurprotokoll(inventurprotokollDto, theClientDto); } else if (diff.doubleValue() > 0) { getLagerFac().bucheZu(LocaleFac.BELEGART_INVENTUR, inventurlisteDto.getInventurIId(), inventurlisteDto.getIId(), inventurlisteDto.getArtikelIId(), diff, gestpreis, inventurlisteDto.getLagerIId(), inventurlisteDto.getCSeriennrchargennr(), new java.sql.Timestamp(System.currentTimeMillis()), theClientDto, null, true); createInventurprotokoll(inventurprotokollDto, theClientDto); } return inventurlisteDto.getIId(); } catch (EntityExistsException e) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_ANLEGEN, e); } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); return null; } } public void removeInventurliste(InventurlisteDto inventurlisteDto, TheClientDto theClientDto) throws EJBExceptionLP { myLogger.entry(); if (inventurlisteDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurlisteDto == null")); } if (inventurlisteDto.getIId() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception("inventurlisteDto.getIId() == null")); } // try { Inventurliste toRemove = em.find(Inventurliste.class, inventurlisteDto.getIId()); if (toRemove == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei removeInventurliste. Es gibt kein iid " + inventurlisteDto.getIId() + "\ndto.toString(): " + inventurlisteDto.toString()); } try { em.remove(toRemove); em.flush(); } catch (EntityExistsException er) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, er); } // } // catch (RemoveException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEIM_LOESCHEN, e); // } } public void removeInventurprotokoll(Integer inventurprotokollIId) { // try { Inventurprotokoll toRemove = em.find(Inventurprotokoll.class, inventurprotokollIId); try { em.remove(toRemove); em.flush(); } catch (EntityExistsException er) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, er); } } public Integer updateInventurliste(InventurlisteDto inventurlisteDto, boolean bPruefeAufZuGrosseMenge, TheClientDto theClientDto) throws EJBExceptionLP { myLogger.entry(); if (inventurlisteDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurlisteDto == null")); } if (inventurlisteDto.getIId() == null || inventurlisteDto.getInventurIId() == null || inventurlisteDto.getLagerIId() == null || inventurlisteDto.getArtikelIId() == null || inventurlisteDto.getNInventurmenge() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception( "inventurlisteDto.getIId() == null || inventurlisteDto.getInventurIId() == null || inventurlisteDto.getLagerIId() == null || inventurlisteDto.getArtikelIId() == null || inventurlisteDto.getNInventurmenge() == null || inventurlisteDto.getNInventurpreis() == null")); } Integer iId = inventurlisteDto.getIId(); Inventurliste inventurliste = null; BigDecimal differenzInventurmenge = new BigDecimal(0); // try { inventurliste = em.find(Inventurliste.class, iId); if (inventurliste == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei updateInventurliste. Es gint keine iid " + iId + "\ndto.toString(): " + inventurlisteDto.toString()); } java.math.BigDecimal lagerstand = new java.math.BigDecimal(0); inventurlisteDto.setArtikelDto( getArtikelFac().artikelFindByPrimaryKeySmall(inventurlisteDto.getArtikelIId(), theClientDto)); try { if (Helper.short2boolean(inventurlisteDto.getArtikelDto().getBChargennrtragend()) || Helper.short2boolean(inventurlisteDto.getArtikelDto().getBSeriennrtragend())) { lagerstand = getLagerFac().getMengeAufLager(inventurlisteDto.getArtikelIId(), inventurlisteDto.getLagerIId(), inventurlisteDto.getCSeriennrchargennr(), theClientDto); } else { lagerstand = getLagerFac().getLagerstandOhneExc(inventurlisteDto.getArtikelIId(), inventurlisteDto.getLagerIId(), theClientDto); } } catch (RemoteException e1) { throwEJBExceptionLPRespectOld(e1); } differenzInventurmenge = inventurlisteDto.getNInventurmenge().subtract(lagerstand); // } // catch (FinderException ex) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // ex); // } // Wenn ein Lager in der Inventur angegeben ist, dann darf nur dieses // inventiert werden. InventurDto inventurDto = inventurFindByPrimaryKey(inventurlisteDto.getInventurIId(), theClientDto); if (inventurDto.getLagerIId() != null && !inventurDto.getLagerIId().equals(inventurlisteDto.getLagerIId())) { throw new EJBExceptionLP( EJBExceptionLP.FEHLER_INVENTUR_ES_DARF_NUR_DAS_LAGER_DER_INVENTUR_VERWENDET_WERDEN, new Exception("FEHLER_INVENTUR_ES_DARF_NUR_DAS_LAGER_DER_INVENTUR_VERWENDET_WERDEN")); } Integer iId_Alt = inventurlisteDto.getIId(); // Neuen eintrag anlegen // generieren von primary key PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_INVENTURLISTE); inventurlisteDto.setIId(pk); inventurlisteDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); inventurlisteDto.setTAendern(new Timestamp(System.currentTimeMillis())); try { Inventurliste inventurlisteNeueintrag = new Inventurliste(inventurlisteDto.getIId(), inventurlisteDto.getInventurIId(), inventurlisteDto.getLagerIId(), inventurlisteDto.getArtikelIId(), inventurlisteDto.getNInventurmenge(), inventurlisteDto.getPersonalIIdAendern()); em.persist(inventurliste); em.flush(); setInventurlisteFromInventurlisteDto(inventurlisteNeueintrag, inventurlisteDto); } catch (EntityExistsException e) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_ANLEGEN, e); } // Protokoll an den neuen Eintrag anhaengen // try { Query query = em.createNamedQuery("InventurprotokollfindByInventurlisteIId"); query.setParameter(1, iId_Alt); Collection<?> inventurprotokolls = query.getResultList(); // if (inventurprotokolls.isEmpty()) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // null); // // } Iterator<?> iterator = inventurprotokolls.iterator(); while (iterator.hasNext()) { Inventurprotokoll inventurprotokoll = (Inventurprotokoll) iterator.next(); inventurprotokoll.setInventurlisteIId(inventurlisteDto.getIId()); } // } // catch (FinderException ex2) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // ex2); // } // Alten Eintrag loechen try { em.remove(inventurliste); em.flush(); } catch (EntityExistsException ex3) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, ex3); } try { // Korrekturbuchung durchfuehren + ins Protokoll schreiben inventurlisteDto.setArtikelDto( getArtikelFac().artikelFindByPrimaryKeySmall(inventurlisteDto.getArtikelIId(), theClientDto)); if (Helper.short2boolean(inventurlisteDto.getArtikelDto().getBSeriennrtragend())) { if (inventurlisteDto.getNInventurmenge().doubleValue() == 0 || inventurlisteDto.getNInventurmenge().doubleValue() == 1) { } else { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_MENGE_FUER_SERIENNUMMERNBUCHUNG_MUSS_EINS_SEIN, new Exception()); } } InventurprotokollDto inventurprotokollDto = new InventurprotokollDto(); inventurprotokollDto.setInventurIId(inventurlisteDto.getInventurIId()); inventurprotokollDto.setInventurlisteIId(inventurlisteDto.getIId()); inventurprotokollDto.setNKorrekturmenge(differenzInventurmenge); java.math.BigDecimal gestpreis = getLagerFac().getGemittelterGestehungspreisEinesLagers( inventurlisteDto.getArtikelIId(), inventurlisteDto.getLagerIId(), theClientDto); inventurprotokollDto.setNInventurpreis(gestpreis); inventurprotokollDto.setPersonalIIdAendern(theClientDto.getIDPersonal()); inventurprotokollDto.setTAendern(new java.sql.Timestamp(System.currentTimeMillis())); inventurprotokollDto.setTZeitpunkt(new java.sql.Timestamp(System.currentTimeMillis())); if (bPruefeAufZuGrosseMenge == true) { ParametermandantDto parametermandantautoDebitDto = getParameterFac().getMandantparameter( theClientDto.getMandant(), ParameterFac.KATEGORIE_ARTIKEL, ParameterFac.PARAMETER_ERLAUBTE_ABWEICHUNG_INVENTURLISTE); int i = (Integer) parametermandantautoDebitDto.getCWertAsObject(); if (differenzInventurmenge.abs().doubleValue() > i) { ArrayList alInfo = new ArrayList(); alInfo.add(i); throw new EJBExceptionLP(EJBExceptionLP.FEHLER_INVENTUR_MENGE_ZU_GROSS, alInfo, new Exception("FEHLER_INVENTUR_MENGE_ZU_GROSS")); } } if (differenzInventurmenge.doubleValue() < 0) { getLagerFac().bucheAb(LocaleFac.BELEGART_INVENTUR, inventurlisteDto.getInventurIId(), inventurlisteDto.getIId(), inventurlisteDto.getArtikelIId(), differenzInventurmenge.abs(), gestpreis, inventurlisteDto.getLagerIId(), inventurlisteDto.getCSeriennrchargennr(), new java.sql.Timestamp(System.currentTimeMillis()), theClientDto); createInventurprotokoll(inventurprotokollDto, theClientDto); } else if (differenzInventurmenge.doubleValue() > 0) { getLagerFac().bucheZu(LocaleFac.BELEGART_INVENTUR, inventurlisteDto.getInventurIId(), inventurlisteDto.getIId(), inventurlisteDto.getArtikelIId(), differenzInventurmenge, gestpreis, inventurlisteDto.getLagerIId(), inventurlisteDto.getCSeriennrchargennr(), new java.sql.Timestamp(System.currentTimeMillis()), theClientDto, null, true); createInventurprotokoll(inventurprotokollDto, theClientDto); } } catch (RemoteException ex1) { throwEJBExceptionLPRespectOld(ex1); } return inventurlisteDto.getIId(); } @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printInventurprotokoll(Integer inventurIId, Integer lagerIId, TheClientDto theClientDto) { index = -1; sAktuellerReport = InventurFac.REPORT_INVENTURPROTOKOLL; SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); String subQueryLager = "(SELECT sum(al.n_lagerstand) FROM FLRArtikellager al WHERE compId.artikel_i_id=inventurprotokoll.flrinventurliste.flrartikel.i_id "; if (lagerIId != null) { subQueryLager += " AND compId.lager_i_id=" + lagerIId; } subQueryLager += " ) as lagerstand "; String sQuery = "SELECT inventurprotokoll,(SELECT spr.c_bez FROM FLRArtikellistespr as spr WHERE spr.Id.artikelliste=inventurprotokoll.flrinventurliste.flrartikel.i_id AND spr.Id.locale='" + theClientDto.getLocUiAsString() + "' )," + subQueryLager + " from FLRInventurprotokoll inventurprotokoll WHERE inventurprotokoll.flrinventurliste.flrlager.mandant_c_nr='" + theClientDto.getMandant() + "' AND inventurprotokoll.flrinventurliste.flrinventur.i_id=" + inventurIId; if (lagerIId != null) { sQuery = sQuery + " AND inventurprotokoll.flrinventurliste.flrlager.i_id=" + lagerIId; } sQuery += " ORDER BY inventurprotokoll.flrinventurliste.flrartikel.c_nr ASC"; org.hibernate.Query inventurliste = session.createQuery(sQuery); List<?> resultList = inventurliste.list(); Iterator<?> resultListIterator = resultList.iterator(); int row = 0; data = new Object[resultList.size()][8]; while (resultListIterator.hasNext()) { Object[] o = (Object[]) resultListIterator.next(); FLRInventurprotokoll flrinventurprotokoll = (FLRInventurprotokoll) o[0]; data[row][REPORT_INVENTURPROTOKOLL_ARTIKELNUMMER] = flrinventurprotokoll.getFlrinventurliste() .getFlrartikel().getC_nr(); data[row][REPORT_INVENTURPROTOKOLL_ARTIKELBEZEICHNUNG] = o[1]; data[row][REPORT_INVENTURPROTOKOLL_LAGERSTAND] = o[2]; data[row][REPORT_INVENTURPROTOKOLL_KORREKTURMENGE] = flrinventurprotokoll.getN_korrekturmenge(); data[row][REPORT_INVENTURPROTOKOLL_INVENTURPREIS] = flrinventurprotokoll.getN_inventurpreis(); data[row][REPORT_INVENTURPROTOKOLL_INVENTURMENGE] = flrinventurprotokoll.getFlrinventurliste() .getN_inventurmenge(); data[row][REPORT_INVENTURPROTOKOLL_KORREKTURZEITPUNKT] = flrinventurprotokoll.getT_zeitpunkt(); data[row][REPORT_INVENTURPROTOKOLL_ARTIKELART] = flrinventurprotokoll.getFlrinventurliste() .getFlrartikel().getArtikelart_c_nr(); row++; } session.close(); HashMap<String, Object> parameter = new HashMap<String, Object>(); index = -1; sAktuellerReport = InventurFac.REPORT_INVENTURPROTOKOLL; try { if (lagerIId != null) { LagerDto dto = getLagerFac().lagerFindByPrimaryKey(lagerIId); parameter.put("P_LAGER", dto.getCNr()); } else { parameter.put("P_LAGER", "ALLE"); } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } try { parameter.put("P_WAEHRUNG", getMandantFac() .mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto).getWaehrungCNr()); } catch (RemoteException ex1) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1); } InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); parameter.put("P_INVENTUR", inventurDto.getCBez()); parameter.put("P_INVENTURDATUM", inventurDto.getTInventurdatum()); initJRDS(parameter, InventurFac.REPORT_MODUL, InventurFac.REPORT_INVENTURPROTOKOLL, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } /** * Erstellt eine Inventurstand einer best. Inventur * * @param inventurIId * Inventur-ID * @param lagerIId * Lager-ID * @param theClientDto * String * @return JasperPrint */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printInventurstand(Integer inventurIId, Integer lagerIId, int iSortierung, TheClientDto theClientDto) { index = -1; sAktuellerReport = InventurFac.REPORT_INVENTURSTAND; HashMap<String, Object> parameter = new HashMap<String, Object>(); SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); session.enableFilter("filterMandant").setParameter("paramMandant", theClientDto.getMandant()); session.enableFilter("filterLocale").setParameter("paramLocale", Helper.locale2String(theClientDto.getLocUi())); String subQueryLager = "(SELECT SUM(al.n_lagerstand) FROM FLRArtikellager al WHERE compId.artikel_i_id=inventurstand.flrartikel.i_id "; if (lagerIId != null) { subQueryLager += " AND compId.lager_i_id=" + lagerIId; } subQueryLager += " ) as lagerstand "; String sQuery = "SELECT inventurstand, aspr.c_bez , " + subQueryLager + ",aspr.c_kbez,aspr.c_zbez,aspr.c_zbez2,(SELECT stkl FROM FLRStueckliste stkl WHERE stkl.artikel_i_id=inventurstand.flrartikel.i_id) from FLRInventurstand as inventurstand LEFT OUTER JOIN inventurstand.flrartikel.artikelsprset AS aspr LEFT OUTER JOIN inventurstand.flrartikel.flrartikelgruppe as ag LEFT OUTER JOIN inventurstand.flrartikel.flrartikelklasse as ak WHERE inventurstand.flrlager.mandant_c_nr='" + theClientDto.getMandant() + "' AND inventurstand.flrinventur.i_id=" + inventurIId; if (lagerIId != null) { sQuery = sQuery + " AND inventurstand.flrlager.i_id=" + lagerIId; } if (iSortierung == InventurFac.REPORT_INVENTURSTAND_SORTIERUNG_ARTIKELNR) { sQuery = sQuery + "ORDER BY inventurstand.flrlager.i_id , inventurstand.flrartikel.c_nr"; parameter.put("P_SORTIERUNG", getTextRespectUISpr("artikel.artikelnummerlang", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == InventurFac.REPORT_INVENTURSTAND_SORTIERUNG_ARTIKELGRUPPE) { sQuery = sQuery + "ORDER BY inventurstand.flrlager.i_id , ag.c_nr , inventurstand.flrartikel.c_nr"; parameter.put("P_SORTIERUNG", getTextRespectUISpr("lp.artikelgruppe", theClientDto.getMandant(), theClientDto.getLocUi())); } else if (iSortierung == InventurFac.REPORT_INVENTURSTAND_SORTIERUNG_ARTIKELKLASSE) { sQuery = sQuery + "ORDER BY inventurstand.flrlager.i_id , ak.c_nr , inventurstand.flrartikel.c_nr"; parameter.put("P_SORTIERUNG", getTextRespectUISpr("lp.artikelklasse", theClientDto.getMandant(), theClientDto.getLocUi())); } org.hibernate.Query inventurliste = session.createQuery(sQuery); List<?> resultList = inventurliste.list(); Iterator<?> resultListIterator = resultList.iterator(); int row = 0; String letzterArtikel = null; Object[][] dataHelp = new Object[resultList.size()][15]; while (resultListIterator.hasNext()) { Object[] o = (Object[]) resultListIterator.next(); FLRInventurstand flrinventurstand = (FLRInventurstand) o[0]; if ((!flrinventurstand.getFlrartikel().getC_nr().equals(letzterArtikel))) { if (Helper.short2boolean(flrinventurstand.getFlrartikel().getB_chargennrtragend()) == true || Helper.short2boolean(flrinventurstand.getFlrartikel().getB_seriennrtragend()) == true) { Query query = em.createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIId"); query.setParameter(1, inventurIId); query.setParameter(2, flrinventurstand.getFlrlager().getI_id()); query.setParameter(3, flrinventurstand.getFlrartikel().getI_id()); Collection<?> cl = query.getResultList(); InventurlisteDto[] inventurlisteDtos = assembleInventurlisteDtos(cl); BigDecimal menge = new BigDecimal(0); String snrs = ""; for (int i = 0; i < inventurlisteDtos.length; i++) { menge = menge.add(inventurlisteDtos[i].getNInventurmenge()); if (Helper .short2boolean(flrinventurstand.getFlrartikel().getB_chargennrtragend()) == true) { snrs = snrs + inventurlisteDtos[i].getNInventurmenge() + " " + flrinventurstand.getFlrartikel().getEinheit_c_nr() + " " + inventurlisteDtos[i].getCSeriennrchargennr() + ", "; } else if (Helper .short2boolean(flrinventurstand.getFlrartikel().getB_seriennrtragend()) == true) { snrs = snrs + inventurlisteDtos[i].getCSeriennrchargennr() + ", "; } // } // } // catch (FinderException ex1) { // dataHelp[row][REPORT_INVENTURSTAND_INVENTURMENGE] = // new BigDecimal(0); // } } dataHelp[row][REPORT_INVENTURSTAND_SERIENNUMMERCHARGENNUMMER] = snrs; } dataHelp[row][REPORT_INVENTURSTAND_INVENTURMENGE] = flrinventurstand.getN_inventurmenge(); dataHelp[row][REPORT_INVENTURSTAND_ARTIKELNUMMER] = flrinventurstand.getFlrartikel().getC_nr(); dataHelp[row][REPORT_INVENTURSTAND_ARTIKELBEZEICHNUNG] = o[1]; dataHelp[row][REPORT_INVENTURSTAND_ARTIKELKURZBEZEICHNUNG] = o[3]; dataHelp[row][REPORT_INVENTURSTAND_ARTIKELZUSATZBEZEICHNUNG] = o[4]; dataHelp[row][REPORT_INVENTURSTAND_ARTIKELZUSATZBEZEICHNUNG2] = o[5]; if (flrinventurstand.getFlrartikel().getFlrartikelklasse() != null) { dataHelp[row][REPORT_INVENTURSTAND_ARTIKELKLASSE] = flrinventurstand.getFlrartikel() .getFlrartikelklasse().getC_nr(); } if (flrinventurstand.getFlrartikel().getFlrartikelgruppe() != null) { dataHelp[row][REPORT_INVENTURSTAND_ARTIKELGRUPPE] = flrinventurstand.getFlrartikel() .getFlrartikelgruppe().getC_nr(); } dataHelp[row][REPORT_INVENTURSTAND_LAGER] = flrinventurstand.getFlrlager().getC_nr(); dataHelp[row][REPORT_INVENTURSTAND_LAGERSTAND] = o[2]; if (o[6] == null) { dataHelp[row][REPORT_INVENTURSTAND_STUECKLISTE] = new Boolean(false); } else { dataHelp[row][REPORT_INVENTURSTAND_STUECKLISTE] = new Boolean(true); } dataHelp[row][REPORT_INVENTURSTAND_ARTIKELART] = flrinventurstand.getFlrartikel() .getArtikelart_c_nr(); if (flrinventurstand.getN_inventurpreis() != null) { dataHelp[row][REPORT_INVENTURSTAND_INVENTURPREIS] = flrinventurstand.getN_inventurpreis(); dataHelp[row][REPORT_INVENTURSTAND_INVENTURWERT] = ((BigDecimal) dataHelp[row][REPORT_INVENTURSTAND_INVENTURMENGE]) .multiply(flrinventurstand.getN_inventurpreis()); } else { dataHelp[row][REPORT_INVENTURSTAND_INVENTURWERT] = new java.math.BigDecimal(0); dataHelp[row][REPORT_INVENTURSTAND_INVENTURPREIS] = new java.math.BigDecimal(0); } row++; } letzterArtikel = flrinventurstand.getFlrartikel().getC_nr(); } session.close(); data = new Object[row][7]; for (int i = 0; i < row; i++) { data[i] = dataHelp[i]; } index = -1; sAktuellerReport = InventurFac.REPORT_INVENTURSTAND; parameter.put("P_INVENTUR", inventurFindByPrimaryKey(inventurIId, theClientDto).getCBez()); try { if (lagerIId != null) { LagerDto dto = getLagerFac().lagerFindByPrimaryKey(lagerIId); parameter.put("P_LAGER", dto.getCNr()); } else { parameter.put("P_LAGER", "ALLE"); } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } try { parameter.put("P_WAEHRUNG", getMandantFac() .mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto).getWaehrungCNr()); } catch (RemoteException ex1) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1); } initJRDS(parameter, InventurFac.REPORT_MODUL, InventurFac.REPORT_INVENTURSTAND, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); // lpReport.saveHTML("c:/anwesenheitsliste.html"); return getReportPrint(); } public InventurstandDto inventurstandfindByInventurIIdArtikelIIdLagerIId(Integer inventurIId, Integer lagerIId, Integer artikelIId, TheClientDto theClientDto) { Query query = em.createNamedQuery("InventurstandfindByInventurIIdArtikelIIdLagerIId"); query.setParameter(1, inventurIId); query.setParameter(2, artikelIId); query.setParameter(3, lagerIId); Inventurstand inventurstand = (Inventurstand) query.getSingleResult(); return assembleInventurstandDto(inventurstand); } @TransactionAttribute(TransactionAttributeType.NEVER) public String importiereInventurliste(Integer inventurIId, ArrayList<InvenurlisteImportDto> alImportdaten, TheClientDto theClientDto) { String log = ""; byte[] CRLFAscii = { 13, 10 }; InventurDto inventurDto = null; try { inventurDto = getInventurFac().inventurFindByPrimaryKey(inventurIId, theClientDto); } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } if (inventurDto.getLagerIId() != null) { for (int i = 0; i < alImportdaten.size(); i++) { InvenurlisteImportDto impDto = alImportdaten.get(i); ArtikelDto aDto = getArtikelFac().artikelFindByCNrMandantCNrOhneExc(impDto.getCArtikelnummer(), theClientDto.getMandant()); if (aDto != null) { BigDecimal bdMenge = null; try { bdMenge = new BigDecimal(impDto.getCInventurmenge()); } catch (NumberFormatException e) { log += "Zeile -" + (i + 1) + "- Die Menge " + impDto.getCInventurmenge() + " ist nicht g\u00FCltig" + new String(CRLFAscii); continue; } InventurlisteDto ilDto = new InventurlisteDto(); ilDto.setArtikelIId(aDto.getIId()); ilDto.setInventurIId(inventurIId); ilDto.setLagerIId(inventurDto.getLagerIId()); ilDto.setNInventurmenge(bdMenge); // Wenn bereits in Inventurliste, dann auslassen und loggen InventurlisteDto[] ilVorhandenDtos = null; try { ilVorhandenDtos = getInventurFac().inventurlisteFindByInventurIIdLagerIIdArtikelIId( inventurIId, inventurDto.getLagerIId(), aDto.getIId(), theClientDto); if (ilVorhandenDtos.length == 0) { getInventurFac().createInventurliste(ilDto, false, theClientDto); } else { log += "Zeile -" + (i + 1) + "- Es gibt bereits einen Inventurlisteneintrag f\u00FCr den Artikel " + impDto.getCArtikelnummer() + new String(CRLFAscii); continue; } } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } else { log += "Zeile -" + (i + 1) + "- Es konnte keine Artikelnummer " + impDto.getCArtikelnummer() + " gefunden werden." + new String(CRLFAscii); continue; } } } else { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_INVENTUR_IMPORT_NUR_MIT_LAGER_MOEGLICH, new Exception("EJBExceptionLP.FEHLER_INVENTUR_IMPORT_NUR_MIT_LAGER_MOEGLICH")); } return log; } public InventurstandDto inventurstandfindByInventurIIdArtikelIIdLagerIIdOhneExc(Integer inventurIId, Integer lagerIId, Integer artikelIId, TheClientDto theClientDto) { Query query = em.createNamedQuery("InventurstandfindByInventurIIdArtikelIIdLagerIId"); query.setParameter(1, inventurIId); query.setParameter(2, artikelIId); query.setParameter(3, lagerIId); Inventurstand inventurstand; try { inventurstand = (Inventurstand) query.getSingleResult(); return assembleInventurstandDto(inventurstand); } catch (NoResultException e) { return null; } } /** * Erstellt eine Inventurliste einer best. Inventur * * @param inventurIId * Inventur-ID * @param lagerIId * Lager-ID * @param theClientDto * String * @return JasperPrint */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printInventurliste(Integer inventurIId, Integer lagerIId, boolean bInventurpreis, TheClientDto theClientDto) { Session session = FLRSessionFactory.getFactory().openSession(); String sQuery = "SELECT inventurliste, (SELECT spr.c_bez FROM FLRArtikellistespr as spr WHERE spr.Id.artikelliste=inventurliste.flrartikel.i_id AND spr.Id.locale='" + theClientDto.getLocUiAsString() + "' ) from FLRInventurliste as inventurliste WHERE inventurliste.flrinventur.i_id=" + inventurIId; sQuery = sQuery + " ORDER BY inventurliste.flrartikel.c_nr"; org.hibernate.Query inventurliste = session.createQuery(sQuery); List<?> resultList = inventurliste.list(); Iterator<?> resultListIterator = resultList.iterator(); int row = 0; InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); String letzterArtikel = null; Object[][] dataHelp = new Object[resultList.size()][9]; while (resultListIterator.hasNext()) { Object[] o = (Object[]) resultListIterator.next(); FLRInventurliste flrinventurliste = (FLRInventurliste) o[0]; if ((!flrinventurliste.getFlrartikel().getC_nr().equals(letzterArtikel))) { if (Helper.short2boolean(flrinventurliste.getFlrartikel().getB_chargennrtragend()) == true || Helper.short2boolean(flrinventurliste.getFlrartikel().getB_seriennrtragend()) == true) { // try { Query query = em.createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIId"); query.setParameter(1, inventurIId); query.setParameter(2, flrinventurliste.getFlrlager().getI_id()); query.setParameter(3, flrinventurliste.getFlrartikel().getI_id()); Collection<?> cl = query.getResultList(); // if (cl.isEmpty()) { // dataHelp[row][REPORT_INVENTURLISTE_INVENTURMENGE] = new // BigDecimal(0); // } // else { InventurlisteDto[] inventurlisteDtos = assembleInventurlisteDtos(cl); BigDecimal menge = new BigDecimal(0); String snrs = ""; for (int i = 0; i < inventurlisteDtos.length; i++) { menge = menge.add(inventurlisteDtos[i].getNInventurmenge()); if (Helper .short2boolean(flrinventurliste.getFlrartikel().getB_chargennrtragend()) == true) { snrs = snrs + inventurlisteDtos[i].getNInventurmenge() + " " + flrinventurliste.getFlrartikel().getEinheit_c_nr() + " " + inventurlisteDtos[i].getCSeriennrchargennr() + ", "; } else if (Helper .short2boolean(flrinventurliste.getFlrartikel().getB_seriennrtragend()) == true) { snrs = snrs + inventurlisteDtos[i].getCSeriennrchargennr() + ", "; } // } dataHelp[row][REPORT_INVENTURLISTE_INVENTURMENGE] = menge; dataHelp[row][REPORT_INVENTURLISTE_SERIENNUMMERCHARGENNUMMER] = snrs; // } // catch (FinderException ex1) { // dataHelp[row][REPORT_INVENTURLISTE_INVENTURMENGE] = // new BigDecimal(0); // } } } else { dataHelp[row][REPORT_INVENTURLISTE_INVENTURMENGE] = flrinventurliste.getN_inventurmenge(); } dataHelp[row][REPORT_INVENTURLISTE_ARTIKELNUMMER] = flrinventurliste.getFlrartikel().getC_nr(); if (o[1] != null) { dataHelp[row][REPORT_INVENTURLISTE_ARTIKELBEZEICHNUNG] = o[1]; } dataHelp[row][REPORT_INVENTURLISTE_LAGER] = flrinventurliste.getFlrlager().getC_nr(); ArtikellieferantDto alDto; try { alDto = getArtikelFac().getArtikelEinkaufspreis(flrinventurliste.getFlrartikel().getI_id(), new BigDecimal(1), theClientDto.getSMandantenwaehrung(), theClientDto); if (alDto != null && alDto.getNNettopreis() != null && alDto.getNNettopreis().doubleValue() != 0) { dataHelp[row][REPORT_INVENTURLISTE_LIEF1PREIS_AKTUELL] = alDto.getNNettopreis(); } alDto = getArtikelFac().getArtikelEinkaufspreis(flrinventurliste.getFlrartikel().getI_id(), null, new BigDecimal(1), theClientDto.getSMandantenwaehrung(), new java.sql.Date(inventurDto.getTInventurdatum().getTime()), theClientDto); if (alDto != null && alDto.getNNettopreis() != null && alDto.getNNettopreis().doubleValue() != 0) { dataHelp[row][REPORT_INVENTURLISTE_LIEF1PREIS_ZUM_INVENTURDATUM] = alDto.getNNettopreis(); } } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } BigDecimal inventurmenge = (BigDecimal) dataHelp[row][REPORT_INVENTURLISTE_INVENTURMENGE]; if (bInventurpreis == true) { try { Query query = em.createNamedQuery("InventurstandfindByInventurIIdArtikelIIdLagerIId"); query.setParameter(1, flrinventurliste.getFlrinventur().getI_id()); query.setParameter(2, flrinventurliste.getFlrartikel().getI_id()); query.setParameter(3, flrinventurliste.getFlrlager().getI_id()); Inventurstand inventurstand = (Inventurstand) query.getSingleResult(); dataHelp[row][REPORT_INVENTURLISTE_INVENTURPREIS] = inventurstand.getNInventurpreis(); dataHelp[row][REPORT_INVENTURLISTE_INVENTURWERT] = inventurmenge .multiply(inventurstand.getNInventurpreis()); } catch (NoResultException ex2) { dataHelp[row][REPORT_INVENTURLISTE_INVENTURWERT] = new java.math.BigDecimal(0); dataHelp[row][REPORT_INVENTURLISTE_INVENTURPREIS] = new java.math.BigDecimal(0); } } else { try { BigDecimal preis = getLagerFac().getGemittelterGestehungspreisEinesLagers( flrinventurliste.getFlrartikel().getI_id(), flrinventurliste.getFlrlager().getI_id(), theClientDto); dataHelp[row][REPORT_INVENTURLISTE_INVENTURPREIS] = getLagerFac() .getGemittelterGestehungspreisEinesLagers( flrinventurliste.getFlrartikel().getI_id(), flrinventurliste.getFlrlager().getI_id(), theClientDto); dataHelp[row][REPORT_INVENTURLISTE_INVENTURWERT] = inventurmenge.multiply(preis); } catch (RemoteException ex3) { throwEJBExceptionLPRespectOld(ex3); } } row++; } letzterArtikel = flrinventurliste.getFlrartikel().getC_nr(); } session.close(); data = new Object[row][7]; for (int i = 0; i < row; i++) { data[i] = dataHelp[i]; } HashMap<String, Object> parameter = new HashMap<String, Object>(); index = -1; sAktuellerReport = InventurFac.REPORT_INVENTURLISTE; parameter.put("P_INVENTUR", inventurDto.getCBez()); parameter.put("P_INVENTURDATUM", inventurDto.getTInventurdatum()); try { if (lagerIId != null) { LagerDto dto = getLagerFac().lagerFindByPrimaryKey(lagerIId); parameter.put("P_LAGER", dto.getCNr()); } else { parameter.put("P_LAGER", "ALLE"); } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } if (bInventurpreis == true) { parameter.put("P_PREIS", getTextRespectUISpr("lp.inventurpreis", theClientDto.getMandant(), theClientDto.getLocUi())); parameter.put("P_WERT", getTextRespectUISpr("lp.inventurwert", theClientDto.getMandant(), theClientDto.getLocUi())); } else { parameter.put("P_PREIS", getTextRespectUISpr("lp.gestehungspreis", theClientDto.getMandant(), theClientDto.getLocUi())); parameter.put("P_WERT", getTextRespectUISpr("lp.gestehungswert", theClientDto.getMandant(), theClientDto.getLocUi())); } try { parameter.put("P_WAEHRUNG", getMandantFac() .mandantFindByPrimaryKey(theClientDto.getMandant(), theClientDto).getWaehrungCNr()); } catch (RemoteException ex1) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex1); } initJRDS(parameter, InventurFac.REPORT_MODUL, InventurFac.REPORT_INVENTURLISTE, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); // lpReport.saveHTML("c:/anwesenheitsliste.html"); return getReportPrint(); } /** * Erstellt eine Deltaliste einer best. Inventur * * @param inventurIId * Inventur-ID * @param lagerIId * Lager-ID * @param bNurArtikelMitLagerstand * Boolean * @param theClientDto * String * @return JasperPrint */ @TransactionAttribute(TransactionAttributeType.NEVER) public JasperPrintLP printNichterfassteartikel(Integer inventurIId, Integer lagerIId, boolean bNurArtikelMitLagerstand, TheClientDto theClientDto) { if (inventurIId == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception("inventurIId == null")); } index = -1; sAktuellerReport = InventurFac.REPORT_NICHTERFASSTEARTIKEL; Session session = FLRSessionFactory.getFactory().openSession(); session.enableFilter("filterLocale").setParameter("paramLocale", Helper.locale2String(theClientDto.getLocUi())); String queryString = null; try { queryString = "SELECT a.i_id as artikelid, l.i_id as lagerid,a.c_nr, l.c_nr, " + "(SELECT al.n_lagerstand FROM FLRArtikellager al WHERE compId.artikel_i_id=a.i_id AND compId.lager_i_id=l.i_id ) as lagerstand, " + "(SELECT sum( il.n_inventurmenge) FROM FLRInventurliste il WHERE il.flrartikel=a.i_id AND il.flrlager.i_id=l.i_id AND il.flrinventur=" + inventurIId + ") as inventurmenge, " + "aspr.c_bez, aspr.c_zbez, a.b_lagerbewirtschaftet, a.b_seriennrtragend, a.b_chargennrtragend " + "FROM FLRArtikelliste a, FLRLager as l LEFT OUTER JOIN a.artikelsprset AS aspr " + "WHERE a.mandant_c_nr='" + theClientDto.getMandant() + "' AND l.mandant_c_nr='" + theClientDto.getMandant() + "' AND a.artikelart_c_nr NOT IN ('" + ArtikelFac.ARTIKELART_HANDARTIKEL + "') " + " AND l.i_id NOT IN (" + getLagerFac().lagerFindByCNrByMandantCNr(LagerFac.LAGER_KEINLAGER, theClientDto.getMandant()) .getIId() + "," + getLagerFac() .lagerFindByCNrByMandantCNr(LagerFac.LAGER_WERTGUTSCHRIFT, theClientDto.getMandant()) .getIId() + ") "; if (lagerIId != null) { queryString += " AND l.i_id=" + lagerIId + " "; } queryString += "ORDER BY a.c_nr ASC,l.c_nr ASC"; } catch (RemoteException ex3) { throwEJBExceptionLPRespectOld(ex3); } org.hibernate.Query query = session.createQuery(queryString); List<?> resultList = query.list(); Iterator<?> resultListIterator = resultList.iterator(); ArrayList<Object[]> alDaten = new ArrayList<Object[]>(); int row = 0; while (resultListIterator.hasNext()) { Object[] o = (Object[]) resultListIterator.next(); Short b_seriennrtragend = (Short) o[9]; Short b_chargennrtragend = (Short) o[10]; java.math.BigDecimal lagerstand = (BigDecimal) o[4]; if (lagerstand == null) { lagerstand = new BigDecimal(0); } if (Helper.short2Boolean(b_seriennrtragend) == false && Helper.short2Boolean(b_chargennrtragend) == false) { java.math.BigDecimal summeInventur = (BigDecimal) o[5]; if (summeInventur != null) { continue; } Object[] dataHelp = new Object[7]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_ARTIKELNUMMER] = o[2]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_ARTIKELBEZEICHNUNG] = o[6]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_LAGER] = o[3]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_LAGERSTAND] = lagerstand; alDaten.add(dataHelp); } else { Integer artikelIId = (Integer) o[0]; Integer lagerIId_Zeile = (Integer) o[1]; try { SeriennrChargennrAufLagerDto[] snrChnrDtos = getLagerFac() .getAllSerienChargennrAufLagerInfoDtos(artikelIId, lagerIId_Zeile, true, null, theClientDto); HashMap<String, BigDecimal> hmSnrChnr = new HashMap<String, BigDecimal>(); for (int i = 0; i < snrChnrDtos.length; i++) { if (!hmSnrChnr.containsKey(snrChnrDtos[i].getCSeriennrChargennr())) { hmSnrChnr.put(snrChnrDtos[i].getCSeriennrChargennr(), snrChnrDtos[i].getNMenge()); } else { hmSnrChnr.put(snrChnrDtos[i].getCSeriennrChargennr(), hmSnrChnr .get(snrChnrDtos[i].getCSeriennrChargennr()).add(snrChnrDtos[i].getNMenge())); } } InventurlisteDto[] invDtos = null; if (lagerIId != null) { invDtos = inventurlisteFindByInventurIIdLagerIIdArtikelIId(inventurIId, lagerIId, artikelIId, theClientDto); } else { invDtos = inventurlisteFindByInventurIIdArtikelIId(inventurIId, artikelIId, theClientDto); } for (int i = 0; i < invDtos.length; i++) { if (hmSnrChnr.containsKey(invDtos[i].getCSeriennrchargennr())) { hmSnrChnr.remove(invDtos[i].getCSeriennrchargennr()); } } Iterator<String> it = hmSnrChnr.keySet().iterator(); while (it.hasNext()) { String chnr = it.next(); Object[] dataHelp = new Object[7]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_ARTIKELNUMMER] = o[2]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_ARTIKELBEZEICHNUNG] = o[6]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_SERIENNUMMERCHARGENNUMMER] = chnr; dataHelp[REPORT_NICHTERFASSTEARTIKEL_LAGER] = o[3]; dataHelp[REPORT_NICHTERFASSTEARTIKEL_LAGERSTAND] = hmSnrChnr.get(chnr); alDaten.add(dataHelp); } } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } } Object[][] returnArray = new Object[row][alDaten.size()]; data = (Object[][]) alDaten.toArray(returnArray); session.close(); HashMap<String, Object> parameter = new HashMap<String, Object>(); index = -1; sAktuellerReport = InventurFac.REPORT_NICHTERFASSTEARTIKEL; try { if (lagerIId != null) { LagerDto dto = getLagerFac().lagerFindByPrimaryKey(lagerIId); parameter.put("P_LAGER", dto.getCNr()); } else { parameter.put("P_LAGER", "ALLE"); } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); parameter.put("P_INVENTUR", inventurDto.getCBez()); parameter.put("P_INVENTURDATUM", inventurDto.getTInventurdatum()); parameter.put("P_NURMITLAGERSTAND", new Boolean(bNurArtikelMitLagerstand)); initJRDS(parameter, InventurFac.REPORT_MODUL, InventurFac.REPORT_NICHTERFASSTEARTIKEL, theClientDto.getMandant(), theClientDto.getLocUi(), theClientDto); return getReportPrint(); } public InventurlisteDto[] inventurlisteFindByInventurIIdArtikelIId(Integer inventurIId, Integer artikelIId, TheClientDto theClientDto) throws EJBExceptionLP { if (inventurIId == null || artikelIId == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurIId == null || artikelIId == null")); } // try { Query query = em.createNamedQuery("InventurlistefindByInventurIIdArtikelIId"); query.setParameter(1, inventurIId); query.setParameter(2, artikelIId); Collection<?> cl = query.getResultList(); // if (cl.isEmpty()) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // null); // } return assembleInventurlisteDtos(cl); // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // e); // } } public InventurlisteDto[] inventurlisteFindByInventurIIdLagerIIdArtikelIId(Integer inventurIId, Integer lagerIId, Integer artikelIId, TheClientDto theClientDto) throws EJBExceptionLP { // check(cNrUserI); if (inventurIId == null || artikelIId == null || lagerIId == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurIId == null || artikelIId == null || lagerIId == null")); } // try { Query query = em.createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIId"); query.setParameter(1, inventurIId); query.setParameter(2, lagerIId); query.setParameter(3, artikelIId); Collection<?> cl = query.getResultList(); // if (cl.isEmpty()) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // null); // } return assembleInventurlisteDtos(cl); // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // e); // } } public InventurlisteDto inventurlisteFindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr(Integer inventurIId, Integer artikelIId, Integer lagerIId, String cSeriennrchargennr, TheClientDto theClientDto) throws EJBExceptionLP { if (inventurIId == null || artikelIId == null || lagerIId == null || cSeriennrchargennr == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception( "inventurIId == null || artikelIId == null || lagerIId == null || cSeriennrchargennr == null")); } // try { Query query = em.createNamedQuery("InventurlistefindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr"); query.setParameter(1, inventurIId); query.setParameter(2, lagerIId); query.setParameter(3, artikelIId); query.setParameter(4, cSeriennrchargennr); Inventurliste inventurliste = (Inventurliste) query.getSingleResult(); if (inventurliste == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei inventurlisteFindByInventurIIdLagerIIdArtikelIIdCSeriennrchargennr. Es gibt " + "keine inventurliste mit iid " + inventurIId + " und lageriid " + lagerIId + " und artikelIid " + artikelIId + " und der Serienchargennummer " + cSeriennrchargennr); } return assembleInventurlisteDto(inventurliste); // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // e); // } } public InventurlisteDto inventurlisteFindByPrimaryKey(Integer iId, TheClientDto theClientDto) throws EJBExceptionLP { if (iId == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("iId == null")); } // try { Inventurliste inventurliste = em.find(Inventurliste.class, iId); if (inventurliste == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "FEhler bei inventurlisteFindByPrimaryKey. Es gibt keine iid " + iId); } InventurlisteDto dto = assembleInventurlisteDto(inventurliste); try { dto.setArtikelDto(getArtikelFac().artikelFindByPrimaryKey(dto.getArtikelIId(), theClientDto)); dto.setLagerDto(getLagerFac().lagerFindByPrimaryKey(dto.getLagerIId())); } catch (RemoteException ex) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER, ex); } return dto; // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // e); // } } private void setInventurlisteFromInventurlisteDto(Inventurliste inventurliste, InventurlisteDto inventurlisteDto) { inventurliste.setInventurIId(inventurlisteDto.getInventurIId()); inventurliste.setLagerIId(inventurlisteDto.getLagerIId()); inventurliste.setCSeriennrchargennr(inventurlisteDto.getCSeriennrchargennr()); inventurliste.setArtikelIId(inventurlisteDto.getArtikelIId()); inventurliste.setNInventurmenge(inventurlisteDto.getNInventurmenge()); inventurliste.setTAendern(inventurlisteDto.getTAendern()); inventurliste.setPersonalIIdAendern(inventurlisteDto.getPersonalIIdAendern()); em.merge(inventurliste); em.flush(); } private InventurlisteDto assembleInventurlisteDto(Inventurliste inventurliste) { return InventurlisteDtoAssembler.createDto(inventurliste); } private InventurlisteDto[] assembleInventurlisteDtos(Collection<?> inventurlistes) { List<InventurlisteDto> list = new ArrayList<InventurlisteDto>(); if (inventurlistes != null) { Iterator<?> iterator = inventurlistes.iterator(); while (iterator.hasNext()) { Inventurliste inventurliste = (Inventurliste) iterator.next(); list.add(assembleInventurlisteDto(inventurliste)); } } InventurlisteDto[] returnArray = new InventurlisteDto[list.size()]; return (InventurlisteDto[]) list.toArray(returnArray); } public Integer createInventurprotokoll(InventurprotokollDto inventurprotokollDto, TheClientDto theClient) throws EJBExceptionLP { // check(cNrUserI); if (inventurprotokollDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurprotokollDto == null")); } if (inventurprotokollDto.getInventurlisteIId() == null || inventurprotokollDto.getNKorrekturmenge() == null || inventurprotokollDto.getNInventurpreis() == null || inventurprotokollDto.getTZeitpunkt() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception( "inventurprotokollDto.getInventurlisteIId() == null || inventurprotokollDto.getNKorrekturmenge() == null || inventurprotokollDto.getNInventurpreis() == null || inventurprotokollDto.getTZeitpunkt() == null")); } try { // generieren von primary key PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_INVENTURPROTOKOLL); inventurprotokollDto.setIId(pk); inventurprotokollDto.setPersonalIIdAendern(theClient.getIDPersonal()); inventurprotokollDto.setTAendern(new Timestamp(System.currentTimeMillis())); Inventurprotokoll inventurprotokoll = new Inventurprotokoll(inventurprotokollDto.getIId(), inventurprotokollDto.getInventurIId(), inventurprotokollDto.getInventurlisteIId(), inventurprotokollDto.getTZeitpunkt(), inventurprotokollDto.getNKorrekturmenge(), inventurprotokollDto.getNInventurpreis(), inventurprotokollDto.getPersonalIIdAendern()); em.persist(inventurprotokoll); em.flush(); setInventurprotokollFromInventurprotokollDto(inventurprotokoll, inventurprotokollDto); return inventurprotokollDto.getIId(); } catch (EntityExistsException e) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_ANLEGEN, e); } } public InventurprotokollDto inventurprotokollFindByPrimaryKey(Integer iId, TheClientDto theClientDto) throws EJBExceptionLP { if (iId == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("iId == null")); } // try { Inventurprotokoll inventurprotokoll = em.find(Inventurprotokoll.class, iId); if (inventurprotokoll == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei inventurprotokollFindByPrimaryKey. Es gibt keine iid " + iId); } return assembleInventurprotokollDto(inventurprotokoll); // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP. // FEHLER_BEI_FINDBYPRIMARYKEY, // e); // } } public InventurprotokollDto inventurprotokollFindyByInventurlisteIIdTZeitpunkt(Integer inventurlisteIId, Timestamp tZeitpunkt) throws EJBExceptionLP { try { Query query = em.createNamedQuery("InventurprotokollfindyByInventurlisteIIdTZeitpunkt"); query.setParameter(1, inventurlisteIId); query.setParameter(2, tZeitpunkt); Inventurprotokoll inventurprotokoll = (Inventurprotokoll) query.getSingleResult(); return assembleInventurprotokollDto(inventurprotokoll); } catch (NoResultException ex) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, ex); } } private void setInventurprotokollFromInventurprotokollDto(Inventurprotokoll inventurprotokoll, InventurprotokollDto inventurprotokollDto) { inventurprotokoll.setInventurlisteIId(inventurprotokollDto.getInventurlisteIId()); inventurprotokoll.setInventurIId(inventurprotokollDto.getInventurIId()); inventurprotokoll.setTZeitpunkt(inventurprotokollDto.getTZeitpunkt()); inventurprotokoll.setNKorrekturmenge(inventurprotokollDto.getNKorrekturmenge()); inventurprotokoll.setTAendern(inventurprotokollDto.getTAendern()); inventurprotokoll.setPersonalIIdAendern(inventurprotokollDto.getPersonalIIdAendern()); em.merge(inventurprotokoll); em.flush(); } private InventurprotokollDto assembleInventurprotokollDto(Inventurprotokoll inventurprotokoll) { return InventurprotokollDtoAssembler.createDto(inventurprotokoll); } private InventurprotokollDto[] assembleInventurprotokollDtos(Collection<?> inventurprotokolls) { List<InventurprotokollDto> list = new ArrayList<InventurprotokollDto>(); if (inventurprotokolls != null) { Iterator<?> iterator = inventurprotokolls.iterator(); while (iterator.hasNext()) { Inventurprotokoll inventurprotokoll = (Inventurprotokoll) iterator.next(); list.add(assembleInventurprotokollDto(inventurprotokoll)); } } InventurprotokollDto[] returnArray = new InventurprotokollDto[list.size()]; return (InventurprotokollDto[]) list.toArray(returnArray); } /** * Methode fuer JRDataSource * * @return boolean * @throws JRException */ public boolean next() throws JRException { index++; return (index < data.length); } // @TransactionTimeout(200000) @TransactionAttribute(TransactionAttributeType.NEVER) public void inventurpreiseAktualisieren(Integer inventurIId, boolean bAufGestpreisZumInventurdatumAktualisieren, TheClientDto theClientDto) { InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRInventurstand.class); crit.add(Restrictions.eq("inventur_i_id", inventurIId)); List<?> results = crit.list(); Iterator<?> resultListIterator = results.iterator(); int row = 0; while (resultListIterator.hasNext()) { FLRInventurstand flrInventurstand = (FLRInventurstand) resultListIterator.next(); row++; System.out.println(row); java.math.BigDecimal gestpreis = new BigDecimal(0); if (bAufGestpreisZumInventurdatumAktualisieren == false) { gestpreis = getLagerFac().getGemittelterGestehungspreisEinesLagers( flrInventurstand.getFlrartikel().getI_id(), flrInventurstand.getFlrartikel().getB_lagerbewirtschaftet(), flrInventurstand.getFlrartikel().getArtikelart_c_nr(), flrInventurstand.getFlrlager().getI_id(), theClientDto); // Einkaufspreis holen ArtikellieferantDto[] dtos = getArtikelFac() .artikellieferantFindByArtikelIId(flrInventurstand.getFlrartikel().getI_id(), theClientDto); if (dtos.length > 0 && dtos[0].getNNettopreis() != null) { if (dtos[0].getNNettopreis().doubleValue() > gestpreis.doubleValue()) { gestpreis = dtos[0].getNNettopreis(); } } else { // Losablieferung holen Session session2 = FLRSessionFactory.getFactory().openSession(); String query = "SELECT la.n_gestehungspreis FROM FLRLosablieferung la WHERE la.flrlos.flrstueckliste.flrartikel.i_id=" + flrInventurstand.getFlrartikel().getI_id() + " AND la.n_gestehungspreis>0 AND la.t_aendern<='" + Helper.formatDateWithSlashes( new java.sql.Date(inventurDto.getTInventurdatum().getTime())) + "' ORDER BY la.t_aendern DESC"; org.hibernate.Query ablieferungen = session2.createQuery(query); ablieferungen.setMaxResults(1); List<?> resultList = ablieferungen.list(); Iterator<?> resultListIteratorAbl = resultList.iterator(); data = new Object[resultList.size()][8]; if (resultListIteratorAbl.hasNext()) { BigDecimal gestpreisAblieferung = (BigDecimal) resultListIteratorAbl .next(); gestpreis = gestpreisAblieferung; } session2.close(); } } else { try { BigDecimal gestpreisZumZeitpunkt = getLagerFac().getGestehungspreisZumZeitpunkt( flrInventurstand.getFlrartikel().getI_id(), flrInventurstand.getFlrlager().getI_id(), inventurDto.getTInventurdatum(), theClientDto); if (gestpreisZumZeitpunkt != null) { gestpreis = gestpreisZumZeitpunkt; } } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } // Updaten InventurstandDto inventurstandDto = inventurstandFindByPrimaryKey(flrInventurstand.getI_id()); inventurstandDto.setNInventurpreis(gestpreis); try { getInventurFac().updateInventurstand(inventurstandDto); } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } InventurDto dto = inventurFindByPrimaryKey(inventurIId, theClientDto); dto.setBAbwertungdurchgefuehrt(Helper.boolean2Short(false)); dto.setTAbwertungdurchgefuehrt(null); getInventurFac().updateInventur(dto, theClientDto); } @TransactionAttribute(TransactionAttributeType.NEVER) public void invturprotokollZumStichtagZuruecknehmen(Integer inventurIId, java.sql.Date tAbStichtag, TheClientDto theClientDto) { InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); if (Helper.short2boolean(inventurDto.getBInventurdurchgefuehrt()) == false) { Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRInventurprotokoll.class); crit.add(Restrictions.gt("t_zeitpunkt", tAbStichtag)); crit.createAlias("flrinventurliste", "il").createAlias("flrinventur", "i"); crit.add(Restrictions.eq("i.i_id", inventurIId)); List<?> results = crit.list(); Iterator<?> resultListIteratorInventur = results.iterator(); int row = 0; while (resultListIteratorInventur.hasNext()) { FLRInventurprotokoll flrInventurprotokoll = (FLRInventurprotokoll) resultListIteratorInventur .next(); if (flrInventurprotokoll.getN_korrekturmenge().doubleValue() < 0) { try { getLagerFac().bucheAb(LocaleFac.BELEGART_INVENTUR, inventurIId, flrInventurprotokoll.getFlrinventurliste().getI_id(), flrInventurprotokoll.getFlrinventurliste().getFlrartikel().getI_id(), new BigDecimal(0), flrInventurprotokoll.getN_inventurpreis(), flrInventurprotokoll.getFlrinventurliste().getFlrlager().getI_id(), flrInventurprotokoll.getFlrinventurliste().getC_seriennrchargennr(), inventurDto.getTInventurdatum(), theClientDto); } catch (Throwable e) { // Auslassen continue; } } else if (flrInventurprotokoll.getN_korrekturmenge().doubleValue() > 0) { try { getLagerFac().bucheZu(LocaleFac.BELEGART_INVENTUR, inventurIId, flrInventurprotokoll.getFlrinventurliste().getI_id(), flrInventurprotokoll.getFlrinventurliste().getFlrartikel().getI_id(), new BigDecimal(0), flrInventurprotokoll.getN_inventurpreis(), flrInventurprotokoll.getFlrinventurliste().getFlrlager().getI_id(), flrInventurprotokoll.getFlrinventurliste().getC_seriennrchargennr(), inventurDto.getTInventurdatum(), theClientDto, null, true); } catch (RemoteException e) { // Auslassen continue; } } Integer inventurlisteIId = flrInventurprotokoll.getFlrinventurliste().getI_id(); getInventurFac().removeInventurprotokoll(flrInventurprotokoll.getI_id()); InventurlisteDto ilDto = new InventurlisteDto(); ilDto.setIId(inventurlisteIId); try { getInventurFac().removeInventurliste(ilDto, theClientDto); } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } } } public void inventurDurchfuehrungZuruecknehmen(Integer inventurIId, TheClientDto theClientDto) { Inventur inventur = em.find(Inventur.class, inventurIId); inventur.setBInventurdurchgefuehrt(Helper.boolean2Short(false)); inventur.setTInventurdurchgefuehrt(null); inventur.setPersonalIIdInventurdurchgefuehrt(null); em.merge(inventur); em.flush(); Session session = FLRSessionFactory.getFactory().openSession(); String hqlDelete = "delete FLRInventurstand WHERE inventur_i_id=" + inventurIId; session.createQuery(hqlDelete).executeUpdate(); session.close(); myLogger.logKritisch("Die Inventur mit dem Datum " + inventur.getTInventurdatum() + " wurde von der Person mit der ID=" + theClientDto.getIDPersonal() + " zurueckgenommen"); } @TransactionAttribute(TransactionAttributeType.NEVER) public void inventurpreiseAufEkPreisSetzen(Integer inventurIId, TheClientDto theClientDto) { InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); Session session = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria crit = session.createCriteria(FLRInventurstand.class); crit.add(Restrictions.eq("inventur_i_id", inventurIId)); List<?> results = crit.list(); Iterator<?> resultListIteratorInventur = results.iterator(); int row = 0; while (resultListIteratorInventur.hasNext()) { FLRInventurstand flrInventurstand = (FLRInventurstand) resultListIteratorInventur.next(); row++; System.out.println(row + " von " + results.size()); java.math.BigDecimal inventurpeis = new BigDecimal(0); Session sessionZugang = FLRSessionFactory.getFactory().openSession(); org.hibernate.Criteria critZugang = sessionZugang.createCriteria(FLRLagerbewegung.class); critZugang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_ARTIKEL_I_ID, flrInventurstand.getFlrartikel().getI_id())); critZugang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_ABGANG, Helper.boolean2Short(false))); critZugang.add(Restrictions.eq(LagerFac.FLR_LAGERBEWEGUNG_B_HISTORIE, Helper.boolean2Short(false))); critZugang.add(Restrictions.gt(LagerFac.FLR_LAGERBEWEGUNG_N_MENGE, new BigDecimal(0))); critZugang.add( Restrictions.gt(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT, inventurDto.getTInventurdatum())); String[] arten = new String[2]; arten[0] = LocaleFac.BELEGART_LOSABLIEFERUNG; arten[1] = LocaleFac.BELEGART_BESTELLUNG; critZugang.add(Restrictions.in(LagerFac.FLR_LAGERBEWEGUNG_C_BELEGARTNR, arten)); critZugang.addOrder(Order.asc(LagerFac.FLR_LAGERBEWEGUNG_T_BUCHUNGSZEIT)); critZugang.setMaxResults(1); List<?> resultList = critZugang.list(); if (resultList.size() > 0) { Iterator<?> resultListIterator = resultList.iterator(); FLRLagerbewegung lagerbewegung = (FLRLagerbewegung) resultListIterator.next(); inventurpeis = lagerbewegung.getN_einstandspreis(); } else { // EK-Preis ArtikellieferantDto alDto; try { alDto = getArtikelFac().getArtikelEinkaufspreis(flrInventurstand.getFlrartikel().getI_id(), new BigDecimal(1), theClientDto.getSMandantenwaehrung(), theClientDto); if (alDto != null && alDto.getNNettopreis() != null && alDto.getNNettopreis().doubleValue() != 0) { inventurpeis = alDto.getNNettopreis(); } else { continue; } } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } sessionZugang.close(); // Updaten InventurstandDto inventurstandDto = inventurstandFindByPrimaryKey(flrInventurstand.getI_id()); inventurstandDto.setNInventurpreis(inventurpeis); try { getInventurFac().updateInventurstand(inventurstandDto); } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } InventurDto dto = inventurFindByPrimaryKey(inventurIId, theClientDto); dto.setBAbwertungdurchgefuehrt(Helper.boolean2Short(false)); dto.setTAbwertungdurchgefuehrt(null); getInventurFac().updateInventur(dto, theClientDto); } // PJ 17152 @TransactionAttribute(TransactionAttributeType.NEVER) public void inventurDurchfuehren(Integer inventurIId, boolean bNichtInventierteArtikelAufNullSetzen, TheClientDto theClientDto) throws EJBExceptionLP { InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId, theClientDto); myLogger.logKritisch("Inventur Start:" + new Timestamp(System.currentTimeMillis())); // Inventurdatum auf morgen 00:00 setzen Calendar c = Calendar.getInstance(); c.setTimeInMillis(inventurDto.getTInventurdatum().getTime()); c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); Timestamp ts = new Timestamp(c.getTimeInMillis()); inventurDto.setTInventurdatum(Helper.cutTimestamp(ts)); if (Helper.short2boolean(inventurDto.getBInventurdurchgefuehrt()) == true) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_INVENTUR_BEREITS_DURCHGEFUEHRT, new Exception("Helper.short2boolean(inventurDto.getBInventurdurchgefuehrt())==true")); } try { // Wenn nur ein Lager angegeben, dann Inventur auch nur fuer ein // Lager durchfuehren LagerDto[] lagerDtos = null; if (inventurDto.getLagerIId() == null) { lagerDtos = getLagerFac().lagerFindByMandantCNr(theClientDto.getMandant()); } else { lagerDtos = new LagerDto[1]; lagerDtos[0] = getLagerFac().lagerFindByPrimaryKey(inventurDto.getLagerIId()); } SessionFactory factory = FLRSessionFactory.getFactory(); Session session = factory.openSession(); Criteria artikelQuery = session.createCriteria(FLRArtikel.class); artikelQuery.add(Restrictions.eq("mandant_c_nr", theClientDto.getMandant())) .add(Restrictions.not(Restrictions.in(ArtikelFac.FLR_ARTIKELLISTE_ARTIKELART_C_NR, new String[] { ArtikelFac.ARTIKELART_HANDARTIKEL }))); artikelQuery.addOrder(Order.asc("i_id")); List<?> resultList = artikelQuery.list(); Iterator<?> resultListIterator = resultList.iterator(); int ii = 0; while (resultListIterator.hasNext()) { FLRArtikel artikel = (FLRArtikel) resultListIterator.next(); ii += 1; // myLogger.logKritisch(artikel.getC_nr()+": "+new // Integer(ii).toString()); // long t=System.currentTimeMillis(); for (int i = 0; i < lagerDtos.length; i++) { long l = System.currentTimeMillis(); // wenn bNichtInventierteArtikelAufNullSetzen==true, dann // artikel mit jetzt auf lagerstand null setzen if (bNichtInventierteArtikelAufNullSetzen == true && Helper.short2boolean(artikel.getB_lagerbewirtschaftet()) == true) { if (Helper.short2boolean(artikel.getB_chargennrtragend()) == false && Helper.short2boolean(artikel.getB_seriennrtragend()) == false) { InventurlisteDto[] ilDtos = inventurlisteFindByInventurIIdLagerIIdArtikelIId( inventurIId, lagerDtos[i].getIId(), artikel.getI_id(), theClientDto); if (ilDtos.length < 1) { InventurlisteDto inventurlisteDto = new InventurlisteDto(); inventurlisteDto.setArtikelIId(artikel.getI_id()); inventurlisteDto.setLagerIId(lagerDtos[i].getIId()); inventurlisteDto.setInventurIId(inventurIId); inventurlisteDto.setNInventurmenge(new BigDecimal(0)); getInventurFac().createInventurliste(inventurlisteDto, false, theClientDto); } } } InventurstandDto inventurstandDtoVorhanden = inventurstandfindByInventurIIdArtikelIIdLagerIIdOhneExc( inventurIId, lagerDtos[i].getIId(), artikel.getI_id(), theClientDto); if (inventurstandDtoVorhanden == null) { java.math.BigDecimal gestpreis = getLagerFac().getGestehungspreisZumZeitpunkt( artikel.getI_id(), lagerDtos[i].getIId(), inventurDto.getTInventurdatum(), theClientDto); if (gestpreis == null) { gestpreis = new BigDecimal(0); } InventurstandDto inventurstandDto = new InventurstandDto(); inventurstandDto.setArtikelIId(artikel.getI_id()); inventurstandDto.setInventurIId(inventurIId); inventurstandDto.setLagerIId(lagerDtos[i].getIId()); inventurstandDto .setNInventurmenge(getInventurstand(artikel.getI_id(), lagerDtos[i].getIId(), inventurDto.getIId(), inventurDto.getTInventurdatum(), theClientDto)); inventurstandDto.setNInventurpreis(gestpreis); getInventurFac().createInventurstand(inventurstandDto, theClientDto); } } // myLogger.logKritisch("*"+ new // Long(System.currentTimeMillis()-t).toString()); // t=System.currentTimeMillis(); } session.close(); } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } InventurDto inventur = inventurFindByPrimaryKey(inventurIId, theClientDto); inventur.setBInventurdurchgefuehrt(Helper.boolean2Short(true)); inventur.setTInventurdurchgefuehrt(new Timestamp(System.currentTimeMillis())); inventur.setPersonalIIdInventurdurchgefuehrt(theClientDto.getIDPersonal()); getInventurFac().updateInventur(inventur, theClientDto); myLogger.logKritisch("Inventur Ende:" + new Timestamp(System.currentTimeMillis())); } public BigDecimal getInventurstand(Integer artikelIId, Integer lagerIId, Integer inventurIId, java.sql.Timestamp tInventurdatum, TheClientDto theClientDto) { InventurlisteDto[] dtos = inventurlisteFindByInventurIIdLagerIIdArtikelIId(inventurIId, lagerIId, artikelIId, theClientDto); BigDecimal inventurStand = null; try { if (dtos != null && dtos.length > 0) { BigDecimal mengeAusInventurliste = dtos[0].getNInventurmenge(); java.math.BigDecimal lagerstandVeraenderung = getLagerFac() .getLagerstandsVeraenderungOhneInventurbuchungen(artikelIId, lagerIId, tInventurdatum, dtos[0].getTAendern(), theClientDto); inventurStand = mengeAusInventurliste.subtract(lagerstandVeraenderung); } else { java.math.BigDecimal lagerstandzumInventurdatum = getLagerFac() .getLagerstandZumZeitpunkt(artikelIId, lagerIId, tInventurdatum, theClientDto); inventurStand = lagerstandzumInventurdatum; } } catch (RemoteException ex) { throwEJBExceptionLPRespectOld(ex); } return inventurStand; } @TransactionTimeout(6000) public void preiseAbwerten(Integer inventurIId, boolean bMitStuecklisten, TheClientDto theClientDto) throws EJBExceptionLP { int iMonateGestpreisAbwerten = 6; double dProzentGestpreisAbwerten = 10; try { ParametermandantDto mandantparameter = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ARTIKEL, ParameterFac.PARAMETER_GESTEHUNGSPREISABWERTEN_AB_MONATE); iMonateGestpreisAbwerten = (Integer) mandantparameter.getCWertAsObject(); mandantparameter = getParameterFac().getMandantparameter(theClientDto.getMandant(), ParameterFac.KATEGORIE_ARTIKEL, ParameterFac.PARAMETER_GESTEHUNGSPREISABWERTEN_PROZENT_PRO_MONAT); dProzentGestpreisAbwerten = (Double) mandantparameter.getCWertAsObject(); } catch (RemoteException ex8) { throwEJBExceptionLPRespectOld(ex8); } InventurDto inventurDto = inventurFindByPrimaryKey(inventurIId); if (!Helper.short2boolean(inventurDto.getBAbwertungdurchgefuehrt())) { Session session = FLRSessionFactory.getFactory().openSession(); String sQuery = "SELECT i, (SELECT SUM(r.n_menge) FROM FLRArtikelreservierung r WHERE r.flrartikel.i_id=i.flrartikel.i_id),(SELECT SUM(r.n_gesamtmenge) FROM FLRRahmenbedarfe r WHERE r.flrartikel.i_id=i.flrartikel.i_id),(SELECT SUM(r.n_menge) FROM FLRFehlmenge r WHERE r.flrartikel.i_id=i.flrartikel.i_id),(SELECT s.i_id FROM FLRStueckliste s WHERE s.flrartikel.i_id=i.flrartikel.i_id) FROM FLRInventurstand i WHERE i.inventur_i_id=" + inventurIId + " "; org.hibernate.Query query = session.createQuery(sQuery); List<?> results = query.list(); Iterator<?> resultListIterator = results.iterator(); int iRow = 0; while (resultListIterator.hasNext()) { System.out.println(iRow); Object[] o = (Object[]) resultListIterator.next(); FLRInventurstand flrInventurstand = (FLRInventurstand) o[0]; BigDecimal reservierungen = (BigDecimal) o[1]; BigDecimal fehlmengen = (BigDecimal) o[3]; BigDecimal rahmenbedarfe = (BigDecimal) o[2]; Integer stuecklisteIId = (Integer) o[4]; if (bMitStuecklisten == false && stuecklisteIId != null) { continue; } if (reservierungen != null && reservierungen.doubleValue() > 0) { continue; } if (fehlmengen != null && fehlmengen.doubleValue() > 0) { continue; } if (rahmenbedarfe != null && rahmenbedarfe.doubleValue() > 0) { continue; } if (flrInventurstand.getN_inventurpreis().doubleValue() != 0) { try { BigDecimal rahmenreservierungen = getReservierungFac().getAnzahlRahmenreservierungen( flrInventurstand.getFlrartikel().getI_id(), theClientDto); if (rahmenreservierungen != null && rahmenreservierungen.doubleValue() > 0) { continue; } Inventurstand inventurstand = em.find(Inventurstand.class, flrInventurstand.getI_id()); BigDecimal abPreis = getLagerFac().getAbgewertetenGestehungspreis( flrInventurstand.getN_inventurpreis(), flrInventurstand.getFlrartikel().getI_id(), flrInventurstand.getFlrlager().getI_id(), inventurDto.getTInventurdatum(), iMonateGestpreisAbwerten, dProzentGestpreisAbwerten); if (abPreis != null) { inventurstand.setNInventurpreis(abPreis); em.merge(inventurstand); em.flush(); } } catch (RemoteException e) { throwEJBExceptionLPRespectOld(e); } } iRow++; } session.close(); Inventur inventur = em.find(Inventur.class, inventurIId); inventur.setBAbwertungdurchgefuehrt(Helper.boolean2Short(true)); inventur.setPersonalIIdAbwertungdurchgefuehrt(theClientDto.getIDPersonal()); inventur.setTAbwertungdurchgefuehrt(new Timestamp(System.currentTimeMillis())); em.merge(inventur); em.flush(); } } public Object getFieldValue(JRField field) throws JRException { Object value = null; String fieldName = field.getName(); if (sAktuellerReport.equals(InventurFac.REPORT_INVENTURSTAND)) { if ("Artikelnummer".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELNUMMER]; } else if ("Bezeichnung".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELBEZEICHNUNG]; } else if ("Kurzbezeichnung".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELKURZBEZEICHNUNG]; } else if ("Zusatzbezeichnung".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELZUSATZBEZEICHNUNG]; } else if ("Zusatzbezeichnung2".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELZUSATZBEZEICHNUNG2]; } else if ("Seriennummerchargennummer".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_SERIENNUMMERCHARGENNUMMER]; } else if ("Inventurmenge".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_INVENTURMENGE]; } else if ("Inventurpreis".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_INVENTURPREIS]; } else if ("Lager".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_LAGER]; } else if ("Inventurwert".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_INVENTURWERT]; } else if ("Lagerstand".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_LAGERSTAND]; } else if ("Artikelart".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELART]; } else if ("Artikelgruppe".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELGRUPPE]; } else if ("Artikelklasse".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_ARTIKELKLASSE]; } else if ("Stueckliste".equals(fieldName)) { value = data[index][REPORT_INVENTURSTAND_STUECKLISTE]; } } if (sAktuellerReport.equals(InventurFac.REPORT_INVENTURLISTE)) { if ("Artikelnummer".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_ARTIKELNUMMER]; } else if ("Bezeichnung".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_ARTIKELBEZEICHNUNG]; } else if ("Seriennummerchargennummer".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_SERIENNUMMERCHARGENNUMMER]; } else if ("Inventurmenge".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_INVENTURMENGE]; } else if ("Inventurpreis".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_INVENTURPREIS]; } else if ("Lager".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_LAGER]; } else if ("Inventurwert".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_INVENTURWERT]; } else if ("Lief1PreisInventurdatum".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_LIEF1PREIS_ZUM_INVENTURDATUM]; } else if ("Lief1PreisAktuell".equals(fieldName)) { value = data[index][REPORT_INVENTURLISTE_LIEF1PREIS_AKTUELL]; } } else if (sAktuellerReport.equals(InventurFac.REPORT_INVENTURPROTOKOLL)) { if ("Artikelnummer".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_ARTIKELNUMMER]; } else if ("Bezeichnung".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_ARTIKELBEZEICHNUNG]; } else if ("Korrekturmenge".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_KORREKTURMENGE]; } else if ("Korrekturzeitpunkt".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_KORREKTURZEITPUNKT]; } else if ("Inventurpreis".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_INVENTURPREIS]; } else if ("Inventurmenge".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_INVENTURMENGE]; } else if ("Artikelart".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_ARTIKELART]; } else if ("Lagerstand".equals(fieldName)) { value = data[index][REPORT_INVENTURPROTOKOLL_LAGERSTAND]; } } else if (sAktuellerReport.equals(InventurFac.REPORT_NICHTERFASSTEARTIKEL)) { if ("Artikelnummer".equals(fieldName)) { value = data[index][REPORT_NICHTERFASSTEARTIKEL_ARTIKELNUMMER]; } else if ("Bezeichnung".equals(fieldName)) { value = data[index][REPORT_NICHTERFASSTEARTIKEL_ARTIKELBEZEICHNUNG]; } else if ("Seriennummerchargennummer".equals(fieldName)) { value = data[index][REPORT_NICHTERFASSTEARTIKEL_SERIENNUMMERCHARGENNUMMER]; } else if ("Lager".equals(fieldName)) { value = data[index][REPORT_NICHTERFASSTEARTIKEL_LAGER]; } else if ("Lagerstand".equals(fieldName)) { value = data[index][REPORT_NICHTERFASSTEARTIKEL_LAGERSTAND]; System.out.println(data[index][REPORT_NICHTERFASSTEARTIKEL_LAGERSTAND]); } } return value; } public Integer createInventurstand(InventurstandDto inventurstandDto, TheClientDto theClientDto) throws EJBExceptionLP { if (inventurstandDto == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_DTO_IS_NULL, new Exception("inventurstandDto == null")); } if (inventurstandDto.getInventurIId() == null || inventurstandDto.getLagerIId() == null || inventurstandDto.getArtikelIId() == null || inventurstandDto.getNInventurmenge() == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_PKFIELD_IS_NULL, new Exception( "inventurstandDto.getInventurIId() == null || inventurstandDto.getLagerIId() == null || inventurstandDto.getArtikelIId() == null || inventurstandDto.getNInventurmenge() == null")); } try { // generieren von primary key PKGeneratorObj pkGen = new PKGeneratorObj(); // PKGEN Integer pk = pkGen.getNextPrimaryKey(PKConst.PK_INVENTURSTAND); inventurstandDto.setIId(pk); Inventurstand inventurstand = new Inventurstand(inventurstandDto.getIId(), inventurstandDto.getInventurIId(), inventurstandDto.getArtikelIId(), inventurstandDto.getLagerIId(), inventurstandDto.getNInventurmenge(), inventurstandDto.getNInventurpreis()); em.persist(inventurstand); em.flush(); setInventurstandFromInventurstandDto(inventurstand, inventurstandDto); return inventurstandDto.getIId(); } catch (EntityExistsException e) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_ANLEGEN, e); } } public void removeInventurstand(Integer iId) throws EJBExceptionLP { // try { Inventurstand toRemove = em.find(Inventurstand.class, iId); if (toRemove == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei removeInventurstand. Es gibt keine iid " + iId); } try { em.remove(toRemove); em.flush(); } catch (EntityExistsException er) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, er); } // } // catch (RemoveException e) { // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEIM_LOESCHEN, e); // } } public void removeInventurstand(InventurstandDto inventurstandDto) throws EJBExceptionLP { if (inventurstandDto != null) { Integer iId = inventurstandDto.getIId(); removeInventurstand(iId); } } public void updateInventurstand(InventurstandDto inventurstandDto) throws EJBExceptionLP { if (inventurstandDto != null) { Integer iId = inventurstandDto.getIId(); // try { Inventurstand inventurstand = em.find(Inventurstand.class, iId); if (inventurstand == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "FEhler bei updateInventurstand. Es gibt keine iid " + iId + "\ndto.toString: " + inventurstandDto.toString()); } setInventurstandFromInventurstandDto(inventurstand, inventurstandDto); // } // catch (FinderException e) { // throw new // EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, e); // } } } public InventurstandDto inventurstandFindByPrimaryKey(Integer iId) throws EJBExceptionLP { // try { Inventurstand inventurstand = em.find(Inventurstand.class, iId); if (inventurstand == null) { throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, "Fehler bei inventurstandFindByPrimaryKey. Es gitb keine iid " + iId); } return assembleInventurstandDto(inventurstand); // } // catch (FinderException e) { // throw new EJBExceptionLP(EJBExceptionLP.FEHLER_BEI_FINDBYPRIMARYKEY, // e); // } } private void setInventurstandFromInventurstandDto(Inventurstand inventurstand, InventurstandDto inventurstandDto) { inventurstand.setInventurIId(inventurstandDto.getInventurIId()); inventurstand.setArtikelIId(inventurstandDto.getArtikelIId()); inventurstand.setLagerIId(inventurstandDto.getLagerIId()); inventurstand.setNInventurmenge(inventurstandDto.getNInventurmenge()); inventurstand.setNInventurpreis(inventurstandDto.getNInventurpreis()); inventurstand.setNAbgewerteterpreis(inventurstandDto.getNAbgewerteterpreis()); em.merge(inventurstand); em.flush(); } private InventurstandDto assembleInventurstandDto(Inventurstand inventurstand) { return InventurstandDtoAssembler.createDto(inventurstand); } private InventurstandDto[] assembleInventurstandDtos(Collection<?> inventurstands) { List<InventurstandDto> list = new ArrayList<InventurstandDto>(); if (inventurstands != null) { Iterator<?> iterator = inventurstands.iterator(); while (iterator.hasNext()) { Inventurstand inventurstand = (Inventurstand) iterator.next(); list.add(assembleInventurstandDto(inventurstand)); } } InventurstandDto[] returnArray = new InventurstandDto[list.size()]; return (InventurstandDto[]) list.toArray(returnArray); } }