Example #1
0
    private void LecturaDeArchivoYGuardadoDeDatos(string Destino)
    {
        try
        {
            CustomOleDbConnection cn = new CustomOleDbConnection(Destino);
            cn.Open();
            cn.setCommand("SELECT * FROM tbl_LibrasPlaneadas WHERE [Clave Invernadero] <> ''");
            //AND [Año Plantación] <> '' AND [Semana Plantación] <> '' AND [Interplanting] <> '' AND [Número De Corte] <> '' AND [Semana De Corte] <> '' AND [Año De Corte] <> '' AND [Libras] <> ''
            DataTable dtL = cn.executeQuery();

            foreach (DataColumn C in dtL.Columns)
            {
                string columnName = C.ColumnName;
                columnName   = columnName.Replace("á", "a").Replace("é", "e").Replace("í", "i").Replace("ó", "o").Replace("ú", "u").Replace("ñ", "ni");
                columnName   = Regex.Replace(columnName, "[^a-zA-Z0-9]+", "", RegexOptions.Compiled);
                C.ColumnName = columnName;
            }

            if (dtL.Rows.Count > 0)
            {
                DataAccess da = new DataAccess();
                DataTable  dt = da.executeStoreProcedureDataTable("spr_InsertarCajasPlaneadas", new Dictionary <string, object>()
                {
                    { "@LibrasPlaneadas", dtL },
                    { "@idUsuario", 0 }
                });

                if (dt.Rows.Count > 0)
                {
                    if (dt.Rows[0]["Estado"].ToString().Equals("1"))
                    {
                        fu_Plantilla.Dispose();
                        popUpMessageControl1.setAndShowInfoMessage("Se ha importado correctamente la plantilla.", Comun.MESSAGE_TYPE.Success);
                    }
                    else
                    {
                        fu_Plantilla.Dispose();
                        popUpMessageControl1.setAndShowInfoMessage("No fué posible importar la plantilla.", Comun.MESSAGE_TYPE.Error);
                    }
                }
                else
                {
                    fu_Plantilla.Dispose();
                    popUpMessageControl1.setAndShowInfoMessage("No fué posible importar la plantilla.", Comun.MESSAGE_TYPE.Error);
                }
            }
            else
            {
                fu_Plantilla.Dispose();
                log.Error("El archivo no tiene información para leer.");
                popUpMessageControl1.setAndShowInfoMessage("El archivo no tiene información para leer.", Comun.MESSAGE_TYPE.Info);
            }

            cn.Close();
        }catch (Exception x)
        {
            fu_Plantilla.Dispose();
            log.Error(x);
            popUpMessageControl1.setAndShowInfoMessage("Error en la importación, descargue la plantilla llene el formato e intente subirlo de nuevo.", Comun.MESSAGE_TYPE.Error);
        }
    }
