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(); }