示例#1
0
        /// <summary>
        /// Inicializa el contenido de los controles (en blanco o predeterminado) con los datos de un registro
        /// </summary>
        private void inicializaContenidoControles()
        {
            //Determinando el estatus de la página
            switch ((TSDK.ASP.Pagina.Estatus)Session["estatus"])
            {
            case TSDK.ASP.Pagina.Estatus.Nuevo:
                //Borrando el contenido
                txtContacto.Text  = "";
                txtCliente.Text   = "";
                txtUbicacion.Text = "";
                break;

            case TSDK.ASP.Pagina.Estatus.Lectura:
            case TSDK.ASP.Pagina.Estatus.Edicion:
                //Intsnaciamos Notificación
                using (SAT_CL.Notificacion.Notificacion objNotificacion = new SAT_CL.Notificacion.Notificacion(Convert.ToInt32(Session["id_registro"])))
                {
                    //Instanciamos Contacto
                    using (SAT_CL.Global.Contacto objContacto = new SAT_CL.Global.Contacto(objNotificacion.id_contacto))
                    {
                        txtContacto.Text = objContacto.nombre + " ID:" + objContacto.id_contacto.ToString();
                        //Instanciamos Cliente
                        using (SAT_CL.Global.CompaniaEmisorReceptor objCompania = new SAT_CL.Global.CompaniaEmisorReceptor(objNotificacion.id_compania_cliente))
                        {
                            //Si la Notificación es Para Todos los Clientes
                            if (objNotificacion.id_compania_cliente == 0)
                            {
                                txtCliente.Text = "TODOS" + " ID:0";
                            }
                            else
                            {
                                txtCliente.Text = objCompania.nombre + " ID:" + objCompania.id_compania_emisor_receptor.ToString();
                            }
                        }
                        //Validamos Tabla
                        if (objNotificacion.id_tabla == 15)
                        {
                            //Si la Notificación es Para Todos los Clientes
                            if (objNotificacion.id_registro == 0)
                            {
                                txtUbicacion.Text = "TODOS" + " ID:0";
                            }
                            else
                            {
                                //Si la Tabla es Ubicación
                                using (SAT_CL.Global.Ubicacion objUbicacion = new SAT_CL.Global.Ubicacion(objNotificacion.id_registro))
                                {
                                    txtUbicacion.Text = objUbicacion.descripcion + " ID:" + objUbicacion.id_ubicacion.ToString();
                                }
                            }
                        }
                    }
                }
                break;
            }
        }
