From 62dab35b17e7d96bfa63724833dc0a1b0857b6f6 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 21 Jun 2024 11:22:40 -0700 Subject: [PATCH] =?UTF-8?q?--=20mejora=20en=20visualizaci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ashx/CargaEventos.ashx | 76 +- OS/RepServiciosMedicos.aspx | 944 ++++++++++++++++++++++++ OS/RepServiciosMedicos.aspx.vb | 1232 ++++++++++++++++++++++++++++++++ 3 files changed, 2233 insertions(+), 19 deletions(-) create mode 100644 OS/RepServiciosMedicos.aspx create mode 100644 OS/RepServiciosMedicos.aspx.vb diff --git a/Ashx/CargaEventos.ashx b/Ashx/CargaEventos.ashx index 9777b70b6..23abfb27d 100644 --- a/Ashx/CargaEventos.ashx +++ b/Ashx/CargaEventos.ashx @@ -41,10 +41,64 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState context.Response.Write(sJSON) End If - End If + Exit Select + Case "servicio_medicos" + If context.Request("U").ToEntero > 0 Then + + CveUsuario = context.Request("U").ToEntero + CveEmpresa = context.Request("E").ToEntero + + Dim CveSubProyecto As Integer = If(context.Request("CveSubProyecto") IsNot Nothing, context.Request("CveSubProyecto").ToEntero, -1) + Dim CveUsuarioPara As Integer = If(context.Request("CveUsuarioPara") IsNot Nothing, context.Request("CveUsuarioPara").ToEntero, -1) + Dim FechaI As Date = context.Request("start").ToDate + Dim FechaF As Date = context.Request("end").ToDate + Dim Cvecliente As Integer = -1 'DdlClienteSucursalCliente() + Dim CveClienteSucursal As Integer = -1 ' DdlClienteSucursalSucursal() + Dim CveVendedor As Integer = -1 + Dim CveEstatus As Integer = -1 + Dim ObjOS As New ClsOS + + If ObjOS.GetRepOrdenesServicioMedicasRep(FechaI, FechaF, Cvecliente, CveVendedor, CveEstatus, CveUsuarioPara, -1, CveEmpresa, + CveMedico:=-1, CveProcedimiento:=-1, CveEspecialidad:=-1, + CveClienteSucursal:=CveClienteSucursal, CveUsuario:=CveUsuario) Then + + If ObjOS.DtResultados IsNot Nothing AndAlso ObjOS.DtResultados.Rows.Count > 0 Then + events = New List(Of CalendarEvent) + For Each dr As DataRow In ObjOS.DtResultados.Rows + Dim cevent As CalendarEvent = New CalendarEvent() + cevent.id = dr("CveOS").ToString.ToEntero + cevent.title = $" {dr("Tecnico")}-{dr("NombreCliente")}" + cevent.description = $" {dr("Tecnico")} -{dr("NombreCliente")} OS# {dr("Folio")}" + cevent.start = String.Format("{0:s}", dr("FechaCita").ToString.ToDateTime) + cevent.end = String.Format("{0:s}", dr("FechaCita").ToString.ToDateTime.AddHours(1)) + cevent.CveOS = dr("CveOS").ToString.ToEntero + cevent.allDay = False + If dr("EstatusOSGral").ToString.Contiene("Levantamiento") Then + cevent.backgroundColor = "#006699" + ElseIf dr("EstatusOSGral").ToString.Contiene("Surtido") Then + cevent.backgroundColor = "#002699" + ElseIf dr("EstatusOSGral").ToString.Contiene("Asignado") Then + cevent.backgroundColor = "#025716" + ElseIf dr("EstatusOSGral").ToString.Contiene("Finalizado") Then + cevent.backgroundColor = "#730505" + ElseIf dr("EstatusOSGral").ToString.Contiene("Facturado") Then + cevent.backgroundColor = "#006699" + ElseIf dr("EstatusOSGral").ToString.Contiene("Cobrado") Then + cevent.backgroundColor = "#007699" + ElseIf dr("EstatusOSGral").ToString.Contiene("Cancelado") Then + End If + events.Add(cevent) + Next + + context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(events)) + End If + End If + ObjOS.Dispose() + + End If Exit Select Case "contrato_transportes" @@ -67,17 +121,12 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState context.Response.Write(sJSON) End If - End If - - Exit Select Case Else Exit Select End Select - - Else If context.Request("U").ToEntero > 0 Then CveUsuario = context.Request("U").ToEntero @@ -105,23 +154,19 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState Private Function GetEventos(CveUsuario As Integer, CveEmpresa As Integer, pFI As Date, pFF As Date, Optional CveOS As Integer = -1, Optional CveUsuarioPara As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional context As HttpContext = Nothing) As Boolean - Dim ObjEventos As New ClsOIEventos + Dim ErrorEventos As Boolean = False Dim CveEmpresaCRM As Integer = 0 - Dim DT_SubProyectos As New System.Data.DataTable - DT_SubProyectos.Columns.Add("CveSubProyecto", GetType(Integer)) DT_SubProyectos.Columns.Add("backgroundColor") - Dim DT_EstatusOS As New DataTable DT_EstatusOS.Columns.Add("", GetType(Integer)) - + Dim ObjEventos As New ClsOIEventos 'son 26 Dim Colores() As String = {"#006699", "#0099cc", "#0066cc", "#0033cc", "#0000ff", "#3333ff", "#3333ff", "#6600ff", "#9933ff", "#cc00ff", "#cc00cc", "#cc0099", "#cc3399", "#cc6699", "#cc0066", "#009933", "#00cc00", "#00cc66", "#009999", "#669900", "#99cc00", "#cccc00", "#cc9900", "#ff9900", "#006666", "#669999"} - If CveOS = -2 Then Dim objSub As New ClsSubProyectos @@ -135,8 +180,6 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState Dim ColorIndex As Integer = 0 - - If DtTempSubproyectos.Rows.Count > 0 Then For Each drow As DataRow In DtTempSubproyectos.Rows @@ -164,9 +207,6 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState End If End If - - - If ObjEventos.GetEventos(-1, -1, -1, "-1", "-1", -1, CveUsuario, CveUsuarioPara, -1, -1, -1, "-1", -1, -1, -1, -1, CveOS, -1, -1, -1, -1, -1, CveUsuario, CveUsuario, CveUsuario, CveEmpresa, pFI, pFF, CveSubProyecto:=CveSubProyecto, EsCoordinador:=EsCoordinador) Then If ObjEventos.DtResultados.Rows.Count > 0 Then @@ -447,8 +487,6 @@ Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState DT_SubProyectos.Columns.Add("backgroundColor") DT_EstatusOS.Columns.Add("", GetType(Integer)) - - If ObjContratos.GetContratos(-1, usuarioActual_.CveEmpresa, TipoContrato:=34) Then If ObjContratos.DtResultados.Rows.Count > 0 Then diff --git a/OS/RepServiciosMedicos.aspx b/OS/RepServiciosMedicos.aspx new file mode 100644 index 000000000..9dcc831c9 --- /dev/null +++ b/OS/RepServiciosMedicos.aspx @@ -0,0 +1,944 @@ +<%@ Page Title="Reporte Ordenes Médicas" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepServiciosMedicos.aspx.vb" Inherits="OS_RepServiciosMedicos" %> + +<%@ Register Assembly="TimePicker" Namespace="MKB.TimePicker" TagPrefix="cc1" %> + + + + + + + + + + + + + + + + + Reporte Órdenes Médicas + + + + + + + +
+
+
+ + +
+
+
+ + +
+ +
+ + + +
+ +
+ +
+
+
+
+
+
+
+
+ + + +
+
+ Os: +
+
+ +
+
+ Asignar +
+
+
+
+ + + +
+
+ +
+
+
+ + Cirugías +
+
+
+ +
+
+ + + + + + + + +
+
+
+
+ + + + + + + + + + +
+ + + + + + + + + + + + +
+ +
+ + + + + + diff --git a/OS/RepServiciosMedicos.aspx.vb b/OS/RepServiciosMedicos.aspx.vb new file mode 100644 index 000000000..4d33a8f19 --- /dev/null +++ b/OS/RepServiciosMedicos.aspx.vb @@ -0,0 +1,1232 @@ +Option Explicit On +Option Strict On + +Imports Extensiones +Imports System.Data +Imports Microsoft.Reporting.WebForms +Imports System.Web.Services +Partial Class OS_RepServiciosMedicos + 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 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") = NowADS() + 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 + + + Private Property DTTecnicos As DataTable + Get + If ViewState("DTTecnicos") Is Nothing Then + ViewState("DTTecnicos") = New DataTable + End If + + Return DirectCast(ViewState("DTTecnicos"), DataTable) + End Get + + Set(ByVal value As DataTable) + ViewState("DTTecnicos") = 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 + CargaUsuariosTecnicos() + CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyectoEtiqueta) + LblSubProyectoFiltro.Text = LblSubProyectoEtiqueta.Text + ' LblModalSubProyectoLabel.Text = LblSubProyectoEtiqueta.Text + CargaTecnicos() + ConsultaOrdenesServiciosNoAsignadas() + CargaOrdenesServiciosNoAsignadas() + CargaTecnicosAsignar() + InicializaCalendar() + GetCargaTiposOrden() + cargaDropsModal() + CargaClientePublicoGeneral() + + If UsuarioActual.TienePermisoProceso(348) Then + DVModalAsignacion.Visible = True + End If + + If UsuarioActual.TienePermisoProceso(352) Then + LnkCancelarOrden.Visible = True + End If + + End If + End Sub + + Private Sub CargaUsuariosTecnicos() + Dim DTTecnicosresultado As DataTable = Nothing + DTTecnicos = New DataTable + Dim ObjOS As New ClsOS + If ObjOS.GetSubProyectosEstatusInicial(-1, 3, UsuarioActual.CveEmpresa) Then + DTTecnicosresultado = ObjOS.DtResultados.FiltraParametros(" Estatus = 'True' ") + End If + + If DTTecnicosresultado IsNot Nothing Then + For Each SubProyecto As DataRow In DTTecnicosresultado.Rows + Dim TecnicosSubProyectoAux As DataTable = DTTecnicosresultado.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 = DTTecnicosresultado.FiltraParametros(String.Format("SubProyecto = '{0}' AND CveEstatusOrdenServicio = {1}", SubProyecto.Item("SubProyecto"), EstatusDeTipoProcesoMenor), "", {"CveUsuario", "Nombre"}) + DTTecnicos.Merge(dtAuxiliar) + End If + Next + End If + ObjOS.Dispose() + + 'Dim ObjUsuarios As New ClsSisUsuarios + 'If ObjUsuarios.GetPermisosPorUsuarioProcesos(-1, -1, -1, -1, 351, UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa) Then + ' If UsuarioActual.CveRol = 1 Then + ' DTTecnicos = ObjUsuarios.DtResultados.FiltraParametros(" CveProcesoUsuarioAcceso > 0") + ' Else + ' DTTecnicos = ObjUsuarios.DtResultados.FiltraParametros(" CveProcesoUsuarioAcceso > 0 and CveUsuario <> 100") + ' End If + + 'End If + 'ObjUsuarios.Dispose() + + 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 = DTTecnicos '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 = DTTecnicos 'GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa).FiltraParametros("Estatus = 'True'") + 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 + + 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 + + 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() + + TxtSolicito.Text = "" + TxtDescripcion.Text = "" + TxtFechaOS.Text = "" + + DdlClientesWS.txtText.Value = "" + DdlClientesWS.txtValue.Value = "" + DdlClientesWS.ddl.SelectedValueExist("-1") + DdlTecnicoAsignar.SelectedValueExist("-1") + + 'TSTimeSelector.Hour = NowADS().Hour + 'TSTimeSelector.Minute = NowADS().Minute + + CveTecnicoAsignarOrioginal = -1 + FechaInicioOriginal = NowADS() + + DVFolio.Visible = False + DvModalSubProyecto.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 = NowADS().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 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 + Dim ObjOS As New ClsOS() + 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}" + + HLKPDF.NavigateUrl = $"/Compras/PopUpVerFactura.aspx?P={Encripta(String.Format("OP=OS&CVEOS={0}", ObjOS.CveOS))}" + + + HFCveOS.Value = ObjOS.CveOS.ToString + HFCveOsDetalle.Value = ObjOS.CveOSDetalle.ToString + TxtDescripcion.Text = ObjOS.Descripcion + TxtSolicito.Text = ObjOS.PersonaSolicito + TxtFechaOS.Text = ObjOS.FechaRecepcion.ToString("dd/MM/yyyy") + 'DdlSubProyectoOS.SelectedValueExist(ObjOS.CveSubProyecto) + DdlClientesWS.txtText.Value = ObjOS.Cliente + DdlClientesWS.txtValue.Value = ObjOS.CveCliente.ToString + DdlClientesWS.ddl.SelectedValueExist(ObjOS.CveCliente.ToString) + + If TipoAccion = OSModalTipoAccion.Actualizacion Then + DdlTecnicoAsignar.SelectedValueExist(ObjOS.CveUsuarioAtendio) + CveTecnicoAsignarOrioginal = ObjOS.CveUsuarioAtendio + FechaInicioOriginal = ObjOS.FechaInicio + + DvModalSubProyecto.Visible = True + LblModalOStitulo.Text = "Actualizar Orden de Servicio" + '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 + + + Dim TipoEstatus As Integer = 0 + TipoEstatus = GlobalDTEstatusOrdenServicios(UsuarioActual.CveEmpresa).FiltroPrimeroValor("TipoEstatus", String.Format("CveEstatusOrdenServicio = {0}", ObjOS.CveEstatusOrdenServicio), "CveEstatusOrdenServicio ASC").ToEntero + + 'LnkModalAsignar.Visible = If(TipoEstatus.Contiene(4, 5), False, True) + LnkCancelarOrden.Visible = If(TipoEstatus.Contiene(4, 5), False, True) + + If (TipoEstatus = 5) Then + LblModalOStitulo.Text = "Orden Cancelada" + End If + + RegistraScript("$('#DVModalOS').modal('show');") + + End If + ObjOS.Dispose() + + 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 + + + Dim CveSubProyectoTecnico As Integer = If(DdlTecnicoAsignar.SelectedValue.ToEntero > 0, GlobalDTUsuarios(DdlTecnicoAsignar.SelectedValue.ToEntero, UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", " CveSubProyecto > 0 ").ToEntero, -1) + + If CveSubProyectoTecnico = 0 And DdlTecnicoAsignar.SelectedValue.ToEntero = 100 Then + CveSubProyectoTecnico = GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1).FiltroPrimeroValor("CveSubProyecto").ToEntero + End If + + + If TipoAccion = OSModalTipoAccion.Asignacion AndAlso Not CveSubProyectoTecnico > 0 Then + Alert("No se encontro el subproyecto o centro de costo del tecnico seleccionado.") + Exit Sub + End If + + 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 + + + + End If + + Dim ObjOS As New ClsOS + ObjOS.IniciaTransacSQL() + + If CveOS > 0 Then + + 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(TxtSolicito.Text, TxtFechaOS.Text, TxtDescripcion.Text, UsuarioActual.CveUsuario, CveEstatusOrden, CveOS, UsuarioActual.CveUsuario, + -1, CveClienteSucursal:=-1, Direccion:="", Telefono:="", + CveSubProyecto:=CveSubProyectoTecnico, Correo:="") 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) Then + + + 'If Not ObjOS.UpdateOrdenesServiciosAsignadas(CveOsDetalle, DdlTecnicoAsignar.SelectedValue.ToEntero, TxtModalFechaOS.Text.ToDate, TxtModalFechaOS.Text.ToDateTime(), UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then + ' TieneError = True + 'End If + + + 'If ObjOS.GetSubProyectosEstatusInicial(DdlTecnicoAsignar.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then + ' Dim subProyectoDelTecnico As DataTable + ' subProyectoDelTecnico = ObjOS.DtResultados.FiltraParametros($"CveSubProyecto = {CveSubProyectoTecnico}") + + ' If subProyectoDelTecnico.Rows.Count > 0 Then + ' If Not ObjOS.UpdateOrdenesServiciosAsignadas(CveOsDetalle, DdlTecnicoAsignar.SelectedValue.ToEntero, TxtModalFechaOS.Text.ToDate, TxtModalFechaOS.Text.ToDateTime(), 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, TxtFechaOS.Text.ToDateTime(), TxtFechaOS.Text.ToDateTime().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:=CveSubProyectoTecnico, CveUsuarioPara:=DdlTecnicoAsignar.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(CveOS, CorreoAsignado) + End If + + 'If Not TieneError And TxtEmail.Text.Trim.Length > 0 AndAlso DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then + ' MandaCorreOS(CveOS, TxtEmail.Text, True) + 'End If + + If Not TieneError Then + + ConsultaOrdenesServiciosNoAsignadas() + CargaOrdenesServiciosNoAsignadas() + + If TipoAccion = OSModalTipoAccion.Asignacion Then + Alert("Orden asignada correctamente.") + ElseIf TipoAccion = OSModalTipoAccion.Agregar Then + Alert("Orden Guardada correctamente.") + ElseIf TipoAccion = OSModalTipoAccion.Actualizacion Then + Alert("Orden actualizada correctamente.") + End If + + RegistraScript("$('#DVModalOS').modal('hide');Calendario();") + + End If + + End Sub + + Private Sub MandaCorreOS(CveOS As Integer, CorreoUsuarioAsignado As String, Optional EsCliente As Boolean = False) + + 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.ToDate.ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("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)) + + params.Add(New ReportParameter("DireccionOS", dr("DireccionOS").ToString)) + params.Add(New ReportParameter("Telefono", dr("Telefono").ToString)) + params.Add(New ReportParameter("CorreoOS", dr("CorreoOS").ToString)) + + params.Add(New ReportParameter("ModeloMarca", dr("ModeloMarca").ToString)) + params.Add(New ReportParameter("Año", dr("Año").ToString)) + params.Add(New ReportParameter("TelefonoContacto", dr("TelefonoContacto").ToString)) + + params.Add(New ReportParameter("FechaImpresion", NowADS().ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario)) + params.Add(New ReportParameter("Condiciones", dr("Condiciones").ToString)) + params.Add(New ReportParameter("FechaAtencion", If(dr("FechaInicio").ToString.Length > 0, dr("FechaInicio").ToString.ToDate.ToString("dd/MM/yyyy hh:mm tt"), ""))) + params.Add(New ReportParameter("TecnicoAsignado", dr("UsuarioAtendio").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", NowADS().ToDateTime.ToShortDateString)) + params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) + + End If + + + If ObjOS.GetOrdenesServiciosDetalle(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 = TmpDTMaterialesOS} + + 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 + + + Protected Sub DdlTecnicoAsignar_SelectedIndexChanged1(sender As Object, e As EventArgs) + ValidaHorarioNoOperativo() + End Sub + + Protected Sub LnkValidaHorarioNoOperativo_Click(sender As Object, e As EventArgs) + ValidaHorarioNoOperativo() + End Sub + + Private Sub ValidaHorarioNoOperativo() + If DdlTecnicoAsignar.SelectedValue.ToEntero > 0 Then + + Dim objOS As New ClsOS + Dim DTHorarios As New DataTable + + If objOS.GetOrdenesServiciosTecnicoHorarioNoOperativo(DdlTecnicoAsignar.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + DTHorarios = objOS.DtResultados + End If + objOS.Dispose() + + If DTHorarios IsNot Nothing AndAlso DTHorarios.Rows.Count > 0 Then + + Dim HoraInicio As TimeSpan = DTHorarios.Rows(0)("HoraInicio").ToString.ToDate.TimeOfDay + Dim HoraFin As TimeSpan = DTHorarios.Rows(0)("HoraFin").ToString.ToDate.TimeOfDay + Dim HoraAsignacion As TimeSpan = TxtFechaOS.Text.ToDate.TimeOfDay + + If HoraAsignacion >= HoraInicio And HoraAsignacion <= HoraFin Then + Alert($"La hora especificada esta dentro del horario no operativo del Técnico {HoraInicio.ToString()} a {HoraFin.ToString()} .", TipoMensaje.MsgAdvertencia) + End If + End If + 'ViewState("Validando") = Nothing + + End If + End Sub + + Protected Sub LnkCancelarOrden_Click(sender As Object, e As EventArgs) + + RegistraScript($"$('#{TxtModalCancelarOrdenMotivo.ClientID}').focus();;$('#DVModalCancelacionOrden').modal('show');") + + TxtModalCancelarOrdenMotivo.Focus() + TxtModalCancelarOrdenMotivo.Text = "" + UpmodalCacelaOrden.Update() + + End Sub + + + + Protected Sub LnkmodalCancelarORdenServicio_Click(sender As Object, e As EventArgs) + + Dim TieneError As Boolean = True + Dim CveOS As Integer = HFCveOS.Value.ToEntero + Dim objOS As New ClsOS + Dim ObjEventoBitacora As New ClsOIEventos(objOS.IniciaTransacSQL) + If objOS.UpdateOrdenesServiciosFinaliza(CveOS, -1, -1, UsuarioActual.CveEmpresa, Opcion:=2) Then 'Opcion:=2 Es para cancelar + If ObjEventoBitacora.AddEventoBitacora($"Motivo Cancelación: {TxtModalCancelarOrdenMotivo.Text.Trim}", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveOS, -1, -1, -1, -1) Then + TieneError = False + End If + End If + + If TieneError Then + objOS.RollBack() + Else + objOS.Commit() + End If + + objOS.Dispose() + + + If Not TieneError Then + Alert("Orden Cancelada Correctamente", TipoMensaje.MsgInformacion, "location.reload(true);") + RegistraScript("$('#DVModalCancelacionOrden').modal('hide');") + RegistraScript("$('#DVModalFinalizarOrden').modal('hide');") + End If + End Sub +End Class