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 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 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 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 #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() End If End Sub #Region "CARGAS" Private Sub SetValues() End Sub Private Sub CargaDatos() End Sub #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")) UpModalOSAsginar.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() 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 LnkOrdenesSinAsignarMostarModal_Click(sender As Object, e As EventArgs) 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 UpModalOSAsginar.Update() RegistraScript("$('#DVModalOSAsginar').modal('show');") Else Alert("Error al cargar datos.") End If End Sub Protected Sub LnkModalAsignar_Click(sender As Object, e As EventArgs) Dim TieneError As Boolean = False Dim CveEstatusOS = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveEstatusOrdenServicio", "TipoEstatus = 2", "CveEstatusOrdenServicio ASC").ToEntero Dim CorreoAsignado As String = "" 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)) Dim ObjOS As New ClsOS ObjOS.IniciaTransacSQL() If ObjOS.GetSubProyectosEstatusInicial(DdlTecnicoAsignar.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then Dim subProyectoDelTecnico As DataTable subProyectoDelTecnico = ObjOS.DtResultados.FiltraParametros($"CveSubProyecto = {CveSubProyectoAsignar}") If subProyectoDelTecnico.Rows.Count > 0 Then If Not ObjOS.UpdateOrdenesServiciosAsignadas(CveOSDetalleAsignar, 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(CveEstatusOS, UsuarioActual.CveUsuario, CveOSAsignar) Then TieneError = True End If If Not TieneError Then Dim RecurrenciaTipo = 0, Frecuencia = -1, DiasSemana = "-1", Dias = -1, Mes = -1, RecurrenciaFin = "-1" Dim OIDescripcion As String = $"{DdlTecnicoAsignar.SelectedItem.Text} Orden de servicio {FolioAsignar} " Dim ObjEventos As New ClsOIEventos(ObjOS.IniciaTransacSQL()) 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:=CveOSAsignar, CveSubProyecto:=CveSubProyectoAsignar) Then TieneError = True End If End If CorreoAsignado = GlobalDTUsuarios(DdlTecnicoAsignar.SelectedValue.ToEntero).Rows(0)("Correo").ToString End If If Not TieneError Then ObjOS.Commit() Else ObjOS.RollBack() End If ObjOS.Dispose() If Not TieneError And CorreoAsignado.Trim.Length > 0 Then MandaCorreOS(CveOSAsignar, CorreoAsignado) End If If Not TieneError Then ConsultaOrdenesServiciosNoAsignadas() Alert("Orden asignada correctamente.") RegistraScript("$('#DVModalOSAsginar').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(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) 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 End Class