Example #2
0
    public void readFile(string Destino, int anioPartida, int semanaPartida, string[] idsDePlantas)
    {
        int registrosProcesados        = 0;
        CustomOleDbConnection cn       = new CustomOleDbConnection(Destino);
        DataAccess            da       = new DataAccess();
        DataTable             dtCiclos = null;
        var    errorInvernadero        = false;
        string CiclosSinCorte1         = "";
        string CiclosError             = "";
        bool   Sobreescribir           = false;
        string idsPlantas = String.Join(",", idsDePlantas);

        try
        {
            List <string>  Formatos       = new List <string>();
            TimeCalculator timeCalculator = new TimeCalculator();
            if (CheckSobreescribirCiclos.Checked)
            {
                Sobreescribir = true;
                cn.Open();
                // cn.setCommand("SELECT * FROM Ciclos WHERE planta IN (" + idsPlantas + ") AND (semanap >= " + semanaPartida + " AND aniop >= " + anioPartida + ") AND planta IS NOT NULL AND numcorte IS NOT NULL");
                cn.setCommand("SELECT * "
                              + "FROM Ciclos c "
                              + "WHERE c.planta IN (" + idsPlantas + ") "
                              + "AND planta IS NOT NULL "
                              + "AND variedad IS NOT NULL"
                              + "AND numcorte IS NOT NULL"
                              );
                dtCiclos = cn.executeQuery();
                cn.Close();
            }
            else
            {
                cn.Open();
                // cn.setCommand("SELECT * FROM Ciclos WHERE planta IN (" + idsPlantas + ") AND (semanap >= " + semanaPartida + " AND aniop >= " + anioPartida + ") AND planta IS NOT NULL AND numcorte IS NOT NULL");
                cn.setCommand("SELECT * "
                              + "FROM Ciclos c "
                              + "WHERE c.planta IN (" + idsPlantas + ") "
                              + "AND planta IS NOT NULL AND numcorte IS NOT NULL"
                              );
                dtCiclos = cn.executeQuery();
                cn.Close();
            }

            if (dtCiclos != null)
            {
                if (dtCiclos.Rows.Count > 0)
                {
                    //Proceso para la importacion de los ciclos
                    DataTable dtCycles            = CycleTable();
                    DataTable dtCyclesDetail      = CycleDetailTable();
                    int       index               = -1;
                    string    lastCombination     = string.Empty;
                    int       ciclosSinConfigurar = 0;

                    foreach (DataRow R in dtCiclos.Rows)
                    {
                        if (!R["numcorte"].ToString().Trim().Equals(""))
                        {
                            string planta      = R["planta"].ToString().Trim();
                            string invernadero = R["invernadero"].ToString().Trim();
                            if (invernadero.Length > 4)
                            {
                                errorInvernadero = true;
                            }

                            string variedad      = R["variedad"].ToString().Trim();
                            string semanap       = R["semanap"].ToString().Trim();
                            string aniop         = R["aniop"].ToString().Trim();
                            string semanapc      = R["semanapc"].ToString().Trim();
                            string aniopc        = R["aniopc"].ToString().Trim();
                            string interplanting = R["interplanting"].ToString().Trim().Equals("2") ? "1" : "0";
                            string codigoprefijo = R["codigoprefijo"].ToString().Trim();
                            string corte         = R["numcorte"].ToString().Trim();
                            string semana        = R["semana"].ToString().Trim();
                            string anio          = R["año"].ToString().Trim();
                            string fallo         = R["fallo"].ToString().Trim();
                            string suelo         = R["suelo"].ToString().Trim();

                            if (lastCombination != (planta + invernadero + variedad + semanap + aniop + semanapc + aniopc + interplanting + codigoprefijo + suelo))
                            {
                                /*Ciclo nuevo. Revisar corte 1*/
                                if (!corte.Equals("1"))
                                {
                                    if (!CiclosSinCorte1.Contains("<br/>Planta: " + planta + " Invernadero: " + invernadero + " Plantación: " + semanap + "/" + aniop))
                                    {
                                        CiclosSinCorte1 += "<br/>Planta: " + planta + " Invernadero: " + invernadero + " Plantación: " + semanap + "/" + aniop;
                                    }
                                }
                                else
                                {
                                    lastCombination = planta + invernadero + variedad + semanap + aniop + semanapc + aniopc + interplanting + codigoprefijo + suelo;
                                    DataRow dr     = dtCycles.NewRow();
                                    int     p      = 0;
                                    int     semp   = 0;
                                    int     anp    = 0;
                                    int     sempc  = 0;
                                    int     anpc   = 0;
                                    int     interp = 0;
                                    int     vari   = 0;
                                    int     su     = 0;

                                    index++;

                                    dr[0] = index;
                                    if (int.TryParse(planta.ToString(), out p))
                                    {
                                        dr[1] = p;
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la planta.";
                                    }

                                    if (p == Int32.Parse(invernadero[0].ToString()))
                                    {
                                        DataTable dtSearch = da.executeStoreProcedureDataTable("spr_getSearch", new Dictionary <string, object>()
                                        {
                                            { "@buscar", "GreenHouse" }, { "@valor", invernadero }
                                        });
                                        if (dtSearch.Rows.Count > 0)
                                        {
                                            dr[2] = invernadero;
                                        }
                                        else
                                        {
                                            CiclosError += "<br/>El codigo del invernadero " + invernadero + " no es válido.";
                                        }
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El invernadero " + invernadero + " no pertenece a la planta " + planta + ".";
                                    }

                                    if (int.TryParse(variedad.ToString(), out vari))
                                    {
                                        dr[3] = vari;
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la variedad.";
                                    }
                                    if (int.TryParse(semanap.ToString(), out semp))
                                    {
                                        dr[4] = semp;
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la semana de plantación.";
                                    }
                                    if (int.TryParse(aniop.ToString(), out anp))
                                    {
                                        dr[5] = anp;
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto el año de plantación.";
                                    }
                                    if (int.TryParse(semanapc.ToString(), out sempc))
                                    {
                                        dr[6] = sempc;
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la semana de primer corte.";
                                    }
                                    if (int.TryParse(aniopc.ToString(), out anpc))
                                    {
                                        dr[7] = anpc;
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en el año de primer corte.";
                                    }
                                    if (int.TryParse(interplanting.ToString(), out interp))
                                    {
                                        dr[8] = interp;
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en interplanting.";
                                    }
                                    dr[9] = codigoprefijo;
                                    if (int.TryParse(suelo.ToString(), out su))
                                    {
                                        dr[10] = su;
                                    }
                                    dtCycles.Rows.Add(dr);
                                }
                            }
                            else
                            {
                                //incremento = true;
                            }

                            decimal d  = 0;
                            int     co = 0;
                            int     se = 0;
                            int     an = 0;
                            for (int i = 14; i < dtCiclos.Columns.Count; i++)
                            {
                                DataRow drD = dtCyclesDetail.NewRow();
                                drD[0] = index;
                                if (int.TryParse(corte.ToString(), out co))
                                {
                                    drD[1] = co;
                                }
                                else
                                {
                                    CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en el corte.";
                                }
                                if (int.TryParse(semana.ToString(), out se))
                                {
                                    drD[2] = se;
                                }
                                else
                                {
                                    CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la semana.";
                                }
                                if (int.TryParse(anio.ToString(), out an))
                                {
                                    drD[3] = an;
                                }
                                else
                                {
                                    CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en el año.";
                                }
                                drD[4] = fallo;
                                drD[5] = dtCiclos.Columns[i].ColumnName.Trim();
                                if (R[dtCiclos.Columns[i].ColumnName].ToString().Trim().Equals(""))//se valida si el ciclo tiene libras
                                {
                                    if (!CiclosError.Contains("<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " no se le configuraron libras."))
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " no se le configuraron libras.";
                                    }
                                }
                                else
                                {
                                    if (decimal.TryParse(R[dtCiclos.Columns[i].ColumnName].ToString().Trim(), System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d))
                                    {
                                        drD[6] = d.ToString("0.000000000000");//libras
                                    }
                                    else
                                    {
                                        CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en las libras.";
                                    }
                                }

                                dtCyclesDetail.Rows.Add(drD);
                                registrosProcesados++;
                            }
                        }
                        else
                        {
                            ciclosSinConfigurar++;
                        }
                    }

                    Dictionary <string, object> prm = new Dictionary <string, object>();
                    prm.Add("@Ciclos", dtCycles);
                    prm.Add("@Cortes", dtCyclesDetail);
                    prm.Add("@semanaUnion", timeCalculator.getActualWeek());
                    prm.Add("@anioUnion", timeCalculator.getYearFromDate(DateTime.Now));
                    prm.Add("@Sobreescribir", Sobreescribir ? 1 : 0);
                    prm.Add("@semanaPartida", semanaPartida);
                    prm.Add("@anioPartida", anioPartida);
                    prm.Add("@idUser", int.Parse(System.Web.HttpContext.Current.Session["userIDInj"].ToString()));

                    if (errorInvernadero)
                    {
                        popUpMessageControl1.setAndShowInfoMessage("Los invernaderos deben anotarse con máximo 4 caracteres", Comun.MESSAGE_TYPE.Success);
                    }
                    else
                    {
                        if (CiclosSinCorte1.Equals(""))
                        {
                            if (CiclosError.Equals(""))
                            {
                                foreach (DataRow row in dtCiclos.Rows)
                                {
                                    if (dtCiclos.Rows.Count != 0)
                                    {
                                        foreach (DataColumn tr in dtCiclos.Columns)
                                        {
                                            Formatos.Add(string.Format("{0}", tr.DataType));
                                        }
                                    }
                                }

                                //divGrid.InnerHtml = ConvertDataTableToHTML(dtCiclos, "<table class=\"grid\" cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gv_Ciclos\" style=\"border-collapse:collapse;\">", Formatos);

                                DataSet dt = da.executeStoreProcedureDataSet("spr_EjecucionImportar", prm);
                                if (dt.Tables[0].Rows[0][0].ToString().Equals("ok"))
                                {
                                    if (ciclosSinConfigurar == 0)
                                    {
                                        popUpMessageControl1.setAndShowInfoMessage("La ejecución se cargó exitosamente.<br />Se guardaron " + (index + 1) + " ciclos.", Comun.MESSAGE_TYPE.Success);
                                    }
                                    else
                                    {
                                        popUpMessageControl1.setAndShowInfoMessage("La ejecución se cargó exitosamente, sin embargo " + ciclosSinConfigurar + " ciclos fueron omitidos ya que no estaban configurados en la plantilla.", Comun.MESSAGE_TYPE.Success);//Este cas ya no sale porque se omiten en el primer select
                                    }
                                }
                                else
                                {
                                    switch (dt.Tables[0].Rows[0]["ErrorNumber"].ToString())
                                    {
                                    case "801":
                                        popUpMessageControl1.setAndShowInfoMessage("Existen productos o variedades configuradas en la plantilla que no se encuentran en el sistema.<br/>" + DTtoHTMLstring(dt.Tables[1], ""), Comun.MESSAGE_TYPE.Error);
                                        break;

                                    case "802":
                                        popUpMessageControl1.setAndShowInfoMessage("Existen invernaderos configurados en la plantilla que no se encuentran en el sistema.<br/>" + DTtoHTMLstring(dt.Tables[1], ""), Comun.MESSAGE_TYPE.Error);
                                        break;

                                    case "245":
                                        popUpMessageControl1.setAndShowInfoMessage("Error en la conversión de tipo de dato.<br/> " + DTtoHTMLstring(dt.Tables[1], ""), Comun.MESSAGE_TYPE.Error);
                                        break;

                                    default:
                                        popUpMessageControl1.setAndShowInfoMessage("No se logró completar la importación: " + dt.Tables[0].Rows[0]["ErrorMessage"].ToString(), Comun.MESSAGE_TYPE.Error);
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                popUpMessageControl1.setAndShowInfoMessage("La importación no puede continuar: <br /><br />" + CiclosError, Comun.MESSAGE_TYPE.Error);
                            }
                        }
                        else
                        {
                            popUpMessageControl1.setAndShowInfoMessage("Imposible importar la ejecución porque los siguientes ciclos no tienen Corte 1:<br/><br/>" + CiclosSinCorte1, Comun.MESSAGE_TYPE.Error);
                        }
                    }
                }
                else
                {
                    popUpMessageControl1.setAndShowInfoMessage("No existen ciclos con semana y año mayores a los especificados.", Comun.MESSAGE_TYPE.Error);
                }
            }
            else
            {
                popUpMessageControl1.setAndShowInfoMessage("Revise que las tablas de ciclos y marcas no hayan sido alteradas.", Comun.MESSAGE_TYPE.Error);
            }
        }
        catch (Exception ex)
        {
            Log.Error(ex);
            //popUpMessageControl1.setAndShowInfoMessage("No se pudo cargar la ejecución. El último registro procesado es el " + registrosProcesados.ToString(), Comun.MESSAGE_TYPE.Error);
            popUpMessageControl1.setAndShowInfoMessage(ex.Message, Comun.MESSAGE_TYPE.Error);
        }
        finally
        {
            cn.Close();
        }
    }
    private bool LecturaDeArchivoYCreacionDeTablas(string Destino)
    {
        CustomOleDbConnection cn = new CustomOleDbConnection(Destino);
        DataSet ds       = null;
        DataSet dsPlanta = null;

        try
        {
            cn.Open();

            //saco invernaderos
            cn.setCommand("SELECT * FROM Volumen");
            ds = cn.executeQuery();

            //saco de que planta es:
            cn.setCommand("SELECT * FROM Planta");
            dsPlanta = cn.executeQuery();

            cn.Close();
        }
        catch (Exception e)
        {
            Log.Error(e.ToString());
            popUpMessageControl1.setAndShowInfoMessage("No fue posible leer desde el archivo excel.", Common.MESSAGE_TYPE.Info);
        }
        finally
        {
            cn.Close();
        }

        if (ds != null)
        {
            if (ds.Tables[0].Rows.Count > 0)
            {
                System.Text.StringBuilder xmlString = new System.Text.StringBuilder();
                xmlString.AppendFormat("<{0}>", "Plantilla");

                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    for (int i = 1; i < ds.Tables[0].Columns.Count - 1; i++)
                    {
                        row.ItemArray[i].ToString();
                        xmlString.AppendFormat("<c><idPlanta>{0}</idPlanta>", dsPlanta.Tables[0].Rows[0]["Planta"].ToString());                                                            //Planta
                        xmlString.AppendFormat("<idInv>{0}</idInv>", row.ItemArray[0].ToString().Trim());                                                                                  //Invernadero
                        xmlString.AppendFormat("<nomBoquilla>{0}</nomBoquilla>", ds.Tables[0].Columns[i + 1].ColumnName.ToString().Trim());                                                //nombre de boquilla
                        xmlString.AppendFormat("<volumen>{0}</volumen></c>", String.IsNullOrEmpty(row.ItemArray[i + 1].ToString().Trim()) ? "0" : row.ItemArray[i + 1].ToString().Trim()); //volumen
                    }
                }
                xmlString.AppendFormat("</{0}>", "Plantilla");

                var parameters = new Dictionary <string, object>();
                parameters.Add("@Plantilla", xmlString.ToString());
                try
                {
                    DataAccess.executeStoreProcedureNonQuery("spr_INSERT_Plantilla", parameters, this.Session["connection"].ToString());
                    popUpMessageControl1.setAndShowInfoMessage("Datos Guardados", Common.MESSAGE_TYPE.Success);
                }
                catch (Exception ex)
                {
                    Log.Error(ex.ToString());
                    popUpMessageControl1.setAndShowInfoMessage("No fue posible insertar datos.", Common.MESSAGE_TYPE.Info);
                }
            }
        }



        return(true);
    }