예제 #1
0
파일: Lote.cs 프로젝트: gasuaga/DominioCGM2
        /**
         * @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);
        }
예제 #2
0
        /**
         * @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);
        }
예제 #3
0
파일: Lote.cs 프로젝트: gasuaga/DominioCGM2
        /**
         * @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);
        }
예제 #4
0
        /**
         * @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);
        }
예제 #5
0
        /**
         * @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);
        }
예제 #6
0
        /**
         * @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
                }
            }
        }