Option Explicit On Option Strict On Imports System.Data Imports ADSNetLibrary.SIGAPI.Helpers Imports Extensiones.ModExtensiones Imports GemBox.Spreadsheet Imports Microsoft.Reporting.WebForms Imports Newtonsoft.Json.Linq Partial Class RepContratosCalendario Inherits ClsPaginas #Region "PROPIEDADES" Public Property DtAvance() As DataTable Get Return CType(ViewState("DtAvance"), DataTable) End Get Set(value As DataTable) ViewState("DtAvance") = value End Set End Property Public Property Contrato As String Get Return IfNull(ViewState("Contrato"), "").ToString() End Get Set(value As String) ViewState("Contrato") = value End Set End Property Public Property CveContrato As Integer Get Return HdnCveContrato.Value.ToEntero End Get Set(value As Integer) HdnCveContrato.Value = value.ToString End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString() txtFechaF.Text = GetLastDayOfMonth(NowADS()).ToShortDateString() InicializaCombos() InicializaCalendar() CargaDatos() End If 'InicializaCalendar() End Sub Private Sub CargaDatos() Dim ObjContratos As New ClsContratos 'EL fondo de las líneas es blanco, por eso cambio el color a negro de la cabecera GvContratos.HeaderStyle.ForeColor = Drawing.Color.Black Dim CveCliente As Integer = DdlCliente.SelectedValue.ToEntero If CveCliente = 0 Then CveCliente = -1 If ObjContratos.GetContratosReporte(UsuarioActual.CveEmpresa, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, DdlCliente.SelectedValue.ToEntero, CveSubProyecto:=DdlSubProyectos.SelectedValue.ToEntero, CveEstatus:=DdlEstatusConsulta.SelectedValue.ToEntero, CveTipoContrato:=34, CveTipoAF:=DdlTipoUnidad.SelectedValue.ToEntero, CveChofer:=DdlChoferFiltro.SelectedValue.ToEntero) Then DtAvance = ObjContratos.DtResultados.Copy() CargaCronograma(DdlTipoVista.SelectedValue.ToEntero) End If GvContratos.DataSource = DtAvance DdlEstatusContrato.Enabled = UsuarioActual.TienePermisoProceso(173) ObjContratos.Dispose() GvContratos.DataBind() UpTitulos.Update() RegistraScript("InitCalendar();") End Sub Public Shared Function GetLastDayOfMonth(ByVal dateTime As DateTime) As DateTime Return New DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month)) End Function Private Sub CargaCronograma(Optional TipoVista As Integer = -1) If DtAvance IsNot Nothing Then Dim StrFiltro As String = "" If DdlTipoUnidad.SelectedValue.ToEntero > 0 Then StrFiltro = " AND CveTipoActivoFijo = " & DdlTipoUnidad.SelectedValue Dim DtUnidades As DataTable = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros("Codigo <> '' AND MedidaVehicular IN (2,3) " & StrFiltro, Orderby:=" TipoActivoFijo ASC, CodigoNumeroOrden ASC", DistinctColumns:={"Codigo", "CveActivoFijo"}) 'For Each Row As DataRow In DtAvance.Rows ' If String.IsNullOrEmpty(Row("CodigoAF").ToString()) Then ' Row("CodigoAF") = "Unidad no asignada" ' End If 'Next Dim jsonData As New JArray() Dim jsonCategorias As New JArray() Dim random = New Random() 'DATOS Dim strAF As New StringBuilder 'se quitan los estatus cancelados For Each Row As DataRow In DtAvance.FiltraParametros("CodigoAF <> '' AND TipoEstatus <> 3").Rows Dim obj As New JObject( New JProperty("category", Row("CodigoAF")), New JProperty("fromDate", Row("FechaInicial").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm").ToDateTime()), New JProperty("toDate", Row("FechaFinal").ToString().ToDateTime.ToString("dd/MM/yyyy HH:mm").ToDateTime()), New JProperty("columnSettings", New JObject( New JProperty("fill", String.Format("#{0:X6}", random.Next(16777216))) )), New JProperty("unidad", Row("NombreAF")), New JProperty("cveContrato", Row("CveContrato")), New JProperty("contrato", Row("NumeroContrato")), New JProperty("fechaFinalViaje", Row("FechaFinal").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm")) ) jsonData.Add(obj) strAF.AppendFormat("{0},", Row("CveAF")) Next If TipoVista = 1 Then 'solo con viajes DtUnidades = DtUnidades.FiltraParametros($"CveActivoFijo IN ({strAF.ToString})") End If 'CATEGORIAS 'AGREGAR TODAS LAS UNIDADES For Each Row As DataRow In DtUnidades.Rows Dim obj As New JObject( New JProperty("category", Row("Codigo")) ) jsonCategorias.Add(obj) Next Dim FechaI = txtFechaI.Text.ToDateTime() Dim FechaF = txtFechaF.Text.ToDateTime() Dim ScriptZoom = $"zoomAxis({FechaI.Year},{FechaI.Month - 1},{FechaI.Day},{FechaF.Year},{FechaF.Month - 1},{FechaF.Day});" RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});{ScriptZoom}", "A1") UPPGantt.Update() End If End Sub Private Sub InicializaCalendar() RegistraScript("InitCalendar();") DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True End Sub Private Sub InicializaCombos() 'Lista de Tipos de activo fijos Dim dttipoaf As DataTable = GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("MedidaVehicularClave IN (2,3)") DdlTipoAF.DataSource = dttipoaf DdlTipoAF.Items.Insert(0, New ListItem("-", "-1")) DdlTipoAF.DataBind() DdlTipoUnidad.DataSource = dttipoaf DdlTipoUnidad.Items.Insert(0, New ListItem("Todos", "-1")) DdlTipoUnidad.DataBind() 'Lista de Activos fijos DdlAF.DataSource = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros(" EstadoActivoFijo= 'Activo' ") DdlAF.DataBind() DdlAF.Items.Insert(0, New ListItem("-", "-1")) 'Lista Chofer' Dim dtchofer As DataTable = GlobalDTRHPersonal(UsuarioActual.CveEmpresa).FiltraParametros("CvePuesto = 702 and CveEstatusPersonal = 1", "NombreCompleto") DdlChofer.DataSource = dtchofer DdlChofer.DataBind() DdlChofer.Items.Insert(0, New ListItem("-", "-1")) DdlChofer.SelectedValueExist(-1) DdlChofer2.DataSource = dtchofer DdlChofer2.DataBind() DdlChofer2.Items.Insert(0, New ListItem("-", "-1")) DdlChofer2.SelectedValueExist(-1) DdlChoferFiltro.DataSource = dtchofer DdlChoferFiltro.DataBind() DdlChoferFiltro.Items.Insert(0, New ListItem("Todos", "-1")) DdlEstatusConsulta.DataSource = GlobalDTContratosEstatus(UsuarioActual.CveEmpresa) DdlEstatusConsulta.DataBind() DdlEstatusConsulta.Items.Insert(0, New ListItem("Todos", "-1")) DdlEstatusContrato.DataSource = GlobalDTContratosEstatus(UsuarioActual.CveEmpresa) DdlEstatusContrato.DataBind() DdlEstatusContrato.Items.Insert(0, New ListItem("Todos", "-1")) DdlSubProyectos.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) DdlSubProyectos.DataBind() DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1")) CargarCentrosDeCosto(Nothing, Nothing, Nothing, LblSubProyectoModal) DdlSubProyectoModal.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) DdlSubProyectoModal.DataBind() DdlSubProyectoModal.Items.Insert(0, New ListItem("Seleccione uno", "-1")) 'CargarCentrosDeCosto(Nothing, DdlSubProyectos, Nothing, LblSubProyecto) UpModal.Update() End Sub Private Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvContratos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim BackgroundColor As String = DataBinder.Eval(e.Row.DataItem, "BackgroundColor").ToString() e.Row.BackColor = Drawing.ColorTranslator.FromHtml(BackgroundColor) e.Row.Cells(1).Attributes.Add("data-order", e.Row.DBCampo("FechaInicial").ToDate.Ticks.ToString) End If End Sub Protected Sub MostrarModal(sender As Object, e As System.EventArgs) If HidModClienteNombre.Value = "" Then HidModClienteNombre.Value = GlobalDTCliente(UsuarioActual.CveEmpresa, -1, HidModCveCliente.Value.ToEntero).FiltroPrimeroValor("NombreComercial") End If DdlClientes.SelectedText = HidModClienteNombre.Value DdlClientes.SelectedValue = HidModCveCliente.Value DdlClientes.txtText.Value = HidModClienteNombre.Value DdlClientes.txtValue.Value = HidModCveCliente.Value UpModal.Update() RegistraScript("$('#ModalActualizar').modal('show');") End Sub Protected Sub UpdateContrato(sender As Object, e As EventArgs) Dim ObjContratos As New ClsContratos Dim DTAgendadados As New DataTable If ObjContratos.GetContratosValUnidadesAgendadas(DdlAF.SelectedValue.ToEntero, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, UsuarioActual.CveEmpresa, CveContrato) Then DTAgendadados = ObjContratos.DtResultados.Copy If DTAgendadados.Rows.Count > 0 Then Dim sb As New StringBuilder sb.Append($"Se detectaron Contratos con la unidad {DdlAF.SelectedItem.Text} asignada en las fechas especificadas.

