/** * Méthode en charge d'initialiser les lignes de stock à partir des mouvements de stock de type * Entree. * * @param essai Essai. * @param pharmacie Pharmacie. * @param produit Produit. * @param conditionnement Conditionnement. * @param mapLines Map des lignes de stock à construire. */ private void buildFromMvtTypeEntree( final MvtStockSearchCriteria critEntree, final Map<String, LigneStock> mapLines) { // Récupération des mouvements de type Entree qui concernent l'essai, la // pharmacie, le produit et le conditionnement critEntree.setTypesMouvement(TypeMvtStock.ENTREES); critEntree.setActiveOrder("datePeremption"); final List<MvtStock> appros = this.mvtStockService.getAll(critEntree); for (final MvtStock mouvementStock : appros) { final Approvisionnement appro = (Approvisionnement) mouvementStock; final LigneStock ligneStock = this.createLigneStock(mouvementStock); if (appro.getApproApprouve()) { final Produit prod = this.produitService.reattach(appro.getProduit()); final Stockage stockage = this.produitService.getStockageProduitPharma(prod, appro.getPharmacie()); ligneStock.setStockage(stockage.getNomComplet()); } else { ligneStock.setStockage(LigneStock.EN_QUARANTAINE); } final String key = this.getKeyMvtStock(mouvementStock, false); // Une entrée existe déjà => cumul des quantités saisies if (mapLines.get(key) != null) { final LigneStock l = mapLines.get(key); l.setQteGlobalStock(l.getQteGlobalStock() + ligneStock.getQteGlobalStock()); } else { mapLines.put(key, ligneStock); } this.log.debug( "Entrée key: " + key + " object: " + ligneStock + "Mvt Id: " + mouvementStock.getId()); } }
/** * Mise à jour d'un mouvement d'approvisionnement. * * @param appro Approvisionnement à mettre à jour. * @param stockage Lieu de stockage. */ private LigneStock updateAppro(final Approvisionnement appro) { // Récupération de la ligne de stock associée au mouvement final LigneStock ligneStock = this.getLigneStock(appro); // Valorisation du lieu de stockage if (Boolean.FALSE.equals(appro.getApproApprouve())) { ligneStock.setStockage(LigneStock.EN_QUARANTAINE); } else { // Récupération du lieu de stockage pour le produit et la // pharmacie final Produit produit = this.produitService.get(appro.getProduit().getId()); final Stockage stockage = this.produitService.getStockageProduitPharma(produit, appro.getPharmacie()); ligneStock.setStockage(stockage.getNomComplet()); } ligneStock.setQteGlobalStock(ligneStock.getQteGlobalStock() + appro.getQuantite()); return ligneStock; }
@Override public void addQuarantaineToStock(final EtatStock etat, final EtatLigneStock ligne) { // Récupération des mouvements associés à la ligne final MvtStockSearchCriteria criteria = new MvtStockSearchCriteria(); criteria.setEssai(etat.getEssai()); criteria.setPharmacie(etat.getPharmacie()); criteria.setProduit(etat.getProduit()); criteria.setConditionnement(etat.getConditionnement()); criteria.setNumLot(ligne.getNumLot()); criteria.setNumTraitement(ligne.getNumTraitement()); for (final MvtStock mvt : this.mvtStockService.getAll(criteria)) { mvt.setApproApprouve(true); this.mvtStockService.save(mvt); } // Récupération des lignes de stock pour mettre à jour le lieu de // stockage ainsi que l'info de quarantaine final StockSearchCriteria stockCriteria = new StockSearchCriteria(); stockCriteria.setEssai(etat.getEssai()); stockCriteria.setPharmacie(etat.getPharmacie()); stockCriteria.setProduit(etat.getProduit()); stockCriteria.setConditionnement(etat.getConditionnement()); stockCriteria.setNumLotStrict(ligne.getNumLot()); stockCriteria.setNumTraitement(ligne.getNumTraitement()); final List<LigneStock> ligneStocks = this.getAll(stockCriteria); for (final LigneStock ligneStock : ligneStocks) { final Produit prod = this.produitService.reattach(etat.getProduit()); ligneStock.setStockage( this.produitService.getStockageProduitPharma(prod, etat.getPharmacie()).getNomComplet()); ligneStock.setApproApprouve(true); } this.saveAll(ligneStocks); }