From f86d17b730d216e74319b213264693e8840229ed Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Thu, 16 Jan 2020 10:58:07 -0700 Subject: [PATCH 1/7] --- App_Code/ClsPaginas.vb | 2 + GPS/RepArrastre.aspx | 48 +++++++++++++++++++++ GPS/RepArrastre.aspx.cs | 25 +++++++++++ Inicio.aspx.vb | 10 +++-- Ventas/RepConciliacionSat.aspx.cs | 22 ---------- reporteador.aspx | 51 ++++++++++++++++++++++ reporteador.aspx.cs | 70 +++++++++++++++++++++++++++++++ 7 files changed, 202 insertions(+), 26 deletions(-) create mode 100644 GPS/RepArrastre.aspx create mode 100644 GPS/RepArrastre.aspx.cs create mode 100644 reporteador.aspx create mode 100644 reporteador.aspx.cs diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 761bcfd3e..4ec17f940 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -3482,6 +3482,8 @@ Public Class ClsPaginas PaginaDict = New System.Collections.Hashtable PaginaDict.Add("/Inicio.aspx".ToUpper(), -1) + PaginaDict.Add("/reporteador.aspx".ToUpper(), -1) + PaginaDict.Add("/GPS/RepArrastre.aspx".ToUpper(), -1) PaginaDict.Add("/Ventas/RepConciliacionEmitidosSat.aspx".ToUpper(), -1) PaginaDict.Add("/Ventas/RepConciliacionSat.aspx".ToUpper(), 716) PaginaDict.Add("/Ventas/SolicitudesSAT.aspx".ToUpper(), 717) diff --git a/GPS/RepArrastre.aspx b/GPS/RepArrastre.aspx new file mode 100644 index 000000000..4891aa97a --- /dev/null +++ b/GPS/RepArrastre.aspx @@ -0,0 +1,48 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="RepArrastre.aspx.cs" Inherits="GPS_RepArrastre" %> + + + + + + + Reporte de Arrastre + + + + + + + + + + +
+
+
+ + +
+
+
+
+ Vehiculo: +
+
+ + + +
+ +
+
+
+ +
+
+
+
+ + + diff --git a/GPS/RepArrastre.aspx.cs b/GPS/RepArrastre.aspx.cs new file mode 100644 index 000000000..cff9cc9c6 --- /dev/null +++ b/GPS/RepArrastre.aspx.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class GPS_RepArrastre : ClsPaginas +{ + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + + DdlDispositivo.DataSource = get_GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario) ; + DdlDispositivo.DataBind(); + } + + } + + protected void BtnConsultar_Click(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/Inicio.aspx.vb b/Inicio.aspx.vb index 687113a45..ceb88aa8a 100644 --- a/Inicio.aspx.vb +++ b/Inicio.aspx.vb @@ -54,8 +54,9 @@ Partial Class Inicio End Function Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - If Not IsPostBack Then - If UsuarioActual.CveUsuario = 100 Then + If Not IsPostBack Then + 'Reporte de ventas sin registrar sig + If UsuarioActual.TienePermisoProceso(287) Then Using objgral As New ClsGenerales objgral.RepConciliacionSatDetalleGET(UsuarioActual.CveEmpresa, "I", "", "", 10) @@ -66,8 +67,9 @@ Partial Class Inicio End Using GvFoliosSAT.DataBind() - End If - If UsuarioActual.CveUsuario = 100 Then + End If + 'Reporte de ventas pendientes de cancelar + If UsuarioActual.TienePermisoProceso(288) Then Using objventas As New ClsVentas If (GetFacturasCanceladasPendientesWS(objventas, UsuarioActual.Empresa.RFC, UsuarioActual.CveEmpresa, False)) AndAlso objventas.DtResultados.Rows.Count > 0 Then RegistraScript("$('#ModalMitotereCancelaPendiente').modal();", "mitoterosatCanceladasPendientesWS") diff --git a/Ventas/RepConciliacionSat.aspx.cs b/Ventas/RepConciliacionSat.aspx.cs index fc917b6fe..9bf833b30 100644 --- a/Ventas/RepConciliacionSat.aspx.cs +++ b/Ventas/RepConciliacionSat.aspx.cs @@ -30,28 +30,6 @@ public partial class Ventas_RepConciliacionSat : ClsPaginas { if (!IsPostBack) { - - //CrystalDecisions.CrystalReports.Engine.ReportDocument cryRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); - //cryRpt.Load(String.Format("C:\\Proyectos\\wwwSIG\\Empresas\\Grales\\Formatos\\CatPS.rpt", UsuarioActual.Empresa.Ruta)); - //System.Data.DataTable DtDatos = new System.Data.DataTable(); - //using (ClsProductosServicios ObjPS = new ClsProductosServicios()) - //{ - // if (ObjPS.GetPSLite(-1, 119, "-1", "-1", "02541", -1, -1, -1, -1)) - // { - // DtDatos = ObjPS.DtResultados; - - // } - //} - //cryRpt.SetDataSource(DtDatos); - //CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo coninfo = new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo(); - //cryRpt. - ////cryRpt.SetDatabaseLogon("JCaudillo", "JCau127*953");// 293357 - //reports.ReportSource = cryRpt; - //reports.RefreshReport(); - //// reports.Refresh(); - - - DateTime fecha; DateTime fechaInicio = DateTime.Now; DateTime fechaFin = DateTime.Now; diff --git a/reporteador.aspx b/reporteador.aspx new file mode 100644 index 000000000..7839d5639 --- /dev/null +++ b/reporteador.aspx @@ -0,0 +1,51 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="reporteador.aspx.cs" Inherits="reporteador" %> + + + + + + + + + + + + + + +
+
+
+ Imprime reporte +
+
+ + + + + + + + + + + + + + + + + + + + + + + <%----%> + + +
+ + + diff --git a/reporteador.aspx.cs b/reporteador.aspx.cs new file mode 100644 index 000000000..5b0a79f08 --- /dev/null +++ b/reporteador.aspx.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Extensiones; + + +public partial class reporteador : ClsPaginas +{ + public string rutaArchivo + { + get + { + return ViewState["rutaArchivo"].ToString(); + } + set { ViewState["rutaArchivo"] = value; } + } + protected void Page_PreInit(object sender, EventArgs e) + { + + } + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + rutaArchivo = Server.MapPath("~/Empresas/Grales/Formatos/CatPS.rpt"); + CrystalDecisions.CrystalReports.Engine.ReportDocument cryRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); + cryRpt.Load(rutaArchivo); + GVParametros.DataSource = cryRpt.DataDefinition.ParameterFields; + GVParametros.DataBind(); + } + } + + protected void GVParametros_RowDataBound(object sender, GridViewRowEventArgs e) + { + if (e.Row.RowType == DataControlRowType.DataRow) + { + CrystalDecisions.Shared.ParameterValues defaultValues = ((CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition)e.Row.DataItem).DefaultValues; + if (defaultValues.Count > 0) + { + e.Row.FCTextBox("TxtValor").Text = defaultValues[0].Description; + } + //CrystalDecisions.Shared.ParameterValues. DefaultValues + } + } + + protected void LnkImprime_Click(object sender, EventArgs e) + { + + string Formato = "PDF"; + List lista = new List(); + CrystalDecisions.CrystalReports.Engine.ReportDocument cryRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); + cryRpt.Load(rutaArchivo); + foreach (GridViewRow gvRow in GVParametros.Rows) + { + if (gvRow.RowType == DataControlRowType.DataRow) + { + lista.Add(new CrystalParametro(gvRow.DataKey("Name"), gvRow.FCTextBox("TxtValor").Text)); + + } + + } + ImprimirbytesPDF(ImprimirPDFCrystal(rutaArchivo, (new System.Data.DataTable()), lista, "Productos y Servicios", Formato), "Productos y Servicios", Formato); + + } + + +} \ No newline at end of file From c6eb22000dba2fa5fa19fc82e13f6828931cc327 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Thu, 16 Jan 2020 10:58:38 -0700 Subject: [PATCH 2/7] alerta al agregar un usario repetido en las cuentas de sig --- App_Code/ClsContabilidad.vb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 75aaea0c6..6d374654f 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -4653,7 +4653,11 @@ Public Class ClsContabilidad Retorno = SqlAdapter.SelectCommand.Parameters("@CveCuenta").Value.ToString.ToEntero 'Retorno = If(Data IsNot Nothing AndAlso Data.Rows.Count > 0, Data.Rows(0)("CveCuenta").ToString.ToEntero, 0) Catch Ex1 As SqlException - Me.OnError("Ocurrió un error al Guardar la cuenta.", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + If Ex1.Message.Contains("IND_Conta_Cuentas_Codigo_CveEmpresa") Then + Me.OnError("No se puede registrar una cuenta ya existente", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + Else + Me.OnError("Ocurrió un error al Guardar la cuenta.", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If Catch ex As Exception Me.OnError("Ocurrió un error al Guardar la cuenta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try From 22fe25651a7a6197b27463325b3f4c632188022d Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Thu, 16 Jan 2020 13:08:37 -0700 Subject: [PATCH 3/7] se agregaron indicadores de perdida, ganancia y final en compras --- Bancos/FluctuacionCambiaria.aspx | 178 ++++++++++++++++++++++++++-- Bancos/FluctuacionCambiaria.aspx.vb | 15 +++ 2 files changed, 185 insertions(+), 8 deletions(-) diff --git a/Bancos/FluctuacionCambiaria.aspx b/Bancos/FluctuacionCambiaria.aspx index 92a134d6d..1d9e3118f 100644 --- a/Bancos/FluctuacionCambiaria.aspx +++ b/Bancos/FluctuacionCambiaria.aspx @@ -3,6 +3,112 @@ + @@ -40,7 +146,7 @@
TC:
- +
@@ -59,6 +165,62 @@ + + +
+
+
+

PERDIDA

+
+ +
+ MXN + + + +
+
+
+
+
+
+

GANANCIA

+
+ +
+
+
+ MXN + + + +
+
+
+
+
+
+
+
+

FINAL

+
+ +
+
+
+ MXN + + + +
+
+
+
+
+
+
+
+
@@ -115,9 +277,9 @@ EmptyDataText="No se Encontraron Cuentas Bancarias." ToolTip="Listado de Cuentas Bancarias" CssClass="table table-hover table-striped ScrollAD mysmallbtn" GridLines="None"> - - - + + + @@ -140,10 +302,10 @@ + CssClass="table table-hover table-striped ScrollAD mysmallbtn" GridLines="None"> - + @@ -152,7 +314,7 @@
-
+
@@ -187,7 +349,7 @@ CssClass="table table-hover table-striped ScrollAD mysmallbtn" GridLines="None"> - + diff --git a/Bancos/FluctuacionCambiaria.aspx.vb b/Bancos/FluctuacionCambiaria.aspx.vb index ad9f24a9d..461c8ee82 100644 --- a/Bancos/FluctuacionCambiaria.aspx.vb +++ b/Bancos/FluctuacionCambiaria.aspx.vb @@ -71,6 +71,20 @@ Partial Class Bancos_FluctuacionCambiaria If ObjBancos.GetFluctuaciones(TxtFecha.Text.ToDate, 1, UsuarioActual.CveEmpresa) Then GvCompras.DataSource = ObjBancos.DtResultados 'LblTotalCompras.Text = ObjBancos.DtResultados.SUM("Fluctuacion").FormatoNumero + Dim Perdida As DataTable = ObjBancos.DtResultados.FiltraParametros("GananciaPerdida = 'PERDIDA' AND TipoRow = 2") + Dim Ganancias As DataTable = ObjBancos.DtResultados.FiltraParametros("GananciaPerdida = 'GANANCIA' AND TipoRow = 2") + + Dim PerdidaAux As Double = Perdida.SUM("Fluctuacion").Abs + Dim GanaciaAux As Double = Ganancias.SUM("Fluctuacion") + + Dim Final As Double = GanaciaAux - PerdidaAux + '"widget-thumb-icon bg-green-jungle fa fa-usd"widget-thumb-icon bg-red fa fa-usd + IImagenResultado.Attributes("class") = If(Final > 0, "widget-thumb-icon bg-green-jungle fa fa-usd", "widget-thumb-icon bg-red fa fa-usd") + + LtIndicador_ExistenciaPerdida.Text = PerdidaAux.ToString.FormatoNumero + LtIndicador_ValorPesosGanancia.Text = GanaciaAux.ToString.FormatoNumero + LtIndicador_CPPesosFinal.Text = Final.Abs.ToString.FormatoNumero + LblTotal = ObjBancos.DtResultados.SUM("Fluctuacion").FormatoNumero Else GvCompras.DataSource = Nothing @@ -78,6 +92,7 @@ Partial Class Bancos_FluctuacionCambiaria End If ObjBancos.Dispose() GvCompras.DataBind() + UpIndicadores.Visible = True If GvCompras.Rows.Count > 0 Then GvCompras.Rows(GvCompras.Rows.Count - 1).CssClass = "SubTotales2" End If From 3f3994a9d9e1d7b0f9608fb02263d1d4ba58ef14 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Thu, 16 Jan 2020 15:45:03 -0700 Subject: [PATCH 4/7] agregando indicadores en ventas --- Bancos/FluctuacionCambiaria.aspx | 58 ++++++++++++++++++++++++++++- Bancos/FluctuacionCambiaria.aspx.vb | 19 +++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/Bancos/FluctuacionCambiaria.aspx b/Bancos/FluctuacionCambiaria.aspx index 1d9e3118f..337683f4a 100644 --- a/Bancos/FluctuacionCambiaria.aspx +++ b/Bancos/FluctuacionCambiaria.aspx @@ -165,7 +165,7 @@ - +
@@ -243,6 +243,62 @@ + + +
+
+
+

PERDIDA

+
+ +
+ MXN + + + +
+
+
+
+
+
+

GANANCIA

+
+ +
+
+
+ MXN + + + +
+
+
+
+
+
+
+
+

FINAL

+
+ +
+
+
+ MXN + + + +
+
+
+
+
+
+
+
+
diff --git a/Bancos/FluctuacionCambiaria.aspx.vb b/Bancos/FluctuacionCambiaria.aspx.vb index 461c8ee82..e6f1bf0f3 100644 --- a/Bancos/FluctuacionCambiaria.aspx.vb +++ b/Bancos/FluctuacionCambiaria.aspx.vb @@ -78,7 +78,7 @@ Partial Class Bancos_FluctuacionCambiaria Dim GanaciaAux As Double = Ganancias.SUM("Fluctuacion") Dim Final As Double = GanaciaAux - PerdidaAux - '"widget-thumb-icon bg-green-jungle fa fa-usd"widget-thumb-icon bg-red fa fa-usd + IImagenResultado.Attributes("class") = If(Final > 0, "widget-thumb-icon bg-green-jungle fa fa-usd", "widget-thumb-icon bg-red fa fa-usd") LtIndicador_ExistenciaPerdida.Text = PerdidaAux.ToString.FormatoNumero @@ -103,7 +103,24 @@ Partial Class Bancos_FluctuacionCambiaria LblTotalVentas.Text = "0.00" If ObjBancos.GetFluctuaciones(TxtFecha.Text.ToDate, 2, UsuarioActual.CveEmpresa) Then GvVentas.DataSource = ObjBancos.DtResultados + + Dim Perdida As DataTable = ObjBancos.DtResultados.FiltraParametros("Fluctuacion < 0") + Dim Ganancias As DataTable = ObjBancos.DtResultados.FiltraParametros("Fluctuacion > 0") + + Dim PerdidaAux As Double = Perdida.SUM("Fluctuacion").Abs + Dim GanaciaAux As Double = Ganancias.SUM("Fluctuacion") + + Dim Final As Double = GanaciaAux - PerdidaAux + + IImagenFinalVentas.Attributes("class") = If(Final > 0, "widget-thumb-icon bg-green-jungle fa fa-usd", "widget-thumb-icon bg-red fa fa-usd") + + LtIndicador_PerdidasVentas.Text = PerdidaAux.ToString.FormatoNumero + LtIndicador_GanaciaVentas.Text = GanaciaAux.ToString.FormatoNumero + LtIndicador_FinalVentas.Text = Final.ToString.FormatoNumero + LblTotalVentas.Text = ObjBancos.DtResultados.SUM("Fluctuacion").FormatoNumero + + UpIndicadoresVentas.Visible = True Else GvVentas.DataSource = Nothing Alert("Ocurrio un error al cargar las compras", TipoMensaje.MsgAdvertencia) From 62edc4e1a3213405f21bb1747c769ba437d4b64c Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Thu, 16 Jan 2020 15:48:04 -0700 Subject: [PATCH 5/7] =?UTF-8?q?correcci=C3=B3n=20de=20lo=20anterior?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bancos/FluctuacionCambiaria.aspx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Bancos/FluctuacionCambiaria.aspx b/Bancos/FluctuacionCambiaria.aspx index 337683f4a..51ea90d65 100644 --- a/Bancos/FluctuacionCambiaria.aspx +++ b/Bancos/FluctuacionCambiaria.aspx @@ -170,7 +170,7 @@
-

PERDIDA

+

PÉRDIDA

@@ -202,7 +202,7 @@
-

FINAL

+

PÉRDIDA O GANANCIA

@@ -248,7 +248,7 @@
-

PERDIDA

+

PÉRDIDA

@@ -280,7 +280,7 @@
-

FINAL

+

PÉRDIDA O GANANCIA

From d1d55c0d42fac6d5e192b41abc4b1d1e68326534 Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Thu, 16 Jan 2020 18:10:58 -0700 Subject: [PATCH 6/7] --- GPS/RepArrastre.aspx | 51 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/GPS/RepArrastre.aspx b/GPS/RepArrastre.aspx index 4891aa97a..d8f7b0845 100644 --- a/GPS/RepArrastre.aspx +++ b/GPS/RepArrastre.aspx @@ -1,19 +1,19 @@ <%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="RepArrastre.aspx.cs" Inherits="GPS_RepArrastre" %> - + - + - + Reporte de Arrastre - + - + - + - +
@@ -42,7 +42,42 @@
+
+
+
+
+
+
+
+ + TIEMPOS OPERATIVOS +
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
- + From a9918251a3ef28d205a5a8333ebc530f4e236fcf Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Sat, 18 Jan 2020 14:26:00 -0700 Subject: [PATCH 7/7] Reparrastre --- App_Code/ClsGPS.vb | 212 ++++++++++++++++++-------------- GPS/RepArrastre.aspx | 188 ++++++++++++++++++++++++---- GPS/RepArrastre.aspx.cs | 77 +++++++++++- Imagenes/rsz_11rsz_cargreen.png | Bin 3351 -> 12360 bytes 4 files changed, 358 insertions(+), 119 deletions(-) diff --git a/App_Code/ClsGPS.vb b/App_Code/ClsGPS.vb index 9bffc2e1f..6e1ee8d05 100644 --- a/App_Code/ClsGPS.vb +++ b/App_Code/ClsGPS.vb @@ -8,9 +8,9 @@ Imports System.IO Imports Newtonsoft.Json Public Class ClsGPS - Implements IDisposable + Implements IDisposable #Region "Campos" - 'SQL + 'SQL Private Econ As OleDb.OleDbConnection Private SqlConexion As SqlConnection Private SqlAdapter As SqlDataAdapter @@ -45,9 +45,9 @@ Public Class ClsGPS Public Property EstaDentro As Boolean Public Property CvePuntoDeInteresGrupo As Integer Public Property CveGeoReferencia As Integer - Public Property MensajeError As String + Public Property MensajeError As String #End Region - + Sub New(Optional TransaccionCompartida As SqlTransaction = Nothing) If TransaccionCompartida Is Nothing Then @@ -74,9 +74,9 @@ Public Class ClsGPS End With If Not SqlTransacc Is Nothing Then SqlAdapter.SelectCommand.Transaction = SqlTransacc Data = New DataTable - End Sub + End Sub #Region "Conexiones" - + Private Sub ConexionAdd() If ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then Try @@ -109,7 +109,7 @@ Public Class ClsGPS CveConexion = 0 End If - End Sub + End Sub #End Region Public Function IniciaTransacSQL() As SqlTransaction If SqlTransacc Is Nothing Then SqlTransacc = SqlConexion.BeginTransaction() @@ -120,8 +120,40 @@ Public Class ClsGPS End Sub Public Sub Commit() SqlTransacc.Commit() - End Sub - + End Sub +#Region "Arrastre" + + Public Function GPS_ArrastreGET(CveDispositivo As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_GPS_ArrastreGET") + With SqlAdapter.SelectCommand.Parameters + addParameters("@CveDispositivo", SqlDbType.Int, CveDispositivo) + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener los datos de Arrastre", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return Retorno + End Function + Public Function GPS_ArrastreActivarDesactivar(CveDispositivo As Integer, ArrastreActivo As Boolean) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_GPS_ArrastreActivarDesactivar") + With SqlAdapter.SelectCommand.Parameters + addParameters("@CveDispositivo", SqlDbType.Int, CveDispositivo) + addParameters("@ArrastreActivo", SqlDbType.Bit, ArrastreActivo) + End With + Try + Dataset = New DataSet() + SqlAdapter.Fill(Dataset) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al activar o desactivar la alerta de Arrastre", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return Retorno + End Function +#End Region Public Function GetTemperatura(CveDispositivo As Integer, CveSensor As Integer, strFechaInicio As String, strFechaFin As String, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_GPS_TramaData") @@ -170,8 +202,8 @@ Public Class ClsGPS OnError("Ocurrió un error al obtener las zonas horarias", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno - End Function - + End Function + #Region "FacturasSims" Public Function GetFacturasSims(CveUsuario As Integer, CveEmpresa As Integer, Periodo As Integer) As Boolean Dim retorno As Boolean = False @@ -258,9 +290,9 @@ Public Class ClsGPS addParameters("@cveGpsFacturaSim", SqlDbType.Int, cveGpsFacturaSim) retorno = RunQuery("Ocurrió un error al eliminar el FacturasSims.") Return retorno - End Function + End Function #End Region - + #Region "M O D E L O S" Public Function AddMarca(Marca As String, Estatus As Boolean, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -456,13 +488,13 @@ Public Class ClsGPS End Try Return Retorno - End Function - - + End Function + + #End Region - + #Region "Rastreo" - + Public Function CoordenadasGet(id As Integer, Nombre As String) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Coords_Get") @@ -1565,11 +1597,11 @@ Public Class ClsGPS End Try Return Retorno - End Function - - + End Function + + #End Region - + #Region "Puntos de interes" Public Function PuntoDeInteresAdd(PuntoDeInteres As String, CveCliente As Integer, GEOM As String, Estatus As Boolean, Descripcion As String, CvePuntoDeInteresGrupo As Integer) As Boolean Dim Retorno As Boolean = False @@ -1736,12 +1768,12 @@ Public Class ClsGPS OnError("Ocurrió un error al obtener el reporte de los Puntos de Interés.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno - End Function - - - + End Function + + + #End Region - + #Region "CONDUCTORES" Public Function ConductorAdd(Conductor As String, Estatus As Boolean, CveUsuario As Integer, SerieLicencia As String, FechaNacimiento As Date, VencimientoLicencia As Date, Optional CveCliente As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -1887,9 +1919,9 @@ Public Class ClsGPS End Try Return Retorno - End Function + End Function #End Region - + #Region "CONTROLADORES GRAFICOS" Public Function ControladorGraficoAdd(ControladorGrafico As String, UM As String) As Boolean Dim Retorno As Boolean = False @@ -1957,10 +1989,10 @@ Public Class ClsGPS End Try Return Retorno - End Function - + End Function + #End Region - + #Region "V E H I C U L O S" Public Function VehiculoAdd(Modelo As String, Color As String, Serie As String, Nombre As String, NoEconomico As String, CveUsuario As Integer, CveCliente As Integer) As Boolean Dim Retorno As Boolean = False @@ -2038,9 +2070,9 @@ Public Class ClsGPS End Try Return Retorno - End Function + End Function #End Region - + #Region "TIPO COMUNICACION" Public Function TipoComunicacionAdd(TipoComunicacion As String, Estatus As Boolean, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2113,10 +2145,10 @@ Public Class ClsGPS End Try Return Retorno - End Function - + End Function + #End Region - + #Region "R U T A S" Public Function AddRuta(Ruta As String, CveCliente As Integer) As Boolean Dim Retorno As Boolean = False @@ -2179,9 +2211,9 @@ Public Class ClsGPS OnError("Ocurrió un error al eliminar la ruta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno - End Function + End Function #End Region - + Public Function GetResGuardantesSim(CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_GPS_ResGuardantesSimnGet") @@ -2195,9 +2227,9 @@ Public Class ClsGPS OnError("Ocurrió un error al obtener el proveedor de comunicacion.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno - End Function + End Function #Region "Proveedor Comunicacion" - + Public Function ProveedorComunicacion_Add(ProveedorComunicacion As String, Estatus As Byte, CveUsuario As Integer, CveTipoComunicacion As Integer, APNIP As String, APNUSER As String, APNPASS As String, correo As String) As Boolean Dim Retorno As Boolean = False @@ -2279,12 +2311,12 @@ Public Class ClsGPS End Try Return Retorno - End Function - + End Function + #End Region - + #Region "Proveedor Comunicacion Cuentas" - + Public Function ProveedoresComunicacionCuentasAdd(CveProveedorComunicacion As Integer, CvePlanDato As Integer, CveUsuario As Integer, IP As String, SSID As String, NumeroTelefono As String, Estatus As Integer, CveEmpresa As Integer, Imei As String, CveUsuarioResguardante As Integer, Optional Activacion As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_GPS_ProveedoresComunicacionCuentasAdd") @@ -2423,10 +2455,10 @@ Public Class ClsGPS End Try Return Retorno - End Function - + End Function + #End Region - + #Region "E V E N T O S" Public Function EventoTipoAdd(EventoTipo As String, Estatus As Boolean, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -2901,15 +2933,15 @@ Public Class ClsGPS End Try Return Retorno - End Function - - - + End Function + + + #End Region - + #Region "Plan de Datos" - - + + Public Function PlanesDatosAdd(CveProveedorComunicacion As Integer, CveUsuario As Integer, PlanDato As String, Importe As Decimal, Estatus As Integer, Capacidad As Integer, TipoPlan As String, CostoAdicional As String, TechoFacturacion As String, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2998,10 +3030,10 @@ Public Class ClsGPS End Try Return Retorno - End Function - + End Function + #End Region - + #Region "Dispositivos" Public Function DispositivoAdd(TipoDispositivo As Integer, NumTelefono As String, CveModelo As Integer, CveProveedorComunicacionCuenta As Integer, CveCliente As Integer, IMEI As String, Serie As String, CveEstatus As Integer, SerieVehiculo As String, ColorVehiculo As String, NombreVehiculo As String, NoEconomico As String, devID As String, devPort As Integer, ModeloVehiculo As String, AñoVehiculo As String, ClaseVehiculo As String, PlacasVehiculo As String, LimiteVelocidad As Boolean, VelocidadMaxima As Double, @@ -3328,10 +3360,10 @@ Public Class ClsGPS OnError("Ocurrió un error al actualizar los dispositivos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno - End Function - + End Function + #End Region - + #Region "REPORTES" Public Function GetReportes() As Boolean Dim Retorno As Boolean = False @@ -3645,9 +3677,9 @@ Public Class ClsGPS OnError("Ocurrió un obtener el reporte de eventos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno - End Function + End Function #End Region - + #Region "I N D I C A D O R E S" Public Function IndicadoresGet(CveCliente As Integer, FechaInicio As DateTime, FechaFin As DateTime) As Boolean Dim Retorno As Boolean = False @@ -3664,9 +3696,9 @@ Public Class ClsGPS OnError("Ocurrió un obtener el reporte de indicadores.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno - End Function + End Function #End Region - + #Region "DashBoard" Public Function GetDashboard(CveCliente As Integer, FechaI As DateTime, FechaF As DateTime, Optional Top As Integer = 5) As String Dim Retorno As String = "[]" @@ -3917,10 +3949,10 @@ Public Class ClsGPS End Try Return Retorno - End Function - + End Function + #End Region - + #Region "Controles" Public Function GetCombustible(CveDispositivo As Integer, CveControl As Integer) As Boolean Dim Retorno As Boolean = False @@ -4275,9 +4307,9 @@ Public Class ClsGPS End Try Return Retorno - End Function + End Function #End Region - + #Region "A P L I C A C I O N M O V I L " Public Function AddTrama(DevID As String, Trama As String, Lat As Double, Lng As Double, FechaTrama As DateTime, Optional Speed As Double = 0, Optional Modelo As String = "App") As Boolean Dim Retorno As Boolean = False @@ -4411,9 +4443,9 @@ Public Class ClsGPS End Try Return Retorno - End Function + End Function #End Region - + #Region "G R U P O S" Public Function GruposAdd(Nombre As String, CveCliente As Integer) As Integer @@ -4483,10 +4515,10 @@ Public Class ClsGPS End Try Return Retorno - End Function - + End Function + #End Region - + #Region "G R U P O S - D E T A L L E" Public Function GruposDetallesAdd(CveDispositivoGrupo As Integer, CveDispositivo As Integer) As Boolean Dim Retorno As Boolean = False @@ -4535,9 +4567,9 @@ Public Class ClsGPS End Try Return Retorno - End Function + End Function #End Region - + #Region "A L T A S - B A J A S" Public Function AddAltaBajas(CveDispositivo As Integer, Fecha As DateTime, CveUsuario As Integer, Tipo As Integer, CveCliente As Integer) As Boolean Dim Retorno As Boolean = False @@ -4578,9 +4610,9 @@ Public Class ClsGPS End Try Return Retorno - End Function + End Function #End Region - + #Region "P A S A J E R O S" Public Function GetCortesChofer(CveCorteChofer As Integer, CveDispositivo As Integer, CveUsuarioIngreso As Integer) As Boolean Dim retorno As Boolean = False @@ -4714,9 +4746,9 @@ Public Class ClsGPS OnError("Ocurrió un error al eliminar los costos del kilometro.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return retorno - End Function + End Function #End Region - + #Region "T R A Y E C T O S" Public Function AddTrayecto(Trayecto As String, Fecha As DateTime, Folio As String, CveDispositivo As Integer, CveCliente As Integer) As Integer Dim retorno As Integer = 0 @@ -5266,10 +5298,10 @@ Public Class ClsGPS OnError("Ocurrió un error al obtener la configuracion de FreightVerify.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return retorno - End Function - + End Function + #End Region - + #Region "F U N C I O N E S" Public Function ReaderToJson(ByVal rdr As SqlDataReader) As String Dim sb As StringBuilder = New StringBuilder() @@ -5323,10 +5355,10 @@ Public Class ClsGPS jsonWriter.WriteEndArray() End Using Return sw.ToString() - End Function - + End Function + #End Region - + Protected Sub addParameters(name As String, tipo As SqlDbType, valor As Object) If SqlConexion.State = ConnectionState.Open Then SqlAdapter.SelectCommand.Parameters.Add(name, tipo).Value = valor @@ -5372,9 +5404,9 @@ Public Class ClsGPS addParameters("@FechaFin", SqlDbType.DateTime, fechaFin) retorno = RunQuery("Ocurrió un error al obtener el CombustibleResumen.") Return retorno - End Function + End Function #Region " IDisposable Support " - ' IDisposable + ' IDisposable Protected Overridable Sub Dispose(ByVal disposing As Boolean) If Not disposedValue Then If disposing Then @@ -5405,6 +5437,6 @@ Public Class ClsGPS ConexionClose() Dispose(True) GC.SuppressFinalize(Me) - End Sub + End Sub #End Region End Class diff --git a/GPS/RepArrastre.aspx b/GPS/RepArrastre.aspx index d8f7b0845..dc674de2a 100644 --- a/GPS/RepArrastre.aspx +++ b/GPS/RepArrastre.aspx @@ -3,6 +3,11 @@ + Reporte de Arrastre @@ -10,6 +15,9 @@ +
  • + Apagar vehiculo +
  • @@ -42,42 +50,168 @@
    -
    -
    -
    -
    -
    -
    -
    - - TIEMPOS OPERATIVOS -
    -
    -
    -
    + + +
    +
    +
    +
    +
    +
    + + datos vehiculo +
    +
    +
    +
    +
    -
    - -
    -
    -
    -
    -
    - +
    + +
    -
    - -
    -
    - +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    -
    + + +
    + + diff --git a/GPS/RepArrastre.aspx.cs b/GPS/RepArrastre.aspx.cs index cff9cc9c6..722d89e64 100644 --- a/GPS/RepArrastre.aspx.cs +++ b/GPS/RepArrastre.aspx.cs @@ -1,25 +1,98 @@ using System; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; +using Extensiones; public partial class GPS_RepArrastre : ClsPaginas { + + public int CveDispositivo + { + get + { + if (ViewState["CveDispositivo"] != null) + { + return ViewState["CveDispositivo"].ToString().ToEntero(); + + } + else + { + return 0; + } + } + set { ViewState["CveDispositivo"] = value; } + } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { - - DdlDispositivo.DataSource = get_GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario) ; + // fijo borrar + DdlDispositivo.DataSource = get_GlobalDTDispositivosUsuarios(263965, 1928) ; + //DdlDispositivo.DataSource = get_GlobalDTDispositivosUsuarios(UsuarioActual.CveCliente, UsuarioActual.CveUsuario) ; DdlDispositivo.DataBind(); + getArrastre(); } } + private void getArrastre() + { + CveDispositivo = DdlDispositivo.SelectedValue.ToEntero(); + using (ClsGPS objgps = new ClsGPS()) + { + if (objgps.GPS_ArrastreGET(CveDispositivo) && objgps.DtResultados.Rows.Count > 0) + { + DataRow dtrow = objgps.DtResultados.Rows[0]; + upInfo(dtrow); + } + + } + } + public void upInfo(DataRow dtrow) + { + if ( dtrow != null) + { + LblVelocidad.Text = $"{dtrow["Speed"]:N0}"; + LblEncApa.Text = $"{dtrow["EncendidoText"]}"; + LblFechaInfo.Text = $"{dtrow["FechaTrama"]:dd/MM/yyyy}"; + //LblVelocidad.Text = $"{dtrow[""]}"; + //LblVelocidad.Text = $"{dtrow[""]}";addmarkerActual({ lat: -25.363, lng: 131.044 }) + string pVehiculo = string.Format("{{ lat: {0}, lng: {1}}}", dtrow["Lat"], dtrow["Lng"]); + string parrastre = string.Format("{{ lat: {0}, lng: {1}}}", dtrow["LatArrastre"], dtrow["LngArrastre"]); + TxtFunciones.Text = string.Format("addmarkerActual({0},{3}){1};setCenter({2})", pVehiculo, (dtrow["ArrastreActivo"].ToString() == "1" ? $" ;addmarkerarrastre({parrastre})" : ";addmarkerarrastre()"), (dtrow["ArrastreActivo"].ToString() == "1" ? parrastre : pVehiculo), dtrow["Encendido"].ToString().ToEntero()); + UpInfo.Update(); + } + } protected void BtnConsultar_Click(object sender, EventArgs e) { + getArrastre(); + } + + protected void chkActivarArrastre_CheckedChanged(object sender, EventArgs e) + { + using (ClsGPS objgps = new ClsGPS()) + { + if (objgps.GPS_ArrastreActivarDesactivar(CveDispositivo, chkActivarArrastre.Checked)){ + + if (objgps.GPS_ArrastreGET(CveDispositivo) && objgps.DtResultados.Rows.Count > 0) + { + DataRow dtrow = objgps.DtResultados.Rows[0]; + upInfo(dtrow); + } + if (chkActivarArrastre.Checked) + { + Alert("se ha activado la funcion de arrastre"); + } + else + { + Alert("se ha desactivado la funcion de arrastre"); + } + } + } } } \ No newline at end of file diff --git a/Imagenes/rsz_11rsz_cargreen.png b/Imagenes/rsz_11rsz_cargreen.png index 374265dcdff88139471efd318ca18c897a06c209..2d560ffea549d8c8140e5db71366c891c6f918ca 100644 GIT binary patch literal 12360 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 IM6N<$g3Q2aC;$Ke