Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports Microsoft.Reporting.WebForms Partial Class OS_Asignaciones Inherits ClsPaginas #Region "PROPIEDADES" Private Property TmpDT As DataTable Get Return CType(ViewState("TmpDT"), DataTable) End Get Set(value As DataTable) ViewState("TmpDT") = value End Set End Property Private Property DtOSSubProyectos As DataTable Get Return CType(ViewState("DtOSSubProyectos"), DataTable) End Get Set(value As DataTable) ViewState("DtOSSubProyectos") = value End Set End Property Private Property DtTecnicosSubProyectos As DataTable Get Return CType(ViewState("DtTecnicosSubProyectos"), DataTable) End Get Set(value As DataTable) ViewState("DtTecnicosSubProyectos") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then CargaEstatusOS() 'CargaUsuarios() CargaClientes() CargaSubProyecto() If UsuarioActual.TienePermisoProceso(171) Then CargaOrdenesServiciosAsignadasXPersona() CargaOrdenesServiciosNoAsignadas() Else DivAsignar.Visible = False DdlEstatusOS.SelectedValueExist(GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 2", "CveEstatusOrdenServicio ASC")) DdlPersonas.SelectedValueExist(UsuarioActual.CveUsuario) DdlEstatusOS_SelectedIndexChanged(sender, New EventArgs) DdlPersonas.Enabled = False DivAsignacionPersona.Visible = False 'CargaOrdenesServiciosAsignadas() End If Dim ObjEstatusPermisos As New ClsOS If ObjEstatusPermisos.GetEstatusUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then Dim Permisos As New DataTable Permisos = ObjEstatusPermisos.DtResultados.FiltraParametros("TipoEstatus = 2") If Permisos.Rows.Count = 0 Then DdlTecnico.Visible = False BtnAsignar.Visible = False End If End If ObjEstatusPermisos.Dispose() End If End Sub #Region "C A R G A S " Private Sub CargaSubProyecto() DdlSubProyecto.Items.Clear() DdlSubProyecto.SelectedValue = Nothing DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa, Estatus:=1) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaUsuarios() DdlPersonas.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) DdlPersonas.DataBind() DdlPersonas.Items.Insert(0, New ListItem("Todos", "-1")) DdlTecnico.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) DdlTecnico.DataBind() DdlTecnico.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaOrdenesServiciosNoAsignadas() Dim ObjOS As New ClsOS Dim FechaI, FechaF As String FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1") FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1") If ObjOS.GetOrdenesServiciosNoAsignadas(DdlCliente.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, DdlEstatusOS.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, FechaI, FechaF) Then DtOSSubProyectos = ObjOS.DtResultados.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) GvNA.DataSource = ObjOS.DtResultados TmpDT = ObjOS.DtResultados Else GvNA.DataSource = Nothing End If GvNA.DataBind() ObjOS.Dispose() UpOS.Update() CargarTecnico() End Sub Private Sub CargaOrdenesServiciosAsignadas() Dim ObjOS As New ClsOS Dim FechaI, FechaF As String FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1") FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1") If ObjOS.GetOrdenesServiciosAsignadas(DdlCliente.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, DdlEstatusOS.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlPersonas.SelectedValue.ToEntero, FechaI, FechaF) Then GvNA.DataSource = ObjOS.DtResultados TmpDT = ObjOS.DtResultados Else GvNA.DataSource = Nothing End If GvNA.DataBind() ObjOS.Dispose() UpOS.Update() End Sub Private Sub CargaOrdenesServiciosAsignadasXPersona() Dim ObjOS As New ClsOS If ObjOS.GetOSAsignadas(UsuarioActual.CveEmpresa) Then GvA.DataSource = ObjOS.DtResultados If ObjOS.DtResultados.Rows.Count = 0 Then DivAsignacionPersona.Visible = False End If Else GvA.DataSource = Nothing DivAsignacionPersona.Visible = False End If ObjOS.Dispose() GvA.DataBind() End Sub Private Sub CargaClientes() DdlCliente.DataSource() = GlobalDTCliente(UsuarioActual.CveEmpresa) DdlCliente.DataBind() DdlCliente.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaEstatusOS() DdlEstatusOS.DataSource = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa) DdlEstatusOS.DataBind() End Sub Private Sub DdlEstatusOS_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlEstatusOS.SelectedIndexChanged Dim TipoEstatus = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("TipoEstatus", String.Format("CveEstatusOrdenServicio = {0}", DdlEstatusOS.SelectedValue)) If TipoEstatus.ToEntero = 1 Then DivTecnico.Visible = False Else DivTecnico.Visible = True End If UPFiltros.Update() End Sub Private Sub CargarTecnico() Dim ObjOS As New ClsOS Dim TecnicosSubProyectos As New DataTable Dim TecnicosResultado As New DataTable If ObjOS.GetSubProyectosEstatusInicial(-1, 3, UsuarioActual.CveEmpresa) Then TecnicosSubProyectos = ObjOS.DtResultados End If For Each SubProyecto As DataRow In DtOSSubProyectos.Rows Dim EstatusDeTipoProcesoMenor As Integer = TecnicosSubProyectos.FiltraParametros(String.Format("SubProyecto = '{0}'", SubProyecto.Item("SubProyecto"))).Rows(0).Item("CveEstatusOrdenServicio").ToString.ToEntero Dim dtAuxiliar As New DataTable dtAuxiliar = TecnicosSubProyectos.FiltraParametros(String.Format("SubProyecto = '{0}' AND CveEstatusOrdenServicio = {1}", SubProyecto.Item("SubProyecto"), EstatusDeTipoProcesoMenor), "", {"CveUsuario", "Nombre"}) TecnicosResultado.Merge(dtAuxiliar) Next DtTecnicosSubProyectos = TecnicosResultado DdlTecnico.DataSource = TecnicosResultado DdlTecnico.DataBind() DdlTecnico.Items.Insert(0, New ListItem("Todos", "-1")) ObjOS.Dispose() End Sub #End Region #Region "BTN'S" Protected Sub BtnAsignar_Click(sender As Object, e As EventArgs) Handles BtnAsignar.Click Dim ObjOS As New ClsOS Dim TieneError = False Dim CveEstatusOS = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 2", "CveEstatusOrdenServicio ASC") Dim time As DateTime For Each row As GridViewRow In GvNA.Rows If row.RowType = DataControlRowType.DataRow Then Dim picker As MKB.TimePicker.TimeSelector = DirectCast(row.FindControl("TimeSelector"), MKB.TimePicker.TimeSelector) If row.FCCheckBox("ChbxAsignar").Checked Then time = DateTime.Parse(String.Format("{0} {1}:{2} {3}", row.FCTextBox("FechaOS").Text, picker.Hour, picker.Minute, picker.AmPm)) If ObjOS.GetSubProyectosEstatusInicial(DdlTecnico.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then Dim subProyectoDelTecnico As DataTable subProyectoDelTecnico = ObjOS.DtResultados.FiltraParametros(String.Format("CveSubProyecto = {0}", row.DataKey("CveSubProyecto"))) If subProyectoDelTecnico.Rows.Count > 0 Then If Not ObjOS.UpdateOrdenesServiciosAsignadas(row.DataKey("CveOSDetalle").ToEntero, DdlTecnico.SelectedValue.ToEntero, row.FCTextBox("FechaOS").Text.ToDate, time, UsuarioActual.CveEmpresa) Then TieneError = True End If Else Alert("El técnico y la Orden de Servicio deben pertenecer al mismo subProyecto", TipoMensaje.MsgAdvertencia) TieneError = True End If End If If Not TieneError Then If Not ObjOS.UpdateOrdenesServiciosEstatus(CveEstatusOS.ToEntero, UsuarioActual.CveUsuario, row.DataKey("CveOS").ToEntero) Then TieneError = True End If End If End If End If Next If Not TieneError Then Alert("Se asignaron las ordenes de servicio correctamente", TipoMensaje.MsgInformacion) CargaOrdenesServiciosAsignadasXPersona() CargaOrdenesServiciosNoAsignadas() End If ObjOS.Dispose() UpAsignacionPersona.Update() UpOS.Update() End Sub Private Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click Dim TipoEstatus = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("TipoEstatus", String.Format("CveEstatusOrdenServicio = {0}", DdlEstatusOS.SelectedValue)) If TipoEstatus.ToEntero <= 1 Then CargaOrdenesServiciosNoAsignadas() Else CargaOrdenesServiciosAsignadas() End If End Sub #End Region #Region "GV" Private Sub GvNA_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvNA.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DataKey("CveUsuarioAtendio") <> "" Then e.Row.FCCheckBox("ChbxAsignar").Visible = False e.Row.FCTextBox("FechaOS").Visible = False e.Row.FCLinkButton("imgCalendario").Visible = False e.Row.FCLiteral("LtlFechaServicio").Visible = True e.Row.FCLiteral("LtlHoraServicio").Visible = True e.Row.FindControl("TimeSelector").Visible = False Else e.Row.FCLiteral("LtlFechaServicio").Visible = False e.Row.FCCheckBox("ChbxAsignar").Checked = False e.Row.FCCheckBox("ChbxAsignar").Visible = True e.Row.FCTextBox("FechaOS").Visible = True e.Row.FCTextBox("FechaOS").Text = Now.ToString("dd/MM/yyy") e.Row.FCLinkButton("imgCalendario").Visible = True e.Row.FCLiteral("LtlHoraServicio").Visible = False e.Row.FindControl("TimeSelector").Visible = True End If End If UpOS.Update() End Sub #End Region #Region "IMPRIMIR PDF" Private Sub ImgImprimir_Click(sender As Object, e As EventArgs) Handles ImgImprimir.Click Dim params As New List(Of ReportParameter) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) Dim dt As DataTable = TmpDT params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString)) params.Add(New ReportParameter("FechaInicio", txtFechaI.Text)) params.Add(New ReportParameter("FechaFin", txtFechaF.Text)) If Imagen.Exists Then params.Add(New ReportParameter("LogoPath", logouri)) Else params.Add(New ReportParameter("LogoPath", "")) End If ImprimirPDF("Empresas/Grales/Formatos/RepOSAsignacion.rdlc", dt, params, "OrdenesServicio") End Sub #End Region End Class