/**
  * Convierte fecha.
  *
  * @param strFecha the str fecha
  * @return the date
  * @throws FrontClientException the front PPINV exception
  */
 private Date convierteFecha(String strFecha) throws FrontClientException {
   Date fecha = null;
   SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", LOCALE_MX);
   try {
     fecha = sdf.parse(strFecha);
   } catch (ParseException e) {
     LOG.error("Error al convertir fechas.", e);
     throw new FrontClientException(GralErrorKeys.PPINV_ERR_GRAL.toString(), e);
   }
   return fecha;
 }
  /**
   * Do ini editar conciliacion.
   *
   * @param mapping the mapping
   * @param actionForm the action form
   * @param request the request
   * @param response the response
   * @return the action forward
   * @throws Exception the exception
   */
  public final ActionForward doIniEditarConciliacion(
      final ActionMapping mapping,
      final ActionForm actionForm,
      final HttpServletRequest request,
      final HttpServletResponse response)
      throws Exception {

    PseudoResponse res = new PseudoResponse(request, response);
    ReporteConciliacionForm form;
    int registro = Integer.parseInt(request.getParameter("registro"));
    final Boolean repBoletas =
        (request.getParameter(REP_BOLETAS) == null)
            ? false
            : Boolean.parseBoolean(request.getParameter(REP_BOLETAS));
    if (actionForm instanceof ReporteConciliacionForm) {
      form = (ReporteConciliacionForm) actionForm;
    } else {
      form = new ReporteConciliacionForm();
    }

    SantanderSecurityContext sc = null;
    try {
      sc = getSecurityContext(request);
    } catch (Exception e) {
      LOG.error(e.getMessage(), e);
      throw new FrontClientException(GralErrorKeys.PPINV_ERR_GRAL.toString(), e);
    }
    String perfilOper = sc.getPrivilegiosUsuario().getPrivilegiosPerfil().getPerfil().getNombre();
    final ReporteConciliacionService service =
        (ReporteConciliacionService)
            getWebApplicationContext().getBean(REPORTE_CONCILIACION_SERVICE);

    String errorValida = "";

    if ("TOTALTOTAL".equals(perfilOper.toUpperCase().trim())
        || "FCADMIN".equals(perfilOper.toUpperCase().trim())
        || "FCPROMOTORBP".equals(perfilOper.toUpperCase().trim())) {
      errorValida = service.validaEditarConciliacion(form, registro, repBoletas);
    } else {
      errorValida = ConciliaErrorKeys.PPINV_ERR_CONCILIACION_EDICION_DENEGADA.toString();
    }

    if ("".equals(errorValida)) {
      form = service.obtieneDatosEditarConciliacion(form, registro, repBoletas);
      res.setResponseError(null);
      res.setResponseContent(jsonize(form));
    } else {
      res.setResponseError(errorValida);
    }

    res.commit();

    return null;
  }
  /**
   * Do pagina primera.
   *
   * @param mapping the mapping
   * @param actionForm the action form
   * @param request the request
   * @param response the response
   * @return the action forward
   * @throws Exception the exception
   */
  public final ActionForward doPaginaPrimera(
      final ActionMapping mapping,
      final ActionForm actionForm,
      final HttpServletRequest request,
      final HttpServletResponse response)
      throws Exception {

    PseudoResponse res = new PseudoResponse(request, response);
    ReporteConciliacionForm form;
    String error = "";
    int pagActual = Integer.parseInt(request.getParameter(PAG_ACTUAL));
    final Boolean repBoletas =
        (request.getParameter(REP_BOLETAS) == null)
            ? false
            : Boolean.parseBoolean(request.getParameter(REP_BOLETAS));
    if (actionForm instanceof ReporteConciliacionForm) {
      form = (ReporteConciliacionForm) actionForm;
    } else {
      form = new ReporteConciliacionForm();
    }

    try {
      final ReporteConciliacionService service =
          (ReporteConciliacionService)
              getWebApplicationContext().getBean(REPORTE_CONCILIACION_SERVICE);

      if (form.getPaginacion() == null) {
        form = new ReporteConciliacionForm();
        error = ConciliaErrorKeys.PPINV_ERR_CONCILIACION_CONSULTA_REPORTE.toString();
        res.setResponseContent(jsonize(form));
      }

      if ("".equals(error)) {
        form = service.consultaOperConciliacion(form, "paginaPrimera", pagActual, repBoletas);
        res.setResponseError(null);
        res.setResponseContent(jsonize(form));
      } else {
        res.setResponseError(error);
      }
    } catch (FrontClientException e) {
      LOG.error(e.getMessage(), e);
      res.setResponseError(e.getMessage());
    } catch (BeansException e) {
      LOG.error(e.getMessage(), e);
      res.setResponseError(GralErrorKeys.PPINV_ERR_GRAL.toString());
    } finally {
      res.commit();
    }

    return null;
  }
  /**
   * Do editar conciliacion.
   *
   * @param mapping the mapping
   * @param actionForm the action form
   * @param request the request
   * @param response the response
   * @return the action forward
   * @throws Exception the exception
   */
  public final ActionForward doEditarConciliacion(
      final ActionMapping mapping,
      final ActionForm actionForm,
      final HttpServletRequest request,
      final HttpServletResponse response)
      throws Exception {

    PseudoResponse res = new PseudoResponse(request, response);
    ReporteConciliacionForm form;
    String ejecucionNuevo = request.getParameter("ejecucionNuevo");
    String ejecucionAnterior = request.getParameter("ejecucionAnterior");
    String folioNuevo = request.getParameter("folioNuevo");
    String folioAnterior = request.getParameter("folioAnterior");
    final Boolean repBoletas =
        (request.getParameter(REP_BOLETAS) == null)
            ? false
            : Boolean.parseBoolean(request.getParameter(REP_BOLETAS));
    boolean isParcialidad = false;
    boolean isParcialidadAnt = false;
    boolean isFondeo = false;
    boolean isFondeoAnt = false;
    String error = "";

    if (TRUE.equals(request.getParameter("isParcialidad").trim())) {
      isParcialidad = true;
    }
    if (TRUE.equals(request.getParameter("isParcialidadAnt").trim())) {
      isParcialidadAnt = true;
    }
    if (TRUE.equals(request.getParameter("isFondeo").trim())) {
      isFondeo = true;
    }
    if (TRUE.equals(request.getParameter("isFondeoAnt").trim())) {
      isFondeoAnt = true;
    }

    if (actionForm instanceof ReporteConciliacionForm) {
      form = (ReporteConciliacionForm) actionForm;
    } else {
      form = new ReporteConciliacionForm();
    }

    final ReporteConciliacionService service =
        (ReporteConciliacionService)
            getWebApplicationContext().getBean(REPORTE_CONCILIACION_SERVICE);

    if (ejecucionNuevo.trim().equals(ejecucionAnterior.trim())
        && folioNuevo.trim().equals(folioAnterior.trim())
        && isParcialidad == isParcialidadAnt
        && isFondeo == isFondeoAnt) {
      error = ConciliaErrorKeys.PPINV_ERR_CONCILIACION_EDICION_NOCAMBIOS.toString();
    } else if ("".equals(folioNuevo.trim())) {
      error = ConciliaErrorKeys.PPINV_ERR_CONCILIACION_EDICION_FOLIO.toString();
    } else if ("".equals(ejecucionNuevo.trim())) {
      error = ConciliaErrorKeys.PPINV_ERR_CONCILIACION_EDICION_TIPOEJEC.toString();
    }

    if ("".equals(error)) {
      EditarConciliacionForm datosEditConciliacion = form.getDatosEditConciliacion();
      datosEditConciliacion.setFolio(folioNuevo.trim());
      datosEditConciliacion.setFolioAnt(folioAnterior.trim());
      datosEditConciliacion.setEjecucion(ejecucionNuevo.trim());
      datosEditConciliacion.setEjecucionAnt(ejecucionAnterior.trim());
      datosEditConciliacion.setCompraParcial(isParcialidad);
      datosEditConciliacion.setCompraParcialAnt(isParcialidadAnt);
      datosEditConciliacion.setFondeo(isFondeo);
      datosEditConciliacion.setFondeoAnt(isFondeoAnt);

      SantanderSecurityContext sc = null;
      try {
        sc = getSecurityContext(request);
      } catch (Exception e) {
        LOG.error(e.getMessage(), e);
        throw new FrontClientException(GralErrorKeys.PPINV_ERR_GRAL.toString(), e);
      }

      datosEditConciliacion.setMsjRespuesta(
          service.editarConciliacion(datosEditConciliacion, sc, repBoletas));
      res.setResponseError(null);
      res.setResponseContent(jsonize(form));

    } else {
      res.setResponseError(error);
    }
    res.commit();

    return null;
  }