/// <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; } }
/// <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); }