/** * Création ou mise à jour d'une ligne stock après la mise à jour de la date de péremption d'un * approvisionnement. * * @param appro l'approvisionnement avec la date à jour * @param oldLigneStock la ligne de stock associée à l'ancienne date de péremption */ protected void updateLigneStock(final Approvisionnement appro, final LigneStock oldLigneStock) { // Deuxième recherche après la MAJ de la date de péremption de // l'appro final LigneStock newLineStock = this.getLigneStock(appro); // Si ID est null, la ligne a été créée par getLigneStock if (newLineStock.getId() == null) { // Sauvegarde de la ligne oldLigneStock.setDatePeremption(appro.getDatePeremption()); this.save(oldLigneStock); } else { // Fusion avec celle qui existe déjà newLineStock.setQteGlobalStock( newLineStock.getQteGlobalStock() + oldLigneStock.getQteGlobalStock()); newLineStock.setQteDispensationGlobal( newLineStock.getQteDispensationGlobal() + oldLigneStock.getQteDispensationGlobal()); this.save(newLineStock); // Suppression de la ligne de stock this.remove(oldLigneStock); } }
/** {@inheritDoc} */ @Override public LigneStock save(final LigneStock ligneStock) { // Log de sauvegarde de quantité négative if ((ligneStock != null) && (ligneStock.getQteEnStock() != null) && (ligneStock.getQteDispensationGlobal() != null) && ((ligneStock.getQteEnStock() < 0) || (ligneStock.getQteDispensationGlobal() < 0))) { this.log.error( "ERREUR dans le stock (quantitites negatives) : LigneStock (id=" + ligneStock.getId() + ")"); } final LigneStock saved = super.save(ligneStock); // On ne garde pas la ligne de stock si les quantités sont à 0 if ((saved != null) && (saved.getQteGlobalStock() != null) && (saved.getQteDispensationGlobal() != null) && Integer.valueOf(0).equals(saved.getQteGlobalStock()) && Integer.valueOf(0).equals(saved.getQteDispensationGlobal())) { this.remove(ligneStock); } return saved; }