@Transactional
  @RequestMapping(value = "/graba", method = RequestMethod.POST)
  public String graba(
      HttpServletRequest request,
      HttpServletResponse response,
      @Valid AlumnoPaquete alumnoPaquete,
      BindingResult bindingResult,
      Errors errors,
      Model modelo,
      RedirectAttributes redirectAttributes) {
    for (String matricula : request.getParameterMap().keySet()) {
      log.debug("Param: {} : {}", matricula, request.getParameterMap().get(matricula));
    }
    if (bindingResult.hasErrors()) {
      log.debug("Hubo algun error en la forma, regresando");
      Map<String, Object> params = new HashMap<>();
      params.put("empresa", request.getSession().getAttribute("empresaId"));
      return Constantes.PATH_ALUMNOPAQUETE_NUEVO;
    }

    try {
      AlumnoPaquete tmp = null;
      Usuario usuario = ambiente.obtieneUsuario();

      if (alumnoPaquete.getId() != null) {
        tmp = alumnoPaqueteManager.obtiene(alumnoPaquete.getId());
        tmp.setPaquete(paqueteDao.obtiene(alumnoPaquete.getPaquete().getId()));
        tmp.setMatricula(alumnoPaquete.getMatricula());
        tmp.setStatus(alumnoPaquete.getStatus());
        alumnoPaqueteManager.graba(tmp, usuario);
        redirectAttributes.addFlashAttribute(
            Constantes.CONTAINSKEY_MESSAGE, "alumnoPaquete.actualizado.message");
        redirectAttributes.addFlashAttribute(
            Constantes.CONTAINSKEY_MESSAGE_ATTRS, new String[] {alumnoPaquete.getMatricula()});
      } else {
        alumnoPaquete.setPaquete(paqueteDao.obtiene(alumnoPaquete.getPaquete().getId()));
        alumnoPaqueteManager.graba(alumnoPaquete, usuario);
        redirectAttributes.addFlashAttribute(
            Constantes.CONTAINSKEY_MESSAGE, "alumnoPaquete.creado.message");
        redirectAttributes.addFlashAttribute(
            Constantes.CONTAINSKEY_MESSAGE_ATTRS, new String[] {alumnoPaquete.getMatricula()});
      }

    } catch (ConstraintViolationException e) {
      log.error("No se pudo crear el tipo de Beca", e);
      return Constantes.PATH_ALUMNOPAQUETE_NUEVO;
    }

    return "redirect:/" + Constantes.PATH_ALUMNOPAQUETE_LISTA + "/";
  }
  /** Test of getPaquetes method, of class PaqueteDao. */
  @Test
  public void testListaDeAlumnoPaquete() {

    Usuario usuario = obtieneUsuario();
    Paquete paquete =
        new Paquete(
            "Test",
            "Test1",
            new BigDecimal("1110475"),
            new BigDecimal(12),
            new BigDecimal(12),
            "1",
            usuario.getEmpresa());
    currentSession().save(paquete);
    AlumnoPaquete alumnoPaquete = null;
    for (int i = 0; i < 20; i++) {
      alumnoPaquete = new AlumnoPaquete();
      alumnoPaquete.setPaquete(paquete);
      alumnoPaquete.setMatricula("1110475");
      alumnoPaquete.setStatus("A");
      instance.graba(alumnoPaquete, usuario);
      assertNotNull(alumnoPaquete.getId());
    }

    Map<String, Object> params;
    params = new TreeMap<>();
    params.put("empresa", usuario.getEmpresa().getId());
    Map<String, Object> result = instance.lista(params);
    assertNotNull(result.get(Constantes.CONTAINSKEY_ALUMNOPAQUETES));
    assertNotNull(result.get(Constantes.CONTAINSKEY_CANTIDAD));
    assertEquals(10, ((List<TiposBecas>) result.get(Constantes.CONTAINSKEY_ALUMNOPAQUETES)).size());
    assertEquals(20, ((Long) result.get(Constantes.CONTAINSKEY_CANTIDAD)).intValue());
  }
  /** Test of removePaquete method, of class PaqueteDao. */
  @Test
  public void debieraEliminarAlumnoPaquete() {
    Usuario usuario = obtieneUsuario();
    Paquete paquete =
        new Paquete(
            "Test",
            "Test1",
            new BigDecimal("1110475"),
            new BigDecimal(12),
            new BigDecimal(12),
            "1",
            usuario.getEmpresa());
    currentSession().save(paquete);
    AlumnoPaquete alumnoPaquete = new AlumnoPaquete();
    alumnoPaquete.setPaquete(paquete);
    alumnoPaquete.setMatricula("1110475");
    alumnoPaquete.setStatus("A");
    alumnoPaquete.getPaquete().setEmpresa(usuario.getEmpresa());
    instance.graba(alumnoPaquete, usuario);
    assertNotNull(alumnoPaquete.getId());

    Long idTm = alumnoPaquete.getId();

    instance.elimina(idTm);
    try {
      AlumnoPaquete alumnoPaquete2 = instance.obtiene(idTm);
      fail("Error al eliminar alumno");
    } catch (ObjectRetrievalFailureException e) {

    }
  }
 /** Test of savePaquete method, of class PaqueteDao. */
 @Test
 public void testGrabaAlumnoPaquete() {
   Usuario usuario = obtieneUsuario();
   AlumnoPaquete alumnoPaquete = new AlumnoPaquete();
   Paquete paquete =
       new Paquete(
           "Test",
           "Test1",
           new BigDecimal("1110475"),
           new BigDecimal(12),
           new BigDecimal(12),
           "1",
           usuario.getEmpresa());
   currentSession().save(paquete);
   alumnoPaquete.setPaquete(paquete);
   alumnoPaquete.setMatricula("1110475");
   alumnoPaquete.setStatus("A");
   alumnoPaquete.getPaquete().setEmpresa(usuario.getEmpresa());
   instance.graba(alumnoPaquete, usuario);
   assertNotNull(alumnoPaquete.getId());
 }