/** * Incrementa la cantidad de lote en el almacen especificado. Si el lote no está en el almacen, se * agrega. * * @param almacen el <code>Almacen</code> donde se modificará el inventario. * @param lote el <code>Lote</code> donde se incrementará. * @param cantidad la cantidad que se requiere incrementar. * @throws Exception Se lanza si ocurre un error en la base de datos. */ public void aumentarStockEnAlmacen(Almacen almacen, Lote lote, Double cantidad) throws Exception { LoteAlmacenado loteAlmacenado = loteJpaController.buscarLoteAlmacenado(almacen, lote); if (loteAlmacenado != null) { Double cantidadNueva = loteAlmacenado.getCantidad() + cantidad; loteAlmacenado.setCantidad(cantidadNueva); loteJpaController.editarLoteAlmacenado(loteAlmacenado); } else { LoteAlmacenado nuevoLoteAlmacenado = new LoteAlmacenado(); nuevoLoteAlmacenado.setAlmacen(almacen); nuevoLoteAlmacenado.setLote(lote); nuevoLoteAlmacenado.setCantidad(cantidad); loteJpaController.crearLoteAlmacenado(nuevoLoteAlmacenado); } }
/** * Modifica la cantidad del lote en el almacen especificado. * * @param almacen el <code>Almacen</code> donde se modificará el inventario. * @param codigoLote es el codigo del lote para buscar en la base de datos. * @param cantidad es la cantidad con la que se quiere reemplazar al viejo valor. * @throws Exception Se lanza si el codigo del lote no está registrado en la base de datos, o si * el almacen no contiene al lote especificado. */ public void corregirLoteAlmacenado(Almacen almacen, String codigoLote, Double cantidad) throws Exception { Lote lote = loteJpaController.buscarLotePorCodigo(codigoLote); LoteAlmacenado loteAlmacenado = loteJpaController.buscarLoteAlmacenado(almacen, lote); if (loteAlmacenado != null) { String msg = "El punto de venta tiene una cantidad de " + loteAlmacenado.getCantidad() + " del producto " + codigoLote.toUpperCase() + "." + "\n¿Desea reemplazar por la cantidad " + cantidad + "?"; int showOptionDialog = JOptionPane.showOptionDialog( null, msg, "Corregir Inventario", JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); if (showOptionDialog == 0) { loteAlmacenado.setCantidad(cantidad); loteJpaController.editarLoteAlmacenado(loteAlmacenado); operacionJpaController.registrarOperacionCorreccionDeInventario( ControllerSingleton.getEmpleadoJpaController().getEmpleadoQueInicioSesion(), loteAlmacenado); } } else { throw new Exception("El almacén no contiene este lote."); } }
/** * Descuenta de un lote de un almacen la cantidad indicada. Si el almacén no contiene el lote, * lanza una excepción. Si el almacen si contiene el lote pero la cantidad que se requiere * transferir es mayor al contenido en el lote, lanza una excepción. * * @param almacen el <code>Almacen</code> donde se modificará el inventario. * @param lote el <code>Lote</code> de donde se descontará. * @param cantidad la cantidad que se descontará. * @throws Exception Se lanza si no hay cantidad suficiente para descontar o si el almacen no * contiene al lote especificado. */ public void descontarDeAlmacen(Almacen almacen, Lote lote, Double cantidad) throws Exception { LoteAlmacenado loteAlmacenado = loteJpaController.buscarLoteAlmacenado(almacen, lote); if (loteAlmacenado != null) { if (loteAlmacenado.getCantidad() >= cantidad) { Double cantidadNueva = loteAlmacenado.getCantidad() - cantidad; loteAlmacenado.setCantidad(cantidadNueva); loteJpaController.editarLoteAlmacenado(loteAlmacenado); } else { throw new Exception("No hay cantidad suficiente para satisfacer la transferencia."); } } else { throw new Exception("El almacén no contienen ningun lote con el código de lote ingresado."); } }