/** * @fn public void crearNuevaImportacion() * * @brief Carga el lote a inconsert. * * @author WINMACROS * @date 17/07/2017 */ public void crearNuevaImportacion() { Sistema s = Sistema.Sis; s.accionesCodigo("Inicio crear nueva importacion"); int ban = 0; baseDatos bd = baseDatos.Bd; do { s.ejecutarMacro(s.m_app, "nombreLoteC", Nombre); s.ejecutarMacro(s.m_app, s.direccion + "Cargar lote/NuevaImportacion1.iim" , "Crear nueva imporatcion1", true); s.ejecutarMacro(s.m_app, "urlLoteC", Exc.Direccion.ToString()); s.ejecutarMacro(s.m_app, "TAG POS=1 TYPE=INPUT:FILE ATTR=ID:btnAddFile CONTENT= {{urlLoteC}}" , "Poner la url en el inpur file", false); s.ejecutarMacro(s.m_app, s.direccion + "Cargar lote/NuevaImportacion2.iim" , "Crear nueva imporatcion2", true); do { ban = comprobarEstadoImportacion(); } while (ban != 1 && ban != -1); } while (ban != 1); bd.cambiarEstadoLote(this); }
/** * @fn public int irAlMortor() * * @brief Va al motor y extrae la pocicion en * la que se encuentra dentro de inconsert * * @author WINMACROS * @date 13/07/2017 * * @return La pocicion del motor. */ public int irAlMortor() { Sistema s = Sistema.Sis; bool bandera = true; int posPosible = 2; //arranca de la pocicion dos (la 1 son los cabezales de la tabla) while (bandera) //minetras no encuentre al motor que tiene el mismo nombre que this sigue buscando { s.ejecutarMacro(s.m_app, "nombreMotorC", Nombre); s.ejecutarMacro(s.m_app, "posC", posPosible.ToString()); s.ejecutarMacro(s.m_app, s.direccion + "irAlMotor.iim", "Ir al motor", true); //se pociciona sobre el motor string extract = s.ejecutarMacroExtract(s.m_app, 2, "Nombre del motor antes de entrar"); //extrae ek binvre dek nitir if (extract == this.Nombre) { bandera = false; } else { posPosible++; } if (s.S != iMacros.Status.sOk) { posPosible = 2; } } return(posPosible); }
/** * @fn public void cargarLotesAlMarcador() * * @brief Crea los lotes dentro del motor. * * @author WINMACROS * @date 17/07/2017 */ public void cargarLotesAlMarcador() { Sistema s = Sistema.Sis; baseDatos bd = baseDatos.Bd; int pos = irAlMotorYDetener(); entrarAlMotor(pos); LotesParaCargar.Sort(); foreach (LoteMarcador lM in LotesParaCargar) { lM.cargarVariables(); s.ejecutarMacro(s.m_app, s.direccion + "Cargar lote/CargarLoteAMotor.iim", "Cargar el lote: " + lM.Lot.Nombre + " Al motor", true); esperarQueElMotorCarge(); lM.cargarVariables(); s.ejecutarMacro(s.m_app, s.direccion + "Cargar lote/CrearLoteDentroMotor.iim", "Crear un nuevo lote dentro del motor", true); esperarQueElMotorCarge(); s.ejecutarMacro(s.m_app, "TAG POS=1 TYPE=BUTTON:BUTTON ATTR=ID:btnSave CONTENT=Guardar", "Guardar cambios en el motor", false); esperarQueElMotorCarge(); lM.Lot.Estado = Lote.tipoEstado.Activo; LotesActivos.Add(lM); bd.cambiarEstadoLote(lM.Lot); s.accionesCodigo("Cargar el lote: " + lM.Lot.Nombre + " En el motor", "Completo"); bd.agregarLoteEnMarcador(lM); } LotesParaCargar = LotesParaCargar.Where(l => !LotesActivos.Contains(l)).ToList(); darlePLayMotor(); }
/** * @fn public void irAlMortor(int pPos) * * @brief Va al motor ubicado en una pocicion * * @author WINMACROS * @date 13/07/2017 * * @param pPos La pocicion del motor. */ public void irAlMortor(int pPos) { Sistema s = Sistema.Sis; s.ejecutarMacro(s.m_app, "nombreMotorC", Nombre); s.ejecutarMacro(s.m_app, "posC", pPos.ToString()); s.ejecutarMacro(s.m_app, s.direccion + "irAlMotor.iim", "Ir al motor", true); }
/** * @fn public void darlePLayMotor() * * @brief Da play al motor. * * @author WINMACROS * @date 17/07/2017 */ public void darlePLayMotor() { Sistema s = Sistema.Sis; baseDatos bd = baseDatos.Bd; s.ejecutarMacro(s.m_app, "Datos", Nombre); s.ejecutarMacro(s.m_app, s.direccion + "Cargar lote/PlayLote.iim", "Darle play al motor", true); Estado = estadoMotor.activo; bd.cambiarEstadoMotor(this); }
/** * @fn private int comprobarEstadoImportacion(int pPos) * * @brief Una vez importado se comprueba * si el lote se esta cargado, esta * completo o fue abortado. * * @author WINMACROS * @date 17/07/2017 * * @return Estado del lote. */ private int comprobarEstadoImportacion() { String nombreLote; String estaodLote; Sistema s = Sistema.Sis; int ban = 0; int pos; do { nombreLote = ""; estaodLote = ""; pos = 2; do { s.ejecutarMacro(s.m_app, "nombreLoteC", Nombre); s.ejecutarMacro(s.m_app, "posC", pos.ToString()); s.ejecutarMacro(s.m_app, s.direccion + "Cargar lote/ComprobarEstadoLote.iim" , "Comprobar estado lote", true); //extrae el nombre y el estado del //lote estaodLote = s.ejecutarMacroExtract(s.m_app, 2, "Estado del lote: " + Nombre); nombreLote = s.ejecutarMacroExtract(s.m_app, 1, "Nomre del lote en la pocicion" + pos.ToString()); if (nombreLote == "#EANF#" || nombreLote == "NODATA") //si el nombrre no dio nada { return(-1); //retorna -1 se importa denuevo } pos++; if (pos > 10) { pos = 0; } } while (nombreLote != Nombre); //prueba hasta qe los nombres sean iguales //(nombre del lote igual lombre de la imporacion) ban = Lote.estadoLoteImportacion(estaodLote); //es un numero que denomina el estado //de la imporacion s.accionesCodigo("Estado lote importacion: ", ban.ToString()); if (ban == -2) // si el lote no esta que lo importe de nuevo { return(-1); } else if (ban == -1) //si lo aborto { eliminarImportacion(0); //elimina la imporacion return(-1); } else if (ban == 1) { Estado = Lote.tipoEstado.Importado; //Imporado } } while (ban == 2); //2 es en ejecucuin return(ban); }
/** * @fn private void eliminarLoteMotor() * * @brief Es el encargado de eliminar el lote que se * encuentra primero dentro del motor. * * @author WINMACROS * @date 14/07/2017 */ private void eliminarLoteMotor() { esperarQueElMotorCarge(); Sistema s = Sistema.Sis; s.ejecutarMacro(s.m_app, s.direccion + "eliminar lote/VencerLotes.iim", "Vencer el lote del motor", true); esperarQueElMotorCarge(); esperarQueElMotorCarge(); s.ejecutarMacro(s.m_app, s.direccion + "eliminar lote/EliminarLoteMotor.iim", "Eliminar el lote del motor", true); esperarQueElMotorCarge(); esperarQueElMotorCarge(); }
/** * @fn private int eliminarImporacionAux() * * @brief El metodo que llama a las macros * para eliminar la imporacion. * * @author WINMACROS * @date 17/07/2017 * * @return El estado de la imporacion que * intento eliminar. */ private int eliminarImporacionAux() { int ban = 0; Sistema s = Sistema.Sis; s.ejecutarMacro(s.m_app, "Lote", Nombre); s.ejecutarMacro(s.m_app, s.direccion + "eliminar lote/EliminarLoteImportacion.iim", "Eliminar Importacion ", true); s.ejecutarMacro(s.m_app, "nombreLoteC", Nombre); s.ejecutarMacro(s.m_app, s.direccion + "Cargar lote/ComprobarEstadoLote.iim", "Comprobar estado importacion eliminada", true); String estaodLote = s.ejecutarMacroExtract(s.m_app, 0, "Estado del lote: " + Nombre); ban = Lote.estadoLoteParaEliminar(estaodLote); return(ban); }
/** * @fn public void eliminarImportacion(int pCantidad) * * @brief Elimina la imporacion de inconsert. * * @author WINMACROS * @date 17/07/2017 * * @param pCantidad La cantidad de intentos que tomo * para eliminar la imporacion. */ public void eliminarImportacion(int pCantidad) { Sistema s = Sistema.Sis; int ban = eliminarImporacionAux(); s.accionesCodigo("Intento n." + pCantidad + " de eliminacion de lote:" + Nombre, ban.ToString()); baseDatos bd = baseDatos.Bd; if (pCantidad < 2) { if (ban == 0) { eliminarImportacion(pCantidad + 1); } else { s.ejecutarMacro(s.m_app, "WAIT SECONDS=10", "Esperar 10s" + false); Estado = Lote.tipoEstado.Eliminado; } } else { Estado = Lote.tipoEstado.ErrorEliminacion; } bd.cambiarEstadoLote(this); }
/** * @fn private void entrarAlMotor(int pPos) * * @brief Entra al motor de una pocicion * * @author WINMACROS * @date 13/07/2017 * * @param pPos Pocicion del motor */ private void entrarAlMotor(int pPos) { Sistema s = Sistema.Sis; s.ejecutarMacro(s.m_app, "TAG POS=" + pPos + " TYPE=td ATTR=IDX:10", "Entrar al motor", false); esperarQueElMotorCarge(); }
/** * @fn private void esperarQueElMotorCarge() * * @brief Una vez dentor del motor esperar a que el motor carge todos los lotes * o tambien cuando se importa un lote al motor para esperear que carge * los contactos * * @author WINMACROS * @date 13/07/2017 */ private void esperarQueElMotorCarge() { bool bandera = false; Sistema s = Sistema.Sis; do { s.ejecutarMacro(s.m_app, "TAG POS=1 TYPE=div ATTR=class:formWaitingMessage EXTRACT=HTM", "Fijarse en el div que tiene los mensajes si tiene algo", false); string ext = s.ejecutarMacroExtract(s.m_app, 0, "Mensajes del div de mensajes"); if (ext.Contains("none") || ext.Contains("#EANF#") || ext.Contains("NODATA")) { bandera = false; } else { bandera = true; s.ejecutarMacro(s.m_app, "WAIT SECONDS=2", "Esteperar 2 segundos", false); } } while (bandera); }
/** * @fn private void detenerMotor(string pEstado, int pos) * * @brief Detiene el motor en inconsert * * @author WINMACROS * @date 17/07/2017 * * @param pEstado Estado actual del motor. * @param pos Pos del motor en la tabla. */ private void detenerMotor(string pEstado, int pos) { baseDatos bd = baseDatos.Bd; Sistema s = Sistema.Sis; if (pEstado == "RUNNING")//si el estado acutal del motor es en andando se lo frena { s.ejecutarMacro(s.m_app, "TAG POS=" + pos + " TYPE=td ATTR=IDX:9", "Detener el motor si esta en running", false); irAlMortor(); } Estado = estadoMotor.denenido; bd.cambiarEstadoMotor(this); }
/** * @fn public void cargarVariables() * * @brief Carga las variables dentor de imacros con * los datos necesarios para cargarlo * al motor * * @author WINMACROS * @date 14/07/2017 */ public void cargarVariables() { Sistema s = Sistema.Sis; s.ejecutarMacro(s.m_app, "nombreMotorC", Lot.Marc.Nombre); s.ejecutarMacro(s.m_app, "nombreLoteC", Lot.Nombre); s.ejecutarMacro(s.m_app, "fechaIniC", Desde.ToString("yyyy-MM-dd")); s.ejecutarMacro(s.m_app, "fechaFinC", Hasta.ToString("yyyy-MM-dd")); s.ejecutarMacro(s.m_app, "baseContC", Lot.Frec.BaseContactacion.ToString()); s.ejecutarMacro(s.m_app, "prioLoteC", Lot.Frec.PrioridadLote.ToString()); s.ejecutarMacro(s.m_app, "tiempoEsperaC", hallarTiempo()); }
/** * @fn private int lotesParaEliminar() * * @brief Cuenta cuantos lotes estan incluidos en el motor. * Si el motor es de recursos guarda los nombre de los * lotes en una lista para sacar reporte * * @author WINMACROS * @date 14/07/2017 * * @return Cantidad de lotes dentro del motor (Int). */ private int lotesParaEliminar() { Sistema s = Sistema.Sis; baseDatos bd = baseDatos.Bd; bool bandera = false; int pos = 2; // Arranca de la pocicion 2 ya que la primera es el cabezal de la tabla do { Status sta = s.ejecutarMacro(s.m_app, "TAG SELECTOR=HTML>BODY>DIV:nth-of-type(4)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV:nth-of-type(2)>DIV>FORM>DIV:nth-of-type(2)>FIELDSET:nth-of-type(3)>DIV:nth-of-type(2)>DIV>TABLE>TBODY>TR:nth-of-type(2)>TD>DIV>DIV>TABLE>TBODY>TR:nth-of-type(" + pos.ToString() + ")>TD:nth-of-type(2) EXTRACT=TXT", "Reccore todos los lotes del motor", false); if (sta != iMacros.Status.sOk) { bandera = false; //si el statis de imacros no es ok es porque llego al final de los lotes del motor } else { string extract = s.ejecutarMacroExtract(s.m_app, 0, "Nombre del lote dentro del motor"); if (!extract.Contains("#EANF#"))//si no contiene vasura el extract { bandera = true; if (this.Tipo == tipoMarcador.mvp || this.Tipo == tipoMarcador.vb) { LotesParaSacarReporte.Add(extract);// agrega a lotes para sacar reporte } if (!eliminarLoteAnterior(extract)) { s.Lotes.Add(elLoteNoExiste(extract)); } //si no encuentra el lote dentro de la lista de lotes //activos crea un nevo lote solo con el nombre y el estado //para eliminar pos++; } else { return(pos - 2); } } } while (bandera); return(pos - 2); }
/** * @fn public void eliminarLotes() * * @brief Elimina todos los lotes dentro del * marcador. * * @author WINMACROS * @date 14/07/2017 */ public void eliminarLotes() { Sistema s = Sistema.Sis; int pos = irAlMotorYDetener(); s.ejecutarMacro(s.m_app, "TAG POS=" + pos + " TYPE=TD ATTR=idx:4 EXTRACT=TXT", "Extrae campaña asociada al proceso", false); string campana = s.ejecutarMacroExtract(s.m_app, 0, "Campaña del motor"); s.m_app.iimClose(); // cierro el firefox s.iniciarYLogear(Sistema.navegadores.silent.ToString()); // abre el imacros con el navegador nativo irAlMortor(pos); entrarAlMotor(pos); int lotes = lotesParaEliminar(); //cantidad de lotes dentor del motor if (LotesParaSacarReporte.Count >= 1) // si la lista de reportes no esta vacia saca los reportes { tolls.T.obtenerReporteLote(LotesParaSacarReporte, campana); // que se encuentran dentor de la lista } string rutaReportes = @"E:\reportes\"; //Direccion donde se guarda los reportes string[] archivos = System.IO.Directory.GetFiles(rutaReportes, "*.bak"); // se borran todos los archivos .bak foreach (string arch in archivos) //son descargados junto a los pdf { System.IO.File.Delete(arch); } s.m_app.iimClose(); //se cierra el imacros s.iniciarYLogear(Sistema.navegadores.fx.ToString()); //Se abre el firefox irAlMortor(pos); entrarAlMotor(pos); if (lotes > 0) { for (int i = 0; i < lotes; i++) { eliminarLoteMotor(); //elimina la x cantidad de lotes que recolecto anteriormente } } }