private String getFolio(Almacen almacen) { Query query = currentSession() .createQuery( "select f from Folio f where f.nombre = :nombre and f.almacen.id = :almacenId"); query.setString("nombre", "FACTURA"); query.setLong("almacenId", almacen.getId()); query.setLockOptions(LockOptions.UPGRADE); Folio folio = (Folio) query.uniqueResult(); if (folio == null) { folio = new Folio("FACTURA"); folio.setAlmacen(almacen); currentSession().save(folio); return getFolio(almacen); } folio.setValor(folio.getValor() + 1); java.text.NumberFormat nf = java.text.DecimalFormat.getInstance(); nf.setGroupingUsed(false); nf.setMinimumIntegerDigits(9); nf.setMaximumIntegerDigits(9); nf.setMaximumFractionDigits(0); StringBuilder sb = new StringBuilder(); sb.append("FA-"); sb.append(almacen.getEmpresa().getOrganizacion().getCodigo()); sb.append(almacen.getEmpresa().getCodigo()); sb.append(almacen.getCodigo()); sb.append(nf.format(folio.getValor())); return sb.toString(); }
@Transactional @RequestMapping(value = "/actualiza", method = RequestMethod.POST) public String actualiza( HttpServletRequest request, @Valid Almacen almacen, BindingResult bindingResult, Errors errors, Model modelo, RedirectAttributes redirectAttributes) { if (bindingResult.hasErrors()) { log.error("Hubo algun error en la forma, regresando"); for (ObjectError error : bindingResult.getAllErrors()) { log.debug("Error: {}", error); } return "inventario/almacen/edita"; } try { Usuario usuario = ambiente.obtieneUsuario(); almacen = almacenDao.actualiza(almacen, usuario); ambiente.actualizaSesion(request, usuario); } catch (ConstraintViolationException e) { log.error("No se pudo crear la almacen", e); errors.rejectValue("nombre", "campo.duplicado.message", new String[] {"nombre"}, null); return "inventario/almacen/edita"; } redirectAttributes.addFlashAttribute("message", "almacen.actualizado.message"); redirectAttributes.addFlashAttribute("messageAttrs", new String[] {almacen.getNombre()}); return "redirect:/inventario/almacen/ver/" + almacen.getId(); }
@Override public String elimina(Long id, Long empresaId) throws UltimoException { Criteria criteria = currentSession().createCriteria(Almacen.class); criteria.createCriteria("empresa").add(Restrictions.idEq(empresaId)); criteria.setProjection(Projections.rowCount()); Long cantidad = (Long) criteria.list().get(0); if (cantidad > 1) { Almacen almacen = obtiene(id); String nombre = almacen.getNombre(); currentSession().delete(almacen); return nombre; } else { throw new UltimoException("No se puede eliminar porque es el ultimo"); } }
@Override public Almacen actualiza(Almacen almacen, Usuario usuario) { Session session = currentSession(); if (usuario != null) { almacen.setEmpresa(usuario.getEmpresa()); } try { // Actualiza la almacen log.debug("Actualizando almacen"); session.update(almacen); session.flush(); } catch (NonUniqueObjectException e) { try { session.merge(almacen); } catch (Exception ex) { log.error("No se pudo actualizar la almacen", ex); throw new RuntimeException("No se pudo actualizar la almacen", ex); } } if (usuario != null) { usuario.setAlmacen(almacen); } session.flush(); return almacen; }
@Override public Almacen crea(Almacen almacen, Usuario usuario) { Session session = currentSession(); if (usuario != null) { almacen.setEmpresa(usuario.getEmpresa()); } session.save(almacen); if (usuario != null) { usuario.setAlmacen(almacen); session.save(usuario); } TipoProducto tipoProducto = new TipoProducto("TIPO1", "TIPO1", almacen); session.save(tipoProducto); reporteDao.inicializaAlmacen(almacen); session.flush(); return almacen; }