示例#2
0
        /// <summary>
        /// Realiza el proceso de visualización de cambios a realizar en base a la información recuperada desde el archivo
        /// </summary>
        private void AgrupaUbicaciones()
        {
            //Declarando resultao de carga de vista previa
            RetornoOperacion resultado = new RetornoOperacion("Primero debe cargar un archivo .xls o .xlsx.");

            //Validando existencia de archivo en sesión
            if (Session["ArchivoImportacionKilometraje"] != null)
            {
                //Leyendo primer tabla
                using (DataTable mitExcel = Excel.DataTableDeExcelBytes((byte[])Session["ArchivoImportacionKilometraje"], "KILOMETRAJES"))
                {
                    //Si hay datos
                    if (mitExcel != null)
                    {
                        //Creando tabla concentradora de información
                        DataTable mitImportacion = new DataTable();

                        //Añadiendo columna para enumerar resultados
                        DataColumn cID = new DataColumn("Id", typeof(int));
                        cID.AutoIncrement     = true;
                        cID.AutoIncrementSeed = 1;
                        cID.AutoIncrementStep = 1;
                        mitImportacion.Columns.Add(cID);
                        mitImportacion.Columns.Add("No", typeof(int));
                        mitImportacion.Columns.Add("IdO", typeof(int));
                        mitImportacion.Columns.Add("Origen", typeof(string));
                        mitImportacion.Columns.Add("IdD", typeof(int));
                        mitImportacion.Columns.Add("Destino", typeof(string));
                        mitImportacion.Columns.Add("KMS", typeof(decimal));
                        mitImportacion.Columns.Add("Tiempo", typeof(decimal));
                        mitImportacion.Columns.Add("KMSPago", typeof(decimal));
                        mitImportacion.Columns.Add("KMSCobro", typeof(decimal));
                        mitImportacion.Columns.Add("Observacion", typeof(string));
                        mitImportacion.Columns.Add("KMSActual", typeof(decimal));
                        mitImportacion.Columns.Add("IdKMS", typeof(int));

                        //Creando tabla concentradora de información
                        DataTable mitKilometrajes = new DataTable();

                        //Añadiendo columna para enumerar resultados
                        DataColumn cIK = new DataColumn("Id", typeof(int));
                        cIK.AutoIncrement     = true;
                        cIK.AutoIncrementSeed = 1;
                        cIK.AutoIncrementStep = 1;
                        mitKilometrajes.Columns.Add(cIK);
                        mitKilometrajes.Columns.Add("No", typeof(int));
                        mitKilometrajes.Columns.Add("IdO", typeof(int));
                        mitKilometrajes.Columns.Add("Ori", typeof(string));
                        mitKilometrajes.Columns.Add("IdD", typeof(int));
                        mitKilometrajes.Columns.Add("Dest", typeof(string));
                        mitKilometrajes.Columns.Add("KMS", typeof(decimal));
                        mitKilometrajes.Columns.Add("Tiempo", typeof(decimal));
                        mitKilometrajes.Columns.Add("KMSPago", typeof(decimal));
                        mitKilometrajes.Columns.Add("KMSCobro", typeof(decimal));
                        mitKilometrajes.Columns.Add("Observacion", typeof(string));
                        mitKilometrajes.Columns.Add("KMSActual", typeof(decimal));
                        mitKilometrajes.Columns.Add("IdKMS", typeof(int));

                        //Creando tabla concentradora de información
                        DataTable dtUbicacionesSI = new DataTable();
                        dtUbicacionesSI.Columns.Add("No", typeof(int));
                        dtUbicacionesSI.Columns.Add("IdUbicacion", typeof(int));
                        dtUbicacionesSI.Columns.Add("Descripcion", typeof(string));
                        dtUbicacionesSI.Columns.Add("Geoubicacion", typeof(string));

                        //Agruparemos las ubicaciones
                        using (DataTable dtAgrubicaciones = mitExcel)
                        {
                            //Cargando Reporte
                            using (DataTable dtKilometraje = SAT_CL.Global.Kilometraje.ObtieneKilometrajes(0, 0, 0, 0, ((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor))
                            {
                                List <string> ODAgrupados = ((from DataRow ori in dtAgrubicaciones.Rows
                                                              select ori["ORIGEN"].ToString().Trim().ToUpper()).Union(
                                                                 from DataRow des in dtAgrubicaciones.Rows
                                                                 select des["DESTINO"].ToString().Trim().ToUpper())).ToList();
                                if (ODAgrupados.Count > 0)
                                {
                                    foreach (string dr in ODAgrupados)
                                    {
                                        if (dr != null)
                                        {
                                            //string Descripcion = dr.ToString().Trim().ToUpper() == "" ? dr : Cadena.RegresaCadenaSeparada(dr, "(", 0);
                                            string Descripcion = dr.Trim().ToUpper();
                                            //Instanciando concepto
                                            using (UBI.Ubicacion Ubicacion = new UBI.Ubicacion(Descripcion, ((SAT_CL.Seguridad.UsuarioSesion)Session["usuario_sesion"]).id_compania_emisor_receptor))
                                            {
                                                //Validacion
                                                if (Ubicacion.habilitar)
                                                {
                                                    //Ubicaciones que existen en la tabla global.ubicaciones
                                                    dtUbicacionesSI.Rows.Add(-1, Ubicacion.id_ubicacion, dr, Ubicacion.geoubicacion);
                                                }
                                                else
                                                {
                                                    //Ubicaciones que no se encuentran en la tabla y seran dadas de altas
                                                    dtUbicacionesSI.Rows.Add(-2, 0, dr, 0);
                                                }
                                            }
                                        }
                                    }
                                }

                                //Obtiene los kilometrajes que se encuentran en excel
                                List <DataRow> Kilometrajes = (from DataRow r in dtAgrubicaciones.Rows
                                                               select r).ToList();
                                if (Kilometrajes.Count > 0)
                                {
                                    foreach (DataRow dr in Kilometrajes)
                                    {
                                        string         Origen              = Convert.ToString(dr["ORIGEN"]);
                                        string         Destino             = Convert.ToString(dr["DESTINO"]);
                                        List <DataRow> IdUbicacionesOrigen = (from DataRow ori in dtUbicacionesSI.Rows
                                                                              where ori["Descripcion"].ToString().Trim().ToUpper().Contains(Origen.ToString().Trim().ToUpper())
                                                                              select ori).ToList();
                                        List <DataRow> IdUbicacionesDestino = (from DataRow des in dtUbicacionesSI.Rows
                                                                               where des["Descripcion"].ToString().Trim().ToUpper().Contains(Destino.ToString().Trim().ToUpper())
                                                                               select des).ToList();
                                        foreach (DataRow ori in IdUbicacionesOrigen)
                                        {
                                            foreach (DataRow des in IdUbicacionesDestino)
                                            {
                                                //Obtiene los kilometrajes a importar general
                                                List <DataRow> KilometrajesBD = (from DataRow kil in dtKilometraje.Rows
                                                                                 where kil["IdOrigen"].ToString().Contains(Convert.ToString(ori["IdUbicacion"])) &&
                                                                                 kil["IdDestino"].ToString().Contains(Convert.ToString(des["IdUbicacion"]))
                                                                                 select kil).ToList();
                                                if (KilometrajesBD.Count == 1)
                                                {
                                                    //resgistro -1 update
                                                    foreach (DataRow kil in KilometrajesBD)
                                                    {
                                                        //Tabla con origen y destino general
                                                        decimal KmsActual = Convert.ToDecimal(kil["KmsReales"]);
                                                        decimal KmsNuevo  = Convert.ToDecimal(dr["KMS REALES"]);
                                                        int     errorU    = 0;
                                                        if (KmsNuevo == KmsActual)
                                                        {
                                                            errorU = -7;
                                                        }
                                                        else if (KmsNuevo > KmsActual)
                                                        {
                                                            errorU = -8;
                                                        }
                                                        else if (KmsNuevo < KmsActual)
                                                        {
                                                            errorU = -9;
                                                        }
                                                        mitKilometrajes.Rows.Add(null, errorU, ori["IdUbicacion"], dr["ORIGEN"], des["IdUbicacion"], dr["DESTINO"], dr["KMS REALES"], dr["TIEMPO (MIN)"], dr["KMS (PAGO)"], dr["KMS (COBRO)"], "", kil["KmsReales"], kil["Id"]);
                                                        // mitImportacion.Rows.Add(null, error, ori["IdUbicacion"], dr["ORIGEN"], des["IdUbicacion"], dr["DESTINO"], dr["KMS REALES"], dr["TIEMPO (MIN)"], dr["KMS (PAGO)"], dr["KMS (COBRO)"],"Se realizara la modificacion actual", kil["KmsReales"]);
                                                    }
                                                }
                                                else
                                                {
                                                    int error = (Convert.ToInt32(ori["No"]) + Convert.ToInt32(des["No"]));
                                                    mitKilometrajes.Rows.Add(null, error, ori["IdUbicacion"], dr["ORIGEN"], des["IdUbicacion"], dr["DESTINO"], dr["KMS REALES"], dr["TIEMPO (MIN)"], dr["KMS (PAGO)"], dr["KMS (COBRO)"], "Se realizara la modificacion actual", 0, 0);
                                                }
                                            }
                                        }
                                    }
                                    foreach (DataRow dp in mitKilometrajes.Rows)
                                    {
                                        List <DataRow> ag = (from DataRow r in mitKilometrajes.Rows
                                                             where Convert.ToInt32(r["IdO"]) == dp.Field <int>("IdO") &&
                                                             Convert.ToInt32(r["IdD"]) == dp.Field <int>("IdD") &&
                                                             r["Ori"].ToString().Equals(dp["Ori"].ToString()) &&
                                                             r["Dest"].ToString().Equals(dp["Dest"].ToString())
                                                             select r).ToList();

                                        //Validacion de kilometraje no se repite
                                        if (ag.Count == 1)
                                        {
                                            int    error       = (Convert.ToInt32(dp["No"]));
                                            string observacion = "";
                                            if (error == -1)
                                            {
                                                observacion = "Este kilometraje se actualizara";
                                            }
                                            if (error == -2)
                                            {
                                                observacion = "Kilometraje listo para importación";
                                            }
                                            else if (error == -3)
                                            {
                                                observacion = "No existe";
                                            }
                                            else if (error == -4)
                                            {
                                                observacion = "No existe";
                                            }
                                            else if (error == -7)
                                            {
                                                observacion = "Se realizara la modificacion actual Los kilometrajes son iguales";
                                            }
                                            else if (error == -8)
                                            {
                                                observacion = "Se realizara la modificacion actual el kilometraje es mayor";
                                            }
                                            else if (error == -9)
                                            {
                                                observacion = "Se realizara la modificacion actual el kilometraje es menor";
                                            }
                                            mitImportacion.Rows.Add(null, dp["No"], dp["IdO"], dp["Ori"], dp["IdD"], dp["Dest"], dp["KMS"], dp["Tiempo"], dp["KMSPago"], dp["KMSCobro"], observacion, dp["KMSActual"], dp["IdKMS"]);
                                        }
                                        //Validacion de kilometraje que se repite
                                        else if (ag.Count > 1)
                                        {
                                            int No    = (Convert.ToInt32(dp["No"]));
                                            int error = 0;
                                            if (No == -2 || No == -3 || No == -4)
                                            {
                                                error = -5;
                                            }
                                            else
                                            {
                                                error = -6;
                                            }
                                            mitImportacion.Rows.Add(null, error, dp["IdO"], dp["Ori"], dp["IdD"], dp["Dest"], dp["KMS"], dp["Tiempo"], dp["KMSPago"], dp["KMSCobro"], "Kilometraje Repetido", dp["KMSActual"], dp["IdKMS"]);
                                        }
                                        else
                                        {
                                            //Error
                                        }
                                    }
                                }
                            }
                            List <DataRow> kg = (from DataRow k in mitImportacion.Rows
                                                 where k.Field <int>("No") == -2 || k.Field <int>("No") == -3 || k.Field <int>("No") == -4 || k.Field <int>("No") == -5
                                                 select k).ToList();
                            //Valida que el list tenga datos nuevos
                            if (kg.Count > 1)
                            {
                                DataTable KMSNew = (from DataRow k in mitImportacion.Rows
                                                    where k.Field <int>("No") == -2 || k.Field <int>("No") == -3 || k.Field <int>("No") == -4 || k.Field <int>("No") == -5
                                                    orderby k.Field <int>("No") ascending
                                                    select k).CopyToDataTable();
                                //Si hay datos
                                if (KMSNew != null)
                                {
                                    //Almacenando resultados en sesión
                                    Session["DSNew"] = OrigenDatos.AñadeTablaDataSet((DataSet)Session["DSNew"], KMSNew, "TableNew");
                                    //Llenando gridview de vista previa (Sin llaves de selección)
                                    Controles.CargaGridView(gvKmsNuevos, KMSNew, "Id-No", lblOrdenarVistaPreviaKmsNuevos.Text, true, 1);
                                }
                            }
                            else
                            {
                                Controles.InicializaGridview(gvKmsNuevos);
                            }

                            List <DataRow> ug = (from DataRow u in mitImportacion.Rows
                                                 where u.Field <int>("No") == -1 || u.Field <int>("No") == -6 || u.Field <int>("No") == -7 || u.Field <int>("No") == -8 || u.Field <int>("No") == -9
                                                 select u).ToList();
                            //Valida que exista datos para modificacion
                            if (ug.Count > 1)
                            {
                                //Obtiene los kilometrajes update a importar general
                                DataTable KMSUpdate = (from DataRow u in mitImportacion.Rows
                                                       where u.Field <int>("No") == -1 || u.Field <int>("No") == -6 || u.Field <int>("No") == -7 || u.Field <int>("No") == -8 || u.Field <int>("No") == -9
                                                       orderby u.Field <int>("No") ascending
                                                       select u).CopyToDataTable();
                                //Si hay datos
                                if (KMSUpdate != null)
                                {
                                    //Almacenando resultados en sesión
                                    Session["DSUpdate"] = OrigenDatos.AñadeTablaDataSet((DataSet)Session["DSUpdate"], KMSUpdate, "TableUpdate");
                                    //Llenando gridview de vista previa (Sin llaves de selección)
                                    Controles.CargaGridView(gvKmsExistentes, KMSUpdate, "Id-No", lblOrdenarVistaPreviaKmsExistentes.Text, true, 1);
                                }
                            }
                            else
                            {
                                Controles.InicializaGridview(gvKmsExistentes);
                            }
                            //Almacenando resultados en sesión
                            Session["DS"] = OrigenDatos.AñadeTablaDataSet((DataSet)Session["DS"], mitImportacion, "TableImportacion");
                            //Borrando archivo de memoria, una vez que se cargó a una tabla
                            Session["ArchivoImportacionKilometraje"] = null;
                            //Limpiando nombre de archivo
                            ScriptServer.EjecutaFuncionDefinidaJavaScript(this, "<script> BorraNombreArchivoCargado(); </script>", "NombreArchivo");
                            //Señalando resultado exitoso
                            resultado = new RetornoOperacion("Vista Previa generada con éxito.", true);
                        }
                    }
                    //De lo contrario señalando error
                    else
                    {
                        resultado = new RetornoOperacion("No fue posible encontrar la hoja 'CARGOS' en este archivo, por favor valide que sea el archivo correcto y tenga el formato permitido.");
                    }
                }
            }
            //Notificando resultado obtenido
            ScriptServer.MuestraNotificacion(this, resultado, ScriptServer.PosicionNotificacion.AbajoDerecha);
        }