Option Explicit On Option Strict On Imports Extensiones Imports System.Data Imports Microsoft.Reporting.WebForms Imports System.Web.Services Imports Telerik.Web.UI Imports APP_Code_CSharp Imports AjaxControlToolkit.AsyncFileUpload.Constants Imports System Partial Class OS_RepServicioDomicilio Inherits ClsPaginas #Region "PROPIEDADES" Private Property DtDatos As DataTable Get DtDatos = DirectCast(ViewState("DtDatos"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtDatos") = value End Set End Property Private Property DtColor As DataTable Get Return DirectCast(ViewState("DtColor"), DataTable) End Get Set(value As DataTable) ViewState("DtColor") = value End Set End Property Private Property Agrupador As String Get Return ViewState("Agrupador").ToString End Get Set(value As String) ViewState("Agrupador") = value End Set End Property Private Property TCEspecifico As Double Get Return ViewState("TCEspecifico").ToString.ToDouble End Get Set(value As Double) ViewState("TCEspecifico") = value End Set End Property Private Property TipoCambio As Integer Get Return ViewState("TipoCambio").ToString.ToEntero End Get Set(value As Integer) ViewState("TipoCambio") = value End Set End Property Private Property DT_OSSubProyectos As DataTable Get If ViewState("DT_OSSubProyectos") Is Nothing Then ViewState("DT_OSSubProyectos") = New DataTable End If Return DirectCast(ViewState("DT_OSSubProyectos"), DataTable) End Get Set(value As DataTable) ViewState("DT_OSSubProyectos") = value End Set End Property Private Property DT_OSNoAsignadas As DataTable Get If ViewState("DT_OSNoAsignadas") Is Nothing Then ViewState("DT_OSNoAsignadas") = New DataTable End If Return DirectCast(ViewState("DT_OSNoAsignadas"), DataTable) End Get Set(value As DataTable) ViewState("DT_OSNoAsignadas") = value End Set End Property Private Property CveOSDetalleAsignar As Integer Get If ViewState("CveOSDetalleAsignar") Is Nothing Then ViewState("CveOSDetalleAsignar") = -1 End If Return ViewState("CveOSDetalleAsignar").ToString.ToEntero End Get Set(value As Integer) ViewState("CveOSDetalleAsignar") = value End Set End Property Private Property CveSubProyectoAsignar As Integer Get If ViewState("CveSubProyectoAsignar") Is Nothing Then ViewState("CveSubProyectoAsignar") = -1 End If Return ViewState("CveSubProyectoAsignar").ToString.ToEntero End Get Set(value As Integer) ViewState("CveSubProyectoAsignar") = value End Set End Property Private Property CveOrdenServicioTipo As Integer Get If ViewState("CveOrdenServicioTipo") Is Nothing Then ViewState("CveOrdenServicioTipo") = -1 End If Return ViewState("CveOrdenServicioTipo").ToString.ToEntero End Get Set(value As Integer) ViewState("CveOrdenServicioTipo") = value End Set End Property Private Property FolioAsignar As String Get If ViewState("FolioAsignar") Is Nothing Then ViewState("FolioAsignar") = "" End If Return ViewState("FolioAsignar").ToString End Get Set(value As String) ViewState("FolioAsignar") = value End Set End Property Private Property ConceptoAsignar As String Get If ViewState("ConceptoAsignar") Is Nothing Then ViewState("ConceptoAsignar") = "" End If Return ViewState("ConceptoAsignar").ToString End Get Set(value As String) ViewState("ConceptoAsignar") = value End Set End Property Private Property ClienteAsignar As String Get If ViewState("ClienteAsignar") Is Nothing Then ViewState("ClienteAsignar") = "" End If Return ViewState("ClienteAsignar").ToString End Get Set(value As String) ViewState("ClienteAsignar") = value End Set End Property Private Property SubProyectoAsignar As String Get If ViewState("SubProyectoAsignar") Is Nothing Then ViewState("SubProyectoAsignar") = "" End If Return ViewState("SubProyectoAsignar").ToString End Get Set(value As String) ViewState("SubProyectoAsignar") = value End Set End Property Private Property CveOSAsignar As Integer Get If ViewState("CveOSAsignar") Is Nothing Then ViewState("CveOSAsignar") = -1 End If Return ViewState("CveOSAsignar").ToString.ToEntero End Get Set(value As Integer) ViewState("CveOSAsignar") = value End Set End Property Private Property TipoAccion As OSModalTipoAccion Get If ViewState("TipoAccion") Is Nothing Then ViewState("TipoAccion") = OSModalTipoAccion.Agregar End If Return DirectCast(ViewState("TipoAccion"), OSModalTipoAccion) End Get Set(value As OSModalTipoAccion) ViewState("TipoAccion") = value End Set End Property Private Property CveTecnicoAsignarOrioginal As Integer Get If ViewState("CveTecnicoAsignarOrioginal") Is Nothing Then ViewState("CveTecnicoAsignarOrioginal") = -1 End If Return ViewState("CveTecnicoAsignarOrioginal").ToString.ToEntero End Get Set(value As Integer) ViewState("CveTecnicoAsignarOrioginal") = value End Set End Property Private Property FechaInicioOriginal As DateTime Get If ViewState("FechaInicioOriginal") Is Nothing Then ViewState("FechaInicioOriginal") = DateTime.Now End If Return ViewState("FechaInicioOriginal").ToString.ToDateTime End Get Set(value As DateTime) ViewState("FechaInicioOriginal") = value End Set End Property Private Property CveClientePublicoGeneral As Integer Get If ViewState("CveClientePublicoGeneral") Is Nothing Then ViewState("CveClientePublicoGeneral") = -1 End If Return ViewState("CveClientePublicoGeneral").ToString.ToEntero End Get Set(value As Integer) ViewState("CveClientePublicoGeneral") = value End Set End Property Private Property NombreClientePublicoGeneral As String Get If ViewState("NombreClientePublicoGeneral") Is Nothing Then ViewState("NombreClientePublicoGeneral") = "" End If Return ViewState("NombreClientePublicoGeneral").ToString End Get Set(value As String) ViewState("NombreClientePublicoGeneral") = value End Set End Property Enum OSModalTipoAccion Agregar Actualizacion Asignacion End Enum #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyectoEtiqueta) LblSubProyectoFiltro.Text = LblSubProyectoEtiqueta.Text ' LblModalSubProyectoLabel.Text = LblSubProyectoEtiqueta.Text CargaTecnicos() ConsultaOrdenesServiciosNoAsignadas() CargaOrdenesServiciosNoAsignadas() CargaTecnicosAsignar() InicializaCalendar() GetCargaTiposOrden() cargaDropsModal() CargaClientePublicoGeneral() End If End Sub #Region "CARGAS" #End Region #Region " FULL CALENDAR " Private Sub InicializaCalendar() RegistraScript("InitCalendar();") HdnU.Value = UsuarioActual.CveUsuario.ToString HdnE.Value = UsuarioActual.CveEmpresa.ToString DirectCast(Master.FindControl("TSM"), ScriptManager).EnablePageMethods = True CargaTiposAgenda() CheckRecurrencia.Attributes.Add("onclick", "CheckAdd(this);") End Sub Private Sub CargaTiposAgenda() Dim ObjEventos As New ClsOIEventos If ObjEventos.GetAgendaTipo() Then DdlAgedaTipo.DataSource = ObjEventos.DtResultados DdlAgedaTipo.DataBind() DdlAgedaTipo.Items.Insert(0, New ListItem("Seleccione", "-1")) Else Alert("Ocurrió un error al obtener los tipos de agenda. Por favor recargue la página", TipoMensaje.MsgError) End If ObjEventos.Dispose() End Sub Private Sub CargaTecnicos() DdlTecnico.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) DdlTecnico.DataBind() DdlTecnico.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaTecnicosAsignar() 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 DT_OSSubProyectos.Rows Dim TecnicosSubProyectoAux As DataTable = TecnicosSubProyectos.FiltraParametros(String.Format("SubProyecto = '{0}'", SubProyecto.Item("SubProyecto"))) If TecnicosSubProyectoAux.Rows.Count > 0 Then Dim EstatusDeTipoProcesoMenor As Integer = TecnicosSubProyectoAux.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) End If Next 'DtTecnicosSubProyectos = TecnicosResultado ObjOS.Dispose() DdlTecnicoAsignar.DataSource = TecnicosResultado DdlTecnicoAsignar.DataBind() DdlTecnicoAsignar.Items.Insert(0, New ListItem("Seleccione uno", "-1")) UpModalOS.Update() End Sub Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Dim ObjEventos As New ClsOIEventos Dim FechaInicio = TxtFechaInicioAgenda.Text.ToDateTime() Dim FechaFin = TxtFechaFinAgenda.Text.ToDateTime() RegistraScript("GetView();") Dim RecurrenciaTipo = 0, Frecuencia = -1, DiasSemana = "-1", Dias = -1, Mes = -1, RecurrenciaFin = "-1" If CheckRecurrencia.Checked Then RecurrenciaTipo = RBLRecurrencia.SelectedValue.ToEntero Frecuencia = TxtFrecuencia.Text.ToEntero 'OBTENEMOS LOS DIAS SELECCIONADOS EN LA OPCION DE RECURRENCIA POR SEMANA Select Case RecurrenciaTipo Case 3 Dim StringDias = "" For Each item As ListItem In CheckDiasSemana.Items If item.Selected Then If StringDias.Length > 0 Then StringDias += "," End If StringDias += item.Value End If Next If StringDias.Length > 0 Then DiasSemana = StringDias End If End Select 'If RBSinFechaFinAdd.Checked Then ' RecurrenciaFin = "-1" 'Else If RBNumeroOcurrencias.Checked Then RecurrenciaFin = TxtNumeroOcurrencias.Text ElseIf RBFechaFin.Checked Then RecurrenciaFin = TxtFechaFinRecurrencia.Text Else RecurrenciaFin = "-1" End If Else If HdnCveEvento.Value.ToEntero > 0 Then Frecuencia = -2 : DiasSemana = "-2" : Dias = -2 : Mes = -2 : RecurrenciaFin = "-2" End If End If '11/05/2018 - GASTO RECURRENTE Dim CveTipoEvento As Integer = IIf(ChkGastoRecurrente.Checked, 10, 2).ToString().ToEntero() Dim Importe As Double = Convert.ToDouble(IIf(ChkGastoRecurrente.Checked, TxtImporteGastoRecurrente.Text, "-1")) If HdnCveEvento.Value.ToEntero > 0 Then If ObjEventos.UpdateEvento(TxtAsuntoAgenda.Text, TxtDescripcionAgenda.Text, DdlPrioridad.SelectedValue.ToEntero, DdlAgedaTipo.SelectedValue.ToEntero, -1, FechaInicio, FechaFin, -1, "-1", HdnCveEvento.Value.ToEntero, "-1", RecurrenciaTipo, Frecuencia, DiasSemana, Dias, Mes, RecurrenciaFin, Importe:=Importe) Then Alert("El Evento se actualizó correctamente", TipoMensaje.MsgInformacion) Else Alert("Ocurrió un error al actualizar el evento", TipoMensaje.MsgAdvertencia) End If Else If ObjEventos.AddEventoAgenda(DdlAgedaTipo.SelectedValue.ToEntero, TxtAsuntoAgenda.Text, TxtDescripcionAgenda.Text, DdlPrioridad.SelectedValue.ToEntero, FechaInicio, FechaFin, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, RecurrenciaTipo:=RecurrenciaTipo, Frecuencia:=Frecuencia, DiasSemana:=DiasSemana, Dia:=Dias, Mes:=Mes, RecurrenciaFin:=RecurrenciaFin, CveTipoEvento:=CveTipoEvento, Importe:=Importe) Then Alert("El Evento se guardó correctamente", TipoMensaje.MsgInformacion) Else Alert("Ocurrió un error al Guardar el evento", TipoMensaje.MsgAdvertencia) End If End If ObjEventos.Dispose() RegistraScript("Calendario();SetView();$('#ModalAgenda').modal('hide');", "1234") LimpiaModalAgenda() End Sub Private Sub LimpiaModalAgenda() TxtDescripcionAgenda.Text = "" TxtAsuntoAgenda.Text = "" DdlPrioridad.SelectedValue = "1" TxtNumeroOcurrencias.Text = "" TxtFechaFinRecurrencia.Text = "" RBFechaFin.Checked = False RBNumeroOcurrencias.Checked = False RBLRecurrencia.SelectedValue = "1" CheckDiasSemana.ClearSelection() RBLRecurrencia_SelectedIndexChanged(RBLRecurrencia, EventArgs.Empty) TxtFrecuencia.Text = "1" LblEmpresaCRM.Text = "" End Sub Protected Sub BtnEliminar_Click(sender As Object, e As EventArgs) Dim ObjEventos As New ClsOIEventos RegistraScript("GetView();") If ObjEventos.RemoveEvento(HdnCveEvento.Value.ToEntero, UsuarioActual.CveEmpresa) Then RegistraScript("Calendario();SetView();$('#ModalAgenda').modal('hide');", "1234") Alert("El evento se eliminó correctamente", TipoMensaje.MsgInformacion) Else Alert("Ocurrió un error al eliminar el evento, por favor intente de nuevo.", TipoMensaje.MsgError) End If ObjEventos.Dispose() End Sub Public Shared Function EliminaEvento(CveEvento As Integer, CveEmpresa As Integer) As String Dim ObjEventos As New ClsOIEventos ObjEventos.RemoveEvento(CveEvento, CveEmpresa) ObjEventos.Dispose() Return CveEvento.ToString End Function Public Shared Function ActualizaEvento(ClsEvent As CalendarEvent) As String Dim ObjEventos As New ClsOIEventos Dim FechaInicio = DateTimeOffset.Parse(ClsEvent.start).DateTime Dim FechaFin = DateTimeOffset.Parse(ClsEvent.end).DateTime If ObjEventos.UpdateEvento("-1", "-1", -1, -1, -1, FechaInicio, FechaFin, -1, "-1", ClsEvent.id) Then End If ObjEventos.Dispose() Return "a" End Function Protected Sub RBLRecurrencia_SelectedIndexChanged(sender As Object, e As EventArgs) Select Case RBLRecurrencia.SelectedValue.ToEntero Case 1 LblTextoFrecuencia.Text = "Hora(s)" TrDiasSemanaAdd.Style("display") = "none" Case 2 LblTextoFrecuencia.Text = "Dia(s)" TrDiasSemanaAdd.Style("display") = "none" Case 3 LblTextoFrecuencia.Text = "Semana(s)" TrDiasSemanaAdd.Style("display") = "block" 'Chequea los dias seleccionados en la recurrencia For Each item As ListItem In CheckDiasSemana.Items If HdnDiasSemanaAgendar.Value.Contains(item.Value) Then item.Selected = True Else item.Selected = False End If Next Case 4 LblTextoFrecuencia.Text = "Mes(es)" TrDiasSemanaAdd.Style("display") = "none" Case 5 LblTextoFrecuencia.Text = "Año(s)" TrDiasSemanaAdd.Style("display") = "none" Case Else End Select UpRecurrencia.Update() End Sub Protected Sub BtnActualizaAdd_Click(sender As Object, e As EventArgs) RBLRecurrencia_SelectedIndexChanged(RBLRecurrencia, EventArgs.Empty) End Sub #End Region Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) RegistraScript("Calendario();") End Sub Private Sub CargaOrdenesServiciosNoAsignadas() DdlOrdenesSinAsignar.DataSource = DT_OSNoAsignadas DdlOrdenesSinAsignar.DataBind() DdlOrdenesSinAsignar.Items.Insert(0, New ListItem("Seleccione Uno", "-1")) UpOrdenesSinAsignar.Update() End Sub Private Sub ConsultaOrdenesServiciosNoAsignadas() Dim CveEstatusOrdenServicio As Integer = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus=1").ToEntero If CveEstatusOrdenServicio = 0 Then Alert("No se pudo carga el estatus", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim ObjOS As New ClsOS If ObjOS.GetOrdenesServiciosNoAsignadas(-1, -1, CveEstatusOrdenServicio, UsuarioActual.CveEmpresa, "-1", "-1") Then DT_OSSubProyectos = ObjOS.DtResultados.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) DT_OSNoAsignadas = ObjOS.DtResultados Else DT_OSSubProyectos = New DataTable DT_OSNoAsignadas = New DataTable End If ObjOS.Dispose() If DT_OSNoAsignadas.Rows.Count > 0 Then DVOSPendientes.Visible = True Else DVOSPendientes.Visible = False End If UpOrdenesSinAsignar.Update() End Sub Protected Sub LnlAgregarServicioDomiciolio_Click(sender As Object, e As EventArgs) HFCveOS.Value = "-1" HFCveOsDetalle.Value = "-1" HFOCveOIEvento.Value = "-1" HFCveUsuarioAtendio.Value = "-1" DdlOrdenesSinAsignar.SelectedValueExist(-1) LipiaModalOS() TipoAccion = OSModalTipoAccion.Agregar MostarModal() End Sub Private Sub cargaDropsModal() 'DdlClientesWS.ddl.Items.Clear() 'DdlClientesWS.txtText.Value = "" 'DdlClientesWS.txtValue.Value = "" If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then DdlClientesWS.setEsWebService(True) Else DdlClientesWS.setEsWebService(False) CargaClientes() End If 'DdlSubProyectoOS.Items.Clear() CargarCentrosDeCosto(Nothing, DdlSubProyectoOS, Nothing, LblSubProyectoOS) 'DdlModeloAuto.Items.Clear() Dim ObjGral As New ClsGenerales If ObjGral.ModelosAutosGet(1, UsuarioActual.CveEmpresa) Then DdlModeloAuto.DataSource = ObjGral.DtResultados End If ObjGral.Dispose() DdlModeloAuto.DataBind() DdlModeloAuto.Items.Insert(0, New ListItem("Sin Asignar", "-1")) End Sub Private Sub CargaClientes() If Not UsuarioActual.Empresa.Funcionalidad(105) = "1" Then DdlClientesWS.ddl.Items.Clear() DdlClientesWS.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1) DdlClientesWS.DataBind() DdlClientesWS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If End Sub Private Sub LipiaModalOS() TxtDescripcion.Text = "" TxtFechaOS.Text = "" DdlSubProyectoOS.SelectedValueExist("-1") TxtDireccion.Text = "" TxtEmail.Text = "" TxtTelefono.Text = "" DdlClientesWS.txtText.Value = "" DdlClientesWS.txtValue.Value = "" DdlClientesWS.ddl.SelectedValueExist("-1") DdlTecnicoAsignar.SelectedValueExist("-1") DdlModeloAuto.SelectedValueExist("-1") TxtAnio.Text = "" TxtModalFechaOS.Text = "" TSTimeSelector.Hour = Now.Hour TSTimeSelector.Minute = Now.Minute CveTecnicoAsignarOrioginal = -1 FechaInicioOriginal = DateTime.Now DVFolio.Visible = False End Sub Protected Sub LnkOrdenesSinAsignarMostarModal_Click(sender As Object, e As EventArgs) TipoAccion = OSModalTipoAccion.Asignacion HFCveOS.Value = "-1" MostarModal() End Sub Private Sub MostarModal() LipiaModalOS() If TipoAccion = OSModalTipoAccion.Agregar Then If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then DdlClientesWS.txtValue.Value = CveClientePublicoGeneral.ToString DdlClientesWS.txtText.Value = NombreClientePublicoGeneral Else DdlClientesWS.ddl.SelectedValueExist(CveClientePublicoGeneral) End If TxtFechaOS.Text = Now.ToString("dd/MM/yyyy") RegistraScript("$('#DVModalOS').modal('show');") LblModalOStitulo.Text = "Agregar Orden de Servicio" ElseIf TipoAccion = OSModalTipoAccion.Actualizacion Or TipoAccion = OSModalTipoAccion.Asignacion Then 'cargaDropsModal() LblModalOStitulo.Text = "Actualizar Orden de Servicio" Dim ObjOS As New ClsOS() Dim IDOSDetalle As Integer = 1 Dim SeFacturara = "" Dim CveOsConsultar As Integer = HFCveOS.Value.ToEntero If Not CveOsConsultar > 0 AndAlso Not DdlOrdenesSinAsignar.SelectedValue.ToEntero > 0 Then Alert("clave de orden de servicio no encontrada.", TipoMensaje.MsgAdvertencia) Exit Sub End If If CveOsConsultar > 0 Then DdlOrdenesSinAsignar.SelectedValueExist(-1) End If If ObjOS.GetOrdenesServicios(CveOsConsultar, -1, -1, -1, -1, UsuarioActual.CveEmpresa, CveOSDetalle:=DdlOrdenesSinAsignar.SelectedValue.ToEntero) Then DVFolio.Visible = True HLkFolio.Text = ObjOS.Folio.ToString HLkFolio.NavigateUrl = $"/OS/OrdenesServicios.aspx?CveOS={ObjOS.CveOS}" HFCveOS.Value = ObjOS.CveOS.ToString HFCveOsDetalle.Value = ObjOS.CveOSDetalle.ToString TxtDescripcion.Text = ObjOS.Descripcion TxtFechaOS.Text = ObjOS.FechaRecepcion.ToString("dd/MM/yyyy") DdlSubProyectoOS.SelectedValueExist(ObjOS.CveSubProyecto) TxtDireccion.Text = ObjOS.DtResultados.Rows(0)("DireccionOS").ToString TxtEmail.Text = ObjOS.CorreoOS TxtTelefono.Text = ObjOS.Telefono DdlClientesWS.txtText.Value = ObjOS.Cliente DdlClientesWS.txtValue.Value = ObjOS.CveCliente.ToString DdlClientesWS.ddl.SelectedValueExist(ObjOS.CveCliente.ToString) DdlModeloAuto.SelectedValueExist(ObjOS.CveModeloAuto) TxtAnio.Text = ObjOS.Año If TipoAccion = OSModalTipoAccion.Actualizacion Then DdlTecnicoAsignar.SelectedValueExist(ObjOS.CveUsuarioAtendio) CveTecnicoAsignarOrioginal = ObjOS.CveUsuarioAtendio FechaInicioOriginal = ObjOS.FechaInicio TxtModalFechaOS.Text = ObjOS.FechaInicio.ToString.ToDate.ToString("dd/MM/yyyy") TSTimeSelector.Hour = If(ObjOS.FechaInicio.Hour > 12, ObjOS.FechaInicio.Hour - 12, ObjOS.FechaInicio.Hour) TSTimeSelector.Minute = ObjOS.FechaInicio.Minute TSTimeSelector.AmPm = If(ObjOS.FechaInicio.Hour > 12, MKB.TimePicker.TimeSelector.AmPmSpec.PM, MKB.TimePicker.TimeSelector.AmPmSpec.AM) End If RegistraScript("$('#DVModalOS').modal('show');") End If ObjOS.Dispose() LblModalOStitulo.Text = "Actualizar Orden de Servicio" ElseIf False Then ' Anterior CveOSDetalleAsignar = -1 CveOSAsignar = -1 CveSubProyectoAsignar = -1 Dim DTable As DataTable = DT_OSNoAsignadas.FiltraParametros($"CveOSDetalle={DdlOrdenesSinAsignar.SelectedValue}") If DTable.Rows.Count = 1 Then CveOSDetalleAsignar = DTable.Rows(0)("CveOSDetalle").ToString.ToEntero CveSubProyectoAsignar = DTable.Rows(0)("CveSubProyecto").ToString.ToEntero CveOSAsignar = DTable.Rows(0)("CveOS").ToString.ToEntero FolioAsignar = DTable.Rows(0)("Folio").ToString 'LblModalConcepto.Text = DTable.Rows(0)("Concepto").ToString 'LblModalCliente.Text = DTable.Rows(0)("Nombre").ToString 'LblModalSubProyecto.Text = DTable.Rows(0)("SubProyecto").ToString LblModalOStitulo.Text = "Asignar Orden de Servicio" RegistraScript("$('#DVModalOS').modal('show');") Else Alert("Error al cargar datos.") End If End If UpModalOS.Update() End Sub Protected Sub LnkModalAsignar_Click(sender As Object, e As EventArgs) Dim TieneError As Boolean = False Dim CveEstatusSolicidato = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 1", "CveEstatusOrdenServicio ASC").ToEntero Dim CveEstatusAsiganada = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 2", "CveEstatusOrdenServicio ASC").ToEntero Dim CveCliente As Integer = If(Not DdlClientesWS.SelectedValue.ToEntero > 0, DdlClientesWS.txtValue.Value.ToString.ToEntero, DdlClientesWS.SelectedValue.ToEntero) Dim CvePSDetalle As Integer = UsuarioActual.Empresa.Funcionalidad(708).ToEntero Dim EsNueva As Boolean = False Dim CveOS As Integer = HFCveOS.Value.ToEntero Dim CveOsDetalle As Integer = HFCveOsDetalle.Value.ToEntero If Not CvePSDetalle > 0 Then Alert("No esta asiganado el producto del detalle a la funcionalidad.") Exit Sub End If If Not CveCliente > 0 Then Alert("Debe seleccionar una cliente.") Exit Sub End If If TipoAccion = OSModalTipoAccion.Asignacion Then If Not DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then Alert("El tecnico es requerido", TipoMensaje.MsgAdvertencia) Exit Sub End If If TxtModalFechaOS.Text.Length = 0 Then Alert("La Fecha de asiganción es requerida", TipoMensaje.MsgAdvertencia) Exit Sub End If End If Dim ObjOS As New ClsOS ObjOS.IniciaTransacSQL() If Not CveOS > 0 Then EsNueva = True Dim CveEstatosOrdenNueva = CveEstatusSolicidato If DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then CveEstatosOrdenNueva = CveEstatusAsiganada End If If ObjOS.AddOrdenesServicios(CveCliente, DdlSubProyectoOS.SelectedValue.ToEntero, "", TxtFechaOS.Text.ToDateTime, TxtDescripcion.Text, UsuarioActual.CveUsuario, CveEstatosOrdenNueva, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, CveOrdenServicioTipo, CveClienteSucursal:=-1, Direccion:=TxtDireccion.Text, Telefono:=TxtTelefono.Text, CveModeloAuto:=DdlModeloAuto.SelectedValue.ToEntero, Año:=TxtAnio.Text, Correo:=TxtEmail.Text) Then CveOS = ObjOS.CveOS CveOsDetalle = ObjOS.AddOrdenesServiciosDetalle(CveOS, CvePSDetalle, 1, -1, -1, "", False, True, False, -1, "-1", "-1", "-1", "", UsuarioActual.CveUsuario, "") If Not CveOsDetalle > 0 Then TieneError = True End If Else TieneError = True End If Else Dim CveEstatusOrden = CveEstatusSolicidato If DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then CveEstatusOrden = CveEstatusAsiganada End If If TipoAccion = OSModalTipoAccion.Asignacion Then CveEstatusOrden = CveEstatusAsiganada End If CveOS = HFCveOS.Value.ToEntero CveOsDetalle = HFCveOsDetalle.Value.ToEntero If CveOS > 0 Then If Not ObjOS.UpdateOrdenesServicios("", TxtFechaOS.Text, TxtDescripcion.Text, UsuarioActual.CveUsuario, CveEstatusOrden, CveOS, UsuarioActual.CveUsuario, -1, CveClienteSucursal:=-1, Direccion:=TxtDireccion.Text, Telefono:=TxtTelefono.Text, CveModeloAuto:=DdlModeloAuto.SelectedValue.ToEntero, Año:=TxtAnio.Text, CveSubProyecto:=DdlSubProyectoOS.SelectedValue.ToEntero, Correo:=TxtEmail.Text) Then TieneError = True End If Else TieneError = True End If End If Dim picker As MKB.TimePicker.TimeSelector = TSTimeSelector Dim time As DateTime time = DateTime.Parse(String.Format("{0} {1}:{2} {3}", TxtModalFechaOS.Text, picker.Hour, picker.Minute, picker.AmPm)) If Not TieneError AndAlso CveOS > 0 AndAlso CveOsDetalle > 0 AndAlso DdlTecnicoAsignar.SelectedValue.ToEntero > 0 AndAlso (HFCveUsuarioAtendio.Value.ToEntero <> DdlTecnicoAsignar.SelectedValue.ToEntero Or TxtModalFechaOS.Text.ToDate <> FechaInicioOriginal.ToString.ToDate Or time <> FechaInicioOriginal) Then If ObjOS.GetSubProyectosEstatusInicial(DdlTecnicoAsignar.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then Dim subProyectoDelTecnico As DataTable subProyectoDelTecnico = ObjOS.DtResultados.FiltraParametros($"CveSubProyecto = {DdlSubProyectoOS.SelectedValue.ToEntero}") If subProyectoDelTecnico.Rows.Count > 0 Then If Not ObjOS.UpdateOrdenesServiciosAsignadas(CveOsDetalle, DdlTecnicoAsignar.SelectedValue.ToEntero, TxtModalFechaOS.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(CveEstatusAsiganada, UsuarioActual.CveUsuario, CveOS) Then TieneError = True End If If Not TieneError Then Dim ObjEventos As New ClsOIEventos(ObjOS.IniciaTransacSQL()) If HFOCveOIEvento.Value.ToEntero > 0 Then If Not ObjEventos.RemoveAgendaBitacora(HFOCveOIEvento.Value.ToEntero, UsuarioActual.CveEmpresa) Then TieneError = True End If End If Dim RecurrenciaTipo = 0, Frecuencia = -1, DiasSemana = "-1", Dias = -1, Mes = -1, RecurrenciaFin = "-1" Dim OIDescripcion As String = $"{DdlTecnicoAsignar.SelectedItem.Text} Orden de servicio {FolioAsignar} " If Not ObjEventos.AddEventoAgenda(2, DdlTecnicoAsignar.SelectedItem.Text, OIDescripcion, 2, time, time.AddHours(1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, RecurrenciaTipo:=RecurrenciaTipo, Frecuencia:=Frecuencia, DiasSemana:=DiasSemana, Dia:=Dias, Mes:=Mes, RecurrenciaFin:=RecurrenciaFin, CveTipoEvento:=2, Importe:=0, CveOS:=CveOS, CveSubProyecto:=DdlSubProyectoOS.SelectedValue.ToEntero) Then TieneError = True End If End If End If End If If Not TieneError Then ObjOS.Commit() Else ObjOS.RollBack() End If ObjOS.Dispose() Dim CorreoAsignado As String = GlobalDTUsuarios(DdlTecnicoAsignar.SelectedValue.ToEntero).Rows(0)("Correo").ToString If Not TieneError And CorreoAsignado.Trim.Length > 0 AndAlso DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then CorreoAsignado = GlobalDTUsuarios(DdlTecnicoAsignar.SelectedValue.ToEntero).Rows(0)("Correo").ToString MandaCorreOS(CveOSAsignar, CorreoAsignado) End If If Not TieneError Then ConsultaOrdenesServiciosNoAsignadas() CargaOrdenesServiciosNoAsignadas() Alert("Orden asignada correctamente.") RegistraScript("$('#DVModalOS').modal('hide');Calendario();") End If End Sub Private Sub MandaCorreOS(CveOS As Integer, CorreoUsuarioAsignado As String) Dim ObjOS As New ClsOS() Dim params As New List(Of ReportParameter) Dim CveFolio = "" Dim TmpDTOS = New DataTable TmpDTOS.Columns.Add("CveOSDetalle", GetType(Integer)) TmpDTOS.Columns.Add("CveClasificacion", GetType(Integer)) TmpDTOS.Columns.Add("Clasificacion", GetType(String)) TmpDTOS.Columns.Add("CvePS", GetType(Integer)) TmpDTOS.Columns.Add("CveUM", GetType(Integer)) TmpDTOS.Columns.Add("UM", GetType(String)) TmpDTOS.Columns.Add("Cantidad", GetType(Integer)) TmpDTOS.Columns.Add("PS", GetType(String)) TmpDTOS.Columns.Add("Especificaciones", GetType(String)) TmpDTOS.Columns.Add("Materiales", GetType(String)) TmpDTOS.Columns.Add("CveCuentaEquipo", GetType(Integer)) TmpDTOS.Columns.Add("Observaciones", GetType(String)) TmpDTOS.Columns.Add("FechaAtencion", GetType(String)) TmpDTOS.Columns.Add("CveUsuarioAtendio", GetType(Integer)) TmpDTOS.Columns.Add("UsuarioAtendio", GetType(String)) TmpDTOS.Columns.Add("FechaTermino", GetType(String)) TmpDTOS.Columns.Add("FechaEntrega", GetType(String)) TmpDTOS.Columns.Add("CveUsuarioEntrego", GetType(Integer)) TmpDTOS.Columns.Add("UsuarioEntrego", GetType(String)) TmpDTOS.Columns.Add("SeFacturara", GetType(String)) TmpDTOS.Columns.Add("SeSuperviso", GetType(String)) TmpDTOS.Columns.Add("Estatus", GetType(String)) TmpDTOS.Columns.Add("Archivo", GetType(String)) TmpDTOS.Columns.Add("ComentarioTecnico", GetType(String)) Dim TmpDTMaterialesOS = New DataTable TmpDTMaterialesOS.Columns.Add("CveOSDetalle", GetType(Integer)) TmpDTMaterialesOS.Columns.Add("CveConsecutivo", GetType(Integer)) TmpDTMaterialesOS.Columns.Add("CveConsecutivoDetalle", GetType(Integer)) TmpDTMaterialesOS.Columns.Add("CveMaterial", GetType(Integer)) TmpDTMaterialesOS.Columns.Add("Cantidad", GetType(Integer)) TmpDTMaterialesOS.Columns.Add("CveClasificacion", GetType(Integer)) TmpDTMaterialesOS.Columns.Add("CvePS", GetType(String)) TmpDTMaterialesOS.Columns.Add("CveUM", GetType(String)) TmpDTMaterialesOS.Columns.Add("Clasificacion", GetType(String)) TmpDTMaterialesOS.Columns.Add("PS", GetType(String)) TmpDTMaterialesOS.Columns.Add("UM", GetType(String)) Dim FolioOS As String = "" Dim RutaReporte As New System.IO.FileInfo(String.Format("{0}Formatos/OrdenServicio.rdlc", UsuarioActual.Empresa.Ruta)) If ObjOS.GetOrdenesServicios(CveOS, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then If ObjOS.DtResultados.Rows.Count > 0 Then Dim dtOS As DataTable = ObjOS.DtResultados Dim dr As DataRow = dtOS.Rows(0) params.Add(New ReportParameter("Cliente", dr("Cliente").ToString)) params.Add(New ReportParameter("Solicito", dr("PersonaSolicito").ToString)) params.Add(New ReportParameter("Descripcion", dr("Descripcion").ToString)) params.Add(New ReportParameter("Recibio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaRecibido", dr("FechaRecepcion").ToString)) params.Add(New ReportParameter("FolioOS", dr("Folio").ToString)) FolioOS = dr("Folio").ToString params.Add(New ReportParameter("ClienteTelefono", dr("Telefono").ToString)) params.Add(New ReportParameter("ClienteCalle", dr("Direccion").ToString)) params.Add(New ReportParameter("ClienteColonia", dr("Colonia").ToString)) params.Add(New ReportParameter("ClienteCiudad", dr("Ciudad").ToString)) params.Add(New ReportParameter("ClienteEstado", dr("Estado").ToString)) CveFolio = dr("Folio").ToString If RutaReporte.Exists Then params.Add(New ReportParameter("NoDeCliente", dr("CveCliente").ToString)) params.Add(New ReportParameter("RFC", dr("RFC").ToString)) params.Add(New ReportParameter("Vendedor", " ")) params.Add(New ReportParameter("Correo", dr("Correo").ToString)) params.Add(New ReportParameter("CodigoDeServicio", dr("CveOS").ToString)) params.Add(New ReportParameter("Sucursal", dr("SubProyecto").ToString)) params.Add(New ReportParameter("TipoServicio", dr("TipoServicio").ToString)) params.Add(New ReportParameter("TipoEquipo", dr("TipoEquipo").ToString)) params.Add(New ReportParameter("Descripcion", dr("Descripcion").ToString)) params.Add(New ReportParameter("Copia", "Copia: Original")) params.Add(New ReportParameter("Equipo", dr("Equipo").ToString)) End If End If End If Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png") If Not RutaReporte.Exists Then RutaReporte = New System.IO.FileInfo(String.Format("{0}Empresas\Grales\Formatos\OrdenServicio.rdlc", ModExtensiones.DirectorioBaseEmpresas)) 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("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) End If If ObjOS.GetOrdenesServiciosDetalle(CveOS) Then TmpDTOS = ObjOS.DtResultados End If If ObjOS.GetDetalleMateriales(-1, CveOS) Then TmpDTMaterialesOS = ObjOS.DtResultados End If Dim lrds As New List(Of ReportDataSource) Dim rds As New ReportDataSource With {.Name = "DataSet2", .Value = TmpDTMaterialesOS} Dim rds2 As New ReportDataSource With {.Name = "DataSet1", .Value = TmpDTOS} lrds.Add(rds) lrds.Add(rds2) ObjOS.Dispose() Dim ReporteByte As Byte() = StreamPDF(RutaReporte.FullName, lrds, params, NombreArchivo:=String.Format("OrdenServicio-{0}", CveFolio)) If ReporteByte IsNot Nothing Then Try ViewState("Para") = CorreoUsuarioAsignado ViewState("ArrayCC") = "" ViewState("Asunto") = "Asinación Orden de Servicio" ViewState("FolioOSMail") = FolioOS ViewState("Body") = "Asinación Orden de Servicio" ViewState("bytesOS") = ReporteByte Dim Hilo As New Threading.Thread(AddressOf SendmailOS) Hilo.Start() Catch ex As Exception GuardaLogAD($"Error al enviar correo de OS {ex.StackTrace}") End Try End If End Sub Private Sub SendmailOS() Dim Asunto, Para, ArrayCC, Body As String Asunto = If(IsNothing(ViewState("Asunto")), "", ViewState("Asunto").ToString) Para = If(IsNothing(ViewState("Para")), "", ViewState("Para").ToString) ArrayCC = If(IsNothing(ViewState("ArrayCC")), "", ViewState("ArrayCC").ToString) Body = If(IsNothing(ViewState("Body")), "", ViewState("Body").ToString) Dim Mail As New ClsSisMail() Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.NombreArchivo = $"OS_{ViewState("FolioOSMail") }.pdf", .ArchivoBinario = DirectCast(ViewState("bytesOS"), Byte())}) Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayCC, LSRutasMail) End Sub Private Sub GetCargaTiposOrden() Dim ObjOS As New ClsOS If ObjOS.GetTipoOrdenesServicios(UsuarioActual.CveEmpresa) AndAlso ObjOS.DtResultados IsNot Nothing AndAlso ObjOS.DtResultados.Rows.Count > 0 Then CveOrdenServicioTipo = ObjOS.DtResultados.FiltroPrimeroValor("CveOrdenServicioTipo").ToEntero Else CveOrdenServicioTipo = -1 End If ObjOS.Dispose() End Sub Protected Sub LnkCommando_Click(sender As Object, e As EventArgs) ' Alert($"HFCveOS:{HFCveOS.Value}, HFCveOsDetalle:{HFCveOsDetalle.Value }, HFCveOIEvento:{HFOCveOIEvento.Value}") TipoAccion = OSModalTipoAccion.Actualizacion 'RegistraScript("$('#DVModalOS').modal('show');") MostarModal() End Sub Protected Sub DdlTecnicoAsignar_SelectedIndexChanged(sender As Object, e As EventArgs) If TipoAccion = OSModalTipoAccion.Asignacion Then 'DdlTecnicoAsignar.Visible = True 'RfvDdlTecnicoAsignar.Visible = True 'VCERfvDdlTecnicoAsignar.Visible = True 'RfvTxtModalFechaOS.Visible = True 'VceRfvTxtModalFechaOS.Enabled = True ElseIf TipoAccion = OSModalTipoAccion.Agregar Or TipoAccion = OSModalTipoAccion.Actualizacion Then 'DdlTecnicoAsignar.Visible = False 'RfvDdlTecnicoAsignar.Visible = False ' VCERfvDdlTecnicoAsignar.Visible = False 'RfvTxtModalFechaOS.Visible = False 'VceRfvTxtModalFechaOS.Enabled = False End If UpModalOS.Update() End Sub Private Sub CargaClientePublicoGeneral() Dim ObjCliente As New ClsClientes() If ObjCliente.GetClientes(-1, "PUBLICO EN GENERAL", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1) Then If ObjCliente.DtResultados.Rows.Count > 0 Then Me.CveClientePublicoGeneral = ObjCliente.CveCliente Me.NombreClientePublicoGeneral = ObjCliente.Nombre End If End If ObjCliente.Dispose() End Sub End Class