/**
  * Metodo encargado de agregar la operacion pico que es enviada a la lista final de registros.
  * Realiza las mismas validaciones que una operacion normel.
  *
  * @param validaCapVO VO con los datos a validar
  * @param procesaVO VO con los datos a procesa
  * @throws Exception Arroja una excepcion si ocurre un error.
  */
 public void agregaOperacionPico(ValidaCapitalesVO validaCapVO, CargaMasivaVO cargaVO)
     throws Exception {
   ProcesaCapitalesVO procesaVO = null;
   // Indicador de operacion Pico
   validaCapVO.setPicoind(1);
   this.validaValores(validaCapVO);
   if (validaCapVO.getMsgError() == null) {
     procesaVO = preadminDAO.validaCapitales(validaCapVO);
     cargaVO = new CargaMasivaVO(procesaVO);
   } else {
     cargaVO = new CargaMasivaVO();
     cargaVO.setResult(new BigDecimal(-1));
     cargaVO.setErrMsg(validaCapVO.getMsgError());
   }
   // Agrega la informacion extra que se necesita mostrar
   this.populaBeanValidar(cargaVO, validaCapVO);
 }
 public DatosTabulares procesaOrdenesExcel(
     final List ordenes,
     final String formatoFecha,
     final String fileName,
     final SantanderSecurityContext sc)
     throws Exception {
   Iterator iteraOrdenes = null;
   CargaMasivaVO cargaVO = null;
   String orden = null;
   List ordenesProcesadas = new ArrayList();
   DatosTabulares dt = null;
   CargaMasivaJson cargaJson = null;
   BigDecimal seq = cargaMasivaDAO.obtenSecuenciaCarga();
   if (ordenes != null && ordenes.size() > 0) {
     iteraOrdenes = ordenes.iterator();
     while (iteraOrdenes.hasNext()) {
       cargaVO = new CargaMasivaVO();
       cargaJson = (CargaMasivaJson) iteraOrdenes.next();
       this.populaBeanProcesar(cargaVO, cargaJson, formatoFecha);
       try {
         log.info(
             "Bean a procesar:|" + cargaJson.getOrigqty() + "|:|" + cargaJson.getProcesar() + "|");
         if (cargaJson.getProcesar().equals("T")) {
           orden = preadminDAO.procesaCapitales(cargaVO);
           cargaVO.setOrdenOpics(orden);
           this.populaBeanProcesado(cargaVO, cargaJson, true);
           cargaMasivaDAO.generaHistoricoCEIQ(seq, cargaVO, fileName);
           getBitacoraService()
               .registraCapitales(
                   orden.trim(),
                   cargaVO.getBranchId(),
                   FCBitacoraService.TIPO_TX_CAPITALES,
                   cargaVO.getEjecucion(),
                   cargaVO.getFolio(),
                   new HashMap(),
                   FCBitacoraService.MODO_NUEVA_OPERACION,
                   sc);
           ordenesProcesadas.add(cargaVO);
         } else {
           // Hacer lo mismo para las que no se genera.
           this.populaBeanProcesado(cargaVO, cargaJson, false);
           cargaMasivaDAO.generaHistoricoCEIQ(seq, cargaVO, fileName);
           if (cargaVO.isRechazadaUsuario()) {
             ordenesProcesadas.add(cargaVO);
           }
         }
       } catch (Exception e) {
         try {
           log.info("ERROR AL PROCESAR CARGA MASIVA:|" + e.toString() + "|");
           String[] error = e.toString().split("-");
           if (error.length > 1) {
             Integer.parseInt(error[1]);
             log.info("Existe una excepcion try al generar CEIQ:|" + error[1] + "|");
             cargaVO.setResult(new BigDecimal("-" + error[1]));
             cargaVO.setErrMsg(getMsgErrorCache().evaluaMensaje("-" + error[1]));
           } else {
             Integer.parseInt(e.toString());
           }
         } catch (NumberFormatException nfe) {
           log.info("Existe una excepcion catch al generar CEIQ:|" + e + "|");
           cargaVO.setResult(new BigDecimal(-1));
           cargaVO.setErrMsg(getMsgErrorCache().evaluaMensaje(ErrorKeys.ERR_BASE_DATOS));
         }
         this.populaBeanProcesado(cargaVO, cargaJson, false);
         cargaMasivaDAO.generaHistoricoCEIQ(seq, cargaVO, fileName);
         ordenesProcesadas.add(cargaVO);
         // throw e;
       }
     }
     dt = new DatosTabularesDeLista(ordenesProcesadas, parametrosValidacion());
   }
   return dt;
 }
 private void populaBeanProcesado(
     final CargaMasivaVO cargaVO, final CargaMasivaJson cargaJson, final boolean proceso)
     throws Exception {
   if (proceso) {
     cargaVO.setStatus("C");
     cargaVO.setErrMsg("");
     cargaVO.setBrDateFront(cargaJson.getBrPrcinpDate());
     cargaVO.setPriceInd(cargaJson.getPriceInd());
     cargaVO.setFileName(cargaJson.getFileName());
     cargaVO.setTimeCEIQ(FechaUtils.dateToString(new Date()));
     cargaVO.setExpirDateFront(FechaUtils.dateToString(cargaVO.getExpirDate()));
     cargaVO.setPl(cargaJson.getPl());
   } else {
     cargaVO.setStatus("R");
     log.info(
         "************************************************************cargaJson.getError():|"
             + cargaJson.getError()
             + "|");
     log.info(
         "************************************************************cargaJson.getProcesar():|"
             + cargaJson.getProcesar()
             + "|");
     if (cargaJson.getError() != null && cargaJson.getError().trim().length() > 0) {
       cargaVO.setErrMsg(cargaJson.getError());
     } else {
       log.info("cargaJson.getProcesar():|" + cargaJson.getProcesar() + "|");
       if (cargaJson.getProcesar().trim().equals("F")) {
         cargaVO.setErrMsg(
             getMsgErrorCache().evaluaMensaje(ErrorKeys.ERR_ORDEN_RECHAZADA_USUARIO));
         cargaVO.setRechazadaUsuario(true);
       } else {
         cargaVO.setErrMsg(cargaVO.getResult() + ":" + cargaVO.getErrMsg());
       }
     }
   }
 }
 /**
  * Este metodo esta encargado de agregar los valores necesarios para que el bean sea procesado por
  * el store PROCESA_EQUITIES.
  *
  * @param procesaVO
  * @param validaCapVO
  * @throws Exception
  */
 private void populaBeanValidar(final CargaMasivaVO cargaVO, final ValidaCapitalesVO validaCapVO)
     throws Exception {
   if (cargaVO.getResult().intValue() != 0) {
     if (validaCapVO.getPicoind() != 0) {
       cargaVO.setPl("P");
     }
     cargaVO.setStatus("R");
     cargaVO.setErrMsg(cargaVO.getResult() + ":" + cargaVO.getErrMsg());
     cargaVO.setPrice(new BigDecimal(0.0));
   } else {
     cargaVO.setStatus("C");
     cargaVO.setErrMsg("");
     if (!validaCapVO.getBrPrcinpDate().equals(cargaVO.getDealDate())) {
       cargaVO.setErrMsg(
           "LA OPERACIÓN SERA DADA DE ALTA CON " + "FECHA DE OPERACIÓN DEL SIGUIENTE DIA HÁBIL.");
     }
     if (cargaVO.getRemQty().intValue() != 0 && validaCapVO.getPicoind() == 0) {
       cargaVO.setPl("L");
       esPico = true;
     } else {
       esPico = false;
     }
   }
   cargaVO.setBranchId(validaCapVO.getBranch());
   cargaVO.setAccount(validaCapVO.getAccount());
   cargaVO.setOper(validaCapVO.getOper());
   cargaVO.setPs(validaCapVO.getPs());
   cargaVO.setCcy(validaCapVO.getCcy());
   cargaVO.setSecid(validaCapVO.getSecid());
   cargaVO.setOrderType(validaCapVO.getOrderType());
   cargaVO.setOrderInst(validaCapVO.getOrderInst());
   cargaVO.setBrPrcinpDate(validaCapVO.getBrPrcinpDate());
   cargaVO.setBrDateFront(FechaUtils.dateToString(validaCapVO.getBrPrcinpDate()));
   log.info("FECHA A MOSTRARSE:|" + cargaVO.getBrDateFront() + "|");
   cargaVO.setTriggerPrice(validaCapVO.getTriggerPrice());
   cargaVO.setExpirTerm(validaCapVO.getExpirTerm());
   cargaVO.setPorcentaje(validaCapVO.getPorcentaje());
   cargaVO.setPriceInd(validaCapVO.getPriceIndCarga());
   if (validaCapVO.getPriceIndCarga().equals("L")) {
     cargaVO.setPriceLimit(1);
   } else {
     cargaVO.setPriceLimit(0);
   }
   cargaVO.setTimeCEIQ(FechaUtils.dateToString(new Date()));
   cargaVO.setSel(validaCapVO.getSelCarga());
   cargaVO.setDealDateFront(FechaUtils.dateToString(cargaVO.getDealDate()));
   cargaVO.setExpirDateFront(FechaUtils.dateToString(cargaVO.getExpirDate()));
 }
 /**
  * Metodo encargado de validar las ordenes contenidas en el archivo de excel proporcionado por la
  * carga masiva a traves del store SPP_VALIDA_EQUITIES y regresa la respuesta en DatosTabulares.
  *
  * @param ordenes Lista de ordenes a validar.
  * @return DatosTabulares resultado de la validacion.
  * @throws Exception Arroja una excepcion si ocurre un error.
  */
 public DatosTabulares validaOrdenesExcel(final List ordenes, final String formatoFecha)
     throws Exception {
   Iterator iteraOrdenes = null;
   ValidaCapitalesVO validaCapVO = null;
   CargaMasivaVO cargaVO = null;
   List ordenesValidadas = new ArrayList();
   DatosTabulares dt = null;
   ProcesaCapitalesVO procesaVO;
   if (ordenes != null && ordenes.size() > 0) {
     iteraOrdenes = ordenes.iterator();
     while (iteraOrdenes.hasNext()) {
       validaCapVO = (ValidaCapitalesVO) iteraOrdenes.next();
       // Valida antes de ejecutar SPP_VALIDA_EQUITIES
       this.validaValores(validaCapVO);
       if (validaCapVO.getMsgError() == null) {
         procesaVO = preadminDAO.validaCapitales(validaCapVO);
         cargaVO = new CargaMasivaVO(procesaVO);
       } else {
         cargaVO = new CargaMasivaVO();
         cargaVO.setResult(new BigDecimal(-1));
         cargaVO.setErrMsg(validaCapVO.getMsgError());
       }
       // Agrega la informacion extra que se necesita mostrar
       this.populaBeanValidar(cargaVO, validaCapVO);
       if (cargaVO.getPrice() != null && cargaVO.getOrigQty() != null) {
         cargaVO.setExtPrice(cargaVO.getPrice().multiply(cargaVO.getOrigQty()));
       }
       ordenesValidadas.add(cargaVO);
       if (esPico) {
         CargaMasivaVO tmp = new CargaMasivaVO(cargaVO);
         log.info("Fecha branch antes de pico:|" + tmp.getBrDateFront() + "|");
         this.agregaOperacionPico(validaCapVO, tmp);
         log.info("Fecha branch despues de pico:|" + tmp.getBrDateFront() + "|");
         tmp.setOrigQty(tmp.getRemQty());
         tmp.setPl("P");
         if (tmp.getPrice() != null) {
           tmp.setExtPrice(tmp.getPrice().multiply(tmp.getOrigQty()));
         }
         log.info("Fecha a mostrarse antes:|" + tmp.getBrDateFront() + "|");
         ordenesValidadas.add(tmp);
       }
     }
   }
   if (ordenesValidadas.size() > 0) {
     dt =
         new DatosTabularesDeLista(
             ordenesValidadas, parametrosValidacion() + "," + getParametrosExtras());
   }
   return dt;
 }
 /**
  * Metodo encargado de poblar el bean que sera procesado por el store SPP_PROCESA_EQUITIES.
  *
  * @param procesaVO Bean a poblar
  * @param cargaJson Bean con la informacion origen
  * @throws Exception Arroja una excepcion si ocurre un error
  */
 private void populaBeanProcesar(
     final CargaMasivaVO cargaVO, final CargaMasivaJson cargaJson, final String formatoFecha)
     throws Exception {
   cargaVO.setBranchId(cargaJson.getBranchId());
   cargaVO.setAccount(cargaJson.getAccount());
   cargaVO.setCno(cargaJson.getCno());
   cargaVO.setTrad(cargaJson.getTrad());
   cargaVO.setOper(cargaJson.getOper());
   cargaVO.setPs(cargaJson.getPs());
   cargaVO.setCcy(cargaJson.getCcy());
   cargaVO.setOrigQty(preadminService.toBigDecimal(cargaJson.getOrigqty()));
   cargaVO.setSecid(cargaJson.getSecid());
   cargaVO.setCouponNo(cargaJson.getCouponNo());
   cargaVO.setSeries(cargaJson.getSeries());
   cargaVO.setSymbolid(cargaJson.getSymbolid());
   cargaVO.setOrderType(cargaJson.getOrderType());
   cargaVO.setBrPrcinpDate(preadminService.toDate(cargaJson.getBrPrcinpDate(), formatoFecha));
   cargaVO.setDealDate(preadminService.toDate(cargaJson.getDealDate(), formatoFecha));
   cargaVO.setHoraIni(cargaJson.getHoraIni());
   cargaVO.setHoraFin(cargaJson.getHoraFin());
   cargaVO.setPrice(preadminService.toBigDecimal(cargaJson.getPrice()));
   cargaVO.setExtPrice(
       preadminService.toBigDecimal(
           Double.toString(Formateador.dobleSeguro(cargaJson.getExtPrice()))));
   cargaVO.setCommAmt(preadminService.toBigDecimal(cargaJson.getCommAmt()));
   cargaVO.setVatAmt(preadminService.toBigDecimal(cargaJson.getVatAmt()));
   cargaVO.setCommRate(preadminService.toBigDecimal(cargaJson.getCommRate()));
   cargaVO.setVatRate(preadminService.toBigDecimal(cargaJson.getVatRate()));
   cargaVO.setShortPosInd(cargaJson.getShortPosInd());
   cargaVO.setSettDays(cargaJson.getSettDays());
   cargaVO.setPropInd(cargaJson.getPropInd());
   cargaVO.setLotInd(cargaJson.getLotInd());
   cargaVO.setTriggerPrice(preadminService.toBigDecimal(cargaJson.getTriggerPrice()));
   cargaVO.setExpirTerm(preadminService.toBigDecimal(cargaJson.getExpirTerm()));
   if (cargaJson.getPriceInd().equals("L")) {
     cargaVO.setPriceLimit(1);
   } else {
     cargaVO.setPriceLimit(0);
   }
   cargaVO.setExpirDate(preadminService.toDate(cargaJson.getExpirDate(), formatoFecha));
   cargaVO.setOrderClass(cargaJson.getOrderClass());
   cargaVO.setOrderTerm(preadminService.toBigDecimal(cargaJson.getOrderTerm()));
   cargaVO.setCitizFlag(cargaJson.getCitizFlag());
   cargaVO.setBrokOper(cargaJson.getBrokOper());
   cargaVO.setPort(cargaJson.getPort());
   cargaVO.setCtpeId(cargaJson.getCtpeId());
   cargaVO.setInitTime(cargaJson.getIniTime());
   cargaVO.setEndTime(cargaJson.getEndTime());
   cargaVO.setOrderInst(cargaJson.getOrderInst());
   cargaVO.setBranchId(cargaJson.getBranchId());
   cargaVO.setType(cargaJson.getType());
   cargaVO.setPorcentaje(preadminService.toBigDecimal(cargaJson.getPorcentaje()));
   cargaVO.setPriceInd(cargaJson.getPriceInd());
   cargaVO.setStatus(cargaJson.getStatus());
   cargaVO.setFileName(cargaJson.getFileName());
 }