") For Each dr As DataRow In DTAgendadados.Rows sb.AppendLine($"Contrato: {dr("NumeroContrato").ToString }, Salida: {dr("FechaInicial").ToString.ToDate.ToString("dd/MM/yyyy HH:mm:ss")}, Regreso: {dr("FechaFinal").ToString.ToDate.ToString("dd/MM/yyyy HH:mm:ss")}
") Next Alert(sb.ToString, TipoMensaje.MsgAdvertencia) DTAgendadados.Dispose() ObjContratos.Dispose() Exit Sub End If End If If ObjContratos.UpdateContratos(CveContrato, TxtFolio.Text, TxtDescripcion.Text, "", -1, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, TxtUbicacion.Text, "", DdlSubProyectoModal.SelectedValue.ToEntero, -1, -1, -1, -1, "", "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, TxtPesos.Text.ToDecimal, TxtDolares.Text.ToDecimal, -1, 0, CveContratoTipo:=34, CveContratosEstatus:=DdlEstatusContrato.SelectedValue.ToEntero, CveChofer:=DdlChofer.SelectedValue.ToEntero, CveChofer2:=DdlChofer2.SelectedValue.ToEntero, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CveAF:=DdlAF.SelectedValue.ToEntero, CantidadPasajeros:=TxtCantidadPasajeros.Text.ToEntero, Observaciones:=TxtObservaciones.Text.Trim) Then RegistraScript("$('#ModalActualizar').modal('hide');") Alert("Actualizado Correctamente.") End If ObjContratos.Dispose() UpTitulos.Update() CargaDatos() InicializaCalendar() End Sub Protected Sub UpdateModal(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) TxtFolio.Text = GvRow.DataKey("NumeroContrato") TxtCantidadPasajeros.Text = GvRow.DataKey("CantidadPasajeros") DdlClientes.SelectedValue = GvRow.DataKey("CveCliente") DdlClientes.SelectedText = GvRow.DataKey("NombreComercial") TxtDescripcion.Text = GvRow.DataKey("DescripcionContrato") TxtObservaciones.Text = GvRow.DataKey("Observaciones") TxtUbicacion.Text = GvRow.DataKey("Ubicacion") TxtFechaSalida.Text = Convert.ToDateTime(GvRow.DataKey("FechaInicial")).ToString("dd/MM/yyyy HH:mm:ss") TxtFechaRegreso.Text = Convert.ToDateTime(GvRow.DataKey("FechaFinal")).ToString("dd/MM/yyyy HH:mm:ss ") TxtMoneda.Text = GvRow.DataKey("Moneda") 'Requeridos DdlAF.SelectedValueExist(GvRow.DataKey("CveAF")) DdlChofer.SelectedValueExist(GvRow.DataKey("CveChofer")) DdlChofer2.SelectedValueExist(GvRow.DataKey("CveChofer2")) DdlEstatusContrato.SelectedValueExist(GvRow.DataKey("CveContratosEstatus")) DdlSubProyectoModal.SelectedValueExist(GvRow.DataKey("CveSubProyecto")) CveContrato = GvRow.DataKey("CveContrato").ToEntero UpCommando.Update() UpModal.Update() RegistraScript("$('#ModalActualizar').modal('show');") End Sub Protected Sub LnkExcel_Click(sender As Object, e As EventArgs) Handles LnkExcel.Click GvContratos.ExportToExcel("ReporteCompras" & NowADS().ToShortDateString) End Sub Protected Sub LnkPDF_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click Dim ObjContratos As New ClsContratos If ObjContratos.GetContratos(-1, UsuarioActual.CveEmpresa, TipoContrato:=2) Then Dim Imagen As New IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png") Dim logouri As String = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) Dim Cliente As String = If(DdlClientes.SelectedValue = "-1", "", $" Cliente: {DdlClientes.SelectedText}") Dim dt As DataTable = ObjContratos.DtResultados Dim params As New List(Of ReportParameter) From { New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa), New ReportParameter("FechaInicio", "-1"), New ReportParameter("FechaFin", "-1"), New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa), New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre), New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString), New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")) } ImprimirPDF("Empresas/Grales/Formatos/RepContratos.rdlc", dt, params, NombreArchivo:="Reporte Contratos") Else Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) End If ObjContratos.Dispose() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) CargaDatos() End Sub Protected Sub RBTipoVista_SelectedIndexChanged(sender As Object, e As EventArgs) InicializaCalendar() CargaCronograma() End Sub Protected Sub DdlTipoVista_SelectedIndexChanged(sender As Object, e As EventArgs) CargaCronograma(DdlTipoVista.SelectedValue.ToEntero) End Sub